Circuito per variare la tensione in un plastico ferroviario

Ciao a tutti. Potete aiutarmi a costruire un circuito che vari la tensione da 0 a 12 V CC in un plastico ferroviario? In pratica vorrei che, quando ricevo in Arduino un input analogico tipo da un reed, la tensione applicata ai binari salisse da 0V a 12V gradualmente, in modo che la locomotiva si metta in moto realisticamente. Allo stesso modo con un altro input la tensione dovrebbe scendere a 0V gradualmente. Il motore della locomotiva è di tipo a spazzola e assorbe tipicamente intorno a 1 A.

Ho pensato all'uso di un MOSFET con guida da un pin PWM. Ha senso?

Arei bisogno che mi aiutaste a disegnare la parte elettronica e mi suggeriste le sigle dei componenti da usare. Per il codice dovrei sapermela cavare.

Molte grazie. Ciao.

Per il mosfet, io in genere consiglio di usare quelli con portata in corrente molto alta (perche’ la RdsON e’ sempre piu bassa), ma per un’assorbimento da 1A o simili, puo andare bene anche un mosfet “standard” del tipo IRL540 o meglio IRLZ44, o altri del genere … per il pilotaggio in PWM, non puoi pilotarlo direttamente dal pin, perche’ non puo dare corrente sufficente a garantire la corretta saturazione, alle alte frequenze (il gate del mosfet e’ un condensatore, piu la frequenza aumenta e piu serve corrente per fargli variare velocemente il potenziale) … puoi usare un circuito di pilotaggio (driver mosfet) di quelli gia fatti, formato integrato da 8 pin e simili, oppure costruirtelo con 3 transistor e qualche resistenza … un’esempio di possibile circuito e’ quello allegato …

EDIT: dimenticavo … filtrare sempre i motorini elettrici, generano un sacco di disturbi e potrebbero falsare il funzionamento della logica … :wink:

Molte grazie!
Come MOSFET potrebbe andare il STP55NF06L e come driver il LM27222?

Per filtrare il noise dei motori cosa mi consigli?

Ciao

Il mosfet sembrerebbe andare bene ... quel driver LM e' specifico per pilotarci i push-pull degli alimentatori, sarebbe meglio un driver semplice, ma al limite si dovrebbe poter usare pure quello ...

qualcosa tipo l' IRS2186? Io mi perdo fra tutti i MOSFET e driver... Tu mi hai detto IRLZ44 come MOSFET e cosa mi consigli come driver? Il STP55NF06L mi sembrava adatto ad un uso con Arduino, almeno dai pareri in rete, ma se mi dici che l'IRLZ44 è meglio vado su quello. Resta da scegliere il driver...

Credo che tu voglia anche l’inversione della polarità per far girare i motori al contrario: se è così, devi usare un ponte H.

Etem, quello che dici sui MOSFET è corretto, ma per frequenze di almeno 30kHz, o sbaglio?

E di questo integrato che ne dici? è il Maxim 14870 e la descrizione dice: "The MAX14870/MAX14872 motor drivers provide a small, low-power and simple solution for driving and controlling brushed DC motors and relays with voltages between 4.5V and 36V."

Se ho capito bene questo integrato sostituisce il MOSFET + driver ed è pilotabile via PWM allo stesso modo. Sembrerebbe anche eliminare i problemi delle correnti induttive del motore.

Possibile che un solo integrato mi risolva tutto il problema? Sarebbe troooppo bello! ;D

cyberhs: dipende dal mosfet (o meglio dalla sua capacita' di gate) e dalle correnti in circolo, per certi circuiti anche 10KHz sarebbero troppi per un pin di Arduino ... il problema principale e' la velocita' di commutazione, o per essere piu precisi la velocita' con cui si riesce a portare il gate alla giusta tensione per il funzionamento ON/OFF, in modo che rimanga in zona lineare il minor tempo possibile (perche' piu ci resta, e piu dissipa potenza, e la potenza dissipata dipende soprattutto dalla corrente che ci deve scorrere dentro) ...

Per usarlo con 1A o simile, il problema e' relativamente scarso, perche' anche se i fronti di commutazione non sono perfettamente verticali, la potenza dissipata alla fine e' comunque poca, ma se inizi a dover pilotare 20 o 30 A o piu, avere fronti di salita e discesa il piu ripidi possibile diventa indispensabile, anche a frequenze di poche centinaia di Hertz, altrimenti il mosfet si cuoce velocemente ...

aldozan: quell'integrato e' una soluzione solo se sei in grado di lavorare con i packages SMD tipo TDFN-EP da 3x3mm, che richiedono per forza stampati doppia faccia con fori metallizzati (perche' il pad inferiore deve dissipare tutto il calore, quindi richiede uno stampato realizzato in un particolare modo, quasi impossibile da realizzare a livello amatoriale o casalingo) ... se proprio vuoi usare dei ponti integrati, scegline uno in un formato piu "umano", tipo ad esempio SPF7302 oppure VNH5200AS-E , sempre SMD con il pad, ma in un formato piu maneggiabile, oppure anche meglio LM9997, minor corrente massima (max 1.2A) e sempre SMD, ma senza il pad esposto, decisamente piu facile da usare, e piu semplice realizzarci uno stampato anche a livello casalingo ...

Etem: perdonami se insisto, ma voglio capire il tuo punto di vista.

Supponiamo che il MOSFET sia IRLZ44 la cui C di gate (tipica) è 1620pF = 1.6nF e che la tensione applicata sia quella dell'uscita di Arduino (+5V max) attraverso un resistore da 220 ohm.

La costante di tempo del circuito RC di ingresso è tau = 0.35 μs, quindi, in teoria, potrei applicare anche un segnale di 1Mhz (1μs).

Senza arrivare a tanto, un segnale PWM da 30-40kHz lo dovrebbe reggere benissimo o sbaglio?

Il PWM di Arduino è molto più basso in frequenza.

cyberhs: Etem: perdonami se insisto...

Sei perdonato, figliolo ... (scherzo, ovviamente :P :D)

Seriamente, non e' che non la regge l'uscita, non e' per quel motivo che si usano i driver ... considerando i 20mA della corrente massima dei pin, bisognerebbe tenere la resistenza fra il pin ed il gate sui 270 ohm (ma che siano 220 o 270 e' poco importante, non e' questo il problema) ... questo causerebbe un'andamento della carica di gate non perfettamente "squadrato" (dati i tempi di salita e discesa della costante di carica e scarica del "condensatore" rappresentato dal gate) ... questo non influirebbe molto sul segnale in uscita, siamo credo su 1KHz di frequenza di PWM da Arduino, nel migliore dei casi e senza manipolare i timer interni, pero' la parte del segnale di pilotaggio in cui la tensione non e' completamente a zero o completamente al di sopra della soglia di piena conduzione del gate (cioe', intendo, la curva di carica e scarica), lo farebbe lavorare in zona lineare, facendogli dissipare molto piu calore, perche' in questa zona il mos si comporta come una resistenza variabile ...

Non c'entra la costante di tempo con la frequenza del segnale applicabile, ma solo con la potenza media dissipata ... stando al tuo esempio, con una costante di tempo di 0.35us ed una frequenza di pilotaggio di 1MHz, cioe' 1us, avresti il mosfet che lavora in zona lineare per circa il 35% del tempo di funzionamento, dissipando decine di W invece che pochi W dati dal suo valore di RdsON (perche' la potenza complessiva dissipata sarebbe la media fra il tempo in cui dissipa i pochi W dati dalla RdsON e quello, pur breve, in cui essendo in zona lineare, dissiperebbe parecchie decine di W ... ora non lo trovo piu purtroppo, ma avevo un'articolo in cui si facevano degli esempi pratici sull'uso di mosfet per un'inverter switching, e c'erano le forme d'onda rilevate con un'oscilloscopio veloce, in cui si mostrava che per una dissipazione in stato ON di 15W, il mosfet aveva, nelle fasi di accensione e spegnimento, anche se solo per poche decine di nanosecondi, dissipazioni di oltre 250W)

Come ho detto, se l'assorbimento si limita ad 1A (e soprattutto con mosfet logic-level, che hanno una soglia piu bassa di tensione di gate) la cosa non e' un gran problema, magari l'utente non se ne accorgerebbe neppure, almeno non senza un'oscilloscopio ... ma se usassi la stessa tipologia di pilotaggio su carichi molto piu elevati, il mosfet finirebbe per friggersi, o dovresti usare un grosso dissipatore, e sprecheresti un sacco di energia in calore ... per questo, per principio, si tende sempre a progettare un circuito a mosfet pilotato in PWM in modo che la commutazione di gate sia la piu veloce possibile ...

Poi sono daccordo con te che in alcuni casi specifici non importa molto o comunque non e' molto influente, e' semplicemente un principio di base ... di solito lo si fa considerando che se lo costruisci bene gia da subito, un domani potrai anche aumentare il carico senza che ti crei problemi, mentre in caso contrario rischieresti di dover ricostruire un nuovo circuito da zero se ti servisse per un carico maggiore, tutto qui ...

Aldo, in tutto questo battibecco, spero almeno che ti abbiano risposto. :grin:

PaoloP: ma certo che gli abbiamo risposto ... credo :P :D :D :D

Etem, molte grazie per le tue risposte. Se capisco bene esistono degli IC tipo ponte H disegnati ad hoc per controllare motori a spazzola, e quindi che potrebbero fare al caso mio. Ho guardato quelli che indichi (non trovo l'LM9997, gli altri si) ma tutti hanno una corrente di funzionamento minimo di 6V mentre Arduino lavora a 5V. Come risolvo il problema? Più in generale: cosa mi consigli di usare, il mosfet con driver o l'IC? e poi: non esistono basette su cui montare gli IC SMD che si possano saldare facilmente su di una millefori? Arigrazie!

Te lo hanno gia' chiesto.... Ma codesta locomotiva deve anche invertire la marcia ? Perchè se è così con il Mosfet non risolvi

Brunello, sì devo anche invertire la marcia (è una locomotiva che compone treni in un fascio di binari di smistamento) ma questo non è un problema: a valle del mosfet metto un relè di tipo ferromodellistico (tipo un Flaishmann 6956) che mi scambia i poli su binari, ed il gioco è fatto.

Il punto è la partenza e arresto dolci.

E qui ancora non ho capito cosa è meglio, se mosfet + driver o IC ad hoc. Grazie a chi mi aiuterà... :sweat_smile:

Visto che devi pilotare un motore non fai prima a prendere un apposito driver Questo ad esempio https://www.pololu.com/product/2961

Grazie! :D :D :D :D

Questo è proprio quello di cui avevo bisogno!

Grandissimo Brunello!!!!

E grazie agli altri che mi hanno aiutato nella ricerca!

Aggiornamento, sperando di essere magari utile a qualcun altro con lo stesso problema: Ho acquistato 3 differenti motor shield dalla Pololu: DRV8835, TB6612FNG, Max14870. Il loro prezzo è di circa 5 euro ciascuno. Tutti hanno lavorato bene con un banale programmino di prova ed il motore dello starter kit di Arduino alimentato a 9V. Il problema è nato quando ho collegato un trasformatore Rivarossi da 12V 16A. I primi due shield si sono cotti con tanto di fumo coreografico... :o (il terzo non lo ho provato... ) Evidentemente ho frainteso quanto dicevano le specifiche ("The shield can deliver a continuous 1.2 A (1.5 A peak) per motor, or a continuous 2.4 A (3 A peak) to a single motor"). Il motore di una singola locomotiva assorbe circa 0,5A, MA il trasformatore eroga 16A. Io pensavo che l'assorbimento della locomotiva fosse quello da considerare, invece sembrerebbe proprio che si debbano guardare gli ampere erogati dal trafo. :confused:

Ora ho comprato un Pololu 18v15 che regge fino a 30A. (costa 40 euro) Quando mi arriva lo provo subito e faccio sapere.

Mi pare strano. Qui ho letto qualcosa: http://www.ferramatori.it/forum/viewtopic.php?f=85&t=2763 Sicuro che i motori dei trenini siano semplici a 12V ? Sicuro delle specifiche di quel trasformatore ? Non è che è a 12V alternati AC e non continui DC ?