牧夫天文网

 找回密码
 加入牧夫(请注明天文爱好者,否则无法通过审核)

QQ登录

只需一步,快速开始

[自制DIY] 51单片机驱动步进电机设计

[复制链接]
tbb1 发表于 2013-4-1 21:54 | 显示全部楼层 |阅读模式 来自: 上海市长宁区 /普陀区电信

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?加入牧夫(请注明天文爱好者,否则无法通过审核)

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

模式:1、电跟模式MOSHI=1,DIANGEN2、自由控制模式MOSHI=2,ZY
关键字定义:速度SUDU,方向FX1=逆时针,0=顺时针),模式MOSHI,启动QIDONG(1=启动,0=停止)
自由模式ZY20X电跟速度,10X电跟速度,5X电跟速度三档。控制键:1、启动/停止(II;2、速度增加(VOL+)3、速度减小(VOL-) 4、前进( ► ►,逆时针);5、后退( ◄ ◄,顺时针)
跟模式DIANGEN:单倍电跟,加速,减速。控制键:1、启动/停止(II2、倒退( ◄◄,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用的是什么电机??

点评

二手的,尺寸是42,但是应该内置了减速齿轮箱,因为他的步进角只有0.25度  详情 回复 发表于 2013-4-1 22:09
回复 支持 反对

使用道具 举报

 楼主| tbb1 发表于 2013-4-1 22:08 | 显示全部楼层 来自: 上海市长宁区 /普陀区电信
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进电机的脉冲周期。
单片机似乎不具备windows一样的多任务处理能力,那么如何精确判断脉冲周期呢?

点评

建议楼主用液晶屏幕不要用数码管… 至于你所说的影响问题,这是不存在的…步进电机用定时器即可,显示不需要…  详情 回复 发表于 2013-4-2 13:29
这东西肯动要用时钟中断啦,不然程序一大就歇菜了。  详情 回复 发表于 2013-4-2 09:26
最好的办法是使用硬件PWM,有的51比如STC的有,但STC的硬件PWM无法完全不需要软件干预的任意分频,所以还是需要使用定时器中断去做。其他单片机比如STM8S系列有高级定时器,很方便。 另外,单片机是可以用专用的操  详情 回复 发表于 2013-4-1 23:12
用中断??  详情 回复 发表于 2013-4-1 22:12
回复 支持 反对

使用道具 举报

 楼主| tbb1 发表于 2013-4-1 22:09 | 显示全部楼层 来自: 上海市长宁区 /普陀区电信
回复 支持 反对

使用道具 举报

CLEO 发表于 2013-4-1 22:12 | 显示全部楼层 来自: 广东省珠海市 电信
tbb1 发表于 2013-4-1 22:08
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进 ...

用中断??
回复 支持 反对

使用道具 举报

a125278748 发表于 2013-4-1 22:27 | 显示全部楼层 来自: 广东省 电信
学习……
回复 支持 反对

使用道具 举报

maxchen 发表于 2013-4-1 23:12 | 显示全部楼层 来自: 广东省佛山市 电信
tbb1 发表于 2013-4-1 22:08
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进 ...

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

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

点评

提示下,驱动步进电机呢,是脉冲调制器件,不是脉宽!!!!!不需要pwm!  详情 回复 发表于 2013-4-2 13:25
这东西跑操作系统就夸张啦。操作系统对于51开销太大。  详情 回复 发表于 2013-4-2 09:28
回复 支持 反对

使用道具 举报

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
这东西肯动要用时钟中断啦,不然程序一大就歇菜了。

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

点评

经典51是12个时钟周期一个机械周期。就算你时钟频率12M每个机械周期为1微秒。6.5毫秒足够你跑6500个单周期指令,你怕什么? 相反用空循环是最消耗资源的。 建议LZ找一些经典的单片机程序研读一下,高手编程一般都把  详情 回复 发表于 2013-4-2 12:31
回复 支持 反对

使用道具 举报

redpony 发表于 2013-4-2 12:31 | 显示全部楼层 来自: 北京市 网联光通
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

天籁 发表于 2013-4-2 13:25 来自手机 | 显示全部楼层 来自: 广东省 电信
maxchen 发表于 2013-4-1 23:12
最好的办法是使用硬件PWM,有的51比如STC的有,但STC的硬件PWM无法完全不需要软件干预的任意分频,所以还 ...

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

点评

,不要那么死脑筋嘛,用硬件PWM来产生连续的脉冲信号来驱动步进电机,这样设置好后就完全不需要软件干预了,你软件要跑OS,要在数码管或者LCD上显示啥都不影响硬件PWM输出信号的频率。至于占空比,你设  详情 回复 发表于 2013-4-2 16:51
回复 支持 反对

使用道具 举报

天籁 发表于 2013-4-2 13:29 来自手机 | 显示全部楼层 来自: 广东省 电信
tbb1 发表于 2013-4-1 22:08
有个问题:为了显示,程序必须调用显示程序,使用循环逐位数码管显示的方法显示,这就势必会影响输出给步进 ...

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

点评

显示是一定需要的,因为有多种模式,并且基础速率因为极轴不够精准、程序运行误差之类的原因,是需要调整的 液晶也在考虑中,先整数码管,这货简单。 就定了用定时器中断整脉冲输出  详情 回复 发表于 2013-4-2 15:11
回复 支持 反对

使用道具 举报

 楼主| tbb1 发表于 2013-4-2 15:11 | 显示全部楼层 来自: 上海市 东方有线
天籁 发表于 2013-4-2 13:29
建议楼主用液晶屏幕不要用数码管…
至于你所说的影响问题,这是不存在的…步进电机用定时器即可,显示不 ...

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

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

点评

1602相当简单了~8080接口,指令很少的…  详情 回复 发表于 2013-4-2 19:16
回复 支持 反对

使用道具 举报

maxchen 发表于 2013-4-2 16:51 | 显示全部楼层 来自: 广东省广州市 电信
天籁 发表于 2013-4-2 13:25
提示下,驱动步进电机呢,是脉冲调制器件,不是脉宽!!!!!不需要pwm! ...

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

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

点评

嗯,这也没错~stm32的我有做,不过是用定时器的…硬件部分可以打样也可以自己做做看…这东西,不难也不简单…  详情 回复 发表于 2013-4-2 19:15
回复 支持 反对

使用道具 举报

天籁 发表于 2013-4-2 19:15 来自手机 | 显示全部楼层 来自: 广东省 电信
maxchen 发表于 2013-4-2 16:51
,不要那么死脑筋嘛,用硬件PWM来产生连续的脉冲信号来驱动步进电机,这样设置好后就完全不 ...

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

点评

我指的就是定时器的PWM模式,不是专门硬件  详情 回复 发表于 2013-4-3 09:11
回复 支持 反对

使用道具 举报

天籁 发表于 2013-4-2 19:16 来自手机 | 显示全部楼层 来自: 广东省 电信
tbb1 发表于 2013-4-2 15:11
显示是一定需要的,因为有多种模式,并且基础速率因为极轴不够精准、程序运行误差之类的原因,是需要调整 ...

1602相当简单了~8080接口,指令很少的…
回复 支持 反对

使用道具 举报

maxchen 发表于 2013-4-3 09:11 | 显示全部楼层 来自: 广东省广州市 电信
天籁 发表于 2013-4-2 19:15
嗯,这也没错~stm32的我有做,不过是用定时器的…硬件部分可以打样也可以自己做做看…这东西,不难也不 ...

我指的就是定时器的PWM模式,不是专门硬件

点评

我的意思是STM32硬件,那是LQFP封装。 你可以看看我的 实时星图 帖子。就是用STM32  详情 回复 发表于 2013-4-3 22:39
回复 支持 反对

使用道具 举报

本版积分规则

快速回复 返回顶部 返回列表