Arduino範例10:用Arduino+ULN2003驅動步 ... | arduino uln2003
上一篇用了最土炮的方法推動步進馬達,這次就直接改用Arduino的板子來給訊號。不過Arduino的板子本身只有用USB接電腦,不夠我們去驅動步進馬達。所以上網看了一下,發現有一種超好用的晶片ULN2003,可以用來協助我們推動馬達。ULN2003是個有7個達靈頓電晶體的包裝陳列(DarlingtonArray),有7個NPN達林頓管組成,並且加上反向器,使引腳1~7輸入高電壓時,引腳16~10變成低電位,讓外面的電流流入。有這個就方便多了,不用再自己搭達靈頓電路,而且集極/射極的電壓達50V很夠用。再來是要說明接線方式,方法很簡單,把Arduino要輸出控制的...
上一篇用了最土炮的方法推動步進馬達,這次就直接改用Arduino的板子來給訊號。不過Arduino的板子本身只有用USB接電腦,不夠我們去驅動步進馬達。所以上網看了一下,發現有一種超好用的晶片ULN2003,可以用來協助我們推動馬達。 ULN2003是個有7個達靈頓電晶體的包裝陳列(Darlington Array),有7個NPN達林頓管組成,並且加上反向器,使引腳1~7輸入高電壓時,引腳16~10變成低電位,讓外面的電流流入。有這個就方便多了,不用再自己搭達靈頓電路,而且集極/射極的電壓達50V很夠用。再來是要說明接線方式,方法很簡單,把Arduino要輸出控制的pin接到ULN2003上,再把對應的腳位接到步進馬達上面。記得電源的負極也要接上ULN2003的pin 8以及Arduino的GND。
Video
Code
Arduino練習到這裡,code開始有很多種不同的層級了。一個是單純要求輸出,另一種會用到Stepper Library(類似Labview的子VI)。先說第一種:
//單純定義pin輸出,以及輸出的速度
int motorPin_A = 8;
int motorPin_AP = 9;
int motorPin_B = 10;
int motorPin_BP = 11;
int delayTime = 20;
void setup() {
pinMode(motorPin_A, OUTPUT);
pinMode(motorPin_AP, OUTPUT);
pinMode(motorPin_B, OUTPUT);
pinMode(motorPin_BP, OUTPUT);
}
void loop() {
digitalWrite(motorPin_A, LOW);
digitalWrite(motorPin_AP,HIGH);
digitalWrite(motorP...