vendredi 15 décembre 2017

Contrôle de deux moteurs avec L9110S et Arduino

Lorsque vient le temps de contrôler un ou deux moteurs à courant continu au moyen d'une carte Arduino, les pilotes les plus fréquemment utilisés sont probablement le L293D et le L298N.   À cause de son faible prix, un module basé sur le L9110S peut toutefois constituer une alternative très intéressante.

Vous pouvez facilement acheter trois modules L9110S pour le prix d'un seul module L298N.  Puisqu'ils comportent deux circuits intégrés L9110S, ces petits modules peuvent piloter deux moteurs à courant continu, ou un moteur pas à pas.

Contrairement au L293D et au L298N, le  L9110S ne comporte pas d'entrées distinctes pour l'alimentation des moteurs et celle du circuit intégré: une seule alimentation (située entre 2,5 V et 12 V) sert à alimenter à la fois le circuit intégré et les moteurs, avec un courant maximal de 800 mA.  On remarquera également l'absence de broches "enable":  afin de pouvoir modifier la vitesse de rotation d'un moteur dans les deux sens de rotation, vous devrez donc utiliser deux sorties PWM de votre microcontrôleur.


Circuit

Le module L9110S comporte 6 entrées (broches mâles) et 4 sorties (borniers à vis).

Nous connectons le module de la façon suivante:

Broche B -IA du L9110S: broche 3 de l'Arduino
Broche B -IB du L9110S: broche 9 de l'Arduino
Broche GND du L9110S: broche GND de l'Arduino et borne négative de l'alimentation des moteurs
Broche VCC du L9110S: borne positive de l'alimentation des moteurs (2,5 V à 12 V)
Broche A - IA du L9110S: broche 10 de l'Arduino
Broche A - IB du L9110S: broche 11 de l'Arduino

Chaque moteur est branché à un bornier à vis.



Sketch

Pour faire tourner le moteur "A" dans une direction, on soumet l'entrée A - IA à un signal PWM, pendant que l'entrée A - IB est à une tension nulle.  La vitesse de rotation du moteur dépend du rapport cyclique du signal PWM.

Pour faire tourner le moteur dans l'autre sens, c'est le contraire:  l'entrée A - IA est soumise à une tension nulle, et l'entre A - IB est soumise à un signal PWM dont le rapport cyclique déterminera la vitesse de rotation.

Le sketch de démonstration ci-dessous fait tourner les moteurs dans les deux sens, avec différentes vitesses de rotation.





Yves Pelletier   (TwitterFacebook)

lundi 11 décembre 2017

Contrôler les sorties d'un MSP430 Launchpad avec GUI Composer

Bienvenue dans ce troisième article sur l'utilisation de GUI Composer, un outil en ligne qui permet de construire une interface graphique pour interagir avec un Launchpad.  Dans les deux articles précédents, nous avons vu comment afficher à l'écran l'état d'une entrée numérique et nous avons étudié la façon d'afficher à l'écran l'état d'une entrée analogique.  Cette fois-ci, nous allons créer à l'écran de l'ordinateur des boutons sur lesquels il sera possible de cliquer afin d'allumer ou d'éteindre les deux LEDs intégrées à la carte MSP430 Launchpad.

Je continue d'effectuer mes tests avec un Launchpad MSP430G2553, mais GUI Composer devrait fonctionner avec n'importe quel type de Launchpad.

Sketch

Pour nos deux précédents projets, le rôle du Launchpad se limitait essentiellement à envoyer un message json par liaison série.  Cette fois, le Launchpad va recevoir un message json en provenance de l'ordinateur, et il devra faire la différence entre un message qui lui commande de modifier l'état de sa LED rouge et un message qui lui commande de modifier l'état de sa LED verte.  Ça rend le sketch un petit peu plus complexe.

Lorsqu'on cliquera sur les boutons à l'écran, les messages envoyés par GUI Composer seront de ce type:  {"Vert":1}, {"Vert":0} ,  {"Rouge":1} ou {"Rouge":0}.

Sur réception d'un message, le notre programme localise le symbole ":".  Pour faire la différence entre la LED verte et la LED rouge, il recule de deux caractères:  si ce caractère est "t" (dernière lettre du mot "Vert"), c'est la LED verte qui doit changer d'état.  Si c'est "e" (dernière lettre du mot "Rouge"), c'est la LED rouge.

Dans le script initial, je scrutait le caractère situé immédiatement après ":" pour savoir si c'était "1" ou "0", et j'ai constaté que c'était parfois "1" ou "0", et parfois "true" ou"false".  Bien entendu, vous pouvez construire vos conditions pour prévoir ces deux possibilités.  J'ai préféré ne pas tenir compte de la commande "1" ou "0" et de toujours modifier l'état de la LED.  J'envoie ensuite un message json du Launchpad vers GUI Composer pour m'assurer que l'état affiché à l'écran est le même que l'état réel des LEDs sur la carte.



Construction de l'interface

Je vais supposer qu'il ne s'agit pas de votre première utilisation des services cloud de Texas Instrument, et que vous avez donc déjà installé le TI Cloud Agent.  Sinon, référez-vous à mon premier article pour plus d'informations.

Une fois dans GUI Composer, nous créons un nouveau projet de type "Dashboard".



Après avoir cliqué sur le bouton "NEXT", on se retrouve dans la zone où on règle la communication avec la carte.  Cliquons sur le bouton "+" en haut à gauche, et choisissons "USB-UART".


Ensuite, on sélectionne notre modèle de Launchpad.  Le port dans lequel le Launchpad est branché devrait se mettre à jour automatiquement.


On peut maintenant cliquer sur "OK" afin de quitter le "New Project Wizard".

Grâce au bouton circulaire rouge situé en bas à droite de l'écran, on créé une "Toggle Switch", disponible dans la catégorie "Control Panel".


Nous cliquons sur le bouton "Properties", situé à droite de la case à cocher "value".




Puis nous écrivons le message qui sera envoyé chaque fois que nous cliquerons sur ce bouton: "Vert".


Il ne reste plus qu'à créer une deuxième toggle switch, qui enverra plutôt le message "Rouge".



Utilisation

Pour utiliser notre nouvelle interface graphique, il s'agit de cliquer sur le bouton "run".


Le tableau de contrôle apparaît dans un nouvel onglet de votre navigateur.  Vous pouvez maintenant allumer ou éteindre chacune des deux LEDs du Launchpad en cliquant à l'écran sur le bouton qui lui est associé.

Yves Pelletier   (TwitterFacebook)

jeudi 7 décembre 2017

Affichage d'une mesure analogique dans GUI Composer

Voici donc le deuxième volet d'une série d'articles concernant GUI Composer, un outil en ligne permettant de créer une interface graphique sur un ordinateur afin d'interagir avec le MSP430 Launchpad (ou d'autres cartes de développement de Texas Instruments).


Cette fois, nous allons afficher à l'écran une jauge qui indiquera la valeur d'un signal analogique reçu par une entrée du Launchpad.  J'ai utilisé mon Launchpad MSP430G2553; il n'est pas impossible que certaines modifications soient nécessaires si vous utilisez un autre modèle.

Le circuit

La façon la plus simple de produire un signal analogique variable est probablement d'utiliser un potentiomètre.  Bien entendu, vous pouvez également utiliser un diviseur de tension comportant une photorésistance, une thermistance, etc.

J'ai donc branché un potentiomètre à la broche P1.3 du Launchpad.



Le sketch

Notre Launchpad utilise la liaison série par USB pour envoyer un message json (javascript) indiquant le signal reçu sur son entrée P1.3.  Il s'agit d'un sketch Energia.  La fonction "map" est utilisée pour que le signal varie entre 0 et 100 plutôt qu'entre 0 et 1023 (cette étape est évidemment optionnelle: tout dépend de ce que vous désirez afficher à l'écran).





Construction de l'interface

Je vais supposer que vous avez déjà utilisé GUI Composer auparavant, et que vous avez donc déjà installé le Cloud Agent (si ce n'est pas le cas, vous pouvez vous référer au précédent article de cette série).

Une fois dans GUI Composer, nous créons un nouveau projet ("CREATE A NEW PROJECT").



Il s'agira d'un projet de type "Dashboard".  Vous choisissez également un titre pour votre projet, puis vous cliquez le bouton "NEXT".


À l'écran suivant, vous cliquez sur le petit bouton "+" en haut à gauche, afin de sélectionner le mode de communication entre l'ordinateur et le Launchpad: sélectionnons "USB-UART".



Dans les options, vous devez choisir votre modèle de Launchpad à la rubrique "Device" (le MSP430G2553, en ce qui me concerne).  Vérifiez que le protocole est bien à "json" et que le "COM Port" correspond bien à votre Launchpad.


À cette étape, c'est une bonne idée de vérifier que la communication avec la carte s'effectue correctement: cliquez sur l'onglet "Console", puis sur le bouton "Connect".  Les messages json émis par la carte devraient défiler à l'écran.


On peut maintenant cliquer sur le bouton "OK".

Au moyen du bouton qui a la forme d'un signe "+" dans un cercle rouge, on fait apparaître le "New Tile Wizard", et un crée un "Meter" de type "Multipurpose".



Le champ "title-text" vous permet de choisir le nom de votre afficheur.  "min-value" et "max-value" devraient correspondre aux valeurs extrêmes pouvant être reçues.  Mais le réglage le plus important consiste à lier la jauge à au paramètre "POT" que lui envoie le Launchpad.  Pour ce faire, vous cliquez sur le bouton "Properties" situé à droite du champ "Value"...


...et d'écrire ou sélectionner "POT" dans le champ de droite­.


On peut maintenant cliquer sur le bouton "CLOSE" pour confirmer les changements apportés aux paramètre de notre jauge.

Utilisation

Il ne reste plus qu'à tester notre interface, en cliquant sur le bouton "RUN" (en forme de triangle, en haut à gauche).



Pendant que vous tournez le bouton du potentiomètre, la jauge indique de façon visuelle
et numérique la position du potentiomètre.



Autres options d'affichage

Si vous préférez, il est également possible d'utiliser le type "Analog gauge" plutôt que "Multipurpose".



Une autre option consiste à présenter les mesures sous forme de graphique.  Sur cet aspect, j'avoue que GUI Composer me déçoit un peu...  Deux modèles de graphique sont disponibles:  "XYZ Graph" que je n'ai pas encore réussi à faire fonctionner, et "Sliding Temperature Graph" qui, lui fonctionne très bien (le sketch Energia et les réglages sont les mêmes que pour le "Multipurpose Meter").  Seul inconvénient:  les concepteurs de GUI Composer ne semblent pas avoir prévu la possibilité qu'on souhaite mettre en graphique autre chose qu'une température:  l'utilisateur doit donc obligatoirement choisir une unité de mesure parmi 3 choix:  °F, °C et K!


Dans un prochain article, nous verrons comment contrôler des sorties du Launchpad en cliquant sur des boutons à l'écran de l'ordinateur.

Yves Pelletier   (TwitterFacebook)
Related Posts Plugin for WordPress, Blogger...