2 điểm bởi GN⁺ 2025-08-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tác giả đã chế tạo một mount kính thiên văn tùy chỉnh bằng gear harmonic wave (harmonic drive)vi điều khiển ESP32
  • Do mount tracking thương mại có giá rất cao, tác giả đã chọn tự thiết kế và chế tạo theo hướng DIY
  • Bài viết mô tả chi tiết toàn bộ quá trình thiết kế, gồm thiết kế và chế tạo PCB, dựng mô hình 3D bằng FreeCAD, lựa chọn linh kiện cấu thành, v.v.
  • Tổng chi phí chế tạo vào khoảng 1.700 euro, và nếu tính theo đơn giá cho 1 bộ thì đạt năng lực cạnh tranh so với sản phẩm thương mại
  • Tác giả chia sẻ hiệu năng chụp thiên văn thực tế và kinh nghiệm cải tiến thông qua việc tích hợp mount tự chế với firmware OnStepX

Điểm khởi đầu mới

Vài năm trước, tác giả được truyền cảm hứng từ một kênh YouTube về chụp ảnh thiên văn và bắt đầu quan tâm đến astrophotography. Tác giả thử chụp tinh vân Orion bằng cách chụp hàng trăm ảnh phơi sáng ngắn trên tripod rồi ghép lại bằng phần mềm Siril. Tuy nhiên, sau khi nhận ra sự cần thiết của thiết bị tracking, tác giả đã mua tracker Move Shoot Move, nhưng vì khó tìm thiên thể mục tiêu, khó căn cực và kết quả chưa như mong đợi, nên dần quan tâm đến việc tự chế một mount kính thiên văn bài bản hơn.

Mở rộng kinh nghiệm làm PCB

Năm 2024, tác giả tình cờ xem được video YouTube về thiết kế PCB tùy chỉnh, từ đó học cách sử dụng PCB sản xuất thực tế gọn gàng và rẻ hơn thay cho breadboard tạm bợ trước đây. Dự án đầu tiên là một bộ điều nhiệt thông minh dùng ESP32, màn hình e-paper và cảm biến BME680. Dựa trên kinh nghiệm đó, tác giả quyết định áp dụng trực tiếp kỹ thuật thiết kế và sản xuất PCB vào mount kính thiên văn của mình.

Nghiên cứu nghiêm túc và tận dụng tài nguyên cộng đồng

Thiết kế được xây dựng xoay quanh việc chọn harmonic drive. Tác giả đã dành nhiều thời gian nghiên cứu chọn linh kiện và cấu trúc cơ khí, tham khảo AliExpress cùng mã nguồn mở từ nhiều cộng đồng DIY khác nhau như HEMY, HrEM, DHEM, DIY EQ Mount V2. Đồng thời cũng khảo sát nhiều triển khai mã nguồn mở và thông tin cộng đồng liên quan đến động cơ stepper/servo, điều khiển FOC, SimpleFOC, v.v.

Quyết định thiết kế và cấu trúc

  • Trục RA (xích kinh/đích xích đạo): servo 42AIM15 + harmonic drive Type 17 (tỉ số truyền 100:1)
  • Trục DEC (xích vĩ): stepper MKS Servo042D + harmonic drive Type 14 (tỉ số truyền 100:1)
  • Mount và housing: dùng plate Arca Swiss, tương thích với wedge Move Shoot Move
  • Chế độ vận hành: GEM (xích đạo) hoặc ALTAZ (ngang-dọc)
  • Vi điều khiển: ESP32-S3
  • Nguồn điện: USB-C PD tối đa 24V/4A
  • Điều khiển động cơ: step/dir/en, ULN2003 + MODBUS, CANBUS
  • Khả năng mở rộng: đưa các chân GPIO còn lại ra ngoài
Quảng cáo

Nhờ các đặc tính microstep và điều khiển servo theo từng động cơ, thiết kế được đơn giản hóa đồng thời cải thiện độ chính xác tracking. Việc thay đổi microstep động qua CANBUS giúp hiện thực sự cân bằng giữa slew tốc độ cao (di chuyển vị trí nhanh) và tracking chính xác.

Thiết kế PCB và vượt qua sự cố

  • Thiết kế PCB hình bán nguyệt bằng KiCad để khớp chính xác với case
  • Dùng module ESP32-S3 không anten để tăng độ tự do khi bố trí, đồng thời áp dụng mạch nguồn vào USB-C (tối đa 24V)
  • Sử dụng mạch mã nguồn mở PicoPD và IC AP33772. Chọn đầu nối JST PH series để có kết nối nhỏ gọn nhưng tải tốt
  • Trong quá trình thay IC ban đầu, tác giả từng gặp lỗi đấu dây I2C và hoạt động sai, sau đó giải quyết ở phiên bản thứ hai bằng cách tăng cường kiểm chứng và bổ sung nhiều test point

Tích hợp firmware OnStepX

Áp dụng firmware mã nguồn mở OnStepX để hỗ trợ điều khiển kính thiên văn và giao tiếp WiFi. Ban đầu, khi slew (di chuyển điểm ngắm nhanh), ESP32 gặp vấn đề ổn định do quá tải; điều này được khắc phục bằng giảm tốc độ slew và chuyển sang chế độ WiFi client. Tác giả chỉ cần thêm file pin layout phù hợp với OnStepX cùng đoạn mã điều khiển microstep động là đã tích hợp thành công mà hầu như không cần sửa đổi gì thêm.

Quy trình sản xuất và lắp ráp

Cả PCB lẫn gia công kim loại CNC đều được thực hiện tại JLCPCB. Tác giả đã đưa ra một lựa chọn khá táo bạo là đặt CNC chỉ dựa trên bản vẽ CAD mà không in thử 3D trước, và vẫn nhận được độ chính xác linh kiện rất đáng hài lòng. Tuy vậy, vẫn có lỗi thiết kế ở nắp trục xích đạo, nhưng được xử lý đơn giản bằng spacer. Tất cả linh kiện đều có thể lắp ráp chỉ với ren taro M3/M4 và bắt vít. Việc tự taro thủ công cũng giúp giảm chi phí sản xuất.

Quảng cáo

Kinh nghiệm vận hành thực tế

Tác giả đã tích lũy kinh nghiệm thực chiến sau rất nhiều lần thử-sai với căn cực, thiết lập phần cứng và cấu hình phần mềm (INDI, KStars, Ekos, PHD2). Trong những lần vận hành đầu tiên, việc chụp thất bại xảy ra thường xuyên do nhiều vấn đề lớn nhỏ, nhưng sau quá trình ổn định, hệ thống đạt độ chính xác 1–2 arcsecond, đủ để chụp phơi sáng 30 giây với ống kính 600mm. Tác giả dùng Siril để ghép ảnh và đang tiếp tục hướng tới các mục tiêu khác như ghép ảnh multi-night.

Chi phí chế tạo và tính kinh tế

Tổng chi phí vào khoảng 1.700 euro (= bao gồm dụng cụ, phần cứng và linh kiện dự phòng cho nghiên cứu ban đầu). Nếu quy đổi theo giá thành cho 1 bộ thì vào khoảng 800 euro. So với mount GOTO thương mại (1.200–4.000 euro), giải pháp này cho thấy hiệu quả kinh tế cao, nhưng tác giả nhấn mạnh rằng trải nghiệm tự tay làm ra còn ý nghĩa hơn nhiều.

Đơn giá chi tiết theo từng hạng mục (tóm tắt các mục chính)

  • Harmonic drive (2 cái): 144 euro
  • MKS và servo motor (mỗi loại 2 cái): 73~216 euro
  • Linh kiện CNC: 215 euro
  • PCB, đầu nối, ốc vít, dụng cụ và các hạng mục khác

Kết luận và cảm nghĩ

Tác giả nhấn mạnh rằng trải nghiệm tự tay làm và quá trình giải quyết vấn đề, cùng toàn bộ vòng lặp thiết kế-sản xuất-kiểm chứng, mang lại ý nghĩa lớn hơn cả việc mua sản phẩm thương mại. Thất bại của PCB Version 1 cũng giúp rút ra bài học về tầm quan trọng của việc kiểm chứng cẩn thận. Tác giả học được nhiều điều trong quá trình nâng cao kỹ năng với FreeCAD, KiCad, tận dụng mã nguồn mở và phát triển phần cứng từ đầu đến cuối. Nhờ firmware OnStepX và tài nguyên cộng đồng, dự án mount kính thiên văn DIY được chứng minh là điều người bình thường cũng có thể thực hiện.

Tự tay làm ra và hiểu hoàn toàn chiếc mount theo dõi các vì sao của riêng mình — cảm giác thành tựu đó thực sự vô cùng đáng giá.

1 bình luận

 
GN⁺ 2025-08-20
Ý kiến trên Hacker News
  • Giải thích rằng sợi cáp đi ra từ bộ cấp nguồn USB-C sẽ đóng vai trò như một cuộn cảm, tức tạo thành cấu trúc bộ lọc LC và hoạt động như một bộ lọc thông thấp, vì vậy cần có tụ điện on-board; khi động cơ đột ngột tiêu thụ dòng lớn, do đặc tính của cuộn cảm nên dòng điện không thể tăng ngay lập tức, nên tụ điện sẽ cấp dòng thay thế trước, sau đó cuộn cảm mới dần dần truyền dòng

  • Đây thực sự là một dự án và phần giải thích rất tuyệt, lại còn đúng thời điểm; từ năm 13 tuổi tôi đã mê thiên văn học nghiệp dư, từng sở hữu nhiều kính thiên văn và đã dành rất nhiều thời gian ngắm bầu trời đêm cùng gia đình; gần đây tôi lôi chiếc SCT 10 inch và Newtonian 4 inch ra để cho cậu con trai 7 tuổi xem Mặt Trăng và Sao Thổ, bố mẹ tôi cũng có thể xem cùng nên điều đó rất ý nghĩa; chiếc SCT 10 inch đang đặt trên một fork mount đời cũ không có chức năng GOTO; tôi cũng từng tìm hiểu lợi ích của GOTO, nhưng vì vẫn thích thú với niềm vui tự mình tìm sao nên chưa đi đến quyết định mua; tôi thì đã mua camera làm mát chuyên dụng ZWO 585MC; mặt khác, tôi cũng đã nhiều lần mất rất nhiều thời gian chỉ để tìm sao; Telrad thôi là chưa đủ, nên tôi cũng từng nghĩ đến việc tự làm một mount bên thứ ba bằng máy in 3D và kiến thức điện tử của mình; tôi cũng từng cân nhắc thay động cơ sang stepper NEMA 17; trong quá trình tìm hiểu thì tôi biết đến dự án PiFinder, có vẻ như đây là sự cân bằng hoàn hảo giữa tự động hóa và dẫn hướng thủ công https://www.pifinder.io/, và tôi cảm thấy chắc chắn rằng nhờ sự phát triển của công nghệ in 3D và sản xuất PCB, rất nhiều vấn đề sẽ sớm được giải quyết

    • Đọc ý kiến nói rằng GOTO không thú vị làm tôi lại một lần nữa thấy gu của mọi người thật đa dạng; còn tôi thì ngược lại, phần tìm vật thể là thứ hợp với tôi ít nhất nên tôi rất biết ơn mount goto
    • Nếu kết nối camera ZWO với Kstars/EKOS thì có thể dùng plate solving trong phần mềm để xác định chính xác đang hướng vào đâu và điều chỉnh theo đó
  • Nhân nói một điều về trace mạch trong dự án tuyệt vời này: tác giả nói đã làm trace quá rộng để hỗ trợ 24V, nhưng thực ra điện áp càng cao thì dòng điện càng thấp, nên ngược lại có thể để hẹp hơn cũng được; bề rộng trace được quyết định theo dòng điện, còn khoảng cách giữa các trace mới là phần cần chú ý theo điện áp

  • Trích từ blog: "khi di chuyển kính thiên văn tới mục tiêu, số lượng xung gửi tới động cơ tăng lên và gây quá tải cho ESP32 nhỏ bé"; tôi cũng làm công việc điều khiển stepper motor chính xác ở tốc độ cao, và không thể chấp nhận dù chỉ một chút mất xung hay glitch nào; lõi MCU có giới hạn nên tôi điều khiển bằng timer + DMA; cuối cùng tôi tận dụng tính năng ACT (Advanced Control Timer) của MCU STM32G4; với chỉ DMA thì việc tạo dạng sóng tùy ý rất dễ, nên dù lõi có quá tải hay vào sleep mode thì timer cũng không bị ảnh hưởng; dạo này tôi cũng đang cân nhắc PIO của RP2350; ESP32 có MCPWM, nhưng để triển khai profile tăng tốc/giảm tốc phức tạp theo kiểu 100% không phụ thuộc lõi thì phải dùng timer kiểu phân tầng hoặc dùng interrupt, mà như vậy lại phụ thuộc vào lõi và có khả năng xuất hiện glitch; ACT của ST là timer độc lập cho từng động cơ nên cách triển khai đơn giản, chỉ cần đọc kỹ datasheet; dùng IC driver chuyên dụng (như Trimanic) cũng là một cách, nhưng độ phức tạp phần mềm lại còn cao hơn cách của tôi

    • Theo tôi biết thì OnStepX dùng kiểu dựa trên xung; tôi vẫn chưa gặp cách tận dụng DMA; tôi nghĩ cả hai bên đều có thể chạy ở chế độ lệnh vị trí qua CANBUS thay vì điều khiển bằng xung; tôi cũng thấy khả năng đó trong mã OnStepX, nhưng chế độ xung quá dễ để bắt đầu nên tôi cứ chọn vậy
    • Khi điều khiển stepper trên rp2040 tôi cũng từng nghĩ đến PIO, nhưng do bộ đếm 5 bit và giới hạn 32 lệnh nên khá khó dùng; thay vào đó tôi dùng lõi thứ hai chuyên cho motion control và xuất tín hiệu step/dir bằng bit-bang, thế là đủ dùng cho profile hình thang đơn trục
    • Nếu tò mò MCU có thể đi xa đến đâu trong điều khiển stepper, tôi khuyên nên tham khảo firmware máy in 3D Merlin; ngay cả MCU AVR 8-bit nhỏ cũng có thể xử lý các phép tính phức tạp cho máy in delta
    • Hình như ESP32 cũng có RMT; không biết anh có cân nhắc cách đó không
  • Tôi đã dùng freeCAD được 3 năm, và nhìn kết quả tạo ra trong dự án này tôi thật sự rất khâm phục; tôi thích freeCAD, nhưng cũng hiếm có trải nghiệm nào dai dẳng bất tiện và bực bội đến thế

    • Tôi biết ơn FreeCAD, nhưng khi độ phức tạp dự án tăng lên thì những lần crash ngẫu nhiên thực sự khiến tôi khổ sở; dù vậy, phần lớn thứ mình cần vẫn có thể làm được trong FreeCAD nếu biết cách; việc chưa từng dùng CAD khác lại vô tình là lý do khiến tôi gắn bó với freeCAD
    • Tôi đã làm model hobby bằng FreeCAD 7 năm rồi, nhưng ở những tính năng lần đầu dùng thì trải nghiệm người dùng vẫn làm tôi thấy ngột ngạt; tôi là lập trình viên FE nên biết tiêu chuẩn QA, và freeCAD có nhiều UX không đạt nổi các tiêu chuẩn đó; khi tôi tìm diễn đàn để hiểu sự khác nhau giữa lỗi và cảnh báo overconstraint, tôi chỉ thấy đầy những bài viết biện hộ cho chính sách có chủ đích đó nhân danh hiệu năng, và bầu không khí gatekeeping của các power user mới là vấn đề thực sự; họ rất cần một chuyên gia UX tử tế và một community manager
    • Tôi dùng xen kẽ OnShape và FreeCAD, và luôn ấn tượng với độ hoàn thiện trau chuốt của OnShape; chỉ là vì các model tôi đã mua nên không thể đưa chúng lên gói miễn phí của OnShape; với FreeCAD thì vẫn làm được, nhưng cứ nghĩ "chắc trong một tiếng là xong" thì rốt cuộc lại thức trắng đêm
    • Việc FreeCAD tồn tại đã là rất tuyệt, và tôi kỳ vọng nó sẽ trưởng thành hơn trong tương lai; nhưng nếu muốn ra kết quả nhanh thì tôi khuyên dùng gói miễn phí của Autodesk Fusion; về nguyên tắc có thể không hợp với người chỉ dùng OSS, nhưng với nhu cầu hobby thì chất lượng tốt và gần như không có ràng buộc thực tế; có vẻ như cứ không phải OSS là bị xa lánh, nhưng tôi mong mọi người có thể mở rộng lựa chọn phần mềm theo hướng lấy tính năng làm trung tâm
    • ChatGPT và Claude giúp ích rất nhiều cho kiểu công việc này; với những phần mềm có tài liệu tương đối ổn, AI có thể giải thích rất thân thiện từng bước của workflow; ở những lĩnh vực quá chuyên sâu hoặc thiếu tài liệu tham chiếu thì vẫn có giới hạn, nhưng nó nhanh hơn nhiều so với việc nhắm mắt bấm thử lung tung hoặc tua nhanh YouTube; bạn còn có thể yêu cầu nó tạo cả study guide để xây nền khái niệm; chỉ có điều phải luôn yêu cầu link/tài liệu tham khảo vì AI vẫn có thể hallucinate hoặc sai
  • Tôi rất quan tâm đến các dự án dùng chính telescope mount để thực hiện đo đạc chính xác, chẳng hạn như tự làm astrometry hành tinh; cảm giác việc tự mình giải được quỹ đạo hành tinh chỉ từ đo đạc giống như đang đi lại con đường mà các nhà thiên văn xưa như Kepler từng đi

    • Chủ đề này thực sự rất thú vị; vượt ra ngoài thú vui chụp ảnh đẹp, tôi từng nghĩ đến việc thiết kế một hệ thống để dữ liệu quan sát nghiệp dư có thể phục vụ nghiên cứu; nếu chia sẻ frame gốc đơn lẻ và metadata như thời gian, tọa độ, calibration frame v.v. thì về mặt tập thể có thể dùng cho nghiên cứu khoa học hoặc tạo ra ảnh đẹp hơn; Vera C. Rubin Observatory (đài thiên văn tại Mỹ) có thể chụp toàn bộ bầu trời Nam bán cầu chỉ trong vài ngày; sẽ thật tuyệt nếu phần mềm như vậy phát triển thành một mảng thiên văn crowdsourcing toàn cầu
    • Thực ra để biết chính xác vị trí của hành tinh, cách chính xác hơn nhiều so với việc hiệu chỉnh vị trí của telescope mount là chụp ảnh với hành tinh ở giữa rồi tính ra vị trí của nó bằng cách so với tọa độ cố định của các ngôi sao xung quanh; việc hiệu chuẩn hoàn hảo bản thân mount gần như là bất khả thi; cách dùng tọa độ tương đối với sao thì cực kỳ chính xác
    • Một dự án thú vị khác là đo đường cong ánh sáng transit của ngoại hành tinh; các ngoại hành tinh gần đó có thể quan sát ngay từ sân sau nhà chỉ với ống kính chụp ảnh; ví dụ là một ca quan sát của một amateur dùng ASI178MM-c và Canon FD 300mm https://astropolis.pl/topic/60163-wasp-10-b-w-pegazie-1270-mag-00340-mag/
    • Dù không hẳn là first principles hoàn toàn, vẫn có người dùng Seestar S50 roboscope và lưới tán sắc để đo phổ phát xạ của sao
    • Nhân tiện thì Kepler nghiên cứu từ dữ liệu quan sát bằng mắt thường của Tycho, không dùng kính thiên văn
  • Dự án thực sự rất tuyệt, nhưng khi thiết kế PCB có vẻ như tác giả chưa đưa vào các tụ điện, điện trở v.v. đúng chuẩn nên độ ổn định của vi điều khiển bị giảm; tôi tò mò mọi người thường xác định các linh kiện cần thiết như thế nào, chẳng hạn tụ decoupling; có phải chỉ cần đọc datasheet rồi thêm mọi thứ theo đó không

    • Kiểm tra datasheet là bắt buộc; phần lớn đều có ví dụ mạch bắt buộc phải tham khảo; ngoài ra, những thói quen tốt là đặt tụ decoupling gần chân chip, giữ ground ổn định và đi theo reference layout; việc xem các kỹ sư giàu kinh nghiệm giải thích quá trình ra quyết định (ví dụ: https://www.youtube.com/watch?v=aVUqaB0IMh4) cũng giúp ích rất nhiều
    • Gần như mọi datasheet linh kiện đều có mạch tối thiểu và reference design; các vấn đề như dùng ground plane hay chiều dài đường tín hiệu thường được giải thích riêng trong application note
    • Khi thiết kế mạch vi điều khiển, lấy các dev board có sơ đồ mạch công khai làm tham chiếu sẽ rất dễ xác định điểm khởi đầu
    • Cùng với việc xem datasheet, nếu đặt tụ decoupling càng gần càng tốt cho mọi chân nguồn và để một mặt PCB làm ground plane thì phần lớn vấn đề sẽ được giải quyết
  • Điều khiến tôi đặc biệt ấn tượng là việc đặt làm các chi tiết kim loại CNC; tôi cũng là người mới học thiết kế CAD và muốn học theo

    • Hãy đăng ký một makerspace địa phương để dùng xưởng máy; tôi đã được đào tạo và cấp chứng nhận để dùng máy CNC, rồi thử thiết kế bằng CAD những tấm kim loại đơn giản cho thiết bị quay phim; ở đó có trình tạo G-code đơn giản và cả trình mô phỏng để kiểm tra va chạm; nhưng mỗi lần tôi định bắt tay vào làm thì lại có ai đó làm hỏng đầu máy nên thiết bị bị tắt; cuối cùng tôi làm thủ công nên một vài kích thước không khớp hoàn hảo; nếu biết có dịch vụ CNC từ trước thì tôi đã giao cho CNC làm luôn rồi
    • Thực ra cực kỳ đơn giản, chỉ cần tải file step lên là có thể xem báo giá và khả năng gia công ngay https://jlccnc.com/cnc-machining-quote
  • Dự án thật sự rất tuyệt; tôi tò mò chi phí làm PCB có chủ yếu do khâu assembly không, vì nếu theo JLCPCB thì bo 2 lớp, dưới 100mm, hoàn thiện HASL và các tùy chọn cơ bản vốn rất rẻ; không biết khe slot cho plate gắn đầu nối USB có phát sinh chi phí không, một lần anh đặt lắp ráp mấy bo, tỷ lệ chọn linh kiện từ thư viện tiêu chuẩn/mở rộng là bao nhiêu, nếu chỉ tự hàn riêng các đầu nối thì chi phí sẽ khác thế nào, và có đúng là chỉ cần có dù một linh kiện từ thư viện mở rộng thì toàn bộ linh kiện đều bị tăng chi phí picking riêng lẻ, nên chìa khóa tiết kiệm là giảm tối đa số chủng loại linh kiện không

    • Đúng là phần lớn chi phí đến từ assembly; bo dùng JLCPCB 2 lớp với tùy chọn cơ bản, chỉ đổi màu sang đen nên tăng nhẹ; tôi đặt mỗi lần năm cái và đó là số lượng tối thiểu; tôi cố gắng khớp tối đa với thư viện tiêu chuẩn nhưng ngoài linh kiện thụ động thì khá khó; các linh kiện through-hole thì tôi tự hàn nên không biết chênh lệch chi phí, nhưng nhỏ đến mức tôi không bận tâm; đúng là nên giảm số chủng loại linh kiện, ví dụ nếu cần điện trở 4k và 6k thì ghép năm con 2k sẽ có lợi hơn
  • Dự án thật sự rất ấn tượng; tôi cũng từng muốn mua một harmonic drive mount cỡ lớn cho scope của mình, nhưng rào cản giá quá cao; tôi cũng gặp nhiều lần mò khi dùng các công cụ EKOS/Kstars/INDI, và nếu cần điều khiển thiết bị indi từ Python thì tôi có đoạn mã tự viết này https://github.com/dahlend/contindi

    • Tôi tò mò điều gì thúc đẩy anh viết đoạn mã đó, vì bản thân EKOS có vẻ cũng có chức năng scheduling khá tốt; tôi cũng từng chạy INDI server trên máy tính mini MeLE 4C và viết một terminal interface (TUI) https://www.svendewaerhert.com/content/blog/telescope-mount/inditui.png, sau đó chuyển sang INDI server kiểu headless/remote vì vấn đề độ ổn định của GNOME Remote Desktop; sắp tới tôi cũng định dọn dẹp lại mã TUI rồi đưa lên Github