tbb1 发表于 2013-4-1 21:54

51单片机驱动步进电机设计

开始编程,先上个逻辑设计,有经验没经验的大伙多指教:

•模式:1、电跟模式MOSHI=1,DIANGEN;2、自由控制模式MOSHI=2,ZY
•关键字定义:速度SUDU,方向FX(1=逆时针,0=顺时针),模式MOSHI,启动QIDONG(1=启动,0=停止)
•自由模式ZY:20X电跟速度,10X电跟速度,5X电跟速度三档。控制键:1、启动/停止(►II);2、速度增加(VOL+);3、速度减小(VOL-) ;4、前进( ► ►,逆时针);5、后退( ◄ ◄,顺时针)
•电跟模式DIANGEN:单倍电跟,加速,减速。控制键:1、启动/停止(►II);2、倒退( ◄◄,5X速度,顺时针,按下键后倒退,松开键后恢复此前电跟速度);3、快进(► ►,5X速度,松开后恢复此前速度);4、基础速度加速(VOL+);5、基础速度减速(VOL-)
•显示:1、模式;2、方向;3、目前速度;4、电跟基础速度
•GOTO补充显示:1、当前赤经角;2、当前赤纬角;3、目标赤经角;4、目标赤纬角

tbb1 发表于 2013-4-1 21:55

电跟模式:

基础速度:SUDU=50,10分钟/转。基础速度增加或降低时,循环语句的变量减少或增加

CLEO 发表于 2013-4-1 22:05

顶!!!我就想看这个,关注!!!LZ用的是什么电机??

tbb1 发表于 2013-4-1 22:08

有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进电机的脉冲周期。
单片机似乎不具备windows一样的多任务处理能力,那么如何精确判断脉冲周期呢?

tbb1 发表于 2013-4-1 22:09

CLEO 发表于 2013-4-1 22:05 static/image/common/back.gif
顶!!!我就想看这个,关注!!!LZ用的是什么电机??

二手的,尺寸是42,但是应该内置了减速齿轮箱,因为他的步进角只有0.25度

CLEO 发表于 2013-4-1 22:12

tbb1 发表于 2013-4-1 22:08 static/image/common/back.gif
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进 ...

用中断??

a125278748 发表于 2013-4-1 22:27

学习……

maxchen 发表于 2013-4-1 23:12

tbb1 发表于 2013-4-1 22:08 static/image/common/back.gif
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进 ...

最好的办法是使用硬件PWM,有的51比如STC的有,但STC的硬件PWM无法完全不需要软件干预的任意分频,所以还是需要使用定时器中断去做。其他单片机比如STM8S系列有高级定时器,很方便。

另外,单片机是可以用专用的操作系统的。可以实现宏观上的多线程,但微观上还是需要线程间让出MCU的使用权,所以微观也是串行执行任务。

kingkey 发表于 2013-4-1 23:54

学习 帮顶!

redpony 发表于 2013-4-2 09:26

redpony 发表于 2013-4-2 09:28

tbb1 发表于 2013-4-2 10:12

redpony 发表于 2013-4-2 09:26 static/image/common/back.gif
这东西肯动要用时钟中断啦,不然程序一大就歇菜了。

我现在没想明白,是用空循环延时输出脉冲呢,还是用定时器中断来输出脉冲?
我用的1/64细分驱动板,每步0.25度,每个脉冲只走0.25/64度
1X速度下,每10分钟转1圈,转1圈需要360/0.25*64=92160个脉冲,每个脉冲周期为10*60/92160=0.00651秒,就是6.51毫秒
这么短的周期,用定时器中断产生脉冲会不会也同样大量消耗单片机资源?

redpony 发表于 2013-4-2 12:31

天籁 发表于 2013-4-2 13:25

maxchen 发表于 2013-4-1 23:12
最好的办法是使用硬件PWM,有的51比如STC的有,但STC的硬件PWM无法完全不需要软件干预的任意分频,所以还 ...

提示下,驱动步进电机呢,是脉冲调制器件,不是脉宽!!!!!不需要pwm!

天籁 发表于 2013-4-2 13:29

tbb1 发表于 2013-4-1 22:08
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进 ...

建议楼主用液晶屏幕不要用数码管…
至于你所说的影响问题,这是不存在的…步进电机用定时器即可,显示不需要…

tbb1 发表于 2013-4-2 15:11

天籁 发表于 2013-4-2 13:29 static/image/common/back.gif
建议楼主用液晶屏幕不要用数码管…
至于你所说的影响问题,这是不存在的…步进电机用定时器即可,显示不 ...

显示是一定需要的,因为有多种模式,并且基础速率因为极轴不够精准、程序运行误差之类的原因,是需要调整的
液晶也在考虑中,先整数码管,这货简单。

就定了用定时器中断整脉冲输出

maxchen 发表于 2013-4-2 16:51

天籁 发表于 2013-4-2 13:25 static/image/common/back.gif
提示下,驱动步进电机呢,是脉冲调制器件,不是脉宽!!!!!不需要pwm! ...

{:soso_e127:},不要那么死脑筋嘛,用硬件PWM来产生连续的脉冲信号来驱动步进电机,这样设置好后就完全不需要软件干预了,你软件要跑OS,要在数码管或者LCD上显示啥都不影响硬件PWM输出信号的频率。至于占空比,你设置成50%不就完了。唉

请参考STM32或者STM8 datasheet关于TIM的说明

天籁 发表于 2013-4-2 19:15

maxchen 发表于 2013-4-2 16:51
,不要那么死脑筋嘛,用硬件PWM来产生连续的脉冲信号来驱动步进电机,这样设置好后就完全不 ...

嗯,这也没错~stm32的我有做,不过是用定时器的…硬件部分可以打样也可以自己做做看…这东西,不难也不简单…

天籁 发表于 2013-4-2 19:16

tbb1 发表于 2013-4-2 15:11
显示是一定需要的,因为有多种模式,并且基础速率因为极轴不够精准、程序运行误差之类的原因,是需要调整 ...

1602相当简单了~8080接口,指令很少的…

maxchen 发表于 2013-4-3 09:11

天籁 发表于 2013-4-2 19:15 static/image/common/back.gif
嗯,这也没错~stm32的我有做,不过是用定时器的…硬件部分可以打样也可以自己做做看…这东西,不难也不 ...

我指的就是定时器的PWM模式,不是专门硬件
页: [1] 2
查看完整版本: 51单片机驱动步进电机设计