encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a
Ceci est une ancienne révision du document !
Table des matières
Encodeur rotatif à Effet Hall Pandauto P3022 avec puce AS5048A
Avec Communication en SPI
AS5048A de AWS
- 1 bit de parité
- 1 bit error flag
- 14 bits indiquant l'angle absolu sur 14 bits.
Lorsqu'on lit les données SPI dans les 2 octets, il y a donc les 6 derniers bits du premier octet à concaténé avec les 8 bits du second octet pour reconstituer le mot de 14 bits.
Ressources sur le SPI
- Serial Peripheral Interface Une liaison SPI est un bus de données série synchrone baptisé ainsi par Motorola, au milieu des années 1980 qui opère en mode full-duplex.
Activation du SPI sur la Raspberry PI
Activation du SPI Aller dans Menu, Settings, Enable SPI, puis Vérifier si SPI est activé
Sketch Arduino pour AS5048A
- AS5048A-Arduino de ZoetropeLabs La version originale pour Arduino
- https://github.com/eborghi10/AS5048A eborghi10 propose une version pour arduino et esp32
Exemple pour Arduino UNO
#include <AS5048A.h> AS5048A angleSensor(10); void setup() { Serial.begin(115200); angleSensor.init(); } void loop() { delay(10); word val = angleSensor.getRawRotation(); Serial.println(val, DEC); }
La lib a le cycle suivant
- set à 0 du PIN Slave Select
- envoi de 0b1111111111111111
- lecture
- set à 1 du PIN Slave Select
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. Compter 2 à 3 ms.
Capteur sur la Pi en SPI
Il est absolument nécessaire de brancher un adaptateur de tension entre la Pi (en 3.3V) et le capteur (en 5V).
from time import sleep import pigpio CE = 8 pi = pigpio.pi() sensor = pi.spi_open(0, 1000000, 1) dt = 0.0001 pi.write(CE, 1) sleep(dt) n = -1 nbr = 1000 tempo = 0.03 while n < nbr: n += 1 pi.write(CE, 0) sleep(dt) # Envoi de 0b1111111111111111 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 % 2 == 0: print(angle) pi.write(CE, 1) # Pour simuler la fréquence d'appel par furuta sleep(0.03) pi.stop()
Sans print, le temps de récupération de la valeur est de 1.3 ms à 1 MHz et 1.2 ms à 3 MHz.
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
encodeur_rotatif_a_effet_hall_pandauto_p3022_avec_puce_as5048a.1662450206.txt.gz · Dernière modification : 2022/09/06 07:43 de serge