8日:
因为芯片从购买到到货用了几天的时间,回来又用了一些时间来焊接,所以耽误了好久没写日志了。
真的后悔当初电工电子没有学好,原本要做5V到36V的升压电路,可是全忘记了,买了升压芯片,但到现在为止还弄不明白其中的一个电流的作用。恶补电子知识,但并没有我想像的那样容易,几乎要从头学起。所以暂时先放弃L297+L298的电路来控制步进电机。而是从L297单控开始。
采用L297独控的原因还在于当初焊接IC的时候并不知道IC的焊接顺序,怕IC被烙铁烧坏了,想验证一下IC的好坏。
L297独控就不需要外围电路,直接将各引脚和单片机I/O口、Vcc、GND连接就可以用程序来控制。程序也就控制enable,cw/ccw,half/full,reset,clock就行,没有太大难度,只是在最后联入MP28GA的时候只是震动,并没有转起来,后来参照时序图,将ABCD的顺序改为ACDB,有动作了,本以为成功,但用手测试了一下,发现扭矩很小。通过时序图和ULN2003的控制程序对比了一下,才发现顺序应该是ACBD,修改后电机工作正常,转动平稳。
下一步就是MC34063这个芯片了,JS说SO的和DIP在万用板上焊接差不多。结果拿到手了根本不是那么一回事,我还要想办法怎样把它放到万用板上。
步进电机接入顺序为4、7、6、9
11、12、15、19接5V,其中15脚决定了加载在步进电机上的电压。
L297输入对应的单片机I/O口列表
I/O PIN state
P1.0 —— 10 enable
P1.2 —— 17 cw/ccw
P1.4 —— 18 clock
9日:
网络是个好东西,一直苦于的多轴联动,今天在网上找到了解决的方案。用中断发出不同频率的方波信号,实现了不同转速的多轴联动,并成功的用LED做了两轴的模拟。又在中断中加入了电机步数的判断以及频率变量,解决了电机定位和加速减速的问题。本来都想暂时放弃的功能,却无意中找到了答案。视频上次拍了好像播放不了,算了,附个程序吧。
#include<reg51.h>
#include <alonekey.h>
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
unsigned char countor1;
unsigned char countor2;
char ci1, ci2,hz;
void main(void)
{
n1: ci1=0;
ci2=0;
hz=1;
EA=1;
ET1=1;
TMOD=0x10;
TH1=(65536-46083)/256;
TL1=(65536-46083)%256;
TR1=1;
countor1=0;
countor2=0;
while(1)
{
if(TR1==0&ET1==0)
{
if(key1==0) goto n1;
}
}
}
void time(void) interrupt 3 using 0
{
countor1++;
countor2++;
if(countor1==hz&ci1!=20)
{
L1=~L1;
countor1=0;
ci1++;
hz++;
}
if(countor2==16&ci2!=20)
{
L2=~L2;
countor2=0;
ci2++;
}
if(ci1==20&ci2==20)
{
TR1=0;
ET1=0;
}
TH1=(65536-46083)/256;
TL1=(65536-46083)%256;
}