目录
- 一、硬件介绍
-
- 1、磁编码器说明
- 2、硬件连接
- 二、程序演示
-
- 1、模拟电压获取角度
- 2、I2C通信获取角度
- 三、程序拓展
SimpleFOC的教程比较多,做了一个总的链接,欢迎点击阅读:SimpleFOC教程链接汇总
一、硬件介绍
1、磁编码器说明
◆AS5600与两极磁铁配对,可以输出12位分辨率的磁性旋转位置,支持IIC通信,还可以输出模拟电压和PWM信号。官方例程中主要演示了模拟电压和IIC通信两种角度获取方式。
电机购买链接:淘宝购买
◆模拟电压模式,Aout引脚输出0—5V对应0°—360°,
◆I2C模式,读取0x0C/0x0D两个寄存器,获取12bits的角度值,0—4096对应0°—360°,
2、硬件连接
◆simpleFOC背面跳线如果用模拟信号,需按下图短接,保证A1的信号可以被单片机采样到;如果是I2C接口可以不用管。
V2.0.3驱动板购买链接:淘宝购买
二、程序演示
1、模拟电压获取角度
⑴、编码器接GND/VCC/Aout对应simpleFOC的GND/5V/A1
⑵、电机编码器与simpleFOC的连接,本节实验并不驱动电机,可以不接电机相线和电源线。
⑶、打开例程,
⑷、查看 工具—>端口 确认连接端口正确,然后 上传,
⑸、打开 串口监视器,
⑹、串口源源不断的上传当前角度和瞬时转动速度,即使电机不动速度也会波动,说明有误差。
⑺、用手转动电机,角度和速度随之变化。角度和速度为弧度值,正转一圈角度增加6.28,反转一圈角度减小6.28。
2、I2C通信获取角度
⑴、编码器接GND/VCC/SCL/SDA对应simpleFOC的GND/5V/SCL/SDA,
⑵、电机编码器与simpleFOC的连接,本节实验并不驱动电机,可以不接电机相线和电源线,
⑶、打开例程,
⑷、查看 工具—>端口 确认连接端口正确,然后 上传,
⑸、打开 串口监视器,
⑹、串口源源不断的上传当前角度和瞬时转动速度,
⑺、用手转动电机,角度和速度随之变化。角度和速度为弧度值,正转一圈角度增加6.28,反转一圈角度减小6.28。
三、程序拓展
◆SimpleFOC的例程采用弧度制并且用角度累加方式显示角度,与我们平时的习惯不符,非常不直观,本人写了一个可以直接读出角度并显示的程序,加深对磁编码器的理解:
#include "Wire.h"int _raw_ang_hi = 0x0c;
int _raw_ang_lo = 0x0d;
int _ams5600_Address = 0x36;
int ledtime = 0;void setup() {pinMode(13,OUTPUT);Serial.begin(115200);Wire.begin();Serial.println("AS5600 Ready!");delay(1000);
}void loop() {Serial.println(getRawAngle()*0.08789);LedBlink();delay(10);
}void LedBlink()
{ledtime++;if(ledtime<=50){ //间隔500ms闪烁digitalWrite(13,HIGH);}else {digitalWrite(13,LOW);if(ledtime>=100)ledtime=0;}
}word getRawAngle()
{return readTwoBytes(_raw_ang_hi, _raw_ang_lo);
}word readTwoBytes(int in_adr_hi, int in_adr_lo)
{word retVal = -1;/* Read Low Byte */Wire.beginTransmission(_ams5600_Address);Wire.write(in_adr_lo);Wire.endTransmission();Wire.requestFrom(_ams5600_Address, 1);while(Wire.available() == 0);int low = Wire.read();/* Read High Byte */ Wire.beginTransmission(_ams5600_Address);Wire.write(in_adr_hi);Wire.endTransmission();Wire.requestFrom(_ams5600_Address, 1);while(Wire.available() == 0);int high = Wire.read();retVal = (high << 8) | low;return retVal;
}
◆程序采用I2C接口与AS5600连接,读取原始角度,转换为0°—360°后显示,简单直观。
◆新建一个Arduino工程,将以上代码复制到工程中,验证无误后上传,
◆打开串口监视器,转动电机,可以看到角度在0°—360°之间变化。
(完)
欢迎加入simpleFOC技术交流群:923734429 群已满根据提示添加新群 (入群申请写:CSDN)
请继续阅读相关文章:
SimpleFOC(一)—— 简介(附有文件下载链接)
SimpleFOC(二)—— 快速入门 (开环控制)
SimpleFOC(四)—— 闭环控制
SimpleFOC(五)—— 双电机控制
SimpleFOC(六)—— PowerShield和AS5047P
SimpleFOC(七)——STM32(Bluepill)的应用
SimpleFOC(八)—— 理论+实践 深度分析SVPWM
SimpleFOC(九)—— 霍尔电机控制