Circuito di controllo del motore ad alta corrente utilizzando Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo progetto, discutiamo come farlo controllare la velocità del motore utilizzando il circuito PWM di Arduino e come implementare il controllo inverso in avanti o di direzione in un motore CC utilizzando Arduino tramite un paio di interruttori a pulsante. Qualsiasi motore ad alta corrente fino a 30 ampere può essere controllato utilizzando questa configurazione

DiAnkit Negi



Il motore è un componente essenziale nell'elettronica e nell'elettronica in quanto vengono utilizzati come attuatori in molte aree.

Abbiamo bisogno di motori per piccole applicazioni come la robotica e in aree in cui vengono utilizzati motori pesanti (industrie, ecc.).



Ora i motori utilizzati per piccole applicazioni possono essere controllati facilmente poiché non assorbono molta corrente (meno di 2 amp).

E questi motori possono essere facilmente controllati utilizzando un microcontrollore come arduino con CI del driver del motore come L298 o L293D .

Ma i motori utilizzati per scopi pesanti (maggiori di 10 amp) non possono essere controllati utilizzando questi ic in quanto possono fornire corrente limitata (max 2amp). Allora come vengono controllati questi motori?

La risposta è semplice: utilizzando i relè , che funge da interruttori, cioè commuta una grande corrente usando una piccola corrente. In questo modo si possono ottenere due cose:

1. Far funzionare il nostro motore ad alta corrente stesso.

2. Isolare il circuito, prevenendo così eventuali shock.

Ora qualsiasi microcontrollore può essere utilizzato per commutare questi relè. Useremo arduino UNO qui.

COMPONENTI NECESSARI PER QUESTO PROGETTO:

1. ARDUINO UNO: per dare logiche di input al lato primario del relè.

2. RELÈ SPDT -2: sono necessari due relè per la rotazione in entrambe le direzioni. I contatti devono essere classificati per gestire le specifiche del motore ad alta corrente

Colore blu dell relè che mostra N / O N / C e dettagli del polo3.Mosfet di alimentazione: è possibile utilizzare il mosfet IRF1010 microinterruttore a pulsante

4. BATTERIA (12v): per fornire alimentazione al motore.

5. DUE PULSANTI: per dare input ad arduino (cioè quando premuto e quando non premuto)

Resistenza da 10k 1/4 watt

6. DUE RESISTORI DA 10K: per antirimbalzo (spiegati di seguito)

Circuito di controllo del motore ad alta corrente utilizzando Arduino

7. FILI DI COLLEGAMENTO: per effettuare i collegamenti.

SCHEMA:

Circuito di controllo motore PWM Arduino

Effettuare i collegamenti come mostrato in figura.

1. Collegare il terminale normalmente aperto di entrambi i relè al terminale positivo della batteria e il terminale normalmente chiuso al terminale negativo della batteria.

2. Collegare il motore tra il terminale rimanente (su tre) di ciascun relè.

3. Collegare un terminale del lato primario dei relè ai pin di uscita di arduino come specificato nel codice e l'altro terminale a terra.

4. Collegare un terminale di entrambi i pulsanti al pin 5v di arduino e un altro terminale ai pin di ingresso come specificato nel codice.

4. ** Non dimenticare di collegare i resistori poiché sono molto importanti per il corretto funzionamento di questo circuito, come spiegato di seguito:

PERCHÉ I RESISTORI SONO COLLEGATI?

Potresti scoprire che non c'è nulla di collegato ai pin di ingresso di Arduino, ma ciò non significa che questi pinout possano essere uno zero logico quando l'interruttore indicato è aperto

Piuttosto implica che quando l'interruttore è aperto, arduino può assumere qualsiasi valore casuale tra 0 logico e 1 logico, il che non è affatto buono (questo è chiamato rimbalzo).

Quindi quello che vogliamo qui è che quando nulla è collegato al pin di input, ad esempio il pulsante è aperto, arduino prende 0 input dal pin.

E per ottenere ciò, il pin è direttamente collegato a terra prima del pulsante tramite resistore. Se è collegato direttamente a terra senza resistore, ci sono buone probabilità che si bruci poiché il pin verrà cortocircuitato a terra e fluirà un'enorme quantità di corrente. Per evitare ciò, una resistenza è collegata in mezzo.

Questo resistore è chiamato resistore pulldown poiché sta portando la logica sul pin a 0. E questo processo è chiamato debouncing.

CODICE:

Masterizza questo codice nel tuo arduino.

int x// initialise variables
int y
int z
int w
void setup() {
pinMode(6,OUTPUT)//initialise pin 6 as output to RL1
pinMode(9,OUTPUT)//initialise pin 9 as output to RL2
pinMode(3,INPUT)//initialise pin 3 as input
pinMode(4,INPUT)//initialise pin 4 as input
pinMode(10,OUTPUT)//initialise PWM pin 8 as output to gate of mosfet
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
Serial.begin(9600)
}
void loop() {
z=analogRead(A0)// read values from potentiometer in terms of voltage
w= map(z,0,1023,0,255)// map those values from 0 to 255
analogWrite(10,w)// write the mapped value to 10thpin as output
delay(1)//on time period of mosfet
analogWrite(10,w)
delay(1)//off time period of ,mosfet
Serial.println(z)//print value from pot to serial monitor
Serial.println(w)//print mapped value to serial monitor
x= digitalRead(3)
y= digitalRead(4)
if(x==0 && y==0){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)}
if(x==1 && y==0){digitalWrite(6,HIGH)// clockwise rotation of motor
digitalWrite(9,LOW)}
if(x==0 && y==1){digitalWrite(6,LOW)// anticlockwise rotation of motor
digitalWrite(9,HIGH)}
if(x==1 && y==1){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)
}
}

Lavoro (codice di comprensione):

• CONTROLLO DIREZIONE:

A. Quando entrambi i pulsanti non vengono premuti:

In questa condizione, arduino prende 0 input da entrambi i pin. Come specificato nel codice in questa condizione entrambi i pin di uscita danno una logica 0 (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Poiché la tensione di ingresso al primario di entrambi i relè è zero, il terminale secondario di entrambi rimane nella posizione normalmente chiusa. Quindi c'è zero volt su entrambi i terminali del motore, che non causa rotazione.

B. Quando si preme il pulsante X ma non si preme Y:

In questa condizione, arduino prende 0 input dal pin 4 ma input1 dal pin3. Come specificato nel codice in questa condizione, il pin 6 dovrebbe essere logico 1 (HIGH) mentre il pin 9 logico 0 (LOW):

if (x == 1 && y == 0) {digitalWrite (6, HIGH)

digitalWrite (9, LOW)}

Poiché la tensione di ingresso al relè n. 1 è alta, l'interruttore di questo relè viene portato alla condizione normalmente aperto mentre la tensione di ingresso al relè 2 è bassa, l'interruttore di questo relè rimane in condizione normalmente chiuso causando 12 V e 0 V rispettivamente attraverso i terminali del motore, causando rotazione del motore in una direzione.

C. Quando si preme il pulsante Y ma non si preme X:

In questa condizione, arduino prende 1 input dal pin 4 ma input0 dal pin3. Come specificato nel codice in questa condizione, il pin 6 dovrebbe essere a logica 0 (LOW) mentre il pin 9 a logica 1 (HIGH):

if (x == 1 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, HIGH)}

Poiché la tensione di ingresso al relè n. 2 è alta questa volta, l'interruttore di questo relè viene portato in condizione normalmente aperto mentre la tensione di ingresso al relè n. 1 è bassa, l'interruttore di questo relè rimane in condizione normalmente chiuso causando rispettivamente 12 V e 0 V sul motore terminali, provocando la rotazione del motore in un'altra direzione.

D. Quando vengono premuti entrambi i pulsanti:

In questa condizione, arduino prende 1 input da entrambi i pin. Come specificato nel codice in questa condizione entrambi i pin di uscita danno una logica 0 (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Poiché la tensione di ingresso al primario di entrambi i relè è zero, il terminale secondario di entrambi rimane nella posizione normalmente chiusa. Quindi c'è zero volt su entrambi i terminali del motore, che non causa rotazione.

• CONTROLLO DI VELOCITÀ:

Supponiamo che il potenziometro sia in tale posizione quando fornisce 0 volt come ingresso al pin A0 di arduino. A causa di ciò, arduino mappa questo valore come 0 e quindi fornisce 0 come uscita PWM sul pin # 10, ad es.

analogWrite (10,0) // scrive il valore mappato sul decimo pin come output

Quindi il gate del mosfet riceve 0 corrente a causa della quale rimane spento e il motore è in posizione OFF.

Tuttavia, quando il potenziometro viene ruotato e il valore del potenziometro viene variato, varia anche la tensione sul pin A0 e questo valore viene mappato sul pin n.10 con una larghezza PWM proporzionalmente crescente, facendo fluire più corrente attraverso il motore e il mosfet scarico, che a sua volta permette al motore di guadagnare proporzionalmente più velocità, e lo stesso avviene viceversa.

Quindi dalla discussione sopra possiamo vedere come un Arduino può essere utilizzato per controllare la velocità e la direzione (indietro in avanti) di un motore CC ad alta corrente semplicemente regolando il potenziometro specificato e tramite un paio di pulsanti.

Aggiornare : Per il motore ad alta corrente, utilizzare relè da 12 V / 30 A e stadi driver BJT per il funzionamento di questi relè ad alta potenza come indicato nel seguente diagramma modificato:




Precedente: Circuito sensore di parcheggio retromarcia auto con allarme Avanti: Circuito generatore di segnale PWM Arduino