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;
}