我在用PIC16F886做步进电机28BYJ48的驱动实验。
这款步进电机是DC5V,相间电阻100欧姆。即驱动电流时50mA
我用的是ULN2003直接驱动,即IO口接ULN2003的输入,ULN2003的输出接步进电机的4相。
8拍驱动。以下是我编写的部分关键程序。
//逆时钟旋转相序表
const char CCW[8]={0b0111,0b0011,0b1011,0b1001,0b1101,0b1100,0b1110,0b0110};
for(i=0;i<8;i++)
{
MOTOR_PORT=CCW;
delayms(2);
}
现在的问题是:电机的确是转动了,但是速度很慢。大约是10秒钟转一圈。
但是我把delayms(2)改为delayms(1)后电机就不转了,摸电机能感觉到振动。
我的问题是如何能提高转速呢? 是不是电流不够大?还是步进电机需要加速过程,
如果需要的话,加速过程是什么样的呢?
等待大侠帮助。谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28BYJ参数说明 (原文件名:smaa.jpg)
我在用pic16f886做步进电机28byj48的驱动实验。
这款步进电机是dc5v,相间电阻100欧姆。即驱动电流时50ma
我用的是uln2003直接驱动,即io口接uln2003的输入,uln2003的输出接步进电机的4相。
8拍驱动。以下是我编写的部分关键程序。
//逆时钟旋转相序表
const char ccw[8]={0b0111,0b0011,0b1011,0b1001,0b1101,0b1100,0b1110,0b0110};
for(i=0;i<8;i++)
{
motor_port=ccw;
delayms(2);
}
现在的问题是:电机的确是转动了,但是速度很慢。大约是10秒钟转一圈。
但是我把delayms(2)改为delayms(1)后电机就不转了,摸电机能感觉到振动。
我的问题是如何能提高转速呢? 是不是电流不够大......
-----------------------------------------------------------------------
楼主,看来你是刚接触到步进电机这一块吧?第一:你那个驱动
for(i=0;i<8;i++)
{
motor_port=ccw;
delayms(2);
}
根本就不是什么驱动程序,8个拍要有一定的时间间隔的;第二点,驱动步进电机一定要有加减速算法的.建议楼主还是先去看看一些关于驱动步进电机类的基本资料后再弄比较好,你现在还没入门的呢~~
-----------------------------------------------------------------------
好的,谢谢指点。
一周热门 更多>