DIY แนวการสร้างระบบหาตำแหน่งดาว GOTO #2

ต้องไปอ่าน DIY แนวการสร้างระบบหาตำแหน่งดาว GOTO #1 ก่อนนะครับ
#1
https://ppantip.com/topic/37233072
#2
https://ppantip.com/topic/37235270
#3
https://ppantip.com/topic/37236971
#4
https://ppantip.com/topic/37238646
#5
https://ppantip.com/topic/37238689
*********************************************************************************
กระทู้อื่นเดิมๆที่ใครเผื่อสนใจครับ
การสร้างอุปกรณ์ตามดาวด้วยตัวเอง 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
การสร้าง และอุปกรณ์ขับมอเตอร์ในสิบนาที
https://ppantip.com/topic/36658223/comment1
DIY เลนส์ ฮีทเตอร์กันฝ้าสำหรับนักถ่ายดาว
https://ppantip.com/topic/35745572
**********************************************************************************
มาต่อกันที่ ภาค 1 การสร้าง GOTO แบบ Azimuth, Altitude
A)    Goto ด้วยระบบ Azimuth, Altitude
ต่อไปจะย่อเหลือ Az, Alt ครับ
เราจะเห็นว่าระบบนี่ใช้ทั่วไปในกล้องดูดาวทั่วๆไป หรือกล้องแบบ Dobsonian แบบในรูป มีการหมุน 2 แกน คือแกนแนวราบ Azimuth และ ก้มเงย Altitude



หลักการนั้นง่ายมาก แปลง RA, DEC ของดาวให้เป็มมุม Az, Alt แล้วหมุนฐานจากทิศเหนือตามเข็มเท่ากับมุม Az แล้วก็เงยกล้องขึ้นเท่ากับ Alt เจอดาวแล้ว
จะเห็นว่าระบบนี้จำเป็นต้องรู้มุม Az จากทิศเหนือ และ มุมเงย Alt จึงจะชี้ตำแหน่งได้ถูก แต่ แผนที่ดาวหรือโปรแกรม Stellarium จะบอกเพียง RA,DEC ของดาวที่เพราะเป็นค่าคงที่ ดังนั้นเราจำเป็นต้องแปลงมันให้เป็น Az, Alt
ขั้นตอนทำงานจะเป็นแบบนี้

Stellarium ส่งพิกัดดาว >แปลงจาก RA,DEC เป็น Az,Alt > อุปกรณ์ Goto คำนวณตำแหน่งดาว > สั่งกล้องหมุน Motor ไปที่ดาว > Track ตำแหน่งกล้อง > แปลง Az, Alt เป็น RA, DEC > ส่งข้อมูลพิกัดกล้องกลับไปยัง Stellarium > Stellarium แสดงผลบนจอ

จะเห็นว่าขั้นตอนยาวกว่าเดิมเยอะเลยแถมมีการคำนวณที่ซับซ้อนมากขึ้น มีเวลาสถานที่มาเกี่ยวข้อง แต่ก็ไม่ยากเกินไป โดยจะอธิบายเป็นขั้นๆไป (จขกท เขียนโปรแกรม Az, Alt ใช้เวลาเกือบเดือนเพื่อให้มันตรง แต่ระบบ EQ ใช้วันเดียว) EQ จะง่ายกว่ามาก แล้วทำไมไม่ไปที่ ระบบ EQ เลยเมื่อมันง่ายกว่า ต้องเข้าใจว่าแต่ละระบบมันเหมาะกับงานแต่ละแบบ เช่นกล้อง Dobsonian คงไม่สามารถใช้ระบบ EQ ได้แน่ๆ หรือ Laser ชี้ดาว Az, Alt ก็เหมาะกว่าเพราะไม่มีจุดบอดด้านหลังอุปกรณ์ที่ชี้ไม่ได้
ขั้นต่อไปก็เตรียมเครื่องคิดเลขหรือไปทบทวนเรขาคณิตมัธยมซักหน่อยครับ


การแปลง RA, DEC เป็น Az, Alt พื้นฐานเบื้องต้น

นักคณิตศาสตร์สติเฟื่องทั้งหลายได้เขียนสมการไว้ว่า

sin(ALT) = sin(DEC)*sin(LAT)+cos(DEC)*cos(LAT)*cos(HA)
และ
cos(A) = (sin(DEC) - sin(ALT)*sin(LAT))/(cos(ALT)*cos(LAT))


“*” = คูณนะครับ ในคอมพิวเตอร์เราไม่ใช้ x เพราะมันสับสนกับตัวแปร เอ็ก(x)
โดยหาก sin(HA) เป็นบวก,
AZ = 360 - A

หากเป็นลบก็คงเดิม
Az=A




ALT= มุม Altitude
DEC= มุม Declination
LAT =ละติจูด ที่ยืนอยู่
HA = Hour Angle
Az = มุม Azimuth

ดูๆไว้ก็พอว่ามันมีสูตรตายตัวแบบนี้
หากอยากเข้าใจหารายละเอียดอ่านได้จากใน internet ครับ เผื่ออยากกุมขมับไปหลายวัน เอาเป็นว่าบางอันผมก็ไม่อธิบายความหมายทางดาราศาสตร์ของมันเพราะเกรงว่าจะอธิบายผิด แต่สมัยนี้ง่ายมีอาจารย์ยูทูบสอนตลอด 24 ชม แต่จะอธิบายวิธีการคำนวณมันเป็นข้อๆ ไม่เข้าใจก็อ่านผ่านๆไปก็ได้นะ แต่หากอยาก Develop ระบบเองต่อควรเข้าใจ

เราจะมาแกะย้อนหลังไปทีละขั้นครับ ที่เราไม่รู้ก็หาย้อนศรไปเรื่อยๆ
ข้างบน ที่เราไล่ดู ALT, AZ เราจะคำนวณออกมา, DEC เอามาจากแผนที่ดาวหรือ Stellarium, เหลือแต่ Lat กับ HA
Lat เปิด โปรแกรม GPS หรือดูจาก App มือถือ หรือ ใน Location หรือเปิดแผนที่ หรือ Google Map ดูก็ได้ครับ HA นี่ต้องคำนวณเอา

HA = LST - RA


หากคำนวณมา HA เป็นลบให้บวก 360 จนกว่าจะเป็นบวกช่วง 0-360

RA=มุม RA จาก แผนที่ดาวหรือ Stellarium แต่ต้องแปลงจาก ชม ให้เป็นมุม (ทรงกลม RA แบ่งเป็น 24 ต้องคูณ 15, เพราะ 24x15=360 องศา)
LST = Local Sidereal Time เวลาดาวท้องถิ่น ในสมการก็ต้องแปลงจากเวลาชั่วโมงให้เป็นองศาก่อน
(บางครั้งจะค่อนข้างสับสนเอามากๆ จาก การพูดเป็น ชม แต่ตอนคำนวณเป็นองศา ในโปแกรมเป็นเรเดียน ตอนเก็บค่าเป็น ArcSecond,ต้องพยายามทำความเข้าใจหน่อย แต่อย่ากังวล)

ก่อนจะงงกับเจ้า LST นี่เรามานึกดูวันเวลาเราทุกวันนี้อ้างอิงพระอาทิตย์ 1 วันมี 24 ชม คือพระอาทิตย์มากลางหัวพอครบ 24 ชม มาอยู่กลางหัวอีกที เรียกว่าวันทางสุริยคติ  Solar day แต่ทางดาราศาสตร์ โลกเรามีการหมุนไม่พอยังเคลื่อนรอบดวงอาทิตย์ด้วย ทำให้ดาวดวงเดิมมาอยู่กลางหัวเราเหมือนเดิมไม่ใช่ 24 ชม แต่หายไป 4 นาทีทุกวัน เรียกว่า Sidereal day วันทางดาราคติ
https://www.youtube.com/watch?v=qWyASH4gv1c

เวลาในแต่ละประเทศยังไม่ตรงกันมีเวลาท้องถิ่นได้ดังนั้น Sidereal ก็มีเวลาท้องถิ่นของตัวเองเรียก Local Sidereal Time  [หากเรารู้ว่า ที่เราอยู่มี LST เท่าไรดาวทุกดวงที่มี RA เท่ากับ LST จะอยู่ในแนวทิศเหนือใต้พอดี (LST มี app ในมือถือให้ load)]

LST = 100.46 + 0.985647 * d + long + 15*UT


d = วันจาก J2000 รวมส่วนของวันด้วย เดี๋ยวอธิบายถัดไป
Long = longitude เปิด GPS location จากมือถือหรือ ดูแผนที่หรือ google map หนวยเป็นองศา
UT = เวลา Universal time บ้านเราก็ คือเวลาปัจจุบัน ลบ Timezone บ้านเรา +7 (UT=เวลาปัจจุบัน-7)


J2000 คือวันที่เริ่มนับจาก 1 Jan 2000 ให้มีมีค่า -1.5 วัน แล้วก็นับวันมาเรื่อยๆ เป็นเพียงจุดอ้างอิงของระบบดาราศาสตร์เท่านั้น ก็ลองนับนิ้วไปครับว่าผ่านมา ถึงวันนี้นับได้กี่วันครับรวมปีที่มี 366 วันด้วยนะ
มาถึงจุดนี้บางคนเริ่มกุมหัว หายาแก้ปวดมากินFacepalm ผมแรกๆก็เป็น เดี๋ยวอาจมึนกว่านี้ตอนเขียนโปรแกรมยกเว้น copy and paste

เวลาทำก็หาย้อนไป จิ้มเครื่องคิดเลขนับนิ้วไป โดยหาย้อนจาก

J2000 >  LST > HA > A > AZ > ALT

การแปลงกลับจาก Az, Alt เป็น RA, DEC

  DEC = asin((sin(ALT) * sin(Lat)) + (cos(ALT) * cos(Lat) * cos(Az)))
  HA = acos((sin(ALT) - (sin(DEC) * sin(Lat))) / (cos(DEC) * cos(Lat)))
  RA = LST-HA

หาก RA เป็นลบให้บวกไปอีก 24 ชม

เริ่มสร้างกันจริงๆ
จะพยายามอธิบายโดยละเอียดและตัวอย่างโปรแกรมแต่ละส่วน แต่จะไม่เขียน Program ให้ทั้งระบบ เพราะไม่ต้องการให้ Copy and Paste เขียนให้  99% อีก 1 % ให้ไปทำเอง เพราะอยากให้เอาไปต่อยอดกันเองเพราะ หากอ่านแล้วไม่รู้เรื่องก็สร้างไม่ได้อยู่ดี หากรู้เรื่องก็ไปทำต่อได้อยู่ดี

เราจะใช้ MCU เป็นตัวควบคุมกล้องดูดาวในที่นี้ จะเลือก Arduino Pro Mini, Arduino Uno, Arduino Mega, หรือ ESP nodemcu v1.0  หรือ MCU32 ตามสบาย ผมใช้หมดเลย ESP ใช้โปรแกรมเหมือนกัน แต่ง่ายๆ เร็ว Uno หากเอาเร็วแต่ระบบไฟจะควบคุมยากหน่อยใช้  Node MCU หรือ ESP32 ส่วนตัวผมมักเริ่มพัฒนาเบื้องต้นบน Uno เพราะเวลามัน Upload เร็วดี แต่พอจะใช้จริงและต่อยอดไปมักใช้ NodeMCU และ ESP32 เพราะทำงานเร็วกว่า ขนาดเล็กกว่า  เขียน Web ได้และมีความจำมากกว่ามาก ดีกว่าแทบทุกด้านยกเว้น I/O กับระบบไฟ รวมทั้งในที่สุดการคำนวณ ESP จะดีกว่าเพราะรองรับข้อมูลแบบ ละเอียดสูง Double ขณะที่ Arduino ได้ทศนิยมแค่ 7 จุด (ยกเว้น Arduino Due),  ESP32 จะเสถียรและมีพื้นที่เยอะกว่าทำงานเร็วกว่ามาก เพราะ Dual Core หากจะซื้อใหม่อย่าซื้อ NodeMCU แต่มาที่ MCU32 ดีกว่า
Uno หน่วยความจำมักไม่พอใช้งาน ส่วน Mega นี่แพงยกเว้นเอาต่อ I/O เยอะๆ

Arduino Uno

Arduino Pro Mini

Arduino Mega 2560

ESP8266 NodeMCU 1.0 (v2) อย่าซื้อ V1, V3

ESP32 NodeMCU32
ในการลง Arduino IDE นั้นจะไม่ขอกล่าวถึงให้หาวิธีที่อธิบายมากมายใน Internet ครับ



Stellarium การตั้งค่า

หลังจาก ลง Stellarium เรียบร้อยแล้วสิ่งที่เราต้องทำคือการเชื่อมต่อกับ MCU โดยเสียบ MCUเข้าคอมก่อน และทำตามขั้นตอนตามนี้ครับ
-    ไปที่เมนูด้านซายมือ เลือก Configuration Window (หรือกด F2)
-    ไปที่ Plugins เลือก Telescope Control
-    Click Load at Starup
-    ออกโปรแกรม และเปิดใหม่

กดที่รูปกล้องดูดาว จะมี เมนูโล่งๆออกมา กด Configuration Telescopes



กด Add


ตั้งค่าแบบในรูป ชื่อตั้งตามใจเลย เลื่อนลงมา (หากต้องการให้มันต่อกับ MCU เองทุกครั้งเมื่อเปิดก็ click Start/Connect at startup ด้วย)


ตั้งค่า Port ให้ตรงกับที่ MCUใช้ แต่โดยปกติมันจะตรวจหาเอง แต่หากหาไม่เจอก็ต้องมาตั้งตรงนี้เอง Com ไหนดูที่ Device Manager ของ Windows ครับ
Device Model เป็น Meade LX200 (compatible) เพราะเราจะใช้ Code ส่งผ่านของ Model นี้ กด OK มันจะกลับมาหน้าเดิมก่อนหน้า


กด Star เพื่อเชื่อมต่อ แล้วปิดไป
ในขั้นนี้เราจะยังไปเห็นอะไรเพราะว่า MCU เรายังไม่มีโปรแกรมใดๆเลย
อนึ่งหากเราต้องการให้มีข้อมูลดาวเยอะก็ไปที่หน้า Configuration Window เข้า Tools และ กด Get Catalog มา มี 9 file อยากเยอะเท่าไรก็ Load มาครับ

ถึงตอนนี้ก็จบคร่าวๆของการเตรียมพร้อมทั่วไปครับ มาต่อกันคราวหน้า #3 ครับ
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่