求解:直流电机编码输出转换成速度的计算问题??
大功率,库函数版。程序中有些地方不太理解。Encoder_Left=-Read_Encoder(2);
Encoder_Right=Read_Encoder(4);
这两句程序得到了编码器的输出波形个数之后。是如何计算得到速度的??
软件编码采用4倍频技术,得到的波形个数需要除以4吗?
app_3=Encoder_Right*1.1; if(app_3<0)app_3=-app_3;
app_2=Encoder_Left*1.1;if(app_2<0)app_2=-app_2;
发送到APP的显示的数据,直接发Encoder_Right*1.1,Encoder_Left*1.1,不会很大吗???
显示范围不是0-100?
看了好久的程序。没有发现程序在哪里进行过处理。。。。求解!求解!
Read_Encoder函数里面有清零操作,而且是单位时间读取的,所以,这也就是M法测速哈。STM32是硬件计数的,在配置编码器接口的时候使用编码器模式3即可。速度值最大是80多,乘以1.1,正好对应0~100%的码盘。
admin 发表于 2017-3-28 23:22
Read_Encoder函数里面有清零操作,而且是单位时间读取的,所以,这也就是M法测速哈。STM32是硬件计数的,在 ...
M测速测的只是电机的转速吗?对M法测速不是很了解,不知道怎么算。可以分享一些M法测速的学习资料吗???
另外还一个问题,外部int EXTI9_5_IRQHandler(void) 中断函数里面,
Flag_Target=!Flag_Target;
if(Flag_Target==1) //5ms读取一次陀螺仪和加速度计的值,更高的采样频率可以改善卡尔曼滤波和互补滤波的效果
}//10ms控制一次,为了保证M法测速的时间基准,首先读取编码器数据
Encoder_Left=-Read_Encoder(2); //===读取编码器的值,因为两个电机的旋转了180度的,所以对其中一个取反,保证输出极性一致
Encoder_Right=Read_Encoder(4); //===读取编码器的值
我怎么觉得应该是10ms读取一次陀螺仪和加速度计的值,5ms读取一次编码器数据呢,跟注释不一样。
求指导!!!求指导!!!求指导!!!
admin 发表于 2017-3-28 23:22
Read_Encoder函数里面有清零操作,而且是单位时间读取的,所以,这也就是M法测速哈。STM32是硬件计数的,在 ...
你好,如果只是一个相位输出要怎么测速,编码器如何配置呢?谢谢 QiuDong 发表于 2017-3-29 13:56
M测速测的只是电机的转速吗?对M法测速不是很了解,不知道怎么算。可以分享一些M法测速的学习资料吗?? ...
注释没问题的, cxc 发表于 2017-4-13 23:27
你好,如果只是一个相位输出要怎么测速,编码器如何配置呢?谢谢
通过定时器测量方波的脉冲即可 admin 发表于 2017-4-14 12:47
注释没问题的,
你好,我也觉得注释有问题呢,程序中是5ms读取电机编码器的值,10ms读取mpu6050的值。Flag_Target=!Flag_Target;
if(Flag_Target==1)
{
Get_Angle(); //===更新姿态
return 0;
} admin 发表于 2017-4-14 12:47
注释没问题的,
你好,我也觉得注释有问题呢,程序中是每5ms读取电机编码器的值,10ms读取mpu6050的值。Flag_Target=!Flag_Target;
if(Flag_Target==1)
{
Get_Angle(); //===更新姿态
return 0;
}
这段程序不就是每两次中断10ms跟新一次姿态吗? 魂萦xy 发表于 2017-4-19 22:59
你好,我也觉得注释有问题呢,程序中是每5ms读取电机编码器的值,10ms读取mpu6050的值。Flag_Target=!Fla ...
抱歉,看错了,我明白了,没看到return 0; 魂萦xy 发表于 2017-4-19 23:03
抱歉,看错了,我明白了,没看到return 0;
这里我没明白为什么是10ms读取一次编码器的值,return 0是如何理解的
页:
[1]
2