2015年12月30日 星期三

Arduino + A4988


淘寶網買了一台雷雕機,一開始其實想要的是單純的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的定義.
不過這樣也算是有前進了,剩下就是先認識Arduino.


  1. pinMode(stepPin,OUTPUT);
  2. pinMode(dirPin,OUTPUT);
就描述上來看.看來對A4988而言
dir Pin High/Low 剛好一個正轉一個逆轉. 這是定義方向
step Pin pull High就是運轉.pull low就是停止.
  1. void loop() {
  2. digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  3. // Makes 200 pulses for making one full cycle rotation
  4. for(int x = 0; x < 200; x++) {
  5. digitalWrite(stepPin,HIGH);
  6. delayMicroseconds(500);
  7. digitalWrite(stepPin,LOW);
  8. delayMicroseconds(500);
  9. }
  10. delay(1000); // One second delay
  11. digitalWrite(dirPin,LOW); //Changes the rotations direction
  12. // Makes 400 pulses for making two full cycle rotation
  13. for(int x = 0; x < 400; x++) {
  14. digitalWrite(stepPin,HIGH);
  15. delayMicroseconds(500);
  16. digitalWrite(stepPin,LOW);
  17. delayMicroseconds(500);
  18. }
delayMicroseconds 就是延遲指令 讓pull High的狀況持續一段時間. 看要定義幾秒,1000為一秒.
如果是這樣,樹莓派可以直接用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
這本不知道好不好.貴了點.但範例超多.



2015年12月4日 星期五

Toyota 汽車音響 Pin Define

網路上真的可以找到很多想不到的資訊,光是靠Google搜尋圖片.就可以找到答案了.
汽車換下來音響主機,該如何處理,有了Pin Define後就可以開始規劃了.
首先是上網查類似的資訊…看來Toyota的Connector的相關位置都是一樣的.即便是不同的型號,或是廠商.因為下圖的跟我自己的型號不同 但Connector位置大小都一樣.
img02441_285_29795
這些圖片都是在越南文的討論區找到的.可惜看不懂越南文..
vTUAWXn
Pin define的部分 用英文就看得很清楚了.

53818-pinout

再看看,不錯唷~國內也有改裝音響的店家提供一些照片出來.太好了.只要我有12V的電源供應器.以及接頭, 四個喇吧.再加上擴大機.搭配FM天線. 就可以就地啟動這套音響了.

89

太酷了..本想說接頭 是個問題.沒想到 搜尋又有答案了,
真的要改裝了…

TOYOTA 音響主機改裝免剪線母接頭 .
21208037537705_720 

但注意看了一下 應該要買公接頭才對…買錯就要哭了…還是多比較一下.

21545005852759_799