- Modulation de largeur d'impulsion (PWM)
- Programmation ATtiny13 avec Arduino
- Composants requis
- Schéma de circuit et fonctionnement
Le servomoteur fonctionne sur le principe de la modulation de largeur d'impulsion (PWM) et son angle de rotation est contrôlé par la durée de l'impulsion appliquée à sa broche de commande. Ici, dans ce tutoriel, nous contrôlerons un servomoteur avec un microcontrôleur ATtiny13 en utilisant la technique PWM. Donc, avant d'aller plus loin, nous allons d'abord en apprendre davantage sur PWM, le servomoteur et comment programmer ATtiny13 avec Arduino Board.
Modulation de largeur d'impulsion (PWM)
La modulation de largeur d'impulsion (PWM) est définie comme une méthode de génération d'un signal analogique à l'aide d'une source numérique. Un signal PWM se compose de deux composants principaux: le cycle de service et la fréquence. Ces composants définissent son comportement. Le cycle de service décrit la durée pendant laquelle le signal est dans un état haut. Il est indiqué en pourcentage du temps total nécessaire pour terminer un cycle.
Cycle de service = temps d'activation / (temps d'activation + temps d'arrêt)
La fréquence définit la vitesse à laquelle le PWM termine un cycle et la vitesse à laquelle le signal bascule entre les états haut et bas. Une fréquence de 100 Hz signifie 100 cycles par seconde. En commutant un signal numérique sur ON et OFF à une vitesse rapide et avec un certain rapport cyclique, la sortie apparaîtra comme un signal analogique à tension constante. L'un des avantages puissants de PWM est que la perte de puissance est très minime.
Tous les servomoteurs fonctionnent directement avec une alimentation + 5V, mais nous devons faire attention à la quantité de courant consommée par le moteur. Si nous utilisons plus de deux servomoteurs, un bouclier d'asservissement approprié doit être conçu.
Avant de connecter le servo à Attiny13, vous pouvez tester votre servo à l'aide de ce circuit de testeur de servomoteur. Ici, nous avons interfacé le servomoteur avec de nombreux microcontrôleurs:
- Interfaçage du servomoteur avec ARM7-LPC2148
- Interfaçage du servomoteur avec le MSP430G2
- Contrôle de plusieurs servomoteurs avec Arduino
- Interfaçage du servomoteur avec le microcontrôleur PIC utilisant MPLAB et XC8
- Commande de servomoteur avec Raspberry Pi
- Commande de servomoteur avec Arduino Due
- Interfaçage du servomoteur avec le microcontrôleur AVR Atmega16
Programmation ATtiny13 avec Arduino
Attiny13 peut être programmé en utilisant Arduino Uno ou toute autre carte Arduino. Connectez Attiny13 à Arduino Uno comme indiqué dans la figure ci-dessous.
- Arduino 5V - ATtiny13 broche 8
- Arduino GND - ATtiny13 broche 4
- Arduino broche 13 - ATtiny13 broche 7
- Arduino broche 12 - ATtiny13 broche 6
- Arduino broche 11 - ATtiny13 broche 5
- Arduino broche 10 - ATtiny13 broche 1
Arduino est défini comme un programmeur pour programmer ATtiny13. Cela se fait en téléchargeant le croquis ArduinoISP sur Arduino. Cette esquisse Arduino est disponible dans les exemples dans Arduino IDE. Ouvrez l'IDE Arduino et accédez à Fichiers> Exemples> ArduinoISP .
Maintenant, le programme pour ArduinoISP apparaîtra. Téléchargez le programme sur l'Arduino Uno.
Arduino Uno est maintenant prêt à programmer Attiny13. Mais nous devons configurer l'Attiny en installant ses fichiers de base. Pour ce faire, allez dans Fichier >> Préférences dans Arduino IDE
Ensuite, une nouvelle fenêtre apparaîtra. Et dans les " URL supplémentaires de Board Manager ", ajoutez le lien ci-dessous et cliquez sur "OK".
"Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json"
Maintenant, dans votre IDE Arduino, allez dans Tools >> Board >> Boards Manager
Ensuite, une autre fenêtre apparaîtra où dans le champ de recherche tapez 'Attiny', vous obtiendrez alors "DIY ATtiny" puis cliquez sur le bouton 'installer' (je l'ai déjà installé, c'est pourquoi le bouton d'installation en gris)
Pour commencer à programmer ATtiny 13, nous devons y graver Bootloader. Pour cela, allez dans Outils> Tableau> ATtiny13.
Maintenant, allez dans Outils> Version du processeur et vérifiez si la bonne version d'ATtiny est sélectionnée. Sélectionnez ATtiny13 ou ATtiny13a en fonction de votre puce.
Cliquez ensuite sur le bouton Graver le chargeur de démarrage en bas du menu Outils.
Après avoir gravé le bootloader, ATtiny est maintenant prêt à être programmé. Vous pouvez maintenant télécharger votre programme.
Composants requis
- Microcontrôleur ATtiny13
- Servomoteur
- Potentiomètre
- + Batterie 5V
- IDE Arduino
- Fils de connexion
Schéma de circuit et fonctionnement
Le schéma de circuit pour contrôler un servomoteur utilisant un pot avec ATtiny13 est donné ci-dessous.
Voici les connexions
- Connectez la broche de commande du servomoteur à la broche 5 de ATtiny13
- Connectez la masse du servomoteur à la broche 4 de ATtiny13
- Connectez VCC du servomoteur à la broche 8 de ATtiny13
- Connectez la broche centrale du potentiomètre à la broche 7 de ATtiny13
- Connectez les première et troisième broches du potentiomètre au VCC et au GND.
- Connectez le positif de la batterie + 5V à la broche 8 de ATtiny13
- Connectez le négatif de la batterie + 5V à la broche 4 de ATtiny13
Un potentiomètre est connecté à la broche 7 (PB2) de l'ATtiny13 et le fil de commande du servomoteur est connecté à la broche 5 (PB0).
Ici, la valeur du potentiomètre est lue et elle est convertie en une valeur comprise entre 0 et 180. Ensuite, cette valeur d'angle est convertie en microsecondes et une impulsion est donnée à la broche de commande du servomoteur avec le retard calculé en microsecondes. Maintenant, le servomoteur tournera selon la valeur du potentiomètre comme démontré dans la vidéo ci-dessous.