Tutorial Ponte ad H

Ciao a tutti ragazzi. Ho scritto un tutorial che spiega il funzionamento del ponte ad H, ne ho realizzato uno, ho inserito le schematiche e i risultati dei miei test:

Chiaramente lo piloto con arduino!!
Spero possa esservi utile :grin:

Permettimi una serie di critiche costruttive, al di la della validità del tuo tutorial, sicuramente molto utile, ci sono vari errori concettuali nel tuo progetto.
Prima di tutto i transistor usati, sono transistor finali di piccola potenza e come tali hanno un hfe basso, mediamente minore di 100, il che comporta una Ib (corrente di base) molto alta per raggiungere la reale saturazione, almeno 60-70 mA, corrente che l'ATmega 328p non è in grado di fornire.
Collegare direttamente gli I/O di Arduino direttamente con la base dei transistor è ASSOLUTAMENTE da evitare, è la stessa cosa di mettere un pin settato come uscita digitale con livello HIGH connesso direttamente a GND, il rischio di fare danni c'è e anche se non si brucia fisicamente il pin, per fortuna gli AVR hanno delle protezioni interne per le extracorrenti, in questo modo scorrono ben oltre i 40 mA massimi previsti per il singolo pin.
Ti consiglio di usare dei darlington di potenza come i BDX33 (PNPN) e BDX34 (NPN), fino a 10A continui, che garantiscono un hfe sempre superiore a 1000 e bastano 20-25 mA per mandarli in saturazione, li colleghi ad Arduino tramite un resistenza da 180 ohm.
Altra nota tecnica, per la massima corrente DC dei transistor serve sempre una adeguata aletta di raffreddamento, se li lasci senza con poche centinaia di mA li fondi, la corrente pulsata non è la corrente massima col pwm come lasci intendere nel tuo tutorial, è la massima corrente con un duty cycle di pochi punti percentuale, tipicamente inferiore al 2%, cioè un limite raggiungibile solo per una piccola frazione di tempo e con lunghe pause.
Anche i diodi che consigli non vanno bene, prima di tutto devono essere in grado di reggere la stessa corrente continua erogabile dal ponte e picchi di almeno 10-20 maggiori per brevi periodi, inoltre devono essere molto veloci, non più di 100 nS, altrimenti non fanno in tempo ad evitare che l'extratensione generata dall'induttanza del motore salga oltre i limiti massimi del transistor.
Con il tuo schema senza resistenze di limitazione sulle basi di transistor non darlington e con diodi lenti c'è il reale rischio di danneggiare Arduino, dipende molto dal tipo di motore collegato, se è di piccola potenza e richiede solo 200-300 mA anche se il tutto lavora male il rischio di fare danni è piccolo, se il motore è di potenza maggiore e comincia a richiedere correnti di 2-3 A il danno è praticamente sicuro.
Un'ultima cosa, è vero che concettualmente il ponte H è semplice, ma è altrettanto vero che realizzarlo in pratica è tutt'altro che semplice, basta guardare lo schema a blocchi di un qualunque H Bridge integrato commerciale, per il classico L298, per rendersene conto.

gbm:
Ciao a tutti ragazzi. Ho scritto un tutorial che spiega il funzionamento del ponte ad H, ne ho realizzato uno, ho inserito le schematiche e i risultati dei miei test:
http://www.gioblu.com/tutorials/azionamenti/208-cose-il-ponte-ad-h-e-come-si-costruisce

Chiaramente lo piloto con arduino!!
Spero possa esservi utile :grin:

Ciao, per caso ti interessa anche fare tutorial… dal vivo? :slight_smile: Stiamo cercando espositori per la fiera di settembre a Roma:
http://arduino.cc/forum/index.php/topic,50470.0.html

Ciao Astrobeed grazie della risposta

Mi permetto di dire che se ci fossero errori di concetto in questo tutorial, non l'avrei pubblicato perchè il sistema non funzionerebbe :grin:

Prima di tutto i transistor usati, sono transistor finali di piccola potenza e come tali hanno un hfe basso, mediamente minore di 100, il che comporta una Ib (corrente di base) molto alta per raggiungere la reale saturazione, almeno 60-70 mA, corrente che l'ATmega 328p non è in grado di fornire.

Testando l'assorbimento delle basi ho ottenuto un max di 50ma alimentando a 12v tutto il sistema. Proprio per questo li ho utilizzati perchè non vanno realmente fuori dalle specifiche.

Ti consiglio di usare dei darlington di potenza come i BDX33 (PNPN) e BDX34 (NPN), fino a 10A continui, che garantiscono un hfe sempre superiore a 1000 e bastano 20-25 mA per mandarli in saturazione, li colleghi ad Arduino tramite un resistenza da 180 ohm.

Grazie del consiglio li provero' appena possibile.

Altra nota tecnica, per la massima corrente DC dei transistor serve sempre una adeguata aletta di raffreddamento, se li lasci senza con poche centinaia di mA li fondi, la corrente pulsata non è la corrente massima col pwm come lasci intendere nel tuo tutorial, è la massima corrente con un duty cycle di pochi punti percentuale, tipicamente inferiore al 2%, cioè un limite raggiungibile solo per una piccola frazione di tempo e con lunghe pause.

I transistor utilizzati funzionano fino a 60v 3A. Alimentandoli a 12v 1A non iniziano nemmeno a scaldare rimangono a temperatura ambiente anche se il motore non è libero ma è portato al suo massimo assorbimento (vedi video). Ho fatto andare il sistema che vedi nel video a 12v per una notte per controllare che niente si bruciasse. E tutt'ora è li che oscilla senza nessun problema.

Con il tuo schema senza resistenze di limitazione sulle basi di transistor non darlington e con diodi lenti c'è il reale rischio di danneggiare Arduino, dipende molto dal tipo di motore collegato, se è di piccola potenza e richiede solo 200-300 mA anche se il tutto lavora male il rischio di fare danni è piccolo, se il motore è di potenza maggiore e comincia a richiedere correnti di 2-3 A il danno è praticamente sicuro.
Un'ultima cosa, è vero che concettualmente il ponte H è semplice, ma è altrettanto vero che realizzarlo in pratica è tutt'altro che semplice, basta guardare lo schema a blocchi di un qualunque H Bridge integrato commerciale, per il classico L298, per rendersene conto.

Ovunque dicono (vedi anche Sparkfun) che le resistenze di limitazione su motori sotto i 2A possono essere eliminate.
Mmmm l'L298 non è un doppio ponte ad h?

Invece non avevo preso in considerazione la velocità dei diodi!!
Quali consigli??

Grazie mille cmq!!

avevo quotato male e il mio mex non si leggeva...
Ora si legge, cmq ribadisco:

Ciao, per caso ti interessa anche fare tutorial... dal vivo? :slight_smile: Stiamo cercando espositori per la fiera di settembre a Roma:

Ciao si, interessante. Sentiamoci via PM. Scusa mi era sfuggito!! :grin:

Data sheet dei BD17x alla mano, Vcesat 0.8V con Ib 0.1 A, Ibsat 0.1 A, Vbesat 1.3 V, Resistenza termica del case TO126 34°/W.
Quanto sopra significa che per saturare la giunzione Base Emittore, e di conseguenza quella Collettore Emittore, è necessario far passare 100 mA attraverso la base e che la tensione misurabile tra la base e l'emittore sarà di circa 1.3V.
Se colleghi direttamente un pin dell'ATmega alla base del BD17x non solo non puoi far passare i 100 mA richiesti, ma metti sotto sforzo il pin stesso visto che è quasi come metterlo in corto diretto con GND.
La tensione tra Base ed Emittore non può essere di 5V, tipicamente è 0.6-0.7V in zona lineare e poco più di 1V in saturazione, e questa è elettronica di base che puoi trovare su qualunque testo.
Ti passano "solo" 50 mA perchè l'ATmega stesso di più non ti fornisce, e sei comunque fuori dai massimi assoluti previsti da data sheet, infatti cita testualmente:

Sezione 28.1 28.1 Absolute Maximum Ratings

DC Current per I/O Pin ............................................... 40.0 mA
DC Current VCC and GND Pins................................ 200.0 mA

Da notare che la scritta "Absolute Maximum Ratings" significa proprio quello che vuole dire, cioè che sono limiti massimi in assoluto, e non c'è solo la corrente massima per pin, c'è pure quello della corrente massima per tutto l'ATmega.

In tutti i casi dato che non mandi i 100 mA richiesti non saturi la base, di conseguenza non saturi la giunzione Collettore Emittore e la Vce non è sicuramente "solo" 0.8 V, ma anche ammettendo che riesci lo stesso a saturare il transistor non è possibile che con 1A rimane freddo.
Facciamo il conticino della spesa, la resistenza termica del case TO126 è tipicamente 34°/W, non dipende dal componente ma dal case stesso, con 1A e 0.8V, ti concedo la saturazione, deve dissipare 800 mW il che vuole dire una temperatura pari a Ta + 0.8 W * 34*/W = 20+34*0.8 = 47.2° (ipotizzando la temperatura ambiente a 20°), valore che al tatto è tutt'altro che fresco, non scotta ma è decisamente caldo.
Non so dove hai letto che non si deve mettere la resistenza di limitazione sulla base, ma ti garantisco che è una asinata colossale.