请选择 进入手机版 | 继续访问电脑版

搜索
查看: 3532|回复: 10

求解:直流电机编码输出转换成速度的计算问题??

[复制链接]

1

主题

2

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2017-3-28 22:27:17 | 显示全部楼层 |阅读模式
大功率,库函数版。程序中有些地方不太理解。

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?

看了好久的程序。没有发现程序在哪里进行过处理。。。。求解!求解!

回复

使用道具 举报

1

主题

195

帖子

697

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
697
发表于 2017-3-28 23:22:22 | 显示全部楼层
Read_Encoder函数里面有清零操作,而且是单位时间读取的,所以,这也就是M法测速哈。STM32是硬件计数的,在配置编码器接口的时候使用编码器模式3即可。速度值最大是80多,乘以1.1,正好对应0~100%的码盘。


回复

使用道具 举报

1

主题

2

帖子

21

积分

新手上路

Rank: 1

积分
21
 楼主| 发表于 2017-3-29 13:56:27 | 显示全部楼层
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读取一次编码器数据呢,跟注释不一样。


求指导!!!求指导!!!求指导!!!
回复

使用道具 举报

3

主题

7

帖子

39

积分

新手上路

Rank: 1

积分
39
发表于 2017-4-13 23:27:53 | 显示全部楼层
admin 发表于 2017-3-28 23:22
Read_Encoder函数里面有清零操作,而且是单位时间读取的,所以,这也就是M法测速哈。STM32是硬件计数的,在 ...

你好,如果只是一个相位输出要怎么测速,编码器如何配置呢?谢谢
回复

使用道具 举报

1

主题

195

帖子

697

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
697
发表于 2017-4-14 12:47:46 | 显示全部楼层
QiuDong 发表于 2017-3-29 13:56
M测速测的只是电机的转速吗?对M法测速不是很了解,不知道怎么算。可以分享一些M法测速的学习资料吗?? ...

注释没问题的,
回复

使用道具 举报

1

主题

195

帖子

697

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
697
发表于 2017-4-14 12:48:07 | 显示全部楼层
cxc 发表于 2017-4-13 23:27
你好,如果只是一个相位输出要怎么测速,编码器如何配置呢?谢谢

通过定时器测量方波的脉冲即可
回复

使用道具 举报

1

主题

11

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2017-4-19 22:57:54 | 显示全部楼层
admin 发表于 2017-4-14 12:47
注释没问题的,

你好,我也觉得注释有问题呢,程序中是5ms读取电机编码器的值,10ms读取mpu6050的值。Flag_Target=!Flag_Target;
     if(Flag_Target==1)                                            
                {
                        Get_Angle();                                                        //===更新姿态       
                        return 0;                                                       
                }   
回复

使用道具 举报

1

主题

11

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2017-4-19 22:59:02 | 显示全部楼层
admin 发表于 2017-4-14 12:47
注释没问题的,

你好,我也觉得注释有问题呢,程序中是每5ms读取电机编码器的值,10ms读取mpu6050的值。Flag_Target=!Flag_Target;
     if(Flag_Target==1)                                            
                {
                        Get_Angle();                                                        //===更新姿态       
                        return 0;                                                       
                }   
这段程序不就是每两次中断10ms跟新一次姿态吗?
回复

使用道具 举报

1

主题

11

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2017-4-19 23:03:50 | 显示全部楼层
魂萦xy 发表于 2017-4-19 22:59
你好,我也觉得注释有问题呢,程序中是每5ms读取电机编码器的值,10ms读取mpu6050的值。Flag_Target=!Fla ...

抱歉,看错了,我明白了,没看到return 0;
回复

使用道具 举报

2

主题

3

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2018-5-17 14:35:35 | 显示全部楼层
魂萦xy 发表于 2017-4-19 23:03
抱歉,看错了,我明白了,没看到return 0;

这里我没明白为什么是10ms读取一次编码器的值,return 0是如何理解的
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|平衡小车之家  

GMT+8, 2019-7-18 11:13 , Processed in 0.096217 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表