打印

【求助】用硬件法实现步进电机的速度控制

[复制链接]
4426|34
手机看帖
扫描二维码
随时随地手机跟帖
沙发
lqfy|  楼主 | 2013-1-10 17:03 | 只看该作者
通过控制脉冲输出间隔时间来控制步进电机的转速,但不知道程序怎么写。我的思路是先把步进电机每一个转速运行的时间求出来,求解如下:
1.步进电机型号为28BYJ-48,步距角为5.625°,及电机转一圈所需的脉冲为数位360/5.625=64条。设转速为N(r/min)那么每分钟送的脉冲数据个数为64N,即每送一个脉冲数据时间为T。
T = 1/64N = 60*1000000/64N = 9735000/N(微秒)
2. T0定时的计数初值为Tx = 65536 - 11.05926*T/12 = 65536-864000/N。即当初始速度为20,那么计数初值为N = 20时Tx = 20864(十进制)= 5180(十六进制),即当转速为20r/min时TH0 = 0x51,TL0 = 0x80。如此计算可以得出其他转速的计数初值。
3.现在问各位如何用定时器写程序让步进电机输出20~100的转速,要求转速之间间隔时间30秒。

使用特权

评论回复
板凳
qin552011373| | 2013-1-10 17:32 | 只看该作者
你先按你的思路写一下  调试出问题再问  直接伸手要程序  很少有会直接帮你写  

使用特权

评论回复
地板
airwill| | 2013-1-10 17:41 | 只看该作者
既然定时中断的周期已经算好了.
那就设定定时器吧, 在定时中断服务里发脉冲(完成一次上升沿和下降沿), 并同时计数.
这个程序, 应该是很简单的事情了.

使用特权

评论回复
5
zhangmangui| | 2013-1-10 17:44 | 只看该作者
我是这样认为的,你的这个要求可以用步进电机的驱动器解决,关于步进电机的速度控制是通过送入驱动器的脉冲个数的频率控制的,而转动的角度是通过脉冲个数决定的,脉冲个数就可以通过驱动里面通过数码管显示出来,关于步进的度数你就可以通过送入的脉冲个数和步矩角计算得到,这样完全就可以通过硬件搞定。不知是否满足你

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
lqfy + 1 赞一个!
6
gaoyang9992006| | 2013-1-10 18:22 | 只看该作者
步进电机有两种状态步进和停止,然后转动多少步,每次转动后停留多久,就是步进的速度调整了,你可以设定参数,第一个,是否是停止状态,然后是转动的速度,就是每次停留的time,接着是按照该时长转动几步。这些问题可以放到定时器里,调整放到while里,然后如果状态是停止,while就不停的复位定时的时长,如果是转动状态,就会按照设定的delay定时器进行转动多少步,够了,就对参数1更改为停止状态。

使用特权

评论回复
7
lirunze| | 2013-1-10 20:51 | 只看该作者
路过

使用特权

评论回复
8
明月小厨| | 2013-1-10 23:59 | 只看该作者
必须用单片机控制.必须!没有相关硬件能解决,除了你要,其它人都不要;
步进电机的加减速和具体步进电机有关系;如:每秒走1000步,有的行,有的不行,有的开始不行,过一会行;

使用特权

评论回复
9
明月小厨| | 2013-1-11 00:02 | 只看该作者
有二相,三相,五相,你是什么电机? 是不是要求上述多种步进电机都可以控制还是只针对其中的一种?
电机有多大?电压多少?负载是什么情况?:(:(:(
一切都不确定你好意思问别人要方案?

使用特权

评论回复
10
明月小厨| | 2013-1-11 00:04 | 只看该作者
方案就是:
走——停——走——停......;P

使用特权

评论回复
11
usrt| | 2013-1-11 00:40 | 只看该作者
走——停——走——停......

使用特权

评论回复
12
lqfy|  楼主 | 2013-1-11 10:42 | 只看该作者
qin552011373 发表于 2013-1-10 17:32
你先按你的思路写一下  调试出问题再问  直接伸手要程序  很少有会直接帮你写   ...

恩恩好的。这几天我在写程序呢。到时候发上来,大家改一下。

使用特权

评论回复
13
lqfy|  楼主 | 2013-1-11 10:44 | 只看该作者
airwill 发表于 2013-1-10 17:41
既然定时中断的周期已经算好了.
那就设定定时器吧, 在定时中断服务里发脉冲(完成一次上升沿和下降沿), 并同 ...

恩恩,好的,这个我写出来了,就是不知道怎么把速度和步数联系起来一起输出

使用特权

评论回复
14
lqfy|  楼主 | 2013-1-11 10:46 | 只看该作者
zhangmangui 发表于 2013-1-10 17:44
我是这样认为的,你的这个要求可以用步进电机的驱动器解决,关于步进电机的速度控制是通过送入驱动器的脉冲 ...

这个意思我明白,我现在不知道如何把速度和步数联系起来

使用特权

评论回复
15
lqfy|  楼主 | 2013-1-11 10:48 | 只看该作者
gaoyang9992006 发表于 2013-1-10 18:22
步进电机有两种状态步进和停止,然后转动多少步,每次转动后停留多久,就是步进的速度调整了,你可以设定参 ...

恩恩,好的,我再考虑一下哈

使用特权

评论回复
16
lqfy|  楼主 | 2013-1-11 10:49 | 只看该作者
明月小厨 发表于 2013-1-11 00:02
有二相,三相,五相,你是什么电机? 是不是要求上述多种步进电机都可以控制还是只针对其中的一种?
电机有多大? ...

我在一楼说清楚了好不?电机是28BY-48。是四相把拍的电机。

使用特权

评论回复
17
明月小厨| | 2013-1-11 11:38 | 只看该作者
lqfy 发表于 2013-1-10 17:03
通过控制脉冲输出间隔时间来控制步进电机的转速,但不知道程序怎么写。我的思路是先把步进电机每一个转速运 ...

四相八拍电机,非主流,不多见;
再一看要求,20-100转,即1280步-6400步/秒;
看来纯软件解决比较困难,需要硬件部分配合;

一起步就是20转已经超标,还有100转,几乎不可能完成;
应该还有其它具体指标,如加速减速指标;

一定要多看电机手册,把相关的细节都看清楚,心里有数后,再确认实现的电路(驱动);
最后才是软件;
数显最容易,这个先不用考虑它;
主要是加减速过程.

不可能空转的是不是.带载能力如何?

如果普通方案不行,只能细分驱动法;这个很难的.

使用特权

评论回复
18
明月小厨| | 2013-1-11 11:44 | 只看该作者
上电后的第一状态:

全部为0:所有的相断电(和后面的驱动有关,是0或1,如果搞反要出大事);

使用特权

评论回复
19
明月小厨| | 2013-1-11 11:51 | 只看该作者
第2个状态:
ABCD=1000;第1步
第3个状态:
ABCD=1100;第2步;
第4个状态:
ABCD=0100;第3步;
第5个状态:
ABCD=0110;
第6个状态:
ABCD=0010;
第7个状态
ABCD=0011;
第8个状态
ABCD=0001;
第9个状态
ABCD=1001;
第10个状态
ABCD=1000;

使用特权

评论回复
20
明月小厨| | 2013-1-11 11:52 | 只看该作者
明月小厨 发表于 2013-1-11 11:51
第2个状态:
ABCD=1000;第1步
第3个状态:

建立一个数组;闭着眼一个一个输出即可;
反转则反序一个一个输出;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

99

帖子

1

粉丝