伊小于 发表于 2024-2-20 09:51 http://www.51hei.com/bbs/dpj-36467-1.html |
大佬,就是两个霍尔采集电机的正反转方向的问题,我用外部中断采集状态发现会掉状态,我想请教下你是如何实现的 |
理论上出现 11 01 00 10 11是可以的 实际中可以出现 11 10 00 10 11或11 01 11 10 11就不行 |
两个霍尔装在一起,一个磁铁来触发,形成正交方式信号,很容易判断方向 |
学到了 确实和编码器的电平读取有点像 |
很简单,以11为标准,当检测到11时开始计时,看看哪个霍尔先变0,电机的方向就是从先变0霍尔到后变0霍尔。 |
如果磁铁大小合适,让两个霍尔形成正交编码器,那么以任意一个霍尔作为基准,就叫A吧,当A翻转的时候检查B的状态,如果是高就是正转,如果B为低则为反转,and vice versa. |
保证任何方向两个霍尔先后触发的情况下,可参考EC11编码器的识别方法。 |
daemondong 发表于 2022-7-4 09:54 代码少了一段
|
你这个就是编码器,可以参考ec11的代码。
http://www.51hei.com/bbs/dpj-221719-1.html EC11增量型脉冲数字电位器单片机驱动程序 |
本帖最后由 daemondong 于 2022-7-4 09:57 编辑 直接上代码,希望你能看明白。
|
你可以用一个定时中断。 这个定时的时长保证, 每次中断时间内, 霍尔不可能发生两次变化。也就是最高转速下 霍尔也不可能在一个定时周期内发生两次变化。 这样读前后的两个霍尔电平 判断顺序就可以知道正反转了。 |
本帖最后由 pcbboy 于 2022-7-4 10:14 编辑 某个中断触发后标志位先=1,触发时间在前面的是一个方向,触发时间在后面的是一另个方向, |
Hephaestus 发表于 2022-7-4 06:08 主要是我的磁铁不是匀速转动,所以时间差对我来说有点困难 |
一个霍尔翻转时间是一圈时间,两个霍尔翻转时间差小和大表示正转反转。 |