Outils pour utilisateurs

Outils du site


encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a [2022/09/05 17:29] – [Sketch Arduino pour AS5048A] sergeencodeur_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**
 </WRAP> </WRAP>
 +{{ :media_16:2_codeurs_ok.png?600 |}}
 =====AS5048A de AWS===== =====AS5048A de AWS=====
   * **[[https://ams.com/as5048a|AS5048A High-Resolution Position Sensor 14-bit rotary position sensor with digital angle (interface) and PWM output]]** Sortie SPI et PWM.   * **[[https://ams.com/as5048a|AS5048A High-Resolution Position Sensor 14-bit rotary position sensor with digital angle (interface) and PWM output]]** Sortie SPI et PWM.
Ligne 40: Ligne 40:
 </code> </code>
  
-La lib a le cycle suivant:+===La lib a le cycle suivant===
   * set à 0 du PIN Slave Select   * set à 0 du PIN Slave Select
   * envoi de 0b1111111111111111   * envoi de 0b1111111111111111
Ligne 46: Ligne 46:
   * set à 1 du PIN Slave Select   * set à 1 du PIN Slave Select
  
-====Communication avec la Raspberry Pi==== +===Récupération de l'angle sur la Pi=== 
-Sur une UNO, le SPI est utilisé pour le capteur, la Pi doit récupérer les datas en I2C.+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. 
  
 =====Capteur sur la Pi en SPI===== =====Capteur sur la Pi en SPI=====
 +{{ :media_16:pandauto_sur_pi_exemple.png?300 |}}
 +
 Il est absolument nécessaire de brancher un adaptateur de tension entre la Pi (en 3.3V) et le capteur (en 5V). Il est absolument nécessaire de brancher un adaptateur de tension entre la Pi (en 3.3V) et le capteur (en 5V).
  
-Il semblerait, à lire le code source du sketch Arduino, qu'il faille écrire 2 bytes avec que des 1 pour commencer à lire.+{{ :media_16:pandauto_sur_pi.png?500 |}}
  
 +  * **[[https://github.com/sergeLabo/furuta/tree/main/some_encoders/AS5048A/pandauto_on_pi_en_direct|pandauto_on_pi_en_direct]]**
 +
 +<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, int.to_bytes(65535, 2, 'big'))
 +    if c == 2:
 +        val = (d[0] & 0b00111111) << 8 | d[1]
 +        angle = int(val/4)
 +
 +    # #if n % 20 == 0:
 +        # #print(angle)
 +
 +    pi.write(CE, 1)
 +
 +    sleep(tempo)
 +
 +pi.stop()
 +
 +periode = (((time() - t0) / nbr) - tempo)*1000  # ms
 +print("periode =", round(periode, 2), "ms")
 +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
 +
 +"""
 +
 +</code>
  
-=====Recherche sur ESP32===== +**Sans print, le temps de récupération de la valeur est de 1.3 ms à 1 MHz et 1.2 ms à 3 MHz.**
-====Branchement sur ESP32 et Com en SPI avec Raspi==== +
-{{:media_16:branchements_esp32.png?500|}}{{:media_16:com_spi_esp32_pi.png?400|}}+
  
-===Ressources=== 
-  * **[[https://www.best-microcontroller-projects.com/rotary-encoder.html|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: **[[rotary_encoder_controller]]** 
  
 {{tag>arduino raspberry_pi sb spi}} {{tag>arduino raspberry_pi sb spi}}
encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a.1662398945.txt.gz · Dernière modification : 2022/09/05 17:29 de serge