Nous avons vu la technique du Charlieplexing dans « Témoins de positions : le Charlieplexing », nous allons maintenant l’appliquer à un système à 5 broches de pilotage et 16 LED puis l’intégrer dans notre application. Charlieplexing des 16 LED témoins [1]
Le schéma pour allumer 16 LED est le suivant.
On peut noter que le schéma est incomplet. En effet, avec 5 broches, il est possible de piloter 20 LED. Ici les couples de broches 0-3 et 1-4 sont manquants et nous n’allons donc pas les (…)
Accueil > La technologie > Arduino > Manœuvre des aiguilles avec des servo-moteurs
Manœuvre des aiguilles avec des servo-moteurs
Développement d’une application complète de commande de 8 aiguilles avec un Arduino et des servomoteurs.
La série suit une progression avec la présentation du matériel puis la mise en œuvre de chacune des fonctions nécessaires avec leur test unitaire. Les fonctions sont intégrées au fur et à mesure jusqu’à la finalisation de l’application.
Les articles se veulent pédagogiques et permettent de découvrir à la fois les aspects matériels et logiciels.
Le sketch de la dernière version du logiciel :
-
Témoins de positions : la mise en œuvre
3 décembre 2013, par Jean-Luc -
Témoins de positions : le Charlieplexing
2 décembre 2013, par Jean-LucLa dernière fonction à mettre en œuvre est la gestion des témoins de position. 16 LED sont nécessaires et il nous reste 6 broches. La broche numérique 13 ayant déjà une LED soudée sur la carte de l’Arduino n’est pas très commode à utiliser. Il nous reste donc en réalité 5 broches. Comment faire ?
Il existe une technique connue sous le nom de Charliplexing [1] qui permet de multiplexer des LED sur des entrées/sorties numériques. Examinons tout d’abord le cas de deux LED connectées à 2 (…) -
Amélioration et mémorisation des réglages
2 décembre 2013, par Jean-LucComme indiqué dans la vidéo au bas de l’article « Réglage des butées des servomoteurs », un problème lié à l’inertie mécanique subsiste. Nous avons aussi le problème de la non mémorisation des réglages. Nous allons voir comment régler ces deux problèmes.
Prise en compte de l’inertie mécanique
Quand la consigne de position, via la durée de l’état haut de la PWM, est envoyé au servomoteur, celui-ci met quelques instants à appliquer cette consigne. Or, le programme actuel coupe la PWM est (…) -
Réglage des butées des servomoteurs
1er décembre 2013, par Jean-LucNous voici enfin à l’avant dernière étape de développement de notre système. Dans « Sélection d’un servomoteur pour le réglage des butées », nous avons vu la mise en œuvre d’un codeur pour désigner le servomoteur à régler, dans « Clavier de réglage des butées », nous avons vu l’ajout d’un second clavier analogique destiné à permettre le réglage des butées et, comme nous avions déjà un clavier analogique, la généralisation de la gestion de ce type de clavier par le biais d’une classe C++. (…)
-
Clavier de réglage des butées
30 novembre 2013, par Jean-LucEssayant de ne pas faire de trop gros articles indigestes, je saucissonne un peu plus les sujets. Voici le 2e sur le réglage des butées. Il porte sur la transformation du programme que nous avions écrit pour le clavier analogique afin que le même programme puisse servir pour le clavier de réglage et en fait pour n’importe quel clavier analogique. En informatique on appelle ça la généricité. Poussoirs de réglage de la position
Les poussoirs de réglage de la position sont mis en œuvre avec (…) -
Sélection d’un servomoteur pour le réglage des butées
23 novembre 2013, par Jean-LucLe réglage des butées est un point important. En effet, chaque servo moteur va avoir un neutre un peu différent de ses congénères. Il en va de même pour les positions extrêmes. De plus, chaque installation d’aiguille est un peu différente des autres.
Il est donc essentiel de pouvoir, servomoteur par servomoteur, régler les deux positions extrêmes.
Le matériel
Afin de sélectionner l’un des servomoteurs pour régler, au moyen de deux poussoirs, sa position extrême actuelle nous avons (…) -
Un zeste de C++
23 novembre 2013, par Jean-LucComme nous l’avons détaillé dans l’article précédent « 8 poussoirs et 8 servos, enfin ! », le passage d’un servomoteur à 8 servomoteurs, nous à contraint à rassembler les variables permettant de décrire l’état d’un servomoteur dans une struct afin de créer un tableau de 8 éléments de ce type.
struct DescripteurServo Servo objetServo ; int vitesse ; int angle ; int pin ; byte etatServo ; ; struct DescripteurServo servoMoteur[8] ;
Malheureusement, le programme (…) -
8 poussoirs et 8 servos, enfin !
17 novembre 2013, par Jean-LucDans « Commande du servo-moteur par bouton poussoir », nous avons vu comment commander un servo-moteur avec un poussoir. Dans « Plusieurs boutons poussoir sur une entrée analogique », nous avons vu comment connecter 8 poussoirs sur une entrée analogique et détecter lequel est pressé. Il reste maintenant à mettre en œuvre les 8 servos.
Les variables pour manipuler les 8 servos
Si vous vous rappelez, plusieurs variables étaient employées pour notre servo : l’objet de type Servo permettant (…) -
Plusieurs boutons poussoir sur une entrée analogique
16 novembre 2013, par Jean-LucDans « Commande du servo-moteur par bouton poussoir », nous avons vu comment connecter un bouton poussoir à une entrée analogique. Dans celui-ci nous allons voir comment en connecter plusieurs et lire lequel est enfoncé.
Cette idée de connecter plusieurs poussoirs sur une entrée analogique n’est pas nouvelle. Une Application Note de Freescale existe et l’idée m’a été soufflée par Marc-Henri que je remercie au passage.
Marc-Henri vient de publier un article sur son blog qui décrit (…) -
Commande du servo-moteur par bouton poussoir
11 novembre 2013, par Jean-LucNous allons maintenant ajouter un bouton poussoir pour commander le mouvement du servo-moteur. Cet article fait suite à « Mise en œuvre d’un servo-moteur ».
Le système fonctionnera de la manière suivante : Lorsque le servo-moteur est dans une des positions extrêmes, une pression sur le poussoir donnera au servo-moteur une vitesse lui permettant de gagner l’autre position extrême. Lorsque le servo-moteur est en mouvement, une pression sur le bouton inversera la vitesse.
Mise en œuvre du (…)