19 三軸平台IO設定_V1
M11212051 edited this page 2024-07-30 15:52:08 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

三軸平台

IO對應腳位

控制台上之按鈕與燈

啟動燈 PIN = 22
啟動鈕 PIN = 24
重啟鈕 PIN = 26
急停鈕 PIN = 28
停止鈕 PIN = 30

三軸之運動相關輸出與輸入

X極限 PIN = 5
X方向 PIN = 8
X運動 PIN = 9

Y極限 PIN = 6
Y方向 PIN = 10
Y運動 PIN = 11

Z極限 PIN = 7
Z方向 PIN = 12
Z運動 PIN = 13

相關寫法 - 控制台按鈕

// 控制台之按鈕
const int stop_bt = 30; // 停止鈕
const int scram_bt = 28; //急停鈕
const int resetting_bt = 26; //重啟鈕
const int activate_bt = 24; //啟動鈕
const int activate_led = 22; //啟動燈

//設定
void setup(){
   Serial.begin(115200);
   pinMode( stop_bt, INPUT_PULLUP );  // 停止鈕
   pinMode( scram_bt, INPUT_PULLUP );  //急停鈕
   pinMode( resetting_bt, INPUT_PULLUP ); //重啟鈕
   pinMode( activate_bt, INPUT_PULLUP ); //啟動鈕
   pinMode( activate_led, OUTPUT );  //啟動燈
}
//讀取按鈕狀態
void loop(){
   stop_state = digitalRead(stop_bt); //讀取按鈕狀態按下為LOW
   scram_state = digitalRead(scram_bt); //讀取按鈕狀態按下為LOW
   resetting_state = digitalRead(resetting_bt); //讀取按鈕狀態按下為LOW
   activate_state = digitalRead(activate_bt); //讀取按鈕狀態按下為LOW
   
     if (stop_state == LOW){
       stop_clicked(); //運行觸發程式
       digitalWrite( activate_led, LOW );
       }
     if (scram_state == LOW){
       scram_clicked(); //運行觸發程式
       digitalWrite( activate_led, LOW );
     }
     if (resetting_state == LOW){
       resetting_clicked(); //運行觸發程式
     }
     if (activate_state == LOW){
       activate_clicked(); //運行觸發程式
       digitalWrite( activate_led, HIGH );
     }
    
 }

相關寫法 - 三軸運動方式

const int PIN_5 = 5; //X極限
const int PIN_6 = 6; //Y極限
const int PIN_7 = 7; //Z極限
//設定
void setup(){
   Serial.begin(115200);
    //設置極限腳位
    pinMode( PIN_5, INPUT );
    pinMode( PIN_6, INPUT );
    pinMode( PIN_7, INPUT );
    //設置馬達腳位
    pinMode(9, OUTPUT); //X_運動
    pinMode(8, OUTPUT); //X_方向
    pinMode(13, OUTPUT); //Z_運動
    pinMode(12, OUTPUT); //Z_方向
    pinMode(11, OUTPUT); //Y_運動
    pinMode(10, OUTPUT); //Y_方向
    
    go_home(); // 回原點
    
 }
// 原點function
void go_home(){
   Serial.println("馬達X軸啟動");
   digitalWrite(8, HIGH); // 方向
   while (1){
     if (LOW != digitalRead(PIN_5)){
       digitalWrite(9, HIGH); // 将引脚设置为高电平
       delayMicroseconds(50);     // 等待5毫秒
       digitalWrite(9, LOW); // 将引脚设置为低电平
       delayMicroseconds(50);     // 等待5毫秒
       }
     else{
       break;
       }
     }
   Serial.println("馬達X軸結束");

   Serial.println("馬達Y軸啟動");
   digitalWrite(10, HIGH); // 方向
   while (1){
     if (LOW != digitalRead(PIN_6)){
       digitalWrite(11, HIGH); // 将引脚设置为高电平
       delayMicroseconds(50);     // 等待5毫秒
       digitalWrite(11, LOW); // 将引脚设置为低电平
       delayMicroseconds(50);     // 等待5毫秒
       }
     else{
       break;
       }
     }
   Serial.println("馬達Y軸結束");

   Serial.println("馬達Z軸啟動");
   digitalWrite(12, HIGH); // 方向
   while (1){
     if (LOW != digitalRead(PIN_7)){
       digitalWrite(13, HIGH); // 将引脚设置为高电平
       delayMicroseconds(80);     // 等待8毫秒
       digitalWrite(13, LOW); // 将引脚设置为低电平
       delayMicroseconds(80);     // 等待8毫秒
       }
     else{
       break;
       }
     }
   Serial.println("馬達Z軸結束");
   
   }

電路圖

小知識

1.找馬達線圈:通常四條線兩組線圈,電表短路檔,找兩條出來量,有短路表示為一組線圈, 該組線圈兩條接A線圈、B線圈都可正負反了沒關係但別一條接A一條接B千萬別接錯會燒

2.步進馬達的Encoder是為了讓驅動器本身微調使準度較高Z軸剎車是因為怕Z軸掛太重 導致斷電時位置跑掉所以附帶剎車剎車線就是一個馬達自己的input給他24的電壓就會解剎車