petit_pendule_de_furuta_software
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
petit_pendule_de_furuta_software [2022/06/11 10:20] – [Codeurs à Effet Hall de pandauto.com] serge | petit_pendule_de_furuta_software [2023/05/22 13:59] – Benjamin Labomedia | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Petit Pendule de Furuta: Branchements | + | ====== Petit Pendule de Furuta: |
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
**{{tagpage> | **{{tagpage> | ||
Ligne 11: | Ligne 11: | ||
**{{tagpage> | **{{tagpage> | ||
</ | </ | ||
+ | ====== Mode d' | ||
+ | Phallocratie n°2 - le pendule de Furuta est presque plug and play, pour l' | ||
+ | Ensuite, une fois l'ordi démarré, on accède à des écrans interactifs : | ||
+ | |||
+ | {{ :: | ||
+ | |||
+ | {{ :: | ||
+ | Il existe 2 modes de fonctionnement : le mode Training qui rejoue l’entraînement du pendule et le mode Testing où le modèle déjà entrainé est utilisé pour maintenir la tige à la verticale | ||
+ | |||
+ | Via ce menu, il est aussi possible d' | ||
+ | |||
+ | {{ :: | ||
+ | Pour ce mode, on peut démarrer ou arrêter l' | ||
+ | |||
+ | {{ :: | ||
+ | Pour ce mode, on peut démarrer ou arrêter le test du modèle | ||
+ | |||
+ | ====== Cartel ====== | ||
+ | Phallocratie même n°2 est un pendule de Furuta réalisé par Serge Pierre dans le cadre des activités de la Labomedia. | ||
+ | |||
+ | Le pendule de Furuta, ou pendule rotationnel inversé, se compose d'un bras entraîné qui tourne dans le plan horizontal et d'un pendule attaché à ce bras qui est libre de tourner dans le plan vertical. Il a été inventé en 1992 au Tokyo Institute of Technology par Katsuhisa Furuta et ses collègues. | ||
+ | |||
+ | Ce robot illustre particulièrement bien ce que l'on appelle " | ||
+ | |||
+ | Directeur Seymour Skinner | ||
+ | |||
+ | Le directeur de l' | ||
+ | |||
+ | |||
+ | =====Les sources du projet===== | ||
+ | * **[[https:// | ||
+ | {{ : | ||
===== GPIO d'un Pi3 B+ ou d'un Pi4===== | ===== GPIO d'un Pi3 B+ ou d'un Pi4===== | ||
{{ : | {{ : | ||
Ligne 42: | Ligne 74: | ||
Exec=sudo pigpiod | Exec=sudo pigpiod | ||
</ | </ | ||
+ | |||
+ | ====Câblage sur la Pi==== | ||
+ | {{ : | ||
+ | |||
+ | ====Tension d' | ||
+ | Les PINS GPIO sont à 1 si la tension d' | ||
+ | Les entrées A B et Index de chaque codeurs sont baissées à 3V avec une puce [[https:// | ||
+ | {{: | ||
+ | {{: | ||
=====PWM===== | =====PWM===== | ||
- | {{: | + | {{: |
==== Matériels ==== | ==== Matériels ==== | ||
Ligne 52: | Ligne 93: | ||
==== Câblage ==== | ==== Câblage ==== | ||
- | ^PIN^GPIO^Fonction^ Borne du DRI0042^ | + | {{: |
- | | 14 | GND| GND | COM | | + | {{: |
- | | 13 | 27 | Sens droite | IN1 | | + | |
- | | 15 | 22 | Sens gauche | IN2 | | + | |
- | | 12 | 18 | PWM | PWM | | + | |
* https:// | * https:// | ||
- | + | 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 [[https:// | |
- | 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 [[https:// | + | |
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.\\ | 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' | + | La fréquence des impulsions a été testée entre 14 Hz et 28 Hz. La durée de l' |
**Voir le script de commande du moteur** TODO rajouter le lien | **Voir le script de commande du moteur** TODO rajouter le lien | ||
=====US DIGITAL S1 Optical Shaft Encoder===== | =====US DIGITAL S1 Optical Shaft Encoder===== | ||
- | ====Branchement direct sur la Pi: Solution abandonnée à cause de la latence==== | + | ====Branchement direct sur la Pi==== |
+ | {{: | ||
https:// | https:// | ||
- | Encoder du **moteur**: | ||
- | ^PIN du S1^DESCRIPTION^Borne du RASPI^GPIO^ | ||
- | |1 | Ground | ||
- | |2 | Index = 1 top par tour | 33 | GPIO13 | | ||
- | |3 | A channel | ||
- | |4 | +5V DC power | 2 | 5V | | ||
- | |5 | B channel | ||
- | Encoder du **balancier**: | ||
- | ^PIN du S1^DESCRIPTION^Borne du RASPI^GPIO^ | ||
- | |1 | Ground | ||
- | |2 | Index = 1 top par tour | 29 | GPIO5 | | ||
- | |3 | A channel | ||
- | |4 | +5V DC power | 4 | 5V | | ||
- | |5 | B channel | ||
+ | ====Latence des callbacks==== | ||
+ | Une Raspberry Pi peut gérer des callbacks jusqu' | ||
+ | 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.\\ | ||
- | ===Latence des callbacks=== | + | Soit 20 kHz pour les 2 codeurs |
- | Dans certains transitoires avec des rotations sur les codeurs | + | |
- | =====Optical Encoder on ESP32===== | + | ===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. | ||
- | **COM entre ESP32 et Pi en SPI** | + | 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. |
- | ====Ressources==== | + | =====Recherche sur ESP32===== |
- | * **[[https:// | + | ====Branchement |
- | =====Codeurs SPI===== | + | {{: |
- | * **[[|]]** | + | |
- | Les 2 codeurs esclaves sont branchés | + | |
- | {{: | + | |
- | + | ||
- | * **[[https:// | + | |
- | * https:// | + | |
- | + | ||
- | ====Codeurs à Effet Hall de pandauto.com==== | + | |
- | * **[[https:// | + | |
- | Doc probable pour le SPI du capteur à effet hall chinois : [[https:// | + | |
- | Il semblerait que le circuit dans le coder est peut être celui-ci, car le datagramme SPI est très similaire : [[ https:// | + | |
- | + | ||
- | Il faudrait donc voir, car pour lire une données théoriquement il faut envoyer une commande READ qui permet de recevoir simultanément la valeur au moment du READ précédent. | + | |
- | + | ||
- | On devrait avoir 16 bits à lire : | + | |
- | - 1 bit de parité | + | |
- | - 1 bit error flag | + | |
- | - 14 bits indiquant l' | + | |
- | + | ||
- | Lorsqu' | + | |
- | + | ||
- | Ces codeurs ont fonctionné rarement, en python en direct sur la Pi ou sur Arduino UNO, et le plus souvent rien, nada. | + | |
- | ====Activation du SPI==== | + | |
- | [[https:// | + | |
- | + | ||
- | =====Câblage du petit furuta===== | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
+ | ===Ressources=== | ||
+ | * **[[https:// | ||
+ | * Voir la page dédiée: **[[rotary_encoder_controller]]** | ||
{{tag> bestiaire_ia petit_pendule_furuta raspberry_pi raspbian sb }} | {{tag> bestiaire_ia petit_pendule_furuta raspberry_pi raspbian sb }} |
petit_pendule_de_furuta_software.txt · Dernière modification : 2023/05/22 14:38 de Benjamin Labomedia