- Qu'est-ce qu'un moteur à courant continu?
- Composants requis
- Schéma
- Programmation Atmega16 pour la commande de moteur à courant continu
Les moteurs à courant continu sont les moteurs les plus utilisés. Ces moteurs peuvent être trouvés presque partout, des petits projets à la robotique avancée. Nous avons précédemment interfacé DC Motor avec de nombreux autres microcontrôleurs comme Arduino, Raspberry pi et l'avons utilisé dans de nombreux projets robotiques. Aujourd'hui, nous apprenons à contrôler le moteur à courant continu avec le microcontrôleur AVR Atmega16. Mais avant d'aller de l'avant, en savoir plus sur le moteur à courant continu.
Qu'est-ce qu'un moteur à courant continu?
DC Motor est un appareil qui transforme l'énergie électrique en énergie mécanique. Plus précisément, un moteur à courant continu utilise le courant continu pour convertir l'énergie électrique en énergie mécanique. Le principe de base du moteur est l'interaction entre le champ magnétique et le courant pour produire une force dans le moteur qui aide le moteur à tourner. Ainsi, lorsque le courant électrique passe à travers une bobine dans un champ magnétique, une force magnétique est générée qui produit un couple entraînant le mouvement du moteur. La direction du moteur est contrôlée en inversant le courant. Sa vitesse peut également être modifiée en faisant varier la tension d'alimentation. Étant donné que les microcontrôleurs ont des broches PWM, ils peuvent donc être utilisés pour contrôler la vitesse du moteur.
Dans ce didacticiel, le fonctionnement du moteur à courant continu sera démontré avec Atmega16. Le pilote de moteur L293D sera utilisé pour inverser le sens du courant donc le sens du mouvement. Le pilote de moteur L293D utilise une configuration de circuit H-Bridge qui fournit le courant requis au moteur. Deux boutons poussoirs sont utilisés pour sélectionner le sens du moteur. L'un des boutons poussoirs est utilisé pour sélectionner la rotation dans le sens des aiguilles d'une montre et l'autre est utilisé pour sélectionner le fonctionnement anti-horloge du moteur à courant continu.
Composants requis
- Moteur à courant continu (5 V)
- Pilote de moteur L293D
- CI microcontrôleur Atmega16
- Oscillateur à cristal 16Mhz
- Deux condensateurs 100nF
- Deux condensateurs 22pF
- Bouton poussoir
- Fils de cavalier
- Planche à pain
- USBASP v2.0
- Led (toute couleur)
Schéma
Programmation Atmega16 pour la commande de moteur à courant continu
Ici, l'Atmega16 est programmé en utilisant USBASP et Atmel Studio7.0. Si vous ne savez pas comment programmer Atmega16 en utilisant USBASP, visitez le lien. Le programme complet est donné à la fin du projet, il suffit de télécharger le programme dans Atmega16 et d'utiliser les deux boutons poussoirs pour faire tourner le moteur à courant continu dans le sens horaire et anti-horaire.Le moteur à courant continu est interfacé à l'aide du pilote de moteur L293D. Le moteur à courant continu tournera dans deux directions lorsque le bouton-poussoir respectif est enfoncé. Le premier bouton-poussoir sera utilisé pour faire tourner le moteur CC dans le sens horaire et l'autre bouton-poussoir sera utilisé pour faire tourner le moteur CC dans le sens antihoraire. Définissez d' abord la fréquence CPU du microcontrôleur et incluez toutes les bibliothèques nécessaires.
#define F_CPU 16000000UL #include #include
Ensuite, utilisez une variable pour suivre l'état de la pression du bouton-poussoir. Cette variable sera utilisée pour définir la direction du moteur.
int i;
Sélectionnez le mode d'entrée / sortie de GPIO à l'aide du registre de direction des données. Initialement, faites en sorte que la sortie de la broche du moteur soit aussi basse pour éviter le démarrage du moteur sans appuyer sur le bouton-poussoir.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Vérifiez si le 1 er bouton poussoir est enfoncé connecté à PORTA4 de Atmega16 et enregistrez l'état du bouton poussoir dans la variable.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
De même vérifier si le 2 ème bouton poussoir est enfoncé connecté à PORTA5 de Atmega16 et mémoriser l'état du bouton poussoir dans la variable.
sinon si (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Si l'état du 1 er bouton est vrai, faites tourner le moteur CC dans le sens des aiguilles d'une montre et si l'état du second bouton-poussoir est vrai, faites tourner le moteur CC dans le sens anti-horaire.
si (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } sinon si (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Vous pouvez connecter les broches du moteur à n'importe quelle broche GPIO en fonction du GPIO utilisé. Il est également important d'utiliser le circuit intégré de pilote de moteur pour réduire la charge sur le microcontrôleur car les microcontrôleurs ne sont pas capables de fournir le courant requis pour faire fonctionner les moteurs à courant continu. Pour plus de détails et d'autres projets basés sur des moteurs à courant continu, veuillez visiter le lien donné.
Le code complet et la vidéo de démonstration sont donnés ci-dessous.