Ciao a tutti!
Ho acquistato una UNO r3 qualche settimana fa e mi sono messo a fare qualche sketch di prova, senza alcun problema.
Il mio prossimo progetto sarà quello di implementare delle luci automatiche in un'automobile, con anche una funzione di modulazione per la marcia diurna.
Il mio problema è che molti segnali (tipo in che posizione si trovi l'interruttore delle luci, l'attivazione del tergicristalli, l'accensione del motore, ecc) sono tutti a +12 volt, troppi per gli input di Arduino, come posso risolvere?
Pensavo ad adottare dei regolatori di tensione, tipo i 78L05 per ogni pin di input, però non so se è il metodo giusto o se ci sono altri modi che non conosco per ottenere lo stesso risultato...
Per quanto riguarda la modulazione in PWM delle luci durante la luce solare, si tratterebbe di pilotare un carico resistivo a 12V sui 10A, però i mosfet che conosco (tipo gli irf520) modulano tutti sul negativo, mentre io avrei bisogno di mandare gli implusi sul +12, quali mosfet potrei usare, che siano in grado di reggere un carico del genere? (pensavo magari di metterne più di uno in parallelo, per non doverci montare un dissipatore + ventola).
Per l'input devi usare un partitore di tensione:
Calcoli le resistenze in modo da avere in uscita dal partitore una tensione compresa fra 4 e 4,5V circa: in questo modo basta una semplice lettura su un pin digitale per sapere se il servizio è on o off.
Per pilotare il carico usa ciò che viene da sempre usato sulle auto, ossia un relé. Ne cerchi uno da 12V che sia capace di reggere quella corrente e che possa essere pilotato a 5V: per pilotare il relé userai un comune transistor NPN.
Ti ricordo che qualsiasi modifica delle caratteristiche costruttive e funzionali di un veicolo, che circola su strada, deve essere omologata, si rischia fino a 385€ di sanzione e il ritiro della carta di circolazione.(art. 78 CdS)
PaoloP:
Ti ricordo che qualsiasi modifica delle caratteristiche costruttive e funzionali di un veicolo, che circola su strada, deve essere omologata, si rischia fino a 385€ di sanzione e il ritiro della carta di circolazione.(art. 78 CdS)
Se ci riferiamo ad un mezzo che circola su strade pubbliche.
Se lui modifica un mezzo che circola su un fondo privato può fare (relativamente) quel che vuole.
Grazie per le vostre risposte!
Tranquilli, so i rischi a cui vado in contro se dovessi circolare per strada con un mezzo modificato
Il problema del Relé è che non posso usarlo in PWM, essendo un dispositivo elettromeccanico, io ho bisogno di pilotare quei 10A in PWM...
Per quanto riguarda il partitore di tensione penso che possa andare bene, anche se dissiperebbe sempre corrente e non solo quando viene utilizzato...
gigific:
Grazie per le vostre risposte!
Tranquilli, so i rischi a cui vado in contro se dovessi circolare per strada con un mezzo modificato
Il problema del Relé è che non posso usarlo in PWM, essendo un dispositivo elettromeccanico, io ho bisogno di pilotare quei 10A in PWM...
Allora basta andare su un sito tipo RS e cercare un MOSFET che regga minimo 10A. Esistono, ne esistono che reggono anche correnti ben maggiori. Ti devi solo armare di pazienza e spuntare le giuste voci del motore di ricerca.
Aspettiamo anche il consiglio di qualcuno più ferrato nel trattare correnti così elevate.
Per quanto riguarda il partitore di tensione penso che possa andare bene, anche se dissiperebbe sempre corrente e non solo quando viene utilizzato...
Basta dimensionare le resistenze in modo che la corrente che fanno passare sia bassissima. Se il tutto è alimentato dalla batteria dell'auto, non vedo il problema a tenere sempre in tensione un circuito che, ad esempio, fa passare mezzo mA di corrente, visto che a monte hai un accumulatore al piombo che minimo (per un motore sui 1000/1200 cc) è da 40 Ah.
Quindi potrei usare due resistenze, una da 5.6K Ohm e una da 12K Ohm e otterrei (ipotizzando che quella da 12K sia tra il +12 e il pin di arduino e che quella da 5.6K sia tra il pin di arduino e la massa), con una tensione in ingresso di 12 V, un'uscita di 3.81V, che dovrebbe andar bene.
Se l'ATMega328 considera HIGH un pin digitale con una tensione di almeno 3 volt, con le resistenze considerate il circuito funzionerebbe ancora anche se la tensione dell'auto oscillasse tra i 9.45V (valore per cui il sul pin di arduino arriverebbero 3 volt) e i 15,7V (valore per cui sul pin dovrei avere 5 volt).
Con le resistenze scelte l'assorbimento a massa non dovrebbe arrivare al milliampere, mentre sul pin di arduino arriverebbe un milliampere circa.
Un ragionamento del genere sta in piedi?
Per quanto riguarda i mosfet di potenza, ho sentito parlare abbastanza bene degli IRF9540, che pare pilotino circa 2A a 12V restando a temperatura ambiente... A questo punto potrei metterne 5-6 in parallelo e (oppure fare 3 e 3 separando i circuiti per ogni faro) e così distribuire il carico..
Potrebbe funzionare?
Si fa presto a dire MOSFET, 10Ampere, PWM e Arduino!! Si fa altrettanto presto a friggere il micro. :~
Quando si usa la tecnica pwm per pilotare un mosfet con alte correnti, e cioè volendolo usare come un interruttore, esso deve essere in grado di passare nel più breve tempo possibile dalla fase "off" a quella "on" indugiando il minor tempo possibile nella "zona lineare", che è quella che farebbe dissipare parecchio calore al dispositivo.
Senza andare sui noiosissimi calcoli che tengono conto della capacità di gate e rise time vari, mediamente un mosfet come il IRF540 (che per il tuo caso è più che sufficiente), a 12V, commutato nel suo tempo più veloce assorbe corrente "minima" (almeno all'interno del primo "tau") di almeno 200mA, corrente che è ben al di là delle possibilità di un pin di Arduino. Ecco il motivo per il quale si sente parlare di "driver mosfet" o l'uso di transistor di potenza.
Ci sono in vendita driver belli e pronti per questo uso, ma se vuoi qualcosa di semplice ed economicamente conveniente in termini di rapporto prezzi prestazioni puoi cercare lo schema di pilotaggio detto a "totem-pole". Con un paio di transistor di piccola potenza te la cavi.
Può essere utile dare un'occhiata quì http://hmin.tripod.com/als/fsmyth/pages/mosfet2.html
Capisco, immaginavo che non si potesse collegare direttamente il mosfet al pin di Arduino, però speravo di cavarmela con un transistor
Altrimenti un driver da consigliarmi?
Se utilizzassi un solo IRF9540 (che dal datasheet reggerebbe il carico) e recuperassi un dissipatore per CPU da un vecchio computer (senza ventola) riuscirei a dissipare tutto il calore del mosfet?
2 problemi non considerati:
al posto di un partitore userei una resistenza da 2,2 o 4,7 kOhm e un diodo zener da 4,7V. cosí sono sicuro che non ci sono impulsi che arrivano al Arduino.
Secondo problema. Vosto che il motore a benzina viene accesa la combustione del carburanze con una scintilla ci sono un sacco di disturbi in giro. L'arduino ne sofre tanto.
Con una macchina a gasolio non c'é la scintilla ma non credo che l' impianto elettrico sia meno disturbato.
Ciao Uwe
Per quanto riguarda la modulazione in PWM delle luci durante la luce solare, si tratterebbe di pilotare un carico resistivo a 12V sui 10A, però i mosfet che conosco (tipo gli irf520) modulano tutti sul negativo, mentre io avrei bisogno di mandare gli implusi sul +12
O non ho capito io cosa intendi per "modulano tutti sul negativo" oppure ti stai confondendo. i Mosfet tipo IRF520/IRF540 sono a canale "N", significa che per "accendersi" hanno bisogno di una tensione di gate positiva rispetto al source. Il modello IRF9540, invece, è a canale "P", significa che necessita, per accendersi di una tensione negativa sul pin di gate (basta accorgersi che sul DS le tensioni hanno il segno "-" davanti).
Ora, se la parte che hai scritto:
mandare gli implusi sul +12
significa che vuoi accendere dei carichi collegati ai 12v con impulsi positivi tramite PWM, allora il mosfet che ti serve è di tipo "N", proprio come il IRF540.
Se, invece, volevi intendere che, per particolari esigenze, intendi pilotare il carico lasciando il "negativo" comune e inviando il segnale sul polo positivo...beh, allora si, ti serve un mosfet di tipo "P".
Come ti ho scritto precedentemente, se piloti bene il MOSFET, non hai neppure bisogno di una grande aletta di raffreddamento; tempo fa ho realizzato un regolatore di luminosità in PWM con un IRF540 che pilota 3 lampade alogene da 35W a 12 V (quindi quasi 10A) che seppure dotato solo di una piccola aletta, scalda appena.
Se fai una ricerca digitando "totem pole driver" oppure "driver mosfet" ti fai un'idea.
Per il resto delle problematiche, quoto in toto Uwe.
Se non hai trovato soluzioni utili, e hai voglia di sperimentare un po' costruendoti qualcosa da solo e spendendo poco, puoi provare questo semplice schema:
http://blog.savel.org/2005/08/29/tl494-magic-chip-part-5/
Per Q1 e Q3 puoi usare dei comuni 2N2222, per Q2 2N2907 (è la versione PNP del precedente); R3 8,2 Ohm 1W;
in serie alla base di Q1 metti una R da 1K che andrà al pin PWM di Arduino.
Se il mosfet lo prendi di tipo P, ovviamente dovrai invertire i collegamenti rispetto a quanto mostrato nello schema mettendo il "carico" (rappresentato da R4) tra drain e massa.
Anche se nello schema non c'è, ti consiglio vivamente di mettere un C da 100nF tra Vcce GND vicinissimo ai due collettori di Q2 e Q3.
L'alimentazione (Vcc) di 12V sarà ovviamente separata da quella di Arduino. Le masse (Gnd), invece, sono in comune.
Puoi provarlo su una breadboard mettendo come carico una lampada a 12V; per precauzione, ovviamente, PRIMA di collegare il tutto ad Arduino farai delle prove locali collegando la resistenza della base di Q1 rispettivamente a GND e Vcc per controllare che tutto funzioni perfettamente.
Se usi un mosfet P hai pure il vantaggio di avere il segnale d'ingresso in "fase" con quello d'uscita, ovvero 0=off, 1=on.
significa che vuoi accendere dei carichi collegati ai 12v con impulsi positivi tramite PWM, allora il mosfet che ti serve è di tipo "N", proprio come il IRF540.
Se, invece, volevi intendere che, per particolari esigenze, intendi pilotare il carico lasciando il "negativo" comune e inviando il segnale sul polo positivo...beh, allora si, ti serve un mosfet di tipo "P".
Il mio carico (le lampadine dell'auto) sono collegate fisse alla massa, quindi devo agire facendo in modo che il mosfet eroghi corrente alla tensione di +12V rispetto alla massa, modulandola in PWM. Per questo mi pare che sia necessario un mosfet di tipo "P", come l'IRF9540.
Se non hai trovato soluzioni utili, e hai voglia di sperimentare un po' costruendoti qualcosa da solo e spendendo poco, puoi provare questo semplice schema:
TL494 – magic chip, Part 5 | Savel brain dump in English!
Proverò a farlo questo fine settimana, mi confermi quindi che se uso un mosfet di tipo P l'unica cosa che devo cambiare è il fatto che devo collegare il source al Vcc e il drain al carico (che poi sarà collegato alla massa)?
Per quanto riguarda il diodo zener da utilizzare con i pin di arduino va bene, mentre per le interferenze elettromagnetiche proverò a far girare uno sketch avvicinandomi via via alle candele, controllando se accade qualcosa di anomalo. Spero, comunque, con tutta l'elettronica che c'è a bordo, che abbiano pensato a fare qualche schermatura...
2 problemi non considerati:
al posto di un partitore userei una resistenza da 2,2 o 4,7 kOhm e un diodo zener da 4,7V. cosí sono sicuro che non ci sono impulsi che arrivano al Arduino.
Secondo problema. Vosto che il motore a benzina viene accesa la combustione del carburanze con una scintilla ci sono un sacco di disturbi in giro. L'arduino ne sofre tanto.
Con una macchina a gasolio non c'é la scintilla ma non credo che l' impianto elettrico sia meno disturbato.
Ciao sono d'accordo con te riguardo allo zener ma metterei un valore più basso di tensione con in parallelo un condensatore da 100nF e uno da 4,7uF ed avrai sicuramente una tensione più stabile e pulita. Mentre per l'alimentazione dell'Arduino potresti usare un filtro LC antidisturbo .
mi confermi quindi che se uso un mosfet di tipo P l'unica cosa che devo cambiare è il fatto che devo collegare il source al Vcc e il drain al carico (che poi sarà collegato alla massa)?
Si, esatto.
In alternativa un driver come questo potrebbe andare? (sarebbe il MCP-14E11)
Solo non ho ben capito come andrebbero collegati i pin e dove dovrei mettere il condensatore richiesto nella descrizione del Supply Input...
Altrimenti dello schema a totem-pole di cui abbiamo parlato (TL494 – magic chip, Part 5 | Savel brain dump in English!):
come devo dimensionare la R2?
Da quanto dev'essere il condensatore C1?
Il collegamento tra Vcc e la base di Q1 (che passa attraverso la R5) lo devo togliere se voglio collegare la base di Q1 al pin di arduino (in serie a una resistenza da 1K)?
Premetto che non ho mai usato questo componente, quindi magari se c'è qualcuno che usa questi driver potrebbe esserti di miglior aiuto.
Comunque leggendo il DS mi sembra proprio che faccia al caso tuo. Gestisce correnti fino a 3A e ha un rise time di 14nS con capacità di gate fino a 1800pF (il IRF9540 sta mediamente intorno ai 1100pF). Due ingressi separati con due enable con pullup incorporata, quindi se non li usi puoi lasciarli "float" come sta scritto, e inoltre nello stesso chip (MCP-14E11) hai il canale inverting e quello non inverting.
Mi sembra buono, quasi quasi ne ordino un paio anch'io
L'uso dovrebbe essere molto semplice. Suppongo userai l'ingresso "inverting"; INPUT sul pin PWM di Arduino, OUTPUT direttamente al gate del mosfet (alla fine sono fatti apposta per questo uso) e ENABLE libero. L'altro ingresso (non-inverting) se non è usato lo metti a GND.
Il condensatore di cui parla nel "Supply Input" è un semplice condensatore di disaccoppiamento da 100nF da mettere molto vicino al driver.
Per quanto riguarda lo schema totem-pole, per C1 va benissimo un elettrolitico da 100uF (non scordarti, invece il 100nF "appiccicato" ai collettori di Q2 e Q3). Per R2 va benissimo 1K, a questo proposito ti consiglio di mettere in parallelo a questa resistenza un C da 470pF; questo condensatore è il classico "speed-up cap". E serve a spazzare via nel più breve tempo possibile i portatori di carica minoritari durante il "turn-off" (spegnimento), aumentando le prestazioni.
La R5 la metterei da 10K ed esattamente al contrario, cioè tra base e GND, come pulldown.
Ciao a tutti!
Ho ordinato l'MCP-14E11 e il mosfet, dovrebbero arrivare la settimana prossima, intanto ho provato arduino con un piccolo sketch contenente un po' di tutto appoggiato alla testata della mia Fiesta, a pochi centimetri dalle candele, tra i 700 e i 6600 giri, e non ha fatto una piega. Anche alimentandolo dall'accendisigari non ha patito, se non per un leggero surriscaldamento del regolatore di tensione, a cui dovrò pensare quando realizzerò definitivamente il mio progetto.
Quindi possiamo dire che per quanto riguarda i disturbi, o la mia auto è particolarmente schermata, oppure non ci sono problemi rilevabili...
gigific:
se non per un leggero surriscaldamento del regolatore di tensione
Ricordati che i 12V sono "nominali". In realtà in condizioni di marcia la tensione fornita dalla batteria si attesta intorno ai 14V. Tieni conto di questo valore per dimensionare i componenti ed il relativo raffreddamento.
Oggi ho provato il driver, mi è sembrato di aver fatto tutti i collegamenti giusti, ma alla prima accensione è fuggito via il "magic smoke"
Secondo il datasheet visibile qualche post fa ho collegato all'IN A il pin 10 dell'arduino per il PWM, GND e IN B li ho messi a terra, l'OUT A l'ho collegato al gate dell'irf9540 (il primo pin a sinistra, guardandolo frontalmente), il drain (pin centrale) l'ho collegato alla lampadina da 3W a 12V che avevo da muletto, il source al +12 volt, così come al +12 ho collegato anche la VDD.
OUT B, ENB_A e ENB_B non li ho collegati a nulla, e ho messo il condensatore ceramico da 100nF con una gambetta sul GND vicino al driver e l'altra al VDD del driver. Ho collegato il GND dell'arduino al GND della batteria da 12V e appena ho acceso l'interruttore della batteria tempo 2 secondi il driver si è arrostito...
Ho sbagliato qualcosa?