本文主要是介绍SimpleFOC 取消上电自检方法,也就是不需要每次上电都让无刷电机转一整圈进行校准,避免电机和传感器对准程序,TLE5012B编码器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SimpleFOC 取消上电自检方法,也就是不需要每次上电都让电机转一整圈进行校准,避免电机和传感器对准程序
首先第一步:运行SimpleFOC中的示例代码进行零点标定
第二步:得出运行结果
第三步:复制粘贴运行结果
Sensor zero offset is:
0.0000
Sensor natural direction is:
Direction::CCW
To use these values provide them to the: motor.initFOC(offset, direction)
If motor is not moving the alignment procedure was not successfull!!
其中的0.0000 Direction::CCW
粘贴至motor.initFOC(0.0000, Direction::CCW);
然后运行你的程序,即可避免避免电机和传感器对准程序
这个避免上电校准的方法仅仅适合于绝对值编码器,增量式编码器应该不适用,不过可以试试
我起先寻找这个方法主要是由于机械限位所以不允许上电自校转一圈,查看了SimpleFOC库中的BLDCMotor.cpp如下:
/**FOC functions
*/
// FOC initialization function
int BLDCMotor::initFOC( float zero_electric_offset, Direction sensor_direction ) {int exit_flag = 1;// align motor if necessary// alignment necessary for encoders!if(zero_electric_offset != NOT_SET){// abosolute zero offset provided - no need to alignzero_electric_angle = zero_electric_offset;// set the sensor direction - default CWsensor->natural_direction = sensor_direction;}else{// sensor and motor alignment_delay(500);exit_flag = alignSensor();_delay(500);}if(monitor_port) monitor_port->println("MOT: Motor ready.");return exit_flag;
}
发现确实是可以传值进去的,我使用的是TLE5012B编码器,这个精度很高了,但是有钱建议上AMT103-V电容式增量式值编码器,抗干扰,比笔者用的这种磁编码器好很多,或者式AMT203绝对值编码器
这篇关于SimpleFOC 取消上电自检方法,也就是不需要每次上电都让无刷电机转一整圈进行校准,避免电机和传感器对准程序,TLE5012B编码器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!