Problema motore DC e L298

Buonasera a tutti,
sto lavorando con Arduino per il mio progetto d’esame. Quest’ultimo, consiste in un nastro trasportatore comandato da un motore e con due fotocellule che contano i “pezzi” che passano. Il risultato, verrà scritto su un display LCD 16x2.
Sto incontrando dei seri problemi nella parte “driver” per il pilotaggio del motore.
Parto subito dicendo che il mio motore è un DC a spazzole, 24V 1A.
Ho recuperato una basetta già fatta a scuola con a bordo un L298 compresa di diodi di ricircolo. Ho scelto questo driver, perchè volevo aggiungere la “chicca” del calcolo della corrente assorbita dal motore tramite i piedini “sense”.
La prima volta, per testare driver e motore, ho mandato un segnale PWM ad un input e nell’altro un segnale PWM “negato” rispetto all’altro. Non avevo porte NOT a disposizione, e ho semplificato la cosa mettendo nel programma:

if (speed >=0 && speed <=255)
{
analogWrite(motor1, speed);
analogWrite(motor2, 255-speed);
}

Dove “motor1” e “motor2” erano gli input del driver. “speed”, era un valore immesso via seriale.
Il motore ha girato per poco. Ho inserito 255 e 0 e il motore ha girato al massimo in un verso e nell’altro.
Ho inserito 128 (condizione in cui dovrebbe stare fermo), e l’ L298 è letteralmente scoppiato. Non so sinceramente se stava già scaldando gia prima, oppure non gli sono piaciuti questi cambiamenti “repentini”.
Cambiato l’integrato, ho ricostruito il programma per poterlo comandare in PWM tramite potenziometro, e usare una porta NOT per negare il segnale.
Funziona tutto alla grande. Gira senza problemi, si ferma se raggiungo il 50% del potenziometro, scalda poco (ci ho aggiunto anche un dissipatore).
L’altro ieri, durante dei test per il calcolo della corrente, mentre variavo la velocità del motore… PUF! Motore piantato di punto in bianco!
Stacco tutto per non replicare la stessa esperienza passata, e vado a verificare con il tester: OUT 1 e 2 in corto!
Stranamente (e fortunatamente), l’altro ponte funziona e non è in corto. Si è bruciato solo il primo.
Oggi ho esposto il problema al mio professore di elettronica, e secondo lui non regge a livello di potenza.
Dai datasheet, l’ L298 regge massimo 25W. Il 1A del mio motore, suppongo sia nel caso in cui sia a pieno carico a tensione massima (24V). E in quel caso sono d’accordo che assorbirebbe 24W e siamo sulla soglia del limite. Ma per un funzionamento a vuoto, e quindi con una corrente assorbita minore, mi sembra assurdo che questo driver si bruci solo guardandolo!
In effetti 24W per far girare un nastro trasportatore non di grandi dimensioni, sono tanti per un motore. Però era un progetto vecchio, che andava rivisto. Era inizialmente comandato tramite PLC, il PWM era gestito da un 555 astabile e la parte di potenza da un transistor (non ricordo la sigla, domani ve la riporto).
Era un progetto molto più limitato, e il mio intento è di “modernizzarlo” e aggiungere qualche chicca in più.
Vorrei riuscire a pilotare questo benedetto motore senza problemi!
Se ho detto o fatto fesserie in qualche punto, correggetemi.
Vi ringrazio in anticipo, e spero di risolvere questo benedetto problema!!
Federico

Federause:
Ho inserito 128 (condizione in cui dovrebbe stare fermo), e l' L298 è letteralmente scoppiato.

Certo che è scoppiato, usare due analogwrite non è la stessa cosa di un doppio segnale pwm negato, in pratica continuavi a dire al motore di cambiare direzione di marcia invece di avere un vero controllo LAP dato che i due segnali pwm erano tutto meno che in fase tra loro.

L'altro ieri, durante dei test per il calcolo della corrente, mentre variavo la velocità del motore... PUF! Motore piantato di punto in bianco!

Tocca vedere quel motore quanto richiede come corrente di spunto, se è 24V 1A rated quasi sicuramente chiede anche 5-6 A di spunto, il 298 non regge questa corrente.
Lo spunto lo hai anche semplicemente variando la velocità del motore, tanto più rapidamente la cambi, o peggio inverti di colpo il senso di marcia, e tanto maggiore è la richiesta di corrente, non importa se sta girando a vuoto.
La potenza di 25W del 298 è riferita a quella massima dissipabile dal case e non a quella richiesta dal carico, ovvero anche se lo fai funzionare dentro l'azoto liquido se dissipa più di 25W la giunzione si rompe perché è il limite del case, non riesce a portare via con sufficiente velocità il calore interno indipendentemente dalla dissipazione case-ambiente.
Il limite è dato dalla resistenza termica giunzione case che è un valore indipendente da quello case ambiente.

Hai ragione, non avevo considerato il fatto dello "sfasamento" dei segnali con l'analogRead.
I valori 24 V 1A, sono scritti nell'etichetta del motore. Aggiungo che c'è anche scritto 17W.. Non ci capisco più nulla..
Il motore è un Groshopp Viersen FRG PM1 60-30
Il transistor che prima comandava il motore, se non erro era un BD135 andando a memoria.
Scelta leggermente azzardata andando a vedere che mi ha bruciato un L298 molto probabilmente solo per lo spunto...
Tu cosa mi consigli di fare? Un ponte H fatto "a mano" con transistor di potenza? Darlington? Con MOSFET?
Avrei bisogno comunque di cambiare la direzione del motore (a differenza del progetto di prima) quindi il ponte H penso sia obbligatorio.
Ti ringrazio

Se non hai le idee chiare con un ponte H giá fatto nun riuscirai mai a costruirne una con elementi discreti.
Cerca uno per una corrente nominale di 10A. come per esempio Pololu High-Power Motor Driver 24v12 o Pololu - VNH2SP30 Motor Driver Carrier MD01B

Ciao Uwe

Segui il consiglio di Uwe perché realizzare un ponte H per elevate correnti non è ne semplice ne economico.

Siccome la scuola non può fornirmi il ponte per questione di soldi, ho deciso di comandare il motore semplicemente con un transistor di potenza.
A scuola abbiamo a disposizione i darlington NPN TIP122.. Dalle caratteristiche sui datasheet, mi sembra buono per il mio motore sia a livello di corrente che può fornire che di potenza dissipata. Voi che ne dite?
Mi scuso se vi rispondo solo oggi, ma ho avuto (e continuo ad avere) problemi di linea.
Vi ringrazio ancora!!