Circuit de commande de moteur à courant élevé utilisant Arduino

Essayez Notre Instrument Pour Éliminer Les Problèmes





Dans ce projet, nous discutons comment contrôler la vitesse du moteur en utilisant le circuit PWM Arduino, et comment implémenter un contrôle avant ou de direction inverse dans un moteur à courant continu en utilisant Arduino via quelques interrupteurs à bouton-poussoir. Tout moteur à courant élevé jusqu'à 30 ampères peut être contrôlé à l'aide de cette configuration

ParAnkit Negi



Le moteur est un composant très essentiel en électricité et en électronique car ils sont utilisés comme actionneurs dans de nombreux domaines.

Nous avons besoin de moteurs pour de petites applications comme la robotique ainsi que dans les domaines où des moteurs lourds sont utilisés (industries, etc.).



Désormais, les moteurs utilisés pour de petites applications peuvent être contrôlés facilement car ils ne consomment pas beaucoup de courant (moins de 2 ampères).

Et ces moteurs peuvent être facilement contrôlés en utilisant un microcontrôleur comme Arduino avec pilote de moteur comme L298 ou L293D .

Mais les moteurs qui sont utilisés à des fins lourdes (plus de 10 ampères) ne peuvent pas être contrôlés en utilisant ces ic car ils peuvent fournir un courant limité (max 2 ampères). Alors, comment ces moteurs sont-ils contrôlés?

La réponse est simple: utilisation de relais , qui agit comme des interrupteurs, c'est-à-dire commuter un grand courant en utilisant un petit courant. De cette manière, deux choses peuvent être réalisées:

1. Exécution de notre moteur à courant élevé lui-même.

2. Isoler le circuit, évitant ainsi tout choc.

Désormais, n'importe quel microcontrôleur peut être utilisé pour commuter ces relais. Nous utiliserons ici arduino UNO.

COMPOSANTS REQUIS POUR CE PROJET:

1. ARDUINO UNO: pour donner des logiques d’entrée au côté primaire du relais.

2. SPDT RELAY -2: deux relais sont nécessaires pour la rotation dans les deux sens. Les contacts doivent être conçus pour gérer les spécifications du moteur à courant élevé

Couleur bleue de l relais montrant N / O N / C et les détails des pôles3.Mosfet d'alimentation: vous pouvez utiliser le mosfet IRF1010 micro-interrupteur à bouton poussoir

4. BATTERIE (12v): pour alimenter le moteur.

5. DEUX BOUTONS POUSSOIRS: pour donner des entrées à arduino (c'est-à-dire lorsqu'il est enfoncé et lorsqu'il n'est pas enfoncé)

Résistance 10k 1/4 watt

6. DEUX RÉSISTANCES 10K: pour anti-rebond (expliqué ci-dessous)

Circuit de commande de moteur à courant élevé utilisant Arduino

7. FILS DE CONNEXION: pour effectuer les connexions.

SCHÉMATIQUE:

Circuit de commande de moteur PWM Arduino

Effectuez les connexions comme indiqué sur la figure.

1. Connectez la borne normalement ouverte des deux relais à la borne positive de la batterie et la borne normalement fermée à la borne négative de la batterie.

2. Connectez le moteur entre la borne restante (sur trois) de chaque relais.

3. Connectez une borne du côté primaire des relais aux broches de sortie de l'arduino comme spécifié dans le code et l'autre borne à la terre.

4. Connectez une borne des deux boutons poussoirs à la broche 5v de l'arduino et une autre borne aux broches d'entrée comme spécifié dans le code.

4. ** N'oubliez pas de connecter les résistances car elles sont très importantes pour le bon fonctionnement de ce circuit, comme expliqué ci-dessous:

POURQUOI DES RÉSISTANCES SONT CONNECTÉES?

Vous pouvez constater qu'il n'y a rien du tout connecté aux broches d'entrée d'Arduino, mais cela ne signifie pas que ces broches peuvent être un zéro logique lorsque le commutateur indiqué est ouvert

Cela implique plutôt que lorsque le commutateur est ouvert, arduino peut prendre n'importe quelle valeur aléatoire entre la logique 0 et la logique 1, ce qui n'est pas bon du tout (cela s'appelle le rebond).

Donc, ce que nous voulons ici, c'est que lorsque rien n'est connecté à la broche d'entrée, c'est-à-dire que le bouton-poussoir est ouvert, arduino prend 0 entrée de la broche.

Et pour y parvenir, la broche est directement reliée à la masse avant le bouton poussoir via une résistance. S'il est directement connecté à la terre sans résistance, il y a de bonnes chances qu'il brûle car la broche sera court-circuitée à la terre et une énorme quantité de courant circulera. Pour éviter cela, une résistance est connectée entre les deux.

Cette résistance est appelée résistance de pulldown car elle tire la logique sur la broche à 0. Et ce processus est appelé anti-rebond.

CODE:

Gravez ce code dans votre 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)
}
}

Fonctionnement (compréhension du code):

• CONTRÔLE DE DIRECTION:

A. Lorsque les deux boutons-poussoirs ne sont pas enfoncés:

Dans cette condition, arduino prend 0 entrée des deux broches. Comme spécifié dans le code dans cette condition, les deux broches de sortie donnent 0 logique (LOW):

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

digitalWrite (9, FAIBLE)}

Comme la tension d'entrée au primaire des deux relais est nulle, la borne secondaire des deux reste en position normalement fermée. Ainsi, il n'y a aucun volt aux deux bornes du moteur, ne provoquant aucune rotation.

B.Lorsque le bouton poussoir X est enfoncé mais que Y n'est pas enfoncé:

Dans cette condition, arduino prend 0 entrées de la broche 4 mais input1 de la broche3. Comme spécifié dans le code dans cette condition, la broche 6 doit être à la logique 1 (HIGH) tandis que la broche 9 à la logique 0 (LOW):

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

digitalWrite (9, FAIBLE)}

Étant donné que la tension d'entrée du relais n ° 1 est élevée, l'interrupteur de ce relais est jeté à l'état normalement ouvert alors que la tension d'entrée du relais 2 est faible, l'interrupteur de ce relais reste dans l'état normalement fermé provoquant respectivement 12v et 0v aux bornes du moteur, provoquant rotation du moteur dans un sens.

C.Lorsque le bouton-poussoir Y est enfoncé mais que X n'est pas enfoncé:

Dans cette condition, arduino prend 1 entrée de la broche 4 mais input0 de la broche3. Comme spécifié dans le code dans cette condition, la broche 6 doit être à 0 logique (LOW) tandis que la broche 9 à logique 1 (HAUT):

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

digitalWrite (9, HIGH)}

Étant donné que la tension d'entrée du relais n ° 2 est élevée cette fois, l'interrupteur de ce relais est jeté à l'état normalement ouvert alors que la tension d'entrée du relais n ° 1 est faible, l'interrupteur de ce relais reste en état normalement fermé provoquant respectivement 12v et 0v à travers le moteur bornes, provoquant la rotation du moteur dans une autre direction.

D.Lorsque les deux boutons-poussoirs sont enfoncés:

Dans cette condition, arduino prend 1 entrée des deux broches. Comme spécifié dans le code dans cette condition, les deux broches de sortie donnent 0 logique (LOW):

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

digitalWrite (9, FAIBLE)}

Comme la tension d'entrée au primaire des deux relais est nulle, la borne secondaire des deux reste en position normalement fermée. Ainsi, il n'y a aucun volt aux deux bornes du moteur, ce qui ne provoque aucune rotation.

• CONTRÔLE DE VITESSE:

Disons que le potentiomètre est à une telle position lorsqu'il donne 0 volts en entrée à la broche A0 de l'arduino. Pour cette raison, Arduino mappe cette valeur sur 0 et donne donc 0 comme sortie PWM sur la broche # 10, c'est-à-dire,

analogWrite (10,0) // écrit la valeur mappée sur la 10e broche en sortie

Par conséquent, la porte du mosfet reçoit un courant de 0, ce qui lui permet de rester éteinte et le moteur est en position OFF.

Cependant, au fur et à mesure que le pot tourne et que la valeur du pot varie, la tension sur la broche A0 varie également, et cette valeur est mappée sur la broche # 10 avec une largeur PWM proportionnellement croissante, ce qui fait passer plus de courant à travers le moteur et le mosfet drain, qui à son tour permet au moteur de gagner plus de vitesse proportionnellement, et la même chose se produit vice versa.

Ainsi, à partir de la discussion ci-dessus, nous pouvons voir comment un Arduino peut être utilisé pour contrôler la vitesse ainsi que la direction (marche arrière vers l'avant) d'un moteur à courant continu à courant élevé simplement en ajustant le potentiomètre spécifié et à l'aide de quelques boutons poussoirs.

Mettre à jour : Pour un moteur à courant élevé, veuillez utiliser des relais 12 V / 30 A et des étages de commande BJT pour faire fonctionner ces relais haute puissance comme indiqué dans le schéma modifié suivant:




Une paire de: Circuit de capteur de stationnement inversé de voiture avec alarme Un article: Circuit générateur de signaux Arduino PWM