Go Down

Topic: Circuito logico per controllo segnale PWM in un potne H (Read 403 times) previous topic - next topic

sketchboard

Buongiorno a tutti.
Voglio realizzare un ponte H che sarà gestito da Arduino Uno per ruotare un motore in senso orario ed antiorario.
Spiego come funziona: da Arduino escono i seguenti 3 fili (segnali)

Un segnale in PWM a 20Khz
Due segnali DIR (A e B)

Il segnale PWM impone solo la velocità.
I due segnali DIR è l'uno opposto all'altro, cioè quando uno dei due assume valore 0 basso(0V) l'altro assume valore 1 alto (5V). Quindi se A = 0 e B = 1, il motore ruoterà in senso orario. Se A = 1 e B = 0, il motore ruoterà in senso antiorario. il tutto viene gestito in automatico da Arduino.

Questo è il principio di funzionamento dello sketch e cio che deve fare il motore.

Adesso veniamo alle dolenti note: ho pensato di realizzare la parte logica del ponte H in questa maniera:

il PWM e i due segnali DIR arrivano ad un Trigger di Schmitt, ad esempio un HEF40106 (in maniera da ottenere uno squadramento dei segnali). I tre segnali arrivano all'ingresso di un Gate logico, ad esempio un 74HC08 "AND" (per sincronizzare i segnali). I tre segnali arrivano a due driver di potenza IR2110 (ogni IR2110 pilota un semiponte). Quest'ultimo gestira l'apertura e chiusura dei 4 mosfet a valle.

Avrei bisogno intanto di sapere da voi se posso collegare il trigger di Schmitt e il Gate logico in serie come spiegato.

-zef-

Da quel poco che so posso dirti solo che il trigger di Schmitt non serve a nulla visto che l'uscita PWM è già squadrata con valori da 0 a +5V, inoltre come appreso dal forum è meglio utilizzare dei mosfet serie IRL che si pilotano bene con tensioni di 5V.

Ma tutto deve essere ben dimensionato al tipo di motore che vuoi pilotare, dati che dovresti indicare se vuoi indicazioni più precise  ;)

sketchboard

Ciao Zef, i motori sono a 12V-20A DC e devono quindi essere pilotati da opportuni mosfet, ma questo è un problema che potremmo affrontarlo successivamento, perchè prima vorrei avere le idee chiare su come gestire i segnali in ingresso.

Si in effetti avevo pensato pure io che il trigger di Schmitt non avrebbe alcun effeto sui segnali che entrano al suo ingresso perchè i segnali PWM sono gia onde quadre (0 +5).

Cio che mi occorre sapere inoltre, è: solitamente ogni integrato, chip, Pic, per funzionare in maniera corretta hanno bisogno di componenti che fanno di contorno ai loro pin. Ad esempio il IR2110 attorno ad esso, di quali componenti ha bisogno e di quali valori? Sentivo dire che bisogna consultare l'Application Note.

Collegare i pin da un IR2110 ai mosfet ci potrei arrivare, ma attorno al IR2110 penso ci sarà di inserire alcuni condensatori ceramici, poliestere, elettrolitici, eventuali diodi..

Spero che qualcuno mi illumini un attimo su come poter piazzare i componenti di "contorno".
Grazie

-zef-

Purtroppo sulla parte di "potenza" non posso esserti di aiuto, a parte qualche nozione base non so molto altro, al tuo posto opterei per un ponte già pronto viste le correnti in gioco, e non parlo solo dei 20A nominali del motore ma tenendo conto dei picchi di assorbimento che sicuramente non saranno indifferenti e se non ben gestiti potrebbero anche essere causa di forti interferenze verso arduino.

sketchboard

Grazie sef, a me occorre capire come e dove andare a scegliere la componentistica di contorno all'integrato (condensatori ceramici, elettrolitici etc...) per poterlo far funzionare.
Ad esempio quando si sceglie un integrato come il 555 ai capi dei vari pin ci sono degli elementi che di base vanno collegati affinchè possa funzionare...
Ecco io avrei bisogno di capire quali componenti di "contorno" devo andare a saldare attorno al IR2110.

Non so se mi sono spiegato o se sto scrivendo una cavolata, ditemi voi, su questo non sono molto preparato.

maubarzi

Posso fare una domanda da ignorante?
Perchè ti serve l'IR2110?
Non puoi collegare direttamente i mosfet ai pin di arduino?
Ad es. degli IRL540 100V 28A logic level

Comunque sul datasheet ci sono degli esempi, vedi a pag. 2 la typical application senza valori ma con i componenti e a pag. 4 due applicazioni con valori indicati da cui prendere spunto.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

sketchboard

#6
Apr 17, 2019, 07:37 pm Last Edit: Apr 17, 2019, 07:53 pm by sketchboard
Ciao maubarzi e intanto grazie anche a te per l'aiuto.
No non posso collegare i mosfet direttamente ad Arduino per motivi di sicurezza e di prestazioni.

Domanda a Zef: se tolgo il trigger di Schmitt, posso inserire prima del 74HC08 degli optoisolatori per isolare i 3 segnali provenienti da Arduino, dalla 24v e dalle correnti in circolo?

-zef-

Come accennato prima le mie conoscenze sono alquanto ridotte, non penso siano necessari ne il 74HC08 ne gli optoisolatori, quello che fai con le porte And lo fai direttamente con le uscite di arduino, mentre se il ponte H è fatto correttamente non servono optoisolatori per tenere separate i 24V. dal resto. Tanto per farti un esempio con dei mosfet collegati ad arduino accendo dei gruppi di led da 1W alimentati proprio a 24V. tra gate e pin c'è solo una resistenza da 100ohm e un'altra da 10Kohm tra gate e massa.

Etemenanki

#8
Apr 18, 2019, 05:22 pm Last Edit: Apr 18, 2019, 05:28 pm by Etemenanki
... riporto quanto avevo scritto in spam bar ...

... in effetti i driver per mosfet di quel tipo, IR2110 e simili, sono utili se si deve realizzare un ponte (o anche un pilotaggio in PWM di singoli mosfet) per correnti alte e con frequenze di pilotaggio elevate (piu di 4 o 5 KHz, ma raramente con Arduino si realizzano simili sistemi), oppure se serve pilotare mosfet con gate non logic-level (perche' non disponibili) con logiche a 5 oppure 3.3 V ... o ancora, se si tratta di ponti che pilotano tensioni abbastanza alte (ma di queste realizzazioni qui non si puo parlare per regolamento)

se si devono solo pilotare on\off o con i PWM tipici di Arduino (che al massimo mi sembra arrivano poco sotto il KHz), basta una resistenza in serie sui 270\330 ohm fra i gate e le uscite della logica (arduino uno\mega, non le schede a 3.3V) per sistemi fino ad una decina di Ampere (mosfet da 50\60 A, tipicamente) ... oppure se proprio si devono pilotare 30 o 40 A (per cui serve usare mosfet con portate di 100 o piu A per non trasformarli in stufette), si possono sfruttare dei normali transistor tipo BC337 o simili in modo da poter dare ai mosfet degli "spunti" superiori ai 5\10 mA che sarebbero "sicuri" per le logiche ... questo semplicemente perche' piu e' alta la portata del mosfet, piu la superfice del gate e' in genere larga, quindi sale la capacita' di gate, e di conseguenza anche il picco di corrente necessario per caricare e scaricare il gate quando si "accende" o "spegne" il mosfet (ricordiamo che il gate e' elettricamente simile ad un condensatore, quindi tranne le perdite del materiale, pochi nanoampere di solito, richiede che il circuito che lo pilota possa fornire corrente solo quando viene caricato o scaricato, piu o meno con la stessa curva di carica e scarica di un condensatore ...

Ovviamente il circuito finale dipendera' dall'utilizzo effettivo, ma indicativamente, se e' per degli on\off oppure un PWM a frequenze relativamente basse, basta la resistenza sul gate ... piuttosto, se lo deve usare in un ponte, dovra' fare molta piu attenzione ai "tempi morti" durante le commutazioni, cioe' ad essere sicuro che prima di accendere un ramo del ponte, l'altro abbia avuto il tempo di spegnersi completamente e viceversa (altrimenti, KABOOM :D)
... scusate la poca presenza, ma ho ancora problemi di linea ...

Leggo che vorresti usarlo a 20KHz ... potrebbe ancora starci dentro, ma per non rischiare, potresti anche usare i driver IR, pero' tutto il resto, trigger eccetera, non ti serve a nulla ... i driver hanno gia all'interno un bel po di circuiteria (vedi lo schema equivalente sul loro datasheet a pagina 4 ... ;)
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

sketchboard

Ciao Etemenanki, prima di tutto ti ringrazio per la tua disponibilità e gentilezza.
Prima di aprire questo post avevo dato un'occhiata al Forum per cercare delle risposte e ho visto che tu sei uno degli esperti di Hardware e te ne intendi molto in questo Forum, pertanto mi fa molto piacere ricevere il tuo supporto tecnico.

Quote
Leggo che vorresti usarlo a 20KHz ... potrebbe ancora starci dentro
Cioè? Ci sono dei limiti di frequenza specificati nel datasheet?

Quote
pero' tutto il resto, trigger eccetera, non ti serve a nulla ... i driver hanno gia all'interno un bel po di circuiteria
Però il 74HC08 devo necessariamente utilizzarlo per gestire i segnali in ingresso, o sbaglio?

maubarzi

Etem ha problemi di connettività per cui sei stato fortunato ;) non so quando riuscirà a farsi vivo ancora...

Tutti i componenti hanno indicati i tempi di risposta dai quali ti ricavi la frequenza massima oltre la quale non riesce più a commutare in tempo.
Prova a cercare nel datasheet e dovresti trovare dati di questo tipo per capire meglio.

Per il 74HC08, non ho capito perchè pensi possa servire e come lo volevi collegare.
E' una porta AND a 2 ingressi, la volevi usare per squadrare il segnale? Le uscite di arduino, che se non ho capito male, pilotano il tutto a monte, dovrebbero già essere squadrate come ti serve.
Oppure devi effettivamente calcolare l'AND logico di due segnali distinti?
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

sketchboard

Ciao Maubarzi,

Quote
Tutti i componenti hanno indicati i tempi di risposta dai quali ti ricavi la frequenza massima oltre la quale non riesce più a commutare in tempo
La frequenza che io andrò ad utilizzare varia da 15Khz a 35Khz. Non so come ricavarmi la frequenza dai valori che tu mi spieghi. :smiley-confuse:

Quote
Per il 74HC08, non ho capito perchè pensi possa servire e come lo volevi collegare
Trattandosi di 3 segnali in uscita da Arduino, voglio portarli al 74HC08 in maniera da poter pilotare i 2 IR2110. Avrei così i segnali distinti e poter utilizzare lo Shutdown per poter spegnere i driver nel caso in cui si verificasse un problema a monte sui segnali.

Quote
E' una porta AND a 2 ingressi, la volevi usare per squadrare il segnale?
No quell'integrato è solo un gate AND logico, quindi anche da consiglio tuo e da Ete, il IR2110 possiede comunque un trigger Schmitt al suo interno.

maubarzi

Pag. 2: Dynamic Electrical Characteristics
Da quel che vedo l'IR2110 sopporta bene frequenze da una decina di MHz, conto spannometrico il mio.
Penso Etem parlasse di frequenze senza gli IR dicendo che con 20KHz potevi anche starci senza ma per sicurezza potevi usarli.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

sketchboard

Quote
Da quel che vedo l'IR2110 sopporta bene frequenze da una decina di MHz, conto spannometrico il mio
Da dove si puo capire la frequenza operativa? Ho cercato qualche unità di misura in Hz nella tabella che dici, ma non ho trovato nulla (vedi allegato) :smiley-confuse:

Quote
Penso Etem parlasse di frequenze senza gli IR dicendo che con 20KHz potevi anche starci senza ma per sicurezza potevi usarli
Quindi da come scrive Etem, mi sembra di aver capito che per stare piu tranquillo potrei adoperare gli IR2110, che supporta le frequenze che a me occorrono e che potrebbero variare in base a cio che voglio farne adesso e in futuro (da circa 15Khz a circa 35Khz).

Giusto?

maubarzi

io ho guardato i tempi di switch che sono in nanosecondi. ignorando il ritardo, i tempi dei fronti di salita o discesa sono circa 50+50 nS . la frequenza è l'inverso del tempo, quindi ho fatto
1/100nS
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

Go Up