淘寶網買了一台雷雕機,一開始其實想要的是單純的X-Y Table.
旦發覺一件事情,滑台意外的貴.如果要使用滑台 滑軌 或是 CNC的關鍵字來找尋X-Y Table.都相當的貴,就在聊天的時候,得到一個點子,如果由現成的產品得手是否會比較便宜.
於似乎在省錢的魔鬼心理下,找到了DIY雷射雕刻機.
這個賣家是使用Nano Arduino開發出X-Y軸的雷射雕刻機.
組裝容易,大約摸索兩個小時就可以很順利的開始操作雷射雕刻.
但也有個缺點,軟體是賣家開發的,如果沒有賣家支援,這台雕刻機 還真的如我所願的只是一套X-Y Table.
為了避免這件是真的發生,其實原本的打算是使用樹莓派來進行控制,但查詢了一下,
又有個障礙了,需要去學習 G code (GRBL),以下有其他玩家的分享
http://a-chien.blogspot.tw/2014/11/cnc.htmlhttp://a-chien.blogspot.tw/2014_11_01_archive.html
看來需要針對買到的產品進行簡單的逆向工程,
了解Arduino I/O Pin與 A4988的Pin對應關係後購買一個新的Nano Arduino,就可以改成自己的版本了.
當然啦.剩下的就是麻煩的coding了.
畢竟是新的要學.關鍵還沒搞通之前 這篇文章只能用做於記錄目前的心得.
未來在控制的認知上有心得或是突破 可能隨時要回頭來打臉自己
畢竟已經有現成的控制板了.如真的只要Pin Define抓到後就可以改寫.那可以拋棄使用樹莓派的想法,即便是有Zero版本的樹莓派問世,但價格上依舊貴於Arduino,況且 殺雞焉用牛刀
Raspberry Pi還是拿去開發瓦力機器人好了.
網路上的資源真的很多,Arduino + A4988關鍵字一下,馬上就有可以學習的網站:http://howtomechatronics.com/tutorials/arduino/how-to-control-stepper-motor-with-a4988-driver-and-arduino/A4988 步進馬達控制器
就賣家告訴我的,目前所搭配的步進馬達是兩相四線的.
若以下圖的定義來看,一軸只需要出兩個I/O作Output就可以控制一顆步進馬達前進與後退.再由這圖來看A4988需要額外的電壓來進行馬達的運轉.就我手上的商品而言是提供12V的DC電源.
再回來看看Nano Arduino 的Pin Define, 看來能進行Link的Pin就在D2~D13之間.
就設計者慣性而言 這賣家提供的板子有三軸的設計,可先將方向放在D2~D7之間.
另外一邊的部分,Analog input的部分賣家有預留腳座,這就好奇了.這目的是?
剩下還欠Coding,關鍵字一下.太棒了有範例.有類似答案出來.標準的C code.
但應該有少,未發現digitalWrite的定義,也沒看到delayMicroseconds的定義.
旦發覺一件事情,滑台意外的貴.如果要使用滑台 滑軌 或是 CNC的關鍵字來找尋X-Y Table.都相當的貴,就在聊天的時候,得到一個點子,如果由現成的產品得手是否會比較便宜.
於似乎在省錢的魔鬼心理下,找到了DIY雷射雕刻機.
這個賣家是使用Nano Arduino開發出X-Y軸的雷射雕刻機.
組裝容易,大約摸索兩個小時就可以很順利的開始操作雷射雕刻.
但也有個缺點,軟體是賣家開發的,如果沒有賣家支援,這台雕刻機 還真的如我所願的只是一套X-Y Table.
為了避免這件是真的發生,其實原本的打算是使用樹莓派來進行控制,但查詢了一下,
又有個障礙了,需要去學習 G code (GRBL),以下有其他玩家的分享
http://a-chien.blogspot.tw/2014/11/cnc.htmlhttp://a-chien.blogspot.tw/2014_11_01_archive.html
看來需要針對買到的產品進行簡單的逆向工程,
了解Arduino I/O Pin與 A4988的Pin對應關係後購買一個新的Nano Arduino,就可以改成自己的版本了.
當然啦.剩下的就是麻煩的coding了.
畢竟是新的要學.關鍵還沒搞通之前 這篇文章只能用做於記錄目前的心得.
未來在控制的認知上有心得或是突破 可能隨時要回頭來打臉自己
畢竟已經有現成的控制板了.如真的只要Pin Define抓到後就可以改寫.那可以拋棄使用樹莓派的想法,即便是有Zero版本的樹莓派問世,但價格上依舊貴於Arduino,況且 殺雞焉用牛刀
Raspberry Pi還是拿去開發瓦力機器人好了.
網路上的資源真的很多,Arduino + A4988關鍵字一下,馬上就有可以學習的網站:http://howtomechatronics.com/tutorials/arduino/how-to-control-stepper-motor-with-a4988-driver-and-arduino/A4988 步進馬達控制器
就賣家告訴我的,目前所搭配的步進馬達是兩相四線的.
若以下圖的定義來看,一軸只需要出兩個I/O作Output就可以控制一顆步進馬達前進與後退.再由這圖來看A4988需要額外的電壓來進行馬達的運轉.就我手上的商品而言是提供12V的DC電源.
再回來看看Nano Arduino 的Pin Define, 看來能進行Link的Pin就在D2~D13之間.
就設計者慣性而言 這賣家提供的板子有三軸的設計,可先將方向放在D2~D7之間.
另外一邊的部分,Analog input的部分賣家有預留腳座,這就好奇了.這目的是?
剩下還欠Coding,關鍵字一下.太棒了有範例.有類似答案出來.標準的C code.
但應該有少,未發現digitalWrite的定義,也沒看到delayMicroseconds的定義.
不過這樣也算是有前進了,剩下就是先認識Arduino.
dir Pin High/Low 剛好一個正轉一個逆轉. 這是定義方向
step Pin pull High就是運轉.pull low就是停止.
如果是這樣,樹莓派可以直接用GPIO來處理. 好像也不需要真的在花錢.只是說樹莓派是比較貴的做法...
就經濟考量上 還是要考慮Nano 如將上述改成雙軸也不難..有跑看看.剩下的就是RS232與其搭配的做法
要是能突破 或許 我想要的東西就出來了...
看到問題馬上搜尋.太有趣了 看來Arduino的C也算是IDE的一種,不需要include stdio.h之類的描述.
https://www.arduino.cc/en/Reference/DigitalWrite
或許需要一本參考書..http://www.books.com.tw/products/0010645785
這本不知道好不好.貴了點.但範例超多.
- pinMode(stepPin,OUTPUT);
- pinMode(dirPin,OUTPUT);
dir Pin High/Low 剛好一個正轉一個逆轉. 這是定義方向
step Pin pull High就是運轉.pull low就是停止.
- void loop() {
- digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
- // Makes 200 pulses for making one full cycle rotation
- for(int x = 0; x < 200; x++) {
- digitalWrite(stepPin,HIGH);
- delayMicroseconds(500);
- digitalWrite(stepPin,LOW);
- delayMicroseconds(500);
- }
- delay(1000); // One second delay
- digitalWrite(dirPin,LOW); //Changes the rotations direction
- // Makes 400 pulses for making two full cycle rotation
- for(int x = 0; x < 400; x++) {
- digitalWrite(stepPin,HIGH);
- delayMicroseconds(500);
- digitalWrite(stepPin,LOW);
- delayMicroseconds(500);
- }
如果是這樣,樹莓派可以直接用GPIO來處理. 好像也不需要真的在花錢.只是說樹莓派是比較貴的做法...
就經濟考量上 還是要考慮Nano 如將上述改成雙軸也不難..有跑看看.剩下的就是RS232與其搭配的做法
要是能突破 或許 我想要的東西就出來了...
// defines pins numbers const int XstepPin = 2; const int XdirPin = 5; const int YstepPin = 3; const int YdirPin = 6; void setup() { // Sets the two pins as Outputs pinMode(XstepPin,OUTPUT); pinMode(XdirPin,OUTPUT); pinMode(YstepPin,OUTPUT); pinMode(YdirPin,OUTPUT); } void loop() { digitalWrite(XdirPin,HIGH); // Enables the motor to move in a particular direction // Makes 200 pulses for making one full cycle rotation for(int x = 0; x < 200; x++) { digitalWrite(XstepPin,HIGH); delayMicroseconds(500); digitalWrite(XstepPin,LOW); delayMicroseconds(500); } delay(1000); // One second delay digitalWrite(XdirPin,HIGH); // Enables the motor to move in a particular direction // Makes 200 pulses for making one full cycle rotation for(int y = 0; y < 200; y++) { digitalWrite(YstepPin,HIGH); delayMicroseconds(500); digitalWrite(YstepPin,LOW); delayMicroseconds(500); } delay(1000); // One second delay }PS.馬上打臉自己.
看到問題馬上搜尋.太有趣了 看來Arduino的C也算是IDE的一種,不需要include stdio.h之類的描述.
https://www.arduino.cc/en/Reference/DigitalWrite
或許需要一本參考書..http://www.books.com.tw/products/0010645785
這本不知道好不好.貴了點.但範例超多.