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/05/24 19:21] – serge | petit_pendule_de_furuta_software [2023/05/22 14:01] – 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 " | ||
+ | |||
+ | Ce mode d' | ||
+ | |||
+ | Phallocratie même n°2, pour maintenir sa tige à la verticale, a ainsi appris pendant | ||
+ | |||
+ | =====Les sources du projet===== | ||
+ | * **[[https:// | ||
+ | {{ : | ||
===== GPIO d'un Pi3 B+ ou d'un Pi4===== | ===== GPIO d'un Pi3 B+ ou d'un Pi4===== | ||
- | {{ : | + | {{ : |
====Ressources==== | ====Ressources==== | ||
- | [[https:// | + | [[https:// |
* https:// | * https:// | ||
* https:// | * https:// | ||
Ligne 24: | Ligne 55: | ||
Dans le terminal: | Dans le terminal: | ||
pinout | pinout | ||
- | {{:: | + | {{:: |
- | =====PWM===== | + | ====Quelle API python choisir ?==== |
- | {{:media_15:pwm_1.png?400|}}{{:media_15: | + | [[https:// |
- | ==== Matériels ==== | + | ===Lancement du deamon=== |
- | * **[[https:// | + | |
- | * **[[https:// | + | |
- | * **[[https:// | + | |
- | {{ : | + | |
- | + | ||
- | ==== 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:// | + | |
- | + | ||
- | 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:// | + | |
- | Conseil: faire une pause entre 2 changements de sens, **un certain temps** en fonction du moteur et des valeurs PWM avant après. | + | |
- | + | ||
- | **Voir le script de commande du moteur** TODO rajouter le lien | + | |
- | =====Quelle API python choisir ?===== | + | |
- | [[https:// | + | |
- | + | ||
- | ====Lancement du deamon=== | + | |
sudo pigpiod | sudo pigpiod | ||
et n' | et n' | ||
Ligne 65: | Ligne 74: | ||
</ | </ | ||
- | =====US DIGITAL S1 Optical Shaft Encoder===== | + | ====Câblage sur la Pi==== |
- | https://www.raspberryme.com/ | + | {{ :media_10: |
- | Les PIN 12 13 14 15 sont déjà utilisés. | + | ====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:// | ||
+ | {{: | ||
+ | {{: | ||
- | Encoder du **moteur**: | + | =====PWM===== |
- | ^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**: | + | ==== Matériels ==== |
- | ^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 | + | |
- | =====SPI===== | + | ==== Câblage |
- | Les 2 codeurs esclaves sont branchés sur SPI0\\ | + | {{:media_16:sku_dri0042_sur_pi.png?300|}} |
- | {{:media_15:spi_0.png?150|}} {{:media_15:master_slave.png?300|}} | + | {{:media_16:connecteur_commande_sku_dri0042.png?200|}} |
- | * **[[https://fr.wikipedia.org/wiki/ | + | * 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://wiki.dfrobot.com/15A_Single_DC_Motor_Driver_# |
+ | 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é | ||
+ | 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 | ||
- | Doc probable pour le SPI du capteur à effet hall chinois : [[https:// | + | =====US DIGITAL S1 Optical Shaft Encoder===== |
- | Il semblerait que le circuit dans le coder est peut être celui-ci, car le datagramme SPI est très similaire | + | ====Branchement direct sur la Pi==== |
+ | {{:media_16:branchement_codeurs_us_digital.png?400|}} | ||
- | 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. | + | https://www.raspberryme.com/ |
- | On devrait avoir 16 bits à lire : | + | ====Latence des callbacks==== |
- | - 1 bit de parité | + | Une Raspberry Pi peut gérer des callbacks jusqu'à 20kHz, sans erreur et sans latence.\\ |
- | - 1 bit error flag | + | Un codeur |
- | - 14 bits indiquant l' | + | Un codeur de 4000 points appelle des callbacks à 16 000 Hz à un tour par seconde.\\ |
- | Lorsqu' | + | 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 |
- | ====Activation du SPI==== | + | ===Solution=== |
- | [[https:// | + | **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. | ||
- | ====Branchement des devices sur la Pi==== | + | 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. |
- | ^DESCRIPTION^Borne du RASPI^GPIO^Fils^ | + | |
- | | Ground | + | |
- | | +5V | 2 | 5V | Rouge | | + | |
- | | MISO des 2 devices | + | |
- | | MOSI des 2 devices | + | |
- | | SCLK des 2 devices | + | |
- | | CE0 | 24 | 8 | Jaune | | + | |
- | | CE1 | 26 | 7 | Jaune | | + | |
+ | =====Recherche sur ESP32===== | ||
+ | ====Branchement sur ESP32 et Com en SPI avec Raspi==== | ||
+ | {{: | ||
+ | ===Ressources=== | ||
+ | * **[[https:// | ||
+ | * Voir la page dédiée: **[[rotary_encoder_controller]]** | ||
- | {{tag> | + | {{tag> bestiaire_ia |
petit_pendule_de_furuta_software.txt · Dernière modification : 2023/05/22 14:38 de Benjamin Labomedia