Circuito generatore di segnale PWM Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post studiamo in modo approfondito come realizzare un circuito generatore di segnale PWM basato su Arduino, che può essere impostato o regolato con un potenziometro o un potenziometro a qualsiasi rapporto di duty cycle preferito.

DiAnkit Negi



CHE COSA È PWM?

pwm o modulazione di larghezza di impulso come suggerisce il nome stesso è la modulazione della larghezza degli impulsi, ovvero per quanto tempo l'impulso è alto o basso in un dato periodo di tempo. Questo cambia il ciclo di lavoro dell'impulso che alla fine determina il valore medio dell'impulso poiché il ciclo di lavoro è attivo nel tempo diviso per il periodo di tempo totale.

E la frequenza gioca un ruolo molto importante nella pwm, che deve essere sufficientemente alta da generare un output stabile



Pwm è fatto per vari scopi, come guidare un dispositivo che funziona a bassa tensione o per scopi di commutazione come in SMPS.

PWM UTILIZZANDO ARDUINO UNO

Pwm è anche uno dei fattori che rendono arduino una scheda di sviluppo più semplice, poiché pwm può essere fatto aggiungendo un solo codice di riga al programma. Si noti che sono disponibili pin digitali separati su arduino UNO per pwm, il che significa che questi pin possono fornire un output pwm.

Ci sono un totale di 6 pin pwm disponibili su arduino UNO che sono 3, 5, 6,9,10 e 11 pin digitali su 14. Nota che il numero di pin pwm varia da un tipo di scheda arduino a un altro.

Ora ci sono due modi in cui pwm può essere eseguito da arduino:

1. Assegnando direttamente un valore analogico al pin pwm compreso tra 0 e 255.

Poiché i pin digitali in arduino possono fornire un massimo di 5V, significa che 0 valore analogico è uguale a 0 volt e 255 è equivalente a 5 volt.

E per farlo devi semplicemente aggiungere questo codice al tuo programma:

analogWrite (PWM pin no, valore compreso tra 0 e 255)

Ad esempio: analogWrite (10,64) // scrive il valore analogico 64 sul pin pwm n. 10.

Ora questo significa: (5/255) * 64 volt = 1,25 volt, ovvero un ciclo di lavoro del 25%.

2. Assegnando il valore in base all'ingresso ricevuto dai pin analogici di arduino.
L'input può essere preso da componenti come un sensore IR o un potenziometro.

Si noti che arduino riceve un ingresso analogico in termini di valore compreso tra 0 e 1023, che equivale a 0-5 volt. Quindi per eseguire pwm su un pin è necessario convertire questo valore di input in equivalenza in un numero compreso tra 0 e 255 e questo è chiamato mapping nel linguaggio di arduino.

C'è un semplice codice per questo:

y = map (x, 0,1023: 0,255) // dove x è la variabile di input

Dopodiché puoi eseguire pwm su un pin usando:

analogWrite (PWM pin no, y) // scrive il valore mappato ricevuto sul pin 10

ESEMPIO PWM:

Impareremo entrambe le tecniche con questo esempio. Per questo hai bisogno di:

1. Un potenziometro
2. Due led
3. Due resistenze da 100 ohm

Effettuare i collegamenti come mostrato nello schema del circuito:

SCHEMA ELETTRICO:

CODICE:

int x// initialise variables
int y
void setup() {
pinMode(10,OUTPUT)//initialise pin 10 as output
pinMode(9,OUTPUT)//initialise pin 9 as output
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
// put your setup code here, to run once:
}
void loop() {
analogWrite(9,125)// directly assigning value to pin 9 i.e. case1
x=analogRead(A0)// read values from potentiometer in terms of voltage
y= map(x,0,1023,0,255)// map those values from 0 to 255 // put your main code here, to run repeatedly:
analogWrite(10,y)// assigning value based on input from pot at pin A0 i.e. case 2
}

Come funziona

Il funzionamento di base del progetto di generatore di segnali PWM di Arduino proposto può essere studiato dal paragrafo seguente

Al pin n. 9 può essere assegnato un valore pwm arbitrario mentre al pin n. 10 fornisce il valore pwm in base alla posizione del potenziometro rispetto a massa. Continuare a modificare questo valore arbitrario per il pin 9 e ruotare il potenziometro per vedere l'uscita pwm diversa su entrambi i pin.




Precedente: Circuito di controllo del motore ad alta corrente utilizzando Arduino Avanti: Interruttore di controllo remoto a 10 canali da 2,4 GHz