梁工 发表于 2024-10-10 18:16:39

huatlwangl 发表于 2024-10-9 08:46
梁工好,您好,能麻烦您帮我看看嘛?我希望得到的是按下按键转一圈,转到一圈即使按着按键也不动了,松开按 ...

应该是按键重复执行了吧?按键使用下降沿、上升沿检测,就不会出现重复执行的情况。

huatlwangl 发表于 2024-10-15 11:00:49

梁工 发表于 2024-10-10 18:16
应该是按键重复执行了吧?按键使用下降沿、上升沿检测,就不会出现重复执行的情况。 ...

不是按键重复检测,更改了还是这样,并且我所希望得到的效果是:
1.按下正转按键,电机转动0-90度,释放按键电机回零位,达到90度即使按着按键仍然不转动。
2.现在的脉冲数是给定的,怎么实现呢。
梁工,方便加下我Q 1163676708

梁工 发表于 2024-10-15 11:05:50

huatlwangl 发表于 2024-10-15 11:00
不是按键重复检测,更改了还是这样,并且我所希望得到的效果是:
1.按下正转按键,电机转动0-90度,释放 ...

这个其实是非常简单的:
1、检测到按键按下(边沿检测),就给定90度对应的脉冲数和转向,启动电机即可。
2、检测到按键释放(边沿检测),就给定90度对应的脉冲数和转向(与上面相反),启动电机即可。
你出现重复启动,则必然是重复检测到启动条件,你的启动条件是按键按下,则就是重复检测到按键按下了。或者你可以仿真追踪一下,或者启动时串口发送一些信息指示一下。

huatlwangl 发表于 2024-10-15 11:07:36

梁工 发表于 2024-10-15 11:05
这个其实是非常简单的:
1、检测到按键按下(边沿检测),就给定90度对应的脉冲数和转向,启动电机即可。 ...

但是可能我在0-90度之间释放了按键呢,怎么给定回零脉冲

梁工 发表于 2024-10-15 11:59:13

huatlwangl 发表于 2024-10-15 11:07
但是可能我在0-90度之间释放了按键呢,怎么给定回零脉冲

根据当前转了多少脉冲,给定转回多少脉冲。步进电机控制是很简单的,没那么复杂,只要不失步,角度就是没有误差的。

huatlwangl 发表于 2024-10-15 17:30:28

梁工 发表于 2024-10-15 11:05
这个其实是非常简单的:
1、检测到按键按下(边沿检测),就给定90度对应的脉冲数和转向,启动电机即可。 ...

我试了,这样的操作后 比如我64细分,每次检测到正转按键标志位,赋值脉冲12800,会从在这样的现象:一直转动。因为我放在主程序中。每1Ms执行一次。这样就会及时脉冲数减到0,马上又会更新。

梁工 发表于 2024-10-15 17:36:42

huatlwangl 发表于 2024-10-15 17:30
我试了,这样的操作后 比如我64细分,每次检测到正转按键标志位,赋值脉冲12800,会从在这样的现象:一直 ...

还是你处理的问题,到位后,没有触发信号(按键),你居然自己又启动了,这就是你处理不当造成的。

huatlwangl 发表于 2024-10-15 22:15:48

梁工 发表于 2024-10-15 17:36
还是你处理的问题,到位后,没有触发信号(按键),你居然自己又启动了,这就是你处理不当造成的。 ...

梁工,这我不太明白,因为所需实现得功能按着按键,电机转动,转到到90度,不再转动,只要释放按键,电机就回零。
即使到位后,也没有触发信号(按键),您能给个思路吗?困扰太久了

huatlwangl 发表于 2024-10-16 09:15:07

huatlwangl 发表于 2024-10-15 22:15
梁工,这我不太明白,因为所需实现得功能按着按键,电机转动,转到到90度,不再转动,只要释放按键,电机 ...

我现在的思路是数脉冲,但是数的脉冲。怎么给呢,如果在释放按键后将数的的脉冲信号复制给总脉冲,那就会出现我上面叙述的不停下来的问题

梁工 发表于 2024-10-16 09:50:52

huatlwangl 发表于 2024-10-15 22:15
梁工,这我不太明白,因为所需实现得功能按着按键,电机转动,转到到90度,不再转动,只要释放按键,电机 ...

按键按下(边沿检测),检测到一次按下,就算你按季个小时,都是只检测到一次按下的动作,这是按键检测最基本的啊。

举个简单例子,按下键对一个变量+1(比如电子钟调整时间时),不管按下多久,都是+1,你试下实现这个功能,就能明白了。
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20
查看完整版本: 51开源,步进电机驱动 程序, 直接驱动, 或驱动步进电机驱动器 一共8个程序