motori brushless combinazione per ruotare

fonti: http://elabz.com/brushless-dc-motor-with-arduino/

su che questa immagine si nota la tabella dove fa capire che continuando a cambiare le fasi del motore potrei farlo girare.
la domanda è: con dei transistor(per non sovraccaricare le porte di arduino) un po di codice per alternare le combinazioni ruota?
lo chiedo perché mi sembra persino troppo semplice di solito un motore brushless bisogna collegarlo a un regolatore che è pieno di componenti elettronici.
fatemi capire per favore.
grazie :slight_smile:

visto così basta mettere alti e bassi gli avvolgimenti nell'ordine giusto. non puoi certo attaccarti alle uscite di arduino, se hai un uln2003 potresti usare quello, da 1A per uscita, se avessi uno di quei motori farei una prova.

ovviamante nel codice aggiungi un poteziometro per regolare i giri

quanta corrente serve al tuo motore?

mandorlone la prova sù la puoi fare, ma se vuoi farlo muovere con fluidità devi pilotarlo generando 3 fasi sinusoidali per mezzo dei pwm disponibili su arduino sfasate di 120 gradi una dall’altra.
intanto ti consiglio di iniziare a costruirti un ponte trifase a mosfet o acquistarlo bello e fatto.
se hai un pò di componenti in casa inizia a realizzare il circuito:
chiaramente i mosfet devono essere adatti alla potenza del motore… o eventualmente procurarti un driver 3phase all-in-chip.

in questo schema l’elettronica di pilotaggio la devi triplicare.
poi per pilotare il tutto con arduino devi usare 3 uscite pwm per i rami inferiori e 3 uscite digitali per i rami superiori.
il firmware … farà il resto.

se vuoi approfondire:
http://www.atmel.com/Images/doc8010.pdf
oppure se vuoi fare un controllo completo con sensori…
http://www.atmel.com/Images/doc2596.pdf

3 fasi sinusoidali per mezzo dei pwm disponibili su arduino sfasate di 120 gradi una dall'altra.

non ho capito a cosa si riferiscono i 120°, il segnale deve essere analogico? non posso in 1/0 mettere alto e basso e basta?

in questo schema l'elettronica di pilotaggio la devi triplicare.
poi per pilotare il tutto con arduino devi usare 3 uscite pwm per i rami inferiori e 3 uscite digitali per i rami superiori.
il firmware .... farà il resto.

perché la devo triplicare?

ho ancora un piccolo dubbio la velocità del motore è proporzionale alla velocità con la quale cambio combinazione? se è così il ciclo di 6 combinazioni in quanto tempo devo farlo fare per far girare il motore?

aumentando di tanto i giri perdo tanta coppia?

queste sono domande da profano ma voglio chiarire bene il discorso. grazie dei link utili.

Il motore brushless ha 3 cavetti. Ha 3 avvolgimenti che sono collegati (in stella triangolo) con i 3 cavetti. Per pilotarli devi dare 3 alimentazioni che sono sfasati (ritardati uno dallaltro) di 120 gradi (un onda intera sono 360 gradi)

Perche il motore funzioni bene sarebbe meglio creare un andamento di corrente sinusoidale. Visto che non é possibile con arduino la soluzione che viene vicino é una segnale PWM che é pilotato in modo che la risulante é una sinusoidale. I tempi della PWm cambiano da inpulso a impulso.

ogni cavo del motore deve ricevere la sua alimentazione. Lo schema postato ha per uesto 3 mezzi ponti H. il pilotaggio dei transistori serve per ogni MOSFET ma per risparmiare é disegnato solo per un mezzo ponte.

Ciao Uwe

uwe, grazie per avermi coadiuvato nell' aiuto al mandorlone.

Tante volte ciò che a noi sembra chiaro, per altri può essere deeply-dark :)

ottimo grazie mille a tutti ora ho capito molto bene. quindi lo scema serve sole per fare le 3 onde sinusoidali ma con 1 porta digitale con modulazione pwm. che periodo devo modulare con il pwm? grazie della grossa mano che mi state dando mi sento a un passo a riuscirci :)

Partendo dal presupposto che posso aiutarti .... è chiaro che non sono qui per realizzare al posto tuo il tuo circuito. Quindi posso man mano spiegarti i passi per realizzare un motion control 3phase indicandoti quali sono i passaggi da fare per arrivare al progetto finale. Magari il progetto potrebbe interessare altri del forum non sapendo se avete mai realizzato un controllo trifase di questo genere.

1) hai di bisogno di un arduino con avr con almeno 3 pwm in uscita sincronizzati overo OC1A, OC1B, OC1C ... non puoi realizzarlo con atmega328 perchè ci sono solo OC1A e OC1B, bensi hai bisogno almeno dell' atmega64 .... quindi Arduino mega 2560.

ditemi se volete che continui.............

@cyclone
perché i PWM devono essere sincronizzati?

I pin XU e XL dello schema poterbbero essere alimentate dallo stesso usciata PWm mettendo un NOR in mezzo per invertire uno dei due pilotaggi. Se aggiungi un AND puoi usare un pin del Arduino per l’ enable.

@ilmandorlone
Il valore PWM lo calcoli per avere Ton da 0 a 100% ovvero Ton = (1+sin(alfa))/2*100 come la curva pink della seconda immagine che avevo allegato.

Ciao Uwe

@uwe sono curioso, come faresti a generare 3 pwm con Carrier frequency di circa 15Khz con una Sinu frequency compresa tra 0.5-100Hz con step da 0.1Hz con la risoluzione del PWM = 8bit e sfasati di 120° ? senza che i pwm siano perfettamente sincronizzati tra di loro e anche con i segnali di pilotaggio fase?

hai mai realizzato qualcosa del genere o stai facendo delle ipotesi ?

faccio un'ipotesi, con uno o più timer? considerando la precisone del timer è circa 4microsec e per fare 15KHz ne bastano (a naso) 300microsec ci stiamo.

cyclone:
@uwe
sono curioso,
come faresti a generare 3 pwm con Carrier frequency di circa 15Khz con una Sinu frequency compresa tra 0.5-100Hz con step da 0.1Hz
con la risoluzione del PWM = 8bit e sfasati di 120° ? senza che i pwm siano perfettamente sincronizzati tra di loro e anche con i segnali di pilotaggio fase?

hai mai realizzato qualcosa del genere o stai facendo delle ipotesi ?

Ho riparato con successo cose del genere. :wink: :wink: :wink: (inverter 230V 700W)

Ciao Uwe

@cyclone forse allora non ho capito cosa sono le uscite (x,y,z) del circuito. non sono le uscite da attaccare ai pin a,b,c del motore??

Sulle uscite X Y Z va attaccato il motore. Ciao Uwe

come pensavo io quindi basta solo 1 circuito per 1 motore. scusate se insisto ma non voglio che me lo fate ma così come sono messo non riesco a costruire il tutto anche per mancanza di componenti, i transistor nel circuito a parte faccio fatica a capire quali mi servono non sono sicuro di averli dovrei dare un occhiata al cassetto transitar ma è incasinato :) e il secondo problema è che prima di ordinarli voglio capire bene come funziona prima di sbagliare e spendere soldi per niente. quello che ho per ora è arduino, un motore brushless e un bel cassetto molto caotico di transistor :) vgh, xu e xl cosa sono?

ilmandorlone: quello che ho per ora è arduino, un motore brushless e un bel cassetto molto caotico di transistor :)

In tutto questo discorso forse è sfuggito un elemento importante, Mandorlone il tuo motore è un BLAC oppure è un classico BLDC usato nel mondo del modellismo ? Nel secondo caso cambia completamente il metodo di controllo, tra parentesi il link del tuo primo post parla proprio di BLDC.

io ho un motore da modellismo lo stesso che monto sui miei aerei che vengono collegati a un regolatore che viene pilotato da una ricevente nel mio caso fm. non sapevo che esistessero 2 motori brushless differenti ora cerco un po di informarmi grazie.

ma in sostanza a me cosa cambia se devo far girare un BLAC BLDC?

ilmandorlone: non sapevo che esistessero 2 motori brushless differenti ora cerco un po di informarmi grazie.

Brushless significa senza spazzole e tutti i motori che non ne sono provvisti entrano in questa definizione, pure gli stepper sono brushless, esistono molti tipi di motore brushless, la prima distinzione da fare è se sono BLAC, brushless AC, oppure BLDC, brusheless DC, ovvero se vanno pilotati in alternata oppure in continua. Il tuo motore è un BLDC e sicuramente di tipo sensorless, cioè non ha integrati i sensori per il rilevamento della posizione del rotore per controllare le fasi, dato che con questo tipo di motore sono indispensabili si utilizza la tecnica sensorless che prevede la rilevazione della b.e.m.f. per ovviare alla mancanza dei sensori. La differenza fondamentale tra un BLAC e un BLDC è che il primo gira ad una velocità legata alla frequenza delle tre sinusoidi, te lo sto mettendo molto semplice perché il discorso è abbastanza complesso, mentre il secondo gira ad una velocità dipendente dalla tensione applicata (ma anche dal carico meccanico) e sono le tre fasi che devono adeguarsi di conseguenza come frequenza. Controllare un brushless, sia AC che DC, non è una cosa semplice da fare, oltre alla questione stadio di potenza, che è sempre critico da realizzare, sopratutto in presenza di alte correnti come nel caso dei BLDC per modellismo per via dell'elevata potenza di questi motori, sia per la complessità del software che gestisce il tutto. Ti consiglio di utilizzare un ESC commerciale per far girare il tuo motore, non solo costa molto di meno di uno autocostruito di pari prestazioni, ma almeno sei sicuro che funziona e lo controlli con un comando PPM (servo) con un singolo pin di Arduino senza impegnare troppe risorse del micro, per il controllore BLDC il 328 lo devi dedicare integralmente solo questa cosa e scordati di programmarlo in Wiring, devi farlo necessariamente in C standard accedendo direttamente ai registri macchina.

astrobeed:

ilmandorlone: non sapevo che esistessero 2 motori brushless differenti ora cerco un po di informarmi grazie.

Brushless significa senza spazzole e tutti i motori che non ne sono provvisti entrano in questa definizione, pure gli stepper sono brushless, esistono molti tipi di motore brushless, la prima distinzione da fare è se sono BLAC, brushless AC, oppure BLDC, brusheless DC, ovvero se vanno pilotati in alternata oppure in continua. Il tuo motore è un BLDC e sicuramente di tipo sensorless, cioè non ha integrati i sensori per il rilevamento della posizione del rotore per controllare le fasi, dato che con questo tipo di motore sono indispensabili si utilizza la tecnica sensorless che prevede la rilevazione della b.e.m.f. per ovviare alla mancanza dei sensori. La differenza fondamentale tra un BLAC e un BLDC è che il primo gira ad una velocità legata alla frequenza delle tre sinusoidi, te lo sto mettendo molto semplice perché il discorso è abbastanza complesso, mentre il secondo gira ad una velocità dipendente dalla tensione applicata (ma anche dal carico meccanico) e sono le tre fasi che devono adeguarsi di conseguenza come frequenza. Controllare un brushless, sia AC che DC, non è una cosa semplice da fare, oltre alla questione stadio di potenza, che è sempre critico da realizzare, sopratutto in presenza di alte correnti come nel caso dei BLDC per modellismo per via dell'elevata potenza di questi motori, sia per la complessità del software che gestisce il tutto. Ti consiglio di utilizzare un ESC commerciale per far girare il tuo motore, non solo costa molto di meno di uno autocostruito di pari prestazioni, ma almeno sei sicuro che funziona e lo controlli con un comando PPM (servo) con un singolo pin di Arduino senza impegnare troppe risorse del micro, per il controllore BLDC il 328 lo devi dedicare integralmente solo questa cosa e scordati di programmarlo in Wiring, devi farlo necessariamente in C standard accedendo direttamente ai registri macchina.

intendi uno di questi http://www.hobbyking.com/hobbyking/store/__13429__HobbyKing_30A_BlueSeries_Brushless_Speed_Controller.html ho già avuto delle esperienze con il ppm ma non ne sono mai uscito :) io quel regolatore c'è l'ho ma non so come pilotarlo con il ppm. insomma sono un caso perso :) :) :grin: :grin: