yuanshi3 发表于 2009-4-1 16:27:01

用Megal6 PWM口即PD4或者PD5能控制步进电机吗?

PWM的定义是脉宽一定 占空比可调 这样是不是不能控制步进电机啊 不行的话 是不是随便接个IO口就可以了 哪位有驱动程序吗?C语言的。

jiangtao 发表于 2009-4-1 16:43:41

肯定可以啦!我以前用32控制伺服电机,脉冲方式,与控制步进电机一样的,我记得是CTC模式,OC1A(PD5)输出;随便接个IO口恐怕忙不过来。
不过要注意:
1. 加上加减速限制,否则会失步的。
2. 转速控制可以不管脉冲计数,位置方式必须有计数反馈。
程序需要你自己编了,没有现成正好适合你需要的。

ada1983 发表于 2009-4-1 16:53:43

【1楼】 jiangtao

是江淘么?

jiangtao 发表于 2009-4-1 17:02:48

jiangtao-pre@163.com

jiangtao 发表于 2009-4-1 17:04:09

【2楼】 ada1983
您是哪位?

yuanshi3 发表于 2009-4-1 17:21:20

【1楼】 jiangtao
我想用MEGA16给出脉冲信号和方向信号到驱动器。
脉冲信号:下降沿驱动电机运行一步,脉冲低电平大于10us,f=70Hz。有效脉冲个数=200*37(我这是没有按照细分算的,2细分或者8细分后个数就分别是200*2*37和200*8*37了)——PD4输出脉冲信号;
方向信号:高低电平,领先脉冲信号10us——PC0输出高低电平。
同时怎么实现升减速的突变频率与两端限位的程序。
我怎么实现上面的程序啊,能写个简单的指点下吗?我程序可是不太会啊!

jiangtao 发表于 2009-4-1 17:41:46

频率输出控制:改变OCR参数;
加减速控制:另开一个时间中断控制频率增量(减量),以及两端限位。

yuanshi3 发表于 2009-4-1 17:48:55

IO口出电平时,开定时器一的中断--方向信号;
这时,它就开始计时,到10US时,开计时器2中断----脉冲信号
2就开始工作
不断中断,发出脉冲波。是这样吗?
限位还是没有明白怎么和单片机的IO口通信。

jiangtao 发表于 2009-4-1 18:01:21

限位可以考虑脉冲引回外部中断计数。
因为用的中断比较多,要分配好资源。
我先前做的主要方面是速度控制,位置控制要求不很精确,所以限位部分有待验证。

yuanshi3 发表于 2009-4-1 18:14:13

【8楼】 jiangtao
要不先参考下你之前已经调出的速度与方向控制的程序 我再考虑限位的问题 等我弄好后一起学习
我的邮箱:qiangshou302@163.com

jiangtao 发表于 2009-4-2 09:09:26

程序不看也罢,一年多以前写的,hex都有30K多,我自己现在看来都头大,整个项目还包括其他方面的控制。另外还有一些商业机密的限制,希望理解。
我想按照上面思路去做应该可以的,建议按以下步骤编写程序模块调试:
1. CTC模式脉冲输出,为避免失步影响,先做较低频率。
2. 方向控制——很简单的。
3. 外部控制频率变化,可采用按键触发加、减。
4. 频率变化限制,即加减速控制。
5. 脉冲反馈控制。
6. 梯形/三角形算法。

cbcb128 发表于 2009-4-2 09:39:19

步进电机控制,C语言的忙不过来吧.单步总有40-50US吧?

yuanshi3 发表于 2009-4-2 11:24:13

谢谢jiangtao,我只编到你说的第二步

yuanshi3 发表于 2009-4-2 11:25:23

回复cbcb128 C语言是可以的 就是加减速的算法不太好实现

jiangtao 发表于 2009-4-2 17:24:05

加减速算法思路:
核心:通过改变OCR寄存器值改变输出频率。
主程序或控制程序设置目标频率值;
另开一个时间中断,每次中断按照加减速率增加或减少当前频率值,直到目标值。

aohuahua 发表于 2009-8-31 10:04:02

mark

16ysa 发表于 2009-9-2 08:52:51

mark

sailfish 发表于 2010-5-2 12:35:05

mark

yangbing2020 发表于 2013-10-3 21:36:02

MARK{:handshake:}

mk_avatar 发表于 2013-10-4 14:40:29

这个控制的问题 还有这么讲究么
页: [1]
查看完整版本: 用Megal6 PWM口即PD4或者PD5能控制步进电机吗?