สร้างวงจรขับมอเตอร์ตามดาวแบบ Barn door ในสิบนาที

จากกระทู้เดิมหากใครสนใจกลับไปอ่านได้ครับ
การสร้างอุปกรณ์ตามดาวด้วยตัวเอง DIY star tracking #1
http://ppantip.com/topic/35228265
การสร้างอุปกรณ์ตามดาวด้วยตัวเอง DIY star tracking #2
http://ppantip.com/topic/35233329
การสร้างอุปกรณ์ตามดาวด้วยตัวเอง DIY star tracking #3
http://ppantip.com/topic/35237413
การสร้างวงจรขับ motor สำหรับ การถ่ายภาพดาราศาสตร์,high accuracy motor driver for star tracker
http://ppantip.com/topic/35222366
การใช้งานวงจรขับ และอุปกรณ์ตามดาวแบบติดมอเตอร์เบื้องต้น Basic Motor Drive Barn Door Tracker
http://ppantip.com/topic/35244410

ส่วนวันนี้จะมาสร้างอุปกรณ์ขับตามดาวแบบ Barndoor แบบง่ายสุดติ่ง
ก่อนอื่นขอโม้ก่อนpompom
หมู อ่านเลขเป็นก็ทำได้แล้วมั้ง หยอกเย้า
ตัวอุปกรณ์ Barndoor มักถูกดูถูกว่าเป็นอุปกรณ์ ที่ถ่าย DSO ไม่ได้หรอก ก็แล้วแต่คนนะ หากคิดว่ามันทำได้ และพยายามทำมันให้ได้มันย่อมทำได้
หลายคนเห็นอุปกรณ์ทดลองตามดาวของผมแล้วยิ้มขำก็มี  แต่ในความเป็นจริงนั้นการถ่าย DSO นั้นผมประมาณว่า 50% ขึ้นกับสภาพแวดล้อมและท้องฟ้า 30% ขึ้นกับเทคนิคผู้ถ่ายในการแก้ปัญหา อีก 20% คือตัวตามดาว เพราะในความเป็นจริงเราให้ตามให้ตรงแค่ 30 วินาทีเราก็ถ่าย DSO ได้แล้ว
เอาเป็นว่าไอ้รูปข้างบนทั้งหมดถ่ายมาจาก barndoor  ซึ่งจริงๆก็ทำได้ไม่ยากเท่าไรนัก
เพี้ยนแช๊ะ
เข้าเรื่องดีกว่า
เพี้ยนลุย
จากกระทู้การสร้างตามดาวด้วยตัวเองแล้ว มีบางท่านอาจอยากจะต่อมอเตอร์ให้หมุนแทนมือ ซึ่งจะสะดวกและแม่นยำขึ้นมาก และสามารถต่อเลนส์เทเลได้ช่วงมากขึ้น ทำให้ไม่จำกัดแค่การถ่ายทางช้างเผือก


โดยกระทู้นี้จะมาแนะนำวิธีการง่ายๆสุดๆในการควบคุมมอเตอร์และทำได้ในไม่กี่นาที หากชำนาญก็นาทีเดียว
อนึ่งหากทำตามดาวด้วยมอเตอร์ ตัว Barndoor ควรยาว กว่าแบบใช้มือหมุนเองนะครับ แล้วเอามอเตอร์มาไว้ทางปลายๆตรงข้ามด้านบานพับ เพราะว่ามอเตอร์แรงมันไม่มากมันจะได้ยกกล้องไหว ปกติรับน้ำหนักกล้องได้ 2-3 กิโลครับ ซึ่งต่างกับการเอามือหมุนเองอันนั้นไม่ต้องกังวลเพราะแรงมือบิดมันเยอะมากกว่ามาก ความยาวที่เหมาะสมคือ 170-200 มม
ส่วน ตามดาว แบบ Barndoor ใช้ Motor นี่แบบเยอะเลยในเนตหาเอาครับ ชอบแบบไหนทำตามนั้นเลย
(ก่อนหน้านั้นเคยใช้วงจรไฟฟ้าซึ่งอันนั้นข้อดีคือแม่นมาก ละเอียดมาก เร่งได้เร็วมาก แต่ข้อเสียคือยุ่งยาก และใช้ความรู้มาก หากทำตามกระทู้นี้จะง่ายกว่า แต่เหมาะกับ barndoor ครับ)

อุปกรณ์ที่มีคือ
1 MCU Arduino UNO R3
2 Step motor + Driver เอาแบบในรูปนะครับเดี๋ยวเสียบไม่ได้
3 สายไฟ Dupont Female-Male 4  เส้น
4 สวิทช์

มาดูอุปกรณ์ทีละตัวครับ (ต้องขออภัยหากรูปใหญ่มาก เพราะต้องการให้เห็นขาและเลขชัดๆ)
1 Arduino Uno R3 เพราะ สะดวกเวลาทดลอง ต่อไฟ การ Load โปรแกรม แต่อาจใหญ่หน่อย

2 Motor 28BYJ-48 5V + Driver หาได้ทั่วไปโดยเฉพาะใน Ebay ตัวขา  pin ให้ชี้ขึ้นแบบในรูปนะจะได้เหมือนกัน

3 สาย Dupont Female-Male

4 สวิทช์เปิด-ปิด

เริ่มสร้าง
1)    มาดูที่ MCU (Microcontroller Unit)

จะมีตัวเลขกำกับไว้ 0-13 คือ Digital Pin
อีกด้านเป็น Power
5V คือ MCU จะจ่ายไฟออกมา 5 V คงที่
GND คือขั้วลบ
Vin ใช้จ่ายไฟเข้าแต่เราจะไม่ใช้ (เหมือนปลั๊กกลมดำด้านซ้ายล่าง)
อ่านไม่เข้าใจไม่เป็นไรจำตัวเลข ตัวหนังสือ ก็พอ
2) ดูที่ Driver


จะมี IN1 IN2 ...... IN
3) ตัดสาย Dupont 2 เส้นเอาเฉพาะด้าน ตัวผู้ เชื่อมกับสวิทช์ดังรูป

4) เชื่อมสาย ระหว่าง MCU กับ Driver  ดังนี้
MCU --->  Driver
8    ---->  IN1
9  ---> IN2
10 ---> IN3
11  ---> IN4
12  ---> IN5
13 ---> IN6
GND  ---> IN7
ทำโดยเสียบลงไปเลย ไม่ต้องมีสายอะไร ตามรูป


5) ต่อเพิ่ม
5V -->  Vcc
GND ->GND    


6) ต่อสวิทช์
    6 > สายแรกอันไหนก็ได้
    GND > สายที่เหลือ

7) เสียบ Motor
เสร็จละเห็นไหมต่อนาทีเดียวมั้ง
ประหลาดใจ พาพันเคลิ้ม
ยังใช้ไม่ได้ต้องลงโปรแกรม
-----------------------------------------------------------------------------------
ต่อไปลงโปรแกรม จาก link
https://www.arduino.cc/en/Main/Software
load Arduino 1.8.3 มาลงให้เรียบร้อยในเครื่องคอมของเรา
File > New
Save อีกทีชื่ออะไรก็ได้ เช่น StepMotor


ลบที่พิมพ์ไว้ทิ้งให้หมด

เสียบสาย USB จาก MCU ไปคอม
ไปที่ Tool เลือก Board เป็น Arduino/Geuino Uno
ไปที่ tool > port เลือก port ที่ปรากฏ อาจเป็น COM1 COM2 COM3 ... หากไม่เห็นออกมาจกเมนูรอซักครู่เข้าใหม่
หากไม่มีลองเสียบ USB ช่องอื่น หากไม่มีอีกปิดโปรแกรมเปิดใหม่ หากไม่มีอีกให้ปิดเครื่องเปิดใหม่
Copy ตัวอย่างนี้ใส่ใน โปรแกรม




//***********************************************************************************
byte MotorPin1 = 8; // Step Motor Driver pin 1
byte MotorPin2 = 9; // Step Motor Driver pin 2
byte MotorPin3 = 10; // Step Motor Driver pin 3
byte MotorPin4 = 11; // Step Motor Driver pin 4

byte SW1 = 6; // Switch motor direction
byte LedPin = 13; // Led

int  xdelay = 30; //เวลาหน่วงมอเตอร์ ความเร็วรอบมอเตอร์ ค่ายิ่งน้อยยิ่งเร็ว มีค่าเป็น milisec
int  rdelay = 3; //เวลาหน่วงมอเตอรตอนย้อนกลับ์ ความเร็วรอบมอเตอร์ ค่ายิ่งน้อยยิ่งเร็ว มีค่าเป็น milisec


void RotateMotorUp()
{
  digitalWrite(LedPin, HIGH); //
  digitalWrite(MotorPin1, HIGH); // LED on
  delay(xdelay); // waits for a second
  digitalWrite(MotorPin1, LOW); // LED off


  digitalWrite(MotorPin2, HIGH); // LED on
  delay(xdelay); // waits for a second
  digitalWrite(MotorPin2, LOW); // LED off

    digitalWrite(LedPin, LOW); //
    
  digitalWrite(MotorPin3, HIGH); // LED on
  delay(xdelay); // waits for a second
  digitalWrite(MotorPin3, LOW); // LED off

  digitalWrite(MotorPin4, HIGH); // LED on
  delay(xdelay); // waits for a second


}

void RotateMotorDw()
{
  digitalWrite(LedPin, HIGH); //
  digitalWrite(MotorPin4, HIGH); // LED on
  delay(rdelay); // waits for a second
  digitalWrite(MotorPin4, LOW); // LED off


  digitalWrite(MotorPin3, HIGH); // LED on
  delay(rdelay); // waits for a second
  digitalWrite(MotorPin3, LOW); // LED off

  digitalWrite(MotorPin2, HIGH); // LED on
  delay(rdelay); // waits for a second
  digitalWrite(MotorPin2, LOW); // LED off
digitalWrite(MotorPin1, HIGH); // LED on
  delay(rdelay); // waits for a second
  digitalWrite(MotorPin1, LOW); // LED off

}

void setup()
{

  pinMode(MotorPin1, OUTPUT); // sets as output
  pinMode(MotorPin2, OUTPUT); // sets as output
  pinMode(MotorPin3, OUTPUT); // sets as output
  pinMode(MotorPin4, OUTPUT); // sets as output
  pinMode(LedPin, OUTPUT); // sets as output
  pinMode(SW1, INPUT_PULLUP); // sets as Input

  digitalWrite(LedPin, LOW); //
}


void loop()
{
  if (digitalRead(SW1))
  {
    RotateMotorUp();
  }
  else
  { RotateMotorDw();
  }
}
//**********************************************************************






กดที่รูป -> ด้านซ้ายบน รอจนโปรแกรม upload เสร็จ
จะเห็นไฟกระพริบที่ driver
ลองเปลี่ยนค่า xdelay=20; เป็นค่าอื่นๆแล้วกดลูกศร upload โปรแกรมดูจะเห็นว่าการกระพริบของหลอด LED มันจะเปลี่ยน
(ค่า 1-100) หาก barndoor ยาว 175 mm ค่าประมาณ 30
เสียบ Motor เข้าไป (หมายเหตุใช้กับมอเตอร์แบบที่บอกเท่านั้นหากแบบอื่นต้องต่อไฟเลี้ยงจากที่อื่นไฟ 5V จากบอร์ดจ่ายไม่ไหว)


เสร็จแล้ว ทีนี้ก็เอามอเตอร์ไปต่อตามดาวได้เลยครับ
ก็หวังว่าคงได้ประโยชน์บ้างครับ
พาพันขอบคุณ

หมายเหตุ
-    ค่า xdelay  แก้ไขค่านี้ตอนทดลองกับตามดาวจริง ลองต่อกับคอมก่อนแล้วเปลี่ยนค่า x ถ่ายไปซัก 1-2 นาทีแล้วดูดาวยืดไหมหากยืดปรับค่ามากขึ้นหรือลดลงแล้วดูว่าดีขึ้นไหมครับ
-    สวิทช์ สลับทิศทางหมุนมอเตอร์ พอหมุนไปซักพักก็ต้องถอยกลับมาคั้งต้นใหม่
-    rdelay เอาไว้ตอนถอยต้องให้เร็วๆ 3-4 แต่น้อยกว่าหรือมากกว่าก็ได้แต่หากน้อยมากๆมอเตอร์หมุนไม่ทันมันจะไม่หมุนแต่คราง อือๆๆๆ
-    Upload โปรแกรมแล้วถอดออกจาก คอมพิวเตอร์ ต่อสาย USB กับ Power bank ได้เลย
-    หากพบว่าการหมุนไปกลับ มันสลับทิศทางกับ barndoor เราก็ไม่ต้องตกใจแค่ใส่ค่า xdelay กับ rdelay สลับกันก็ใช้ได้แล้ว
-    อนึ่งหากใครซื้อตัว driver แล้วดันซื้อผิดเป็น pin ด้านล่างแบบดังรูปอย่าเสียบให้ติดต่อหลังไมค์
-       ค่า xdelay นี่จริงๆมาจากการคำนวนครับหากไปอ่านกระทู้เก่าที่เขียนไว้จะเข้าใจว่าเราต้องหมุนกี่องศาในเวลาเท่าไร ซึ่งสามารถคำนวนกลับมาเป็นคาบเวลาครับ หากขี้เกียจคำนวนก็เดาเอา ควรทำครั้งแรกที่บ้านครับลองจนได้ค่า xdelay ที่ถูกต้องแล้วเขียนติดไว้ แก้ในโปรแกรม มันจะเป็นค่าเฉพาะของ barndoor ตัวนั้น
การต่อที่ดีกว่าสามารถดูในความคิดเห็น 3 ของกระทู้นี้ครับ
https://ppantip.com/topic/37582920/comment3
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่