Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Dans ce instructable, je vais vous expliquer comment
- contrôler un moteur à courant continu avec PWM
- communiquer via UART
- gérer les interruptions de la minuterie
Tout d'abord, nous utiliserons une carte de développement du système AVR Core que vous pouvez trouver sur Aliexpress autour de 4 USD. Le lien de la carte de développement est ici. Nous utiliserons également Atmel ICE Debugger et Atmel Studio pour programmer et déboguer notre logiciel.
Étape 1: plongée profonde dans la fiche technique et le code source - Vitesse d'horloge
Dans 1. la balle, nous définissons notre fréquence de cristal où nous pouvons voir sur la carte de développement
Étape 2: configuration des registres UART
Afin de communiquer avec UART, vous devez définir les registres de débit en bauds USART - UBRnL et UBRRnH correctement, vous pouvez le calculer vous-même ou vous pouvez utiliser une calculatrice en ligne pour obtenir facilement les valeurs correctes.
Calculatrice en ligne
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
La valeur MYUBBR est donc calculée. Dans le registre UCSR0B, nous activons RXEN0 (recv enable) TXEN0 (transmit enable) et RXCIE0 (RX pour interruption). Dans le registre UCSR0C, nous sélectionnons une taille de caractère de 8 bits.
Après avoir défini le bit d'interruption RX, nous devons ajouter la fonction ISR pour USART0_RX_vect
ISR(USART0_RX_vect){ char rcvChar = UDR0; if(rcvChar != '\n') { buffer[bufferIndex] = rcvChar; bufferIndex++; } }
Vous ne devez pas appliquer de logique métier dans votre routine de service d'interruption. Vous devez faire revenir la fonction dès que possible.
Étape 3: Paramètres PWM
Dans la fonction initPWM, nous définissons notre horloge CPU, le mode Timer/Counter comme Fast PWM et définissons son comportement avec les bits COM
Nous devons également connecter le moteur à courant continu à la broche OC2 qui est spécifiée dans le tableau 66. Comparez le mode de sortie, le mode PWM rapide dans notre fiche technique, vous verrez également que la broche OC2 est (OC2/OC1C) PB7
Étape 4: Résultat
Lorsque vous téléchargez le code source dans la pièce jointe.
Vous pouvez entrer une nouvelle valeur PWM (0-255) à partir de l'UART (vous pouvez utiliser le terminal du port série arduino) pour définir la vitesse du moteur à courant continu.