51单片机编程后可以作为步进电机的控制器吗?然后再配上电源,驱动器,就可以驱动步进电机了,是这样吗?
答案:3 悬赏:0 手机版
解决时间 2021-02-04 22:03
- 提问者网友:十年饮冰
- 2021-02-04 18:31
如果是个大功率的步进电机,是不是只要驱动器和电源能够提供大电流就可以了,51单片机没什么苛刻要求?
最佳答案
- 五星知识达人网友:woshuo
- 2021-02-04 18:57
是的
全部回答
- 1楼网友:患得患失的劫
- 2021-02-04 20:45
单片机控制驱动器的信号不是PWM波,是方波信号,单片机没送出一个方波,驱动器就会控制步进电机走一步(没有细分的话通常是1.8度)。
电机的功率应当和负载匹配,大马拉小车是浪费,小马拉大车是拉不动的,此时电机就会失步,电机停转,但不会烧驱动器
- 2楼网友:三千妖杀
- 2021-02-04 20:16
这个简单,让我来教楼主怎么玩
首先我说下思路:
我们采用p1口来采集adc0832的8位数据,用p0.0口控制步进电机动作,利用t0的时间中断来采集p1口的adc0832数据并做出比较后设置步进电机启动标志位start=1;并设置他的运行频率,当然,楼主没说怎么比较,我这就只是写了个简单的例子,一通百通,希望对你有帮助
下面是程序:
#include //选用晶振11.0592mhz
unsigned int m=0,n=0; //设置循环的周期
unsigned char start=0,t0temp=0;
sbit y0=p0^0; //控制步进电机的管脚
delay()
{
unsigned char i,j;
for(i=m;i>0;i--)
for(j=n;i>0;j--);
}
main()
{
//自检测t0时间设置
et0=1;
tmod|=0x01;
th0=0xfc; //1ms中断扫描
tl0=0x66;
it0=1; //下降沿触发
tr0=0; //关闭扫描
//****************i/o口程序
while(1)
{
while(start)
{
delay();
y0=~y0;
}
}
}
void counter1(void) interrupt 1 //t0计时器中断
{
if(t0temp%4)t0temp++; //4ms时间才采集一次p0口的数据
else
{
t0temp++;
//这里就写你怎么做对比的程序,我举个例子
if(p1>150)
{start=1;n=1000;m=0;} //入错采用12m晶振,那这时候控制步进电机的输出周期就是1ms一次,也就是1000hz
else {start=0;n=0;m=0;}
}
}
//ps:我在输出频率中用了两个全局变量m,n可以延迟很长时间,楼主可以根据需要选用,一般16位的,选用一个就可以了,另一个放弃
ok,至于电路图,我软件没有adc0832的封装,不然就发给你了,但想来楼主完全就没必要担心,adc0832的8位数据接到p1口,p0.0控制步进电机启动的三极管,电路图就那么简单!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯