论坛元老
 
- 积分
- 6662
- 金钱
- 6662
- 注册时间
- 2016-5-29
- 在线时间
- 910 小时
|
100金钱
最近研究了一下单轴云台. 用的是两个线性霍尔传感器 互为 90度 放置.以返回马达的角度位置.
使用的公式 是 ATAN2,在传感器贴片时,由于结构上的偏差,导致工作不正常.无法正常返回正确的位置.
如果物理上放置位置是对的情况,各功能可以正常工作.有没有软件可以纠正这个偏差.有经验的朋友可以指点一下吗?
使用数据前,有用到求取平均值的方法,简单的滤波.
算法如下:
void Task_Get_Motor_Pos_Info(void)
{
ADCdataAnorm = (ADCConvertedValue.hall_x -eeprom.hall_min[0])/eeprom.hall_adc_mid[0] - 1;
ADCdataBnorm = (ADCConvertedValue.hall_y -eeprom.hall_min[1])/eeprom.hall_adc_mid[1] - 1;
if(ADCdataAnorm > 1)
{
ADCdataAnorm = 1;
}
else
if(ADCdataAnorm < -1)
{
ADCdataAnorm = -1;
}
if(ADCdataBnorm > 1)
{
ADCdataBnorm = 1;
}
else
if(ADCdataBnorm < -1)
{
ADCdataBnorm = -1;
}
ADC_Angle = atan2(ADCdataBnorm,ADCdataAnorm)*180.0/PI;
ADC_Angle += 180;
ADC_Angle = 65535.0 - ADC_Angle *( 65535.0/360.0);
motor_pos = ADC_Angle ;
}
|
|