encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a
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édente | ||
encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a [2022/09/05 13:41] – [Raspberry Pi] serge | encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a [2022/09/07 09:33] (Version actuelle) – [Encodeur rotatif à Effet Hall Pandauto P3022 avec puce AS5048A] serge | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
**Avec Communication en SPI** | **Avec Communication en SPI** | ||
</ | </ | ||
+ | {{ : | ||
+ | =====AS5048A de AWS===== | ||
+ | * **[[https:// | ||
+ | * 1 bit de parité | ||
+ | * 1 bit error flag | ||
+ | * 14 bits indiquant l' | ||
+ | Lorsqu' | ||
- | =====ESP32===== | + | =====Ressources sur le SPI===== |
- | + | * **[[https:// | |
+ | * https:// | ||
+ | * **[[spi_documentation_1|]]** | ||
+ | * **[[communication_protocole_spi]]** | ||
- | ====Branchement sur ESP32 et Com en SPI avec Raspi==== | + | ====Activation du SPI sur la Raspberry PI==== |
- | **Essais infructueux --> Abandon** | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | ===Activation du SPI=== | + | |
[[https:// | [[https:// | ||
- | ===Ressources=== | + | =====Sketch Arduino pour AS5048A===== |
- | * **[[https:// | + | * **[[https:// |
- | * Voir la page dédiée: | + | * **[[https:// |
- | =====Codeurs à Effet Hall de pandauto.com===== | + | |
- | **Ces codeurs sont construits sur une puce AS5048A** | + | |
- | ==== ZoetropeLabs propose une lib pour Arduino==== | + | ===Exemple |
- | * **[[https:// | + | |
- | + | ||
- | Télécharger le projet: aller dans le dossier AS5048A-Arduino-master/ | + | |
- | Dans Arduino IDE, allez à Sketch --> Include Library --> Add ZIP Library --> ajouter le zip de AS5048A | + | |
- | + | ||
- | Exemple: | + | |
<code C++> | <code C++> | ||
Ligne 44: | Ligne 40: | ||
</ | </ | ||
- | ====Ressources==== | + | ===La lib a le cycle suivant=== |
- | * **[[https:// | + | * set à 0 du PIN Slave Select |
- | * https://pinout.xyz/ | + | |
- | * **[[spi_documentation_1|]]** | + | |
- | * **[[communication_protocole_spi]]** | + | * set à 1 du PIN Slave Select |
- | * **[[https:// | + | |
- | Doc probable pour le SPI du capteur à effet hall chinois | + | ===Récupération de l' |
- | Il semblerait que le circuit dans le coder est peut être celui-ci, car le datagramme SPI est très similaire | + | Sur une UNO, le SPI est utilisé pour le capteur, la Pi doit récupérer les datas en [[communication_protocole_i2c|I2C]]. Compter 2 à 3 ms. |
- | 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é | + | =====Capteur sur la Pi en SPI===== |
- | - 1 bit error flag | + | {{ : |
- | - 14 bits indiquant l' | + | |
- | Lorsqu' | + | Il est absolument nécessaire de brancher |
+ | |||
+ | {{ :media_16:pandauto_sur_pi.png? | ||
+ | |||
+ | * **[[https:// | ||
+ | |||
+ | <code python> | ||
+ | |||
+ | """ | ||
+ | De Arduino en debug: | ||
+ | |||
+ | Read (0x3FFF) with command: 0b1111111111111111 avec un transfert16 | ||
+ | Read returned: 1101110100001010 | ||
+ | Setting error bit | ||
+ | 3433 | ||
+ | Read (0x3FFF) with command: 0b1111111111111111 | ||
+ | Read returned: 101110100000111 | ||
+ | Setting error bit | ||
+ | 3432 | ||
+ | |||
+ | """ | ||
+ | |||
+ | from time import time, sleep | ||
+ | import pigpio | ||
+ | |||
+ | CE = 8 | ||
+ | |||
+ | pi = pigpio.pi() | ||
+ | sensor = pi.spi_open(0, 1000000, 1) | ||
+ | |||
+ | dt = 0.00001 | ||
+ | |||
+ | pi.write(CE, 1) | ||
+ | sleep(dt) | ||
+ | |||
+ | t0 = time() | ||
+ | n = -1 | ||
+ | nbr = 1000 | ||
+ | tempo = 0.03 | ||
+ | while n < nbr: | ||
+ | n += 1 | ||
+ | pi.write(CE, 0) | ||
+ | sleep(dt) | ||
+ | |||
+ | c, d = pi.spi_xfer(sensor, | ||
+ | if c == 2: | ||
+ | val = (d[0] & 0b00111111) << 8 | d[1] | ||
+ | angle = int(val/4) | ||
+ | |||
+ | # #if n % 20 == 0: | ||
+ | # # | ||
+ | |||
+ | pi.write(CE, 1) | ||
+ | |||
+ | sleep(tempo) | ||
+ | |||
+ | pi.stop() | ||
+ | |||
+ | periode = (((time() | ||
+ | print(" | ||
+ | sleep(1) | ||
+ | |||
+ | """ | ||
+ | periode = 1.9 ms | ||
+ | il y a quelques incohérences dans les valeurs | ||
+ | |||
+ | sans print | ||
+ | periode = 1.3 ms | ||
+ | periode = 1.19 ms | ||
+ | |||
+ | """ | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Sans print, | ||
{{tag> | {{tag> |
encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a.1662385310.txt.gz · Dernière modification : 2022/09/05 13:41 de serge