用单片机如何实现不同的频率控制3个步进电机同时转动?

[复制链接]
11898|41
 楼主| ctstt 发表于 2011-4-14 22:26 | 显示全部楼层 |阅读模式
如何实现输出3路不同的频率控制3个步进电机同时转动。原来时计划用3个定时器 改变定时器的计数初值来控制,但是实践发现,当频率高时候,3个同时工作就会一直跳中断,不能并行工作,那位大侠来帮忙支招一下!先谢过了!
 楼主| ctstt 发表于 2011-4-14 22:32 | 显示全部楼层
我准备用T0. T1,PCA各控制一路频率,但是频率太高的时候 程序就一直在跳中断,主程序无法进行处理,进来的给点建议吧 !
 楼主| ctstt 发表于 2011-4-15 08:49 | 显示全部楼层
有人知道怎么搞吗?
木字四点水 发表于 2011-4-15 08:50 | 显示全部楼层
一个定时器不就可以了么.....
john_light 发表于 2011-4-15 09:13 | 显示全部楼层
多高的频率?
joyme 发表于 2011-4-15 09:15 | 显示全部楼层
同意LS的,用一个定时器做时基控制三个IO口打出不通频率的方波即可
yangyicheng 发表于 2011-4-15 09:19 | 显示全部楼层
看你的电机转动的频率多快,可以用一个快频率分频慢频率!用一个Timer
 楼主| ctstt 发表于 2011-4-15 10:09 | 显示全部楼层
4# 木字四点水
那如何实现3个脉冲信号不会相互影响?如果要只是开一个,开两个的情况怎么处理?
 楼主| ctstt 发表于 2011-4-15 10:10 | 显示全部楼层
5# john_light

60K-100K左右吧,现在用STC的1T模式!
 楼主| ctstt 发表于 2011-4-15 10:12 | 显示全部楼层
6# joyme
我也想过这样,但是如何实现3个脉冲信号不会相互影响?这么没有想明白,给点意见吧 ,先谢谢了
 楼主| ctstt 发表于 2011-4-15 10:14 | 显示全部楼层
7# yangyicheng
快频率分频慢频率?具体怎么做呢  不是很明白 ,
joyme 发表于 2011-4-15 10:20 | 显示全部楼层
countbase++
if(countbase % PWM1Width == 0)
        PWM1_IO = !PWM1_IO;
if(countbase % PWM2Width == 0)
         PWM2_IO = !PWM2_IO;
if(countbase % PWM3Width == 0)
         PWM3_IO = !PWM3_IO;
if(countbase  == (PWM1Width * PWM2Width *PWM3Width ))
         countbase  = 0;
这个是大概的思路,基于50%占空比的三路PWM输出,你可以根据你的要求改动程序实现你要的功能
joyme 发表于 2011-4-15 10:24 | 显示全部楼层
600K的频率用单片机实现估计够呛,100k的频率需要考虑指令的精简性了,10us能执行多少个指令是需要考虑进去的,如果中断频率太高的话,你主程序的其他处理将会受到影响,所以需要实际情况实际分析
 楼主| ctstt 发表于 2011-4-15 10:31 | 显示全部楼层
12# joyme
有点头绪了,呵呵,用的是定时器的计数模式吧!我修改程序试试看!
joyme 发表于 2011-4-15 10:42 | 显示全部楼层
如果要占空比变化更灵活的话,用三个不通的计数变量会更容易实现
coody 发表于 2011-4-15 11:53 | 显示全部楼层
用PCA做有4路驱动,最高40KHZ,4路独立。
coody 发表于 2011-4-15 11:57 | 显示全部楼层
另外,软件模拟DDS也可以做多路,但是频率不能太高,好处是可以1HZ步进,程序简单。做过4路,最高8KHZ,1HZ步进
heykay 发表于 2011-4-15 13:59 | 显示全部楼层
买3个日本的二手驱动器用io口给脉冲就行了撒
sxhhhjicbb 发表于 2011-4-15 18:57 | 显示全部楼层
100K是单片机处理的最高值了,如果还有精度的话,得用FPGA了.
icecut 发表于 2011-4-15 19:12 | 显示全部楼层
硬件pwm的单片机
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

43

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部