我正在尝试使用 AS5600 磁性位置编码器读取步进电机角度。
我使用的是 Raspberry Pi 4,引脚排列如下:
VCC 至 3.3V,GND 至地,SDA 至 GPIO2(引脚 3),SCL 至 GPIO3(引脚 5),DIR 至地
我使用的代码是这样的:
import smbus
import time
# Define I2C bus number and AS5600 device address
bus = smbus.SMBus(1)
AS5600_ADDRESS = 0x36
# AS5600 register addresses
AS5600_REG_ANGLE = 0x0E # Read-only register for angle value
def read_angle():
# Read 14-bit angle value from AS5600
data = bus.read_i2c_block_data(AS5600_ADDRESS, AS5600_REG_ANGLE, 2)
angle = (data[0] << 8) | data[1]
return angle
try:
while True:
# Read angle value from AS5600
angle = read_angle()
print("Angle:", angle)
time.sleep(0.1) # Wait for 100 ms before next reading
except KeyboardInterrupt:
print("Program stopped by user")
我使用相同的代码,之前它可以工作,但是几天后,我尝试了一下,我得到的只是“角度:0”
我尝试更换编码器模块和电线,但没有用。我什至尝试让它在 Arduino 上运行,但还是一无所获。
我可以说,通过在我自己的 Raspberry Pi 项目上进行测试,您的代码运行得非常好,我得到了从 0 到 4095 的所有所需结果。事实上,看到这一点,它是一个救星,因为我终于明白了如何从寄存器中获取信息!让我知道您使用传感器,
干杯, F