Comme indiqué précédemment, Arduino Due est une carte basée sur un contrôleur ARM conçue pour les ingénieurs en électronique et les amateurs. Cette carte DUE peut être utilisée pour fabriquer des machines CNC, des imprimantes 3D, des bras robotiques etc. Tous ces projets ont une caractéristique commune qui est le contrôle de position. Chacun de ces projets a besoin d'exactitude quant à sa position. Des positions précises dans ces machines peuvent être obtenues par des servomoteurs. Dans cette session, nous allons contrôler la position d'un servomoteur avec Arduino Due. Nous avons déjà couvert l'interfaçage du servomoteur avec Arduino Uno et l'interfaçage du servomoteur avec le microcontrôleur 8051.
Servomoteurs:
Les servomoteurs sont connus pour leur mouvement ou position d'arbre précis. Ceux-ci ne sont pas proposés pour les applications à grande vitesse. Ceux-ci sont proposés pour une application à faible vitesse, couple moyen et position précise. Ces moteurs sont utilisés dans les machines à bras robotiques, les commandes de vol et les systèmes de contrôle. Les servomoteurs sont également utilisés dans certaines imprimantes et télécopieurs.
Les servomoteurs sont disponibles dans différentes formes et tailles. Nous utiliserons le servomoteur SG90 dans ce tutoriel. Le SG90 est un servomoteur à 180 degrés. Ainsi, 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.
Un servomoteur est une combinaison de moteur à courant continu, de système de contrôle de position et d'engrenages. En servo, nous avons un système de contrôle qui prend le signal PWM de la broche de signal. Il décode le signal et en obtient le rapport cyclique. Ensuite, 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 à la broche SIGNAL.
La fréquence du signal PWM (Pulse Width Modulated) peut varier en fonction du type de servomoteur. L'important ici est le DUTY RATIO du signal PWM. Vérifiez ceci pour PWM avec Arduino Due. Cependant, dans ce cas, nous n'avons même pas à nous soucier de la sélection du rapport de service. Dans Arduino, nous avons une fonction spéciale; en l'appelant, nous pouvons ajuster la position du servo, simplement en indiquant l'angle. Nous en parlerons dans la section de travail ci-dessous.
Avant d' interfacer le servomoteur avec Arduino Due, vous pouvez tester votre servo à l'aide de ce circuit de testeur de servomoteur. Vérifiez également ces projets pour contrôler le servo par capteur flexible ou par capteur de force.
Composants:
Matériel: Arduino Due, alimentation (5v), servomoteur.
Logiciel: Arduino tous les soirs, téléchargez-le à partir du lien ci-dessous (https://www.arduino.cc/en/Main/Software)
Pour plus de détails sur la façon de télécharger et d'installer ce logiciel, visitez le premier didacticiel Premiers pas avec Arduino Due.
Schéma de circuit et explication de fonctionnement:
Comme indiqué précédemment dans ARDUINO, nous avons des bibliothèques prédéfinies, qui définiront les fréquences et les rapports de service en conséquence, une fois le fichier d'en-tête appelé ou inclus. Dans ARDUINO, nous devons simplement indiquer la position du servo nécessaire et le DUE génère le signal PWM approprié pour le servo. Les choses que nous devons faire pour obtenir une position précise du servo sont,
#comprendre
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (angle_position_nécessaire);
Le fichier d'en-tête «#include
Deuxièmement, un nom doit être choisi pour le servo en utilisant "Servo myservo" , ici myservo est le nom choisi, donc en écrivant pour la position, nous allons utiliser ce nom, cette fonctionnalité est utile lorsque nous avons de nombreux servos à contrôler, nous pouvons contrôler jusqu'à 12 servos par cela.
Avec l' Arduino Due ayant 12 canaux PWM, nous devons dire à DUE où la broche de signal du servo est connectée ou où elle doit générer le signal PWM. Pour ce faire, nous avons «myservo.attach (2);» , ici nous disons au DUE que nous avons connecté la broche de signal du servo au PIN2.
Il ne reste plus qu'à définir la position, nous allons définir la position du servo en utilisant " myservo.write (45);" , par cette commande la main servo se déplace de 45 degrés. Si nous changeons «45» en «175», l'axe du servo s'incline à 175 degrés et y reste. Après cela, chaque fois que nous devons changer la position du servo, nous devons simplement appeler la commande " myservo.write (need_position_angle);" .
Dans le programme, nous allons incrémenter et décrémenter les angles en utilisant des boucles. Ainsi, le servo balaie de 0 à 180, puis de 180 à 0 et ainsi de suite. La commande de servomoteur par Arduino Due est mieux expliquée étape par étape du code C ci-dessous.