- PWM (modulation de largeur d'impulsion):
- Servomoteur et PWM:
- Composants requis:
- Schéma:
- Explication de fonctionnement et de programmation:
Raspberry Pi est une carte basée sur un processeur d'architecture ARM conçue pour les ingénieurs en électronique et les amateurs. Le PI est l'une des plates-formes de développement de projet les plus fiables actuellement. Avec une vitesse de processeur plus élevée et 1 Go de RAM, le PI peut être utilisé pour de nombreux projets de haut niveau tels que le traitement d'image et l'Internet des objets.
Pour réaliser l'un des projets de haut niveau, il faut comprendre les fonctions de base de PI. Nous couvrirons toutes les fonctionnalités de base de Raspberry Pi dans ces tutoriels. Dans chaque tutoriel, nous aborderons l'une des fonctions de PI. À la fin de cette série de tutoriels Raspberry Pi, vous serez en mesure de réaliser des projets de haut niveau par vous-même. Suivez les didacticiels ci-dessous:
- Premiers pas avec Raspberry Pi
- Configuration du Raspberry Pi
- LED clignotante
- Interfaçage des boutons Raspberry Pi
- Génération PWM Raspberry Pi
- Contrôle du moteur à courant continu à l'aide de Raspberry Pi
- Contrôle du moteur pas à pas avec Raspberry Pi
- Registre à décalage d'interfaçage avec Raspberry Pi
- Tutoriel ADC Raspberry Pi
Dans ce tutoriel, nous contrôlerons le moteur servo avec Raspberry Pi. Avant de passer au servo, parlons de PWM car le concept de contrôle du servomoteur en découle.
PWM (modulation de largeur d'impulsion):
Nous avons déjà parlé de PWM à plusieurs reprises dans: Modulation de largeur d'impulsion avec ATmega32, PWM avec Arduino Uno, PWM avec IC de minuterie 555 et PWM avec Arduino Due. PWM signifie «Pulse Width Modulation». PWM est une méthode utilisée pour obtenir une tension variable à partir d'une alimentation électrique stable. Pour une meilleure compréhension de PWM, considérez le circuit ci-dessous,
Dans la figure ci-dessus, si l'interrupteur est fermé en continu pendant une période de temps, la LED sera allumée pendant ce temps en continu. Si l'interrupteur est fermé pendant une demi-seconde et ouvert pendant la demi-seconde suivante, la LED ne sera allumée que dans la première demi-seconde. Maintenant, la proportion pour laquelle la LED est allumée sur la durée totale est appelée cycle de service et peut être calculée comme suit:
Cycle de service = temps d'activation / (temps d'activation + temps d'arrêt)
Cycle de service = (0,5 / (0,5 + 0,5)) = 50%
Ainsi, la tension de sortie moyenne sera de 50% de la tension de la batterie.
Lorsque nous augmentons la vitesse ON et OFF à un niveau, nous verrons la LED être atténuée au lieu d'être ON et OFF. C'est parce que nos yeux ne peuvent pas capter clairement les fréquences supérieures à 25 Hz. Considérez un cycle de 100 ms, la LED étant éteinte pendant 30 ms et allumée pendant 70 ms. Nous aurons 70% de tension stable à la sortie, donc la LED brillera en continu avec 70% d'intensité.
Le rapport de service va de 0 à 100. «0» signifie complètement OFF et «100» étant complètement ON. Ce rapport de service est très important pour le servomoteur. La position du servomoteur est déterminée par ce rapport de service. Vérifiez ceci pour une démonstration PWM avec LED et Raspberry Pi.
Servomoteur et PWM:
Un servomoteur est une combinaison de moteur à courant continu, de système de contrôle de position et d'engrenages. Les servos ont de nombreuses applications dans le monde moderne et avec cela, ils sont disponibles dans différentes formes et tailles. Nous utiliserons le servomoteur SG90 dans ce tutoriel, c'est l'un des plus populaires et des moins chers. Le SG90 est un servo à 180 degrés. Donc, avec ce servo, nous pouvons positionner l'axe de 0 à 180 degrés.
Un servomoteur a principalement trois fils, un pour la tension positive, un autre pour la terre et le dernier pour le réglage de la position. Le fil rouge est connecté à l'alimentation, le fil marron est connecté à la terre et le fil jaune (ou BLANC) est connecté au signal.
En servo, nous avons un système de contrôle qui prend le signal PWM de la broche Signal. Il décode le signal et en obtient le rapport cyclique. Après cela, il compare le rapport aux valeurs de positions prédéfinies. S'il y a une différence dans les valeurs, il ajuste la position du servo en conséquence. Ainsi, la position de l'axe du servomoteur est basée sur le rapport cyclique du signal PWM au niveau de la broche Signal.
La fréquence du signal PWM (Pulse Width Modulated) peut varier en fonction du type de servomoteur. Pour le SG90, la fréquence du signal PWM est de 50 Hz. Pour connaître la fréquence de fonctionnement de votre servo, consultez la fiche technique de ce modèle particulier. Donc, une fois la fréquence sélectionnée, l'autre chose importante ici est le DUTY RATIO du signal PWM.
Le tableau ci-dessous montre la position du servo pour ce rapport de service particulier. Vous pouvez obtenir n'importe quel angle entre les deux en choisissant la valeur en conséquence. Ainsi, pour 45º de servo, le rapport de service doit être de «5» ou 5%.
POSITION |
RATIO DE FONCTIONNEMENT |
0º |
2,5 |
90º |
7,5 |
180º |
12,5 |
Avant d' interfacer le servomoteur avec le Raspberry Pi, vous pouvez tester votre servo à l'aide de ce circuit de testeur de servomoteur. Consultez également nos projets Servo ci-dessous:
- Commande de servomoteur à l'aide d'Arduino
- Commande de servomoteur avec Arduino Due
- Interfaçage du servomoteur avec le microcontrôleur 8051
- Commande de servomoteur avec MATLAB
- Contrôle du servomoteur par Flex Sensor
- Commande de position servo avec poids (capteur de force)
Composants requis:
Ici, nous utilisons Raspberry Pi 2 Model B avec Raspbian Jessie OS. Toutes les exigences matérielles et logicielles de base sont décrites précédemment, vous pouvez les rechercher dans l'introduction de Raspberry Pi, à part ce dont nous avons besoin:
- Broches de connexion
- Condensateur 1000uF
- Servomoteur SG90
- Planche à pain
Schéma:
A1000µF doit être connecté à travers le rail d'alimentation + 5V, sinon le PI pourrait s'arrêter de manière aléatoire tout en contrôlant le servo.
Explication de fonctionnement et de programmation:
Une fois que tout est connecté selon le schéma de circuit, nous pouvons activer le PI pour écrire le programme dans PYHTON.
Nous parlerons de quelques commandes que nous allons utiliser dans le programme PYHTON, Nous allons importer le fichier GPIO de la bibliothèque, la fonction ci-dessous nous permet de programmer les broches GPIO de PI. Nous renommons également «GPIO» en «IO», donc dans le programme chaque fois que nous voulons faire référence aux broches GPIO, nous utiliserons le mot «IO».
importer RPi.GPIO comme IO
Parfois, lorsque les broches GPIO, que nous essayons d'utiliser, peuvent remplir d'autres fonctions. Dans ce cas, nous recevrons des avertissements lors de l'exécution du programme. La commande ci-dessous indique au PI d'ignorer les avertissements et de poursuivre le programme.
IO.setwarnings (Faux)
On peut référencer les broches GPIO de PI, soit par numéro de broche à bord, soit par leur numéro de fonction. Comme «PIN 29» sur la carte est «GPIO5». Nous disons donc ici que nous allons représenter la broche ici par «29» ou «5».
IO.setmode (IO.BCM)
Nous définissons PIN39 ou GPIO19 comme broche de sortie. Nous obtiendrons la sortie PWM de cette broche.
Configuration IO (19, IO.OUT)
Après avoir défini la broche de sortie, nous devons configurer la broche comme broche de sortie PWM, p = IO.PWM (canal de sortie, fréquence du signal PWM)
La commande ci-dessus sert à configurer le canal et également à configurer la fréquence du canal ». 'p' ici est une variable cela peut être n'importe quoi. Nous utilisons GPIO19 comme canal de sortie PWM. «Fréquence du signal PWM», nous choisirons 50, car la fréquence de travail du SG90 est de 50 Hz.
La commande ci-dessous est utilisée pour démarrer la génération du signal PWM. ' DUTYCYCLE ' sert à régler le rapport 'Allumer' comme expliqué précédemment, p.start (DUTYCYCLE)
La commande ci-dessous est utilisée comme boucle permanente, avec cette commande les instructions à l'intérieur de cette boucle seront exécutées en continu.
Alors que 1:
Ici, le programme de contrôle du servo à l'aide de Raspberry Pi fournit un signal PWM au GPIO19. Le rapport de service du signal PWM est changé entre trois valeurs pendant trois secondes. Donc, pour chaque seconde, le servo tourne à une position déterminée par le rapport de service. Le servo tourne en continu à 0 °, 90 ° et 180 ° en trois secondes.