Ciao a tutti,
da diversi giorni sto cercando attivamente informazioni riguardo alla possibilità di controllare tramite l'uscita PWM di Arduino la velocità di motori asincroni monofase 220V. Questa esigenza mi sembra tutt'altro che atipica eppure ho trovato poche soluzioni concrete.
Presi in seria considerazione i problemi di sicurezza relativi alla 220V e la necessità di usare un inverter per mantenere alti valori di coppia dei motori ad induzione, la soluzione più semplice mi pare il controllo tramite PWM da Arduino di un circuito basato su di un TRIAC.
L'utilizzo di un TRIAC invece di un inverter nel caso di piccole potenze e bassa coppia d'avvio non dovrebbe essere un problema.
Conoscete qualche progetto o prodotto già costruito in grado di accettare il segnale PWM di Arduino per variare l'uscita di un TRIAC?
Oppure, scegliendo una soluzione più dispendiosa, conoscete un inverter che accetti il segnale PWM di Arduino per variare la velocità di un motore monofase ad induzione?
Non hai trovato niente perché non é possibile.
Usando dei Triac o Relé a stato solido un segnale PWM non funziona come su un motore DC con un transitore o MOSFET.
I Triac o SSR puoi acccendere ma non spegnere. Si spengono al passaggio attraverso zero della corrente sinusoidale.
Devi usare la tecnica quá descritta: Triac - Wikipedia .
Per questo devi rilevare il passaggio zero della tensione sinusoidale e accendere il triac con un ritardo.
Ciao Uwe
Tempo fa un amico mi chiese uno schema di un regolatore di velocità per trapani e facendo una ricerca in rete trovai questo raffotech.it , si tratta di un vecchio KIT di Nuova Elettronica dove al posto di un Triac usano un SCR in quanto riuscivano a mantenere alta la coppia anche alle basse velocità.
Si dovrebbe solo cercare un modo di interfacciarlo all'arduino per controllare il motore , ad esempio si potrebbe sostituire il potenziometro con uno digitale facilmente gestibile dall'arduino.
Dimentica l' uso di un potenziometro digitale. Quelli reggono tensioni basse che devono essere dentro nella tensone di aliemntazione del integrato.
Quel schema non va bene perché usa solo una semionda su due. Devi usare un Triac, un SSR o 2 tiristori in antiparalello o un tiristore con un ponte radrizzatore.
Ciao Uwe
Non hai specificato il tipo di motore, AC da solo dice poco. Es il trapano monta motori a spazzole con eccitazione serie, il motorino dell'acqua è ad induzzione a gabbia di scoiattolo ecc.
Di che potenza stiamo parlando, 500 Watt o superiore.
Supponiamo che tu non hai il motore, ma trovi l'inverter (da costuire o comprato così com'è), per il motore potresti procurarti una Lavatrice Ariston di non più di 5 anni di vita magari guasta da cui prendere il motore, questo perchè sti motori sono certificati per lavorare fuori frequenza, mi pare 80-350HZ. Quindi non tutti i motori AC sono adatti a lavorare fuori frequenza, ed il fatto che giri alla frequenza da te imposta non dice niente per quanto girera prima di incendiarsi.
Se invece tenti la strada del triac, puoi cominciare a studiare le Application Note dei produttori noti. Es TI ha prodotto questo interessante documento, da adattare ovviamente. Redirect Notice
Gli ho dato una lettura super veloce, ed ho visto che c'è anche un esempio per rilevare anche quando la corrente sfasata passa per lo zero spegnendo il triac prematuramente, ricevere questa segnalazione ci permette di inviare un altro impulso al triac per manternelo ON.
Vedi un pò tu quello che trovi in merito, postalo pure qui, perchè quanto prima devo collegare un motore a spazzole eccitazione serie da 600W, che poi è quello montato sulla lavatrici da almeno una ventina di anni. Il lavoro che deve fare il motore è quello tradizionale fare girare il cestello per lavare, cetrifugare ecc.
Innanzitutto vi ringrazio per le tante risposte, sono stato lungo nella richiesta, ma... manca sempre qualche informazione!
Il motore di cui vorrei regolare la velocità è o un classico motore monofase ad induzione con condensatore oppure un economico motore monofase a poli schermati. La potenza dovrebbe aggirarsi sui 100 Watt.
Il funzionamento dei TRIAC mi è noto: non voglio pilotare i TRIAC direttamente da Arduino, vorrei un dispositivo già provvisto di rilevamento del passaggio attraverso lo zero da poter pilotare con il segnale PWM di Arduino:
PWM di Arduino --> Circuito di controllo TRIAC optoisolato --> TRIAC
per MauroTec:
Se capisco bene la tua interessante risposta, per piccole potenze mi consigli un circuito con un TRIAC, perché con un inverter rischio di usare frequenze che potrebbero danneggiare il motore, non conoscendone a fondo le caratteristiche.
Non c'è invece alcun rischio di danneggiamento legato alle forme d'onda poco regolari generate tipicamente dal TRIAC per ridurre la potenza?
Leggerò i tuoi link appena ho un attimo!
Il funzionamento dei TRIAC mi è noto: non voglio pilotare i TRIAC direttamente da Arduino, vorrei un dispositivo già provvisto di rilevamento del passaggio attraverso lo zero da poter pilotare con il segnale PWM di Arduino:
PWM di Arduino --> Circuito di controllo TRIAC optoisolato --> TRIAC
Si sarebbe bello se trovassi una scheda che fa questo lavoro, in effetti non ho mai cercato una scheda pronta di questo tipo.
Se la trovi, sia basata su Triac o inverter posta qui che ci do uno guardata.
Nelle vecchie lavatrici (non vecchissime) per regolare la velocità del motore a spazzole eccitazione serie si usava il TDA1085C, che però richiede dinamo tachimetrica. C'è da vedere se può lavorare senza dinamo, ovviamente la regolazione dipenderà dal carico di lavoro a cui si sottopone il motore, con la dinamo la velocità è indipendente dal carico perchè il circuito lavora ad anello in feedback.
PS:non riesco a spiegarmi, senza termini tecnici.
Ti consiglio un triac, per molti motivi:
L'inverter se lo trovi pronto sul mercato sarà in grado di comandare potenze di almeno 1 KW e costerà uno sproposito.
L'inverter è un circuito molto complesso, anche autocostruirlo richiede componenti non economici, quindi costerà.
I normali motori AC da te descritti vengono progettati per lavorare a tensione di rete con frequenza di 50/60 HZ, e a questa frequenza girano alla loro massima velocità. Quindi l'inverter dovrebbe generare una frequenza più bassa dei 50 di rete, es 20-60 HZ. Anche trovanto un siffatto inverter ce da vedere come si comporta il motore a lavorare fuori frequenza di progetto. Cosa accade non lo so, ma pensare che vada tutto liscio e semplicistico e superficiale.
Il Triac costa 1 euro o poco più, ma anche qui credo che farai fatica a trovare un circuito pronto che comanda il triac
in modo appripriato in base al segnale PWM fornito.
il bello del triac e' che si spegne da solo.
infatti con un condensatore, un diac ed un potenziometro si fa un dimmer
perche' il rilevaento non serve in questo caso ? perche' il condensatore si scarica all'attivazione del triac.
E' un circuito autosincronizzante che non necessita di rilevazione dello zero
cosa proverei quindi ?
innanzitutto sostituire il diac con un ujt, e poi interfacciare opportunamente il pwm di arrduino.
il bello del triac e' che si spegne da solo.
infatti con un condensatore, un diac ed un potenziometro si fa un dimmer
perche' il rilevaento non serve in questo caso ? perche' il condensatore si scarica all'attivazione del triac.
E' un circuito autosincronizzante che non necessita di rilevazione dello zero
cosa proverei quindi ?
innanzitutto sostituire il diac con un ujt, e poi interfacciare opportunamente il pwm di arrduino.
Sai come funziona un diac?
Quel circuito che descrivi ha una bella isteresi di acensione. Devi alzare il potenziometro un bel po per farlo funzionare e lí parte da un valore abbastanza alto.
Mi spieghi come puó funzionare un segnale PWM a 490 Hz per pilotare un Triac che deve comutare 50Hz?
@BrainBooster
un SSR per 230V alternata non é nient altro che un triac con un optocopler e un po di elettronica intorno.
@uwefed @BrainBooster
Un SSR con Arduino l'ho già usato con successo... ma non mi regola la velocità del motore, lo accendo e lo spengo. A meno che non mi consigliate di accenderlo e spegnerlo ad intervalli molto ravvicinati. Sarebbe salutare per il motore?
Nel mio caso non ho usato un SSR "inscatolato", ma un PCB autocostruito con un TRIAC ed un optoisolatore che controlla il passaggio per lo zero.
@uwefed
Ho letto la scheda tecnica, ma parla espressamente di carichi resistivi. Non ci collegherei un motore ad induzione.
@MauroTec
Rileggendo i tuoi interventi ho capito meglio la mia ignoranza sui motori in AC! :~
Dalle tue parole deduco che i comuni motori monofase ad induzione presenti negli elettrodomestici non sono proprio nati per essere pilotati con inverter, ma con semplici circuiti con i TRIAC.
Mi ero un po' cristallizzato sul fatto che la sola "effettiva e sicura" modalità di regolazione della velocità di rotazione dei motori ad induzione fosse la variazione della frequenza.
Sono riuscito ad acquistare in rete un circuito pilotabile con il segnale PWM di Arduino per il controllo della velocità di rotazione basato su TRIAC.
La forma d'onda che viene generata mi pare molto "sporca" ed infatti il motore (sia ad induzione con condensatore, sia a poli nascosti) si comporta in maniera irregolare e talvolta diventa rumoroso.
Dopo queste prove, stimolato anche dalle vostre risposte, mi sono chiesto se semplicemente accendendo a rapida intermittenza un SSR (con controllo dello zero per minimizzare le interferenze) sia possibile graduare la velocità di un motore monofase in AC. Graduando il tempo di accensione rispetto a quello di spegnimento dovrei ottenere un risultato simile con meno distorsione, essendoci il controllo dello zero.
Nelli elettrodomestici spesso non ci sono motori ad induzione con condensatore o a poli nascosti ma motori con spazzole dove lo statore viene alimentato anche in alternata (costruzione molto simile come un motore corrente continua a spazole).
Ciao Uwe
Ciao a tutti,
anche io mi trovo alle prese con il tuo problema e ci sono arrivato solo come passaggio.
E' vero che il motore asincrono monofase NON è nato per essere pilotato con un inverter ma si fa lo stesso come potete vedere dallo schema allegato.
Sono indicati gli avvolgimenti MAIN e si START, ora mi sembra di ricordare che non sono identici infatti su qello di start si mette il condensatore di avviamento.
Come potete vedere si usa una PWM anche sull'avvolgimento secondario (di avviamento) e anche se non è efficate come la PWM applicata sull'avvolgimento principale io penso che dovrebbe funzionare > basta solo scrivere il codice per Arduino.
bello.
ma dove hai trovato questo schema di principio non c'e' anche lo schema elettrico ed il codice del pic ?
se cosi' fosse basterebbe fare una conversione, mentre cosi' si deve creare tutto daccapo, sia hw che sw.
Ora me lo studio anche io ma da quello che ho visto prima con Arduino UNO si può realizzare al massimo il controllo per il motore monofase perchè i timer di cui dispone hanno al max 2 uscite per il COMPARE (mi pare si chiamano OCRnA e OCRnB).
Per quello trifase dobbiamo passare ad ATmega2560 cioè Arduino Mega 2560.
Spero che mi sbagli.
non sono ancora addentro ai timer, Leo ci ha giocato e logicamente anche altri maestri del forum possno aiutarti.Dal link messo si evince cmq una doppia possibilita', con i pic piu' semplici e' stato fatto il pwm via sw, mentre con i pic serie 18 e' via hardware.
Magari anche sugli atmega c'e' questa doppia possibilita.
Proverò a contattare qualcuno che ha lavorato con i timer.
Comunque ho trovato che anche "mamma" ATMEL ha i sui chip che sono predisposti per controllare con la PWM i motori AC come per esempio AT90PWM3 anche lui a 8 bit.
Ora mi è venuta in mente una cosa: se trovo il codice C per il controllo del motore AC per l'AT90PWM3 proverei a compilarlo e inserirlo poi in Arduino MEGA 2560 con il software ARDUINO (non ho messo Arduino UNO perchè penso che l'ATMega328P non ha tutte le funzioni che servono per i timer).
Cioè più in generale si può prendere del codice C Atmel e usarlo in Arduino?
Mi pare che avevo letto di si. Sarebbe come costruire una nuova libreria.
Grazie