Table des matières
Petit Pendule de Furuta: Electronique Branchements Software
Les sources du projet
- Petit Pendule de Furuta tout en Python, 2 encodeurs optique US DIGITAL 1000 points.
GPIO d'un Pi3 B+ ou d'un Pi4
Ressources
General Purpose Input/Output sur fr.wikipedia.org Les ports GPIO (anglais : General Purpose Input/Output, littéralement Entrée-sortie à usage général) sont des ports d'entrées-sorties très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l'électronique embarquée, qui ont fait leur apparition au début des années 1980. Elles sont placées sur un circuit électronique afin de communiquer avec des composants électroniques et circuits externes. Il peut s'agir de détecteurs ou senseurs pour capter des données, ou encore de contrôler des commandes.
- https://pinout.xyz/pinout/pin12_gpio18# Avec chaque pin bien détaillé
Liste des GPIO
Quelle API python choisir ?
compare python gpio api pointe vers elinux.org par l'auteur de pigpio. RPi.GPIO n'est plus maintenu, à la réputation de raccourcir la vie des moteurs. pigpio est plus rapide, voir https://atman-iot.com/blog/raspberry-pi-benchmark/.
Lancement du deamon
sudo pigpiod
et n'oublier pas de rajouter votre user au groupe gpio
Run deamon at startup
mkdir ~/.config/autostart sudo nano ~/.config/autostart/pigpiod
coller
[Desktop Entry] Type=Application Exec=sudo pigpiod
Câblage sur la Pi
Tension d'entrée des GPIO sur la PI
Les PINS GPIO sont à 1 si la tension d'entrée est comprise entre 1.8V et 3.3V, et à zéro si inférieure à 1.8V
Les entrées A B et Index de chaque codeurs sont baissées à 3V avec une puce Convertisseur de 4 niveaux logiques.
PWM
Matériels
Câblage
La puissance envoyée au moteur est contrôlée sur le PWM. PWM est toujours positif, il ne défini pas le sens de rotation: le sens est défini par IN1 et IN2. Voir wiki.dfrobot.com pour le détail du fonctionnement.
Il est conseillé de faire une pause entre 2 changements de sens, un certain temps en fonction du moteur et des valeurs PWM avant après. En pratique, le moteur est utilisé au tiers de sa puissance, il a supporté des dizaines de millions de steps, ne chauffe pas du tout.
La fréquence des impulsions a été testée entre 14 Hz et 28 Hz. La durée de l'impulsion est de 0.02 à 0.03 seconde.
Voir le script de commande du moteur TODO rajouter le lien
US DIGITAL S1 Optical Shaft Encoder
Branchement direct sur la Pi
Latence des callbacks
Une Raspberry Pi peut gérer des callbacks jusqu'à 20kHz, sans erreur et sans latence.
Un codeur de 1000 points au tour appelle 2000 callbacks sur le canal A (montée et descente des tops), et autant sur le canal B. Soir des callbaks à 4000 Hz à un tour par seconde.
Un codeur de 4000 points appelle des callbacks à 16 000 Hz à un tour par seconde.
Soit 20 kHz pour les 2 codeurs à un tour par seconde. Mais certain transitoires vont plus vite que 1 tour par seconde. Les callbacks sont empilé sur une pile qui a été estimée à 2 mn après quelques heures d'apprentissage. Les actions moteur sont alors du n'importe quoi.
Solution
Le codeur de 4000 points du balancier a été remplacé par un codeur 1000 points.
La fréquence a 1 tour par seconde devient 8 kHz: ce qui fait une grosse marge par rapport à 20 kHz.
La précision est tout à fait suffisante: le point zéro est défini à -/+ 1 ou 2 ou 3 points, c'est très sensible.
Recherche sur ESP32
Branchement sur ESP32 et Com en SPI avec Raspi
Ressources
- best-microcontroller-projects.com Rotary Encoder: Immediately Tame your Noisy Encoder! Find out how to Instantly Stop Switch Bounce using one of 2 software methods. Easily get Reliable Operation from your Encoder.
- Voir la page dédiée: Réalisation d'un controleur pour capteur de position angulaire optique