四相就是步進馬達即是有四個線圈假設為A、B、C、D,做動原理就是透過脈波依序去激磁線圈,
A→B→C→D→A→B→………A→B→C→D→
而ULN2003A其實只是提供了很多組電晶體(達靈頓對),作用是放大提供給線圈的電流,因為Arduino本身沒辦法給那麼大的電流,而這顆IC可以節省很多接線和空間,但如果你沒有這顆IC,其實用四顆電晶體(達靈頓對)來搭電路,就可以達到一樣的功能。
在此提供了一個簡單的範例,如果有任何錯誤或不清楚的地方歡迎留言討論。
//NOTE:
//程式結果:維持同一個方向持續的旋轉。
int state[8][4]={
0,0,0,1,
0,0,1,1,
0,0,1,0,
0,1,1,0,
0,1,0,0,
1,1,0,0,
1,0,0,0,
1,0,0,1
};
int n=0;
void setup() {
// put your setup code here, to run once:
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
for(int j=0;j<8;j++){
for(int i=0;i<4;i++){
Serial.print(state[j][i]);
Serial.print(",");
}
Serial.println("");
}
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(8,state[n][0]);
digitalWrite(9,state[n][1]);
digitalWrite(10,state[n][2]);
digitalWrite(11,state[n][3]);
n++;
if(n>7){
n=0;
}
delay(5); // 控制轉速
}
參考資料:
步進馬達簡介:
https://openhome.cc/Gossip/CodeData/mBlockArduino/mBlockArduino16.html
香港教師?詳細拆解
https://miteen.hk/share/28BYJ-48/
管他什麼原理,只要給我library
https://blog.jmaker.com.tw/uln2003-28byj-48/
超詳細的篇幅介紹
https://cookierobotics.com/042/