jeudi 6 mai 2021

Afficheur TM1638 et Raspberry Pi Pico (MicroPython)

Dans ce tuto, nous contrôlons un afficheur "LED & KEY" à base de TM1638 au moyen d'un Raspberry Pi Pico. Ces modules comportent 8 afficheurs à 7 segments, 8 LEDs et 8 boutons poussoirs.


Connexions

Un avantage intéressant de ce module est que, hormis l'alimentation, trois broches du microcontrôleur suffisent pour afficher des nombres, allumer des LEDs et connaître l'état des boutons.

Vous pouvez choisir d'autres broches si vous le désirez, mais je vous suggère ces connexions:

  • Broche VCC du module TM1638: Sortie 3,3 V du Raspberry Pi Pico
  • Broche GND du module TM1638: Broche GND du Raspberry Pi Pico
  • Broche STB du module TM1638: Broche GP13 du Raspberry Pi Pico
  • Broche CLK du module TM1638: Broche GP14 du Raspberry Pi Pico
  • Broche DIO du module TM1638: Broche GP15 du Raspberry Pi Pico


Installation du pilote TM1638

Mike Causer a mis au point un pilote MicroPython pour le TM1638. Le fichier tm1638.py doit être copié dans le système de fichier MicroPython du Raspberry Pi Pico (ça peut se faire, par exemple, au moyen de Thonny).



Exemple de script MicroPython

Le pilote de Mike Causer met à notre disposition un grand nombre de méthodes permettant d'interagir avec le module TM1638:

  • number() pour afficher un nombre
  • show() pour afficher une chaîne de caractères
  • led() pour allumer ou éteindre une LED
  • leds() pour régler en une seule étape l'état des 8 LEDs
  • keys() pour connaître l'état des boutons poussoirs

Plusieurs exemples très instructifs sont fournis avec la bibliothèque. Voici un script qui affiche des nombres, allume et éteint des LEDs, puis affiche le numéro du dernier bouton sur lequel vous avez appuyé.

-

-

À lire également


Yves Pelletier (Twitter, Facebook)


mardi 4 mai 2021

Contrôle d'un moteur pas à pas avec un module A4988

Le A4988 est un circuit intégré spécialement conçu pour le contrôle d'un moteur à pas bipolaire. Deux broches suffisent pour contrôler le moteur: une entrée qui provoque la rotation d'un pas, et une autre qui détermine la direction de la rotation.


Le circuit intégré est étonnement petit pour un dispositif capable de tolérer une tension de 35 V et un courant de 2 A. Le module est accompagné d'un petit dissipateur thermique qu'il est conseillé de coller sur le circuit intégré.


Le module comporte 16 broches.

VDD et GND servent à l'alimentation du circuit intégré (3 V à 5,5 V)

Vmot et GND servent à l'alimentation du moteur (8 V à 35 V). Il faut placer un condensateur de 100 µF en parallèle avec l'alimentation pour atténuer les surtensions.

1A, 1B, 2A et 2B sont les sorties vers le bobinage 1 et le bobinage 2 du moteur pas à pas.

Chaque fois que l'entrée STEP passe du niveau logique bas au niveau logique haut, le moteur tourne d'un pas.

Le moteur tourne dans le sens horaire si l'entrée DIRECTION est au niveau logique haut, et dans l'autre sens si elle est au niveau logique bas.

On peut désactiver le module en plaçant l'entrée ENABLE au niveau logique bas. Si vous ne branchez rien à cette entrée, elle demeure par défaut au niveau logique haut.

On peut mettre le module en veille (pour qu'il consomme moins d'énergie) en plaçant son entrée SLEEP au niveau logique bas. Cette entrée est maintenue au niveau logique haut pendant l'utilisation du moteur.

La broche RESET peut être mise brièvement au niveau logique bas pour déclencher une réinitialisation du module (suite à un arrêt pour cause de surchauffe, par exemple). Cette entrée est maintenue au niveau logique haut pendant l'utilisation du moteur.

Les broches MS1, MS2 et MS3 permettent de sélectionner différents degrés de micropas (microstepping). Si vous ne les connectez pas, elles sont, par défaut, au niveau logique bas et le moteur fonctionnera en pas complets. Mais il est possible de régler ces broches de façon à obtenir des demi pas, des quarts de pas, des huitièmes de pas et des seizièmes de pas.

  • Pas complet:   MS1 Bas  - MS2 Bas - MS3 Bas
  • Demi pas: MS1 Haut - MS2 Bas - MS3 Bas
  • Quart de pas: MS1 Bas  - MS2 Haut - MS3 Bas
  • Huitième de pas:   MS1 Haut  - MS2 Haut - MS3 Bas
  • Seizième de pas:   MS1 Haut  - MS2 Haut - MS3 Haut

Connexions du module A4988 à l'Arduino

Voici comment j'ai branché le module A4988 à une carte Arduino Uno pour effectuer quelques tests.


Réglage du courant maximal

Un petit potentiomètre sert à limiter le courant pour éviter qu'un courant trop intense n'endommage le moteur ou le circuit intégré. Vous pouvez mesurer le courant en plaçant le multimètre en série avec un des bobinages du moteur, ou encore mesurer la tension entre le potentiomètre et la masse. Le courant en ampères est approximativement égal à la tension mesurée (en volts) multipliée par 2,5. Cette mesure dépend de la tension à laquelle est soumise l'entrée Vmot, il faut donc refaire ce réglage si vous modifiez l'alimentation du moteur.

Un exemple de sketch

Voici un sketch qui fait tourner le moteur rapidement dans une direction, et lentement dans l'autre. Le programme est très simple: il n'a pas à alterner la direction du courant dans chaque bobinage comme il aurait à le faire pour un L293D, puisque c'est le A4988 qui fait tout le travail.

Le moteur tourne d'un pas chaque fois que le signal de son entrée STEP passe du niveau logique bas au niveau logique haut. Plus ces impulsions sont rapides, plus le moteur tourne rapidement (la vitesse de rotation est contrôlée par des delay() dans le sketch: un délai court correspond à une vitesse rapide).

Le sens de rotation du moteur dépend de l'état logique de la broche DIRECTION.

-

-


Source:

Page du produit chez Pololu.


À lire également:

Bien d'autres façons de faire tourner un moteur pas à pas avec Arduino: en utilisant le L293D,  l'ULN2003, le L9110S, le L298N ou le L6205.   Pilote de moteur pas à pas autonome .


Yves Pelletier (Twitter, Facebook)

samedi 1 mai 2021

Écran couleur SPI ST7735 et Raspberry Pi Pico (MicroPython)

Je poursuis mon exploration du Raspberry Pi Pico en le combinant à un petit écran couleur SPI de 128 par 160 pixels (1.8") muni du contrôleur ST7735. Le Raspberry Pi Pico sera encore une fois programmé en MicroPython.


L'écran

L'écran que j'ai utilisé porte les mentions "1.8 SPI TFT 128*160" et "KMR-1.8 SPI".



Il comporte 16 connecteurs, mais nous en utiliserons 9, puisque 3 connecteurs ne servent à rien, et 4 autres servent au lecteur de carte SD, que nous n'utiliserons pas pour l'instant.


Connexions

J'ai branché l'écran au Raspberry Pi Pico de cette façon:

  • Broche LED- de l'écran - Broche GND du Pico
  • Broche LED+ de l'écran - Sortie 3,3 V du Pico
  • Broche SD_CS de l'écran - pas branchée (carte SD)
  • Broche MOSI de l'écran - pas branchée (carte SD)
  • Broche MISO de l'écran - pas branchée (carte SD)
  • Broche SCK de l'écran - pas branchée (carte SD)
  • Broche CS de l'écran - broche GP 15 du Pico
  • Broche SCL de l'écran - broche GP 6 du Pico
  • Broche SDA de l'écran - broche GP7 du Pico
  • Broche AO de l'écran - Broche GP 13 du Pico
  • Broche RESET de l'écran - Broche GP 14 du Pico
  • Broches NC de l'écran (il y en a trois): pas branchées
  • Broche VCC de l'écran: Broche VBUS du Pico *
  • Broche GND de l'écran: Broche GND du Pico
* Mon écran comporte un régulateur de tension et doit donc être alimenté avec une tension de 5 V. Ce n'est pas le cas pour tous les écrans, toutefois.

Pilote MicroPython pour le ST7735

J'ai utilisé le pilote pour ST7735 de Boochow et Carver.  Le fichier "ST7735.py" doit être copié dans le système de fichiers MicroPython du Pico (si vous utilisez Thonny, ça peut se faire par le menu Fichier - Enregistrer une copie).

Deux exemples sont disponibles au même endroit: graphicstest.py, une démonstration mise au point par Adafruit et tftbmp.py qui affiche le contenu d'un fichier bmp enregistré dans la mémoire flash du Pico. Les deux exemples sont parfaitement fonctionnels à la condition de modifier la numérotation des broches utilisées.

Fichier de définition de police de caractère

Pour afficher du texte sur l'écran, il faut définir une police de caractère. Pour mon script ci-dessous, j'ai utilisé la police sysfont mis à notre disposition par Guy Carver. Ici encore, le fichier sysfont.py doit être enregistré dans la mémoire Flash du Pico.

Exemple de script

J'ai préparé un court script en MicroPython qui illustre l'utilisation des principales méthodes permettant de dessiner des formes géométriques de base à l'écran: affichage de texte, contrôle d'un pixel individuel, tracé d'une droite, d'un rectangle ou d'un cercle.


-

-

À lire également


Yves Pelletier (Twitter, Facebook)