- Modulazione della larghezza di impulso:
- Materiale richiesto
- Schema elettrico
- Codice e spiegazione
- Controllo della velocità del motore CC utilizzando Arduino
Il motore DC è il motore più utilizzato nei progetti di robotica ed elettronica. Per controllare la velocità del motore CC abbiamo vari metodi, come la velocità può essere controllata automaticamente in base alla temperatura, ma in questo progetto il metodo PWM verrà utilizzato per controllare la velocità del motore CC. Qui in questo progetto di controllo della velocità del motore di Arduino, la velocità può essere controllata ruotando la manopola del potenziometro.
Modulazione della larghezza di impulso:
Cos'è il PWM? PWM è una tecnica utilizzando possiamo controllare la tensione o la potenza. Per capirlo più semplicemente, se stai applicando 5 volt per guidare un motore, il motore si muoverà con una certa velocità, ora se riduciamo la tensione applicata di 2 significa che applichiamo 3 volt al motore, anche la velocità del motore diminuisce. Questo concetto viene utilizzato nel progetto per controllare la tensione utilizzando PWM. Abbiamo spiegato in dettaglio PWM in questo articolo. Controlla anche questo circuito dove PWM viene utilizzato per controllare la luminosità del LED: 1 Watt LED Dimmer.
% Duty cycle = (TON / (TON + TOFF)) * 100 Dove, T ON = tempo ALTO dell'onda quadra T OFF = tempo BASSO dell'onda quadra
Ora, se l'interruttore nella figura è chiuso continuamente per un periodo di tempo, il motore si accenderà continuamente durante quel periodo. Se l'interruttore è chiuso per 8 ms e aperto per 2 ms su un ciclo di 10 ms, il motore sarà ON solo nel tempo di 8 ms. Ora il terminale medio su un periodo di 10 ms = tempo di accensione / (tempo di accensione + tempo di spegnimento), questo è chiamato ciclo di lavoro ed è dell'80% (8 / (8 + 2)), quindi la media la tensione di uscita sarà l'80% della tensione della batteria. Ora l'occhio umano non può vedere che il motore è acceso per 8 ms e spento per 2 ms, quindi sembrerà che il motore CC stia ruotando all'80% della velocità.
Nel secondo caso, l'interruttore è chiuso per 5 ms e aperto per 5 ms per un periodo di 10 ms, quindi la tensione media del terminale in uscita sarà il 50% della tensione della batteria. Dire se la tensione della batteria è 5 V e il ciclo di lavoro è del 50%, quindi la tensione media del terminale sarà 2,5 V.
Nel terzo caso il duty cycle è del 20% e la tensione media dei terminali è del 20% della tensione della batteria.
Abbiamo utilizzato PWM con Arduino in molti dei nostri progetti:
- Dimmer LED basato su Arduino con PWM
- Ventola a temperatura controllata utilizzando Arduino
- Controllo motore CC utilizzando Arduino
- Controllo della velocità della ventola CA utilizzando Arduino e TRIAC
Puoi saperne di più su PWM passando attraverso vari progetti basati su PWM.
Materiale richiesto
- Arduino UNO
- motore a corrente continua
- Transistor 2N2222
- Potenziometro 100k ohm
- Condensatore 0.1uF
- Breadboard
- Salto di fili
Schema elettrico
Lo schema del circuito per il controllo della velocità del motore CC di Arduino utilizzando PWM è riportato di seguito:
Codice e spiegazione
Alla fine viene fornito il codice completo per Arduino DC Motor Control tramite potenziometro.
Nel codice seguente, abbiamo inizializzato la variabile c1 e c2 e assegnato il pin analogico A0 per l'uscita del potenziometro e il 12 ° pin per 'pwm'.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Ora, nel codice seguente, impostare il pin A0 come input e 12 (che è il pin PWM) come output.
void setup () { pinMode (pwmPin, OUTPUT); // dichiara il pin 12 come output pinMode (pot, INPUT); // dichiara il pin A0 come input }
Ora, in void loop (), stiamo leggendo il valore analogico (da A0) utilizzando analogRead (pot) e salvandolo nella variabile c2. Quindi, sottrai il valore c2 da 1024 e salva il risultato in c1. Quindi rendere il pin PWM 12 ° di Arduino ALTO e quindi dopo un ritardo di valore c1 rendere quel pin BASSO. Di nuovo, dopo un ritardo di valore c2 il ciclo continua.
Il motivo per sottrarre il valore analogico da 1024 è che l' ADC Arduino Uno ha una risoluzione di 10 bit (quindi i valori interi da 0 - 2 ^ 10 = 1024 valori). Ciò significa che mapperà le tensioni di ingresso tra 0 e 5 volt in valori interi compresi tra 0 e 1024. Quindi se moltiplichiamo l'ingresso anlogValue a (5/1024), otteniamo il valore digitale della tensione di ingresso. Scopri qui come utilizzare l'input ADC in Arduino.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // imposta il pin 12 HIGH delayMicroseconds (c1); // attende c1 uS (high time) digitalWrite (pwmPin, LOW); // imposta il pin 12 LOW delayMicroseconds (c2); // attende c2 uS (low time) }
Controllo della velocità del motore CC utilizzando Arduino
In questo circuito, per controllare la velocità del motore DC, utilizziamo un potenziometro da 100K ohm per modificare il duty cycle del segnale PWM. Il potenziometro da 100K ohm è collegato al pin di ingresso analogico A0 di Arduino UNO e il motore CC è collegato al 12 ° pin di Arduino (che è il pin PWM). Il funzionamento del programma Arduino è molto semplice, in quanto legge la tensione dal pin analogico A0. La tensione sul pin analogico viene variata utilizzando il potenziometro. Dopo aver eseguito alcuni calcoli necessari, il ciclo di lavoro viene regolato in base ad esso.
Ad esempio, se forniamo un valore di 256 all'ingresso analogico, il tempo HIGH sarà 768 ms (1024-256) e il tempo LOW sarà 256 ms. Pertanto, significa semplicemente che il ciclo di lavoro è del 75%. I nostri occhi non possono vedere un'oscillazione così alta e sembra che il motore sia continuamente acceso con il 75% della velocità. Ecco come possiamo eseguire il controllo della velocità del motore usando Arduino.