Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Pin bruciato?

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Pin bruciato?

Messaggioda Foto UtentematteoDL » 2 ago 2012, 19:13

gohan ha scritto:Per il LED IR non userei la IOC, ma mo sembra che già ne avevamo parlato nell'altro thread dove riscontravi problemi con il codice.

No ma il LED IR è pilotato in PWM dal pin CCP1 (RC2), l'IOC serve per la ricezione e il relativo pin è collegato a un TSOP4840.
Se non mi interessa controllare il gate del MOSFET, e quindi lo attacco direttamente ai +5V, sia ricezione che trasmissione funzionano alla perfezione, riesco addirittura ad automandarmi il messaggio, siccome la trasmissione avviene nel programma "normale" e la ricezione tutta per mezzo di interrupt.
Il tutto mentre il motore gira, per questo escludo anche problemi di corrente insufficiente da parte della batteria.
In tutto questo RC1 invece non riesce a stare alto.

Se stacco il LED IR, il controllo sul gate funziona..
Ho provato a misurare la corrente in entrata su Vdd ed è massimo di 31mA, mentre il datasheet fissa la massima possibile a 250mA, quindi ampiamente sotto..
Non so più dove sbattere la testa, provo a ragionarci ancora un po', in caso cambio il PIC con un altro uguale per escludere difetti di fabbrica.
Altrimenti appena mi arrivano i pic18 provo con quelli.
Avatar utente
Foto UtentematteoDL
704 3 7
Expert
Expert
 
Messaggi: 310
Iscritto il: 26 feb 2012, 20:49

1
voti

[12] Re: Pin bruciato?

Messaggioda Foto Utentesimo85 » 2 ago 2012, 19:44

Sto giusto adesso osservando il datasheet del PIC16F886..
matteoDL ha scritto:siccome la trasmissione avviene nel programma "normale" e la ricezione tutta per mezzo di interrupt.

Usi la EUSART? Se no, perché? In Full duplex trasmetti e ricevi istantaneamente.
l'IOC serve per la ricezione e il relativo pin

Tutti i pin del PORTB del micro in questione godono dell'Interrupt on change.
L'implementazione in C è semplice, devi usare un buffer (chiamiamolo PORTB2) e lavorare su quello comparandolo con un valore binario, così se non ricordo male:
Codice: Seleziona tutto
void interrupt ISR(void)
{
   if(RBIF)
   {
      /* clear the interrupt flag */
      RBIF = 0;
      /* end the mismatch condition */
      PORTB2 = PORTB;
      /* compare buffer to know which pin has changed state */
      PORTB2 &= 0x0f;
     
      if(PORTB2 == ...)
            /* do something */
      else if(PORTB2 == ...)
            /* do something else */
      else
           /* ... */
   }
}

Il valore 0x0f me lo sono inventato al momento, ma lo devi scegliere in base al fronte e pin in base al quale vuoi che venga trattata l'interrupt..

Se non ricordo male non volevi o non potevi usare la EUSART. Se puoi usala.
La mia impressione è con quel micro ce la fai, eccome.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

2
voti

[13] Re: Pin bruciato?

Messaggioda Foto Utentesolderman » 2 ago 2012, 19:57

matteoDL ha scritto: ....Il motore consuma intorno ai 3,6A a circa 11V, quindi 40W in contemporanea al led emettitore ir (tsal6100) che consuma un altro ampere a 2,5 V (2,5W) ma questo non in modo continuo, bensì modulando un segnale a 40kHz.


I MOSFET, come anche gli IGBT, a frequenze alte non devono essere pilotati senza un buffer di corrente tra gate e segnale di pilotaggio. Una classico è l'utilizzo di transistor bipolari in PUSH-PULL, oppure soluzioni integrate come gli IR2127 e simili (driver MOSFET) o i TLP250 o simili (che sono optoisolati). Probabilmente senza questo accorgimento hai sovraccaricato l'uscita del PIC che potrebbe essersi danneggiata. 40 kHz mi sembrano un po' troppi, forse sarebbe meglio sendere sui 15-17 kHz.
Avatar utente
Foto Utentesolderman
518 1 4
Frequentatore
Frequentatore
 
Messaggi: 120
Iscritto il: 5 mar 2012, 18:30

2
voti

[14] Re: Pin bruciato?

Messaggioda Foto Utentesimo85 » 2 ago 2012, 20:08

Si, 40kHz sono troppi, secondo me una frequenza attorno ai 300 - 500Hz basta..

Comunque si può leggere anche questo PDF, ed anche questo può essere utile..

O_/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[15] Re: Pin bruciato?

Messaggioda Foto UtenteCandy » 2 ago 2012, 20:23

Hai studiato bene il circuito del partiture tra motore e MOS in reazione alla corrente motore? microinterruzioni sul collettore? resistenza DS del MOS?
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[16] Re: Pin bruciato?

Messaggioda Foto UtentematteoDL » 2 ago 2012, 22:11

Devo attenermi allo standard Laser Tag, il protocollo di comunicazione è descritto qui.
I 40kHz sono obbligatori in quanto i ricevitori, TSOP4840, ricevono a quella frequenza.
Ora controllo bene la EUSART e vedo se può fare veramente al caso mio, se si comunque mi alleggerirebbe il codice (che comunque già funziona) svolgendo tutto in hardware ma penso c'entri poco con il problema reale (non riuscire a tenere alti pin che invece dovrebbero).
gohan ha scritto:Tutti i pin del PORTB del micro in questione godono dell'Interrupt on change.

Si questo lo so, specificavo che la IOC la usavo per il ricevitore e non per la trasmissione (via LED IR) come mi sembrava avessi erroneamente capito qua:
gohan ha scritto:Per il LED IR non userei la IOC, ma mo sembra che già ne avevamo parlato nell'altro thread dove riscontravi problemi con il codice.


Usare l'IOC anche per catturare l'uscita dell'operazionale invece non mi pare il caso dato che comunque quello che dovrei fare richiederebbe un polling nel main per eseguire ciò che nel'ISR non posso fare(altre funzioni), quindi saremmo da capo.

solderman ha scritto:I MOSFET, come anche gli IGBT, a frequenze alte non devono essere pilotati senza un buffer di corrente tra gate e segnale di pilotaggio.

Questo invece è interessante ed era proprio quello il punto sui cui volevo maggiore chiarezza fin dall'inzio e ti ringrazio.
Ringrazio anche [user]gohan[/user] per i link che ora vado a leggermi.

Aiutatemi quindi a capire, un buffer di tensione come questo:

non dovrebbe risolvere il problema dell'eccessiva corrente in uscita?

Candy ha scritto:Hai studiato bene il circuito del partiture tra motore e MOS in reazione alla corrente motore? microinterruzioni sul collettore? resistenza DS del MOS?


Prima ho simulato con Pspice(solo in continua), poi ho applicato.
Quando arrivano quei 5V sul gate (il punto è che il micro non riesce a darli) il tutto funziona come prima che mettessi il MOS, quindi questo avrà una resistenza bassissima (come segnalato dal datasheet sarà intorno allo 0,01 ohm).
Vorrei studiarlo più approfonditamente ma sinceramente per ora probabilmente non ho nozioni necessarie, se puoi dirmi cosa intendi per microinterruzioni sul collettore?
Avatar utente
Foto UtentematteoDL
704 3 7
Expert
Expert
 
Messaggi: 310
Iscritto il: 26 feb 2012, 20:49

1
voti

[17] Re: Pin bruciato?

Messaggioda Foto Utentesimo85 » 2 ago 2012, 22:19

Per ora rispondo per l'inseguitore.

Si, risolve il problema ma te ne potresti trovare altri. :mrgreen:
Non tutti gli operazionali vanno bene a questo scopo, per esempio non usare l'LM358, avrai in output una onda triangolare..

Usa un MOS Driver piuttosto.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[18] Re: Pin bruciato?

Messaggioda Foto UtentematteoDL » 2 ago 2012, 22:26

gohan ha scritto:Non tutti gli operazionali vanno bene a questo scopo, per esempio non usare l'LM358, avrai in output una onda triangolare...

Ok perfetto, ora comincio a capire :D .
Se io usassi questo partitore per comandare il gate del MOSFET invece dovrebbe andare bene, giusto?
In fondo il cambio non è come con il diodo a 40kHz modulato, ma va su e già ogni tipo 2-3 secondi (se riesce ad andare su).
Avatar utente
Foto UtentematteoDL
704 3 7
Expert
Expert
 
Messaggi: 310
Iscritto il: 26 feb 2012, 20:49

0
voti

[19] Re: Pin bruciato?

Messaggioda Foto Utentesimo85 » 2 ago 2012, 22:44

Scrivi un piccolo codice di prova alla frequenza voluta e misura la corrente di output tra RC1 e Gate, dopodichè misura/calcola la dissipazione di potenza del MOSFET.

Per sicurezza io lascierei il circuito aperto tra RC1 e Gate all'avvio dell'esecuzione ed eseguirei una misura "veloce" con l'amperometro.

Se ci stai dentro in abbondanza con entrambi i valori direi che puoi andare tranquillo.. Segui comunque le AN che ti ho linkato, come avrai visto hai pure le formule per la dissipazione di potenza, come anche quelle per la corrente tra Gate Driver (RC1 in questo caso) e Gate, se non le hai già su un libro di elettronica analogica di riferimento.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[20] Re: Pin bruciato?

Messaggioda Foto UtentematteoDL » 3 ago 2012, 15:10

Grazie a tutti per l'aiuto, a questo punto era la troppa corrente richiesta per pilotare i MOSFET, quello del LED IR e quello del motore. Ho usato per entrambi un "Bipolar totem-pole MOSFET driver" e la faccenda funziona. Probabilmente non sono ancora i migliori driver, ora leggendo tutto con calma arriverò a trovare il migliore sopratutto per alte frequenze.
Ora il problema si è spostato sul fatto che ogni tanto sullo schermetto appaiono scritte in giapponese o meglio diciamo caratteri che non c'entrano in generale.
Può essere che un ingresso TTL assorba troppa corrente se non portato a 5V ma solo a 3.6V? da Datasheet dice che la \text V_{\text {IH}} è 2V.
Avatar utente
Foto UtentematteoDL
704 3 7
Expert
Expert
 
Messaggi: 310
Iscritto il: 26 feb 2012, 20:49

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti