코스트코 망원경(이하, 코동)으로 관측을 해보면 초점을 맞추느라 망원경을 건드리면 상하좌우로 움직이는 경우가 많습니다.





특히, 높은 배율로 행성을 본다면 살짝 건드려도 화각을 벗어날 수 있습니다.
검색해보면 이미 선배님들께서 '전동 포커서'를 자작하거나 제작하여 동호회에서 나누어 가진 적이 있음을 알 수 있습니다. 일단 공구 시간도 지났으니 구하기 쉽지 않을 것 같고, 아이디어는 이미 다 나와 있으므로 직접 만들어 보기로 했습니다.


아두이노 프로 미니 3.3V와 블루투스 모듈 HC-06을 적용하고, 스마트폰의 Arduino bluetooth controller앱을 써서 제어를 하는 방식입니다.
아래 사진 Arduino bluetooth controller 앱의 설정을 보면 조이스틱 버튼을 누를 때마다 특정 문자를 매핑하여 보낼 수 있는데, 그 문자를 아두이노 프로 미니에서 받으면 모터를 돌리도록 아두이노 코드를 간단하게 짰습니다. 대충 작성했지만 아래 쪽에 첨부했습니다.

사진 좌측으로부터, 12V 10rpm 모터와 20T-40T 타이밍 벨트, 아두이노 블루투스 모듈, L298N 모터 드라이버, 아두이노 프로 미니가 연결되어 있습니다.
철판 등으로 모터 거치대를 만들어야 하는데, 임시로 종이상자를 써서 테스트해 보았습니다.
* 작동 동영상 => https://youtu.be/qgMyDcuV9as


위 사진을 보면 타이밍벨트가 느슨한데, 종이상자가 눌려서 그렇습니다.
[향후 개선할 부분]
- 제대로 된 모터 지지대를 철판을 구부려서 제작(아래 모터 부분 블로그에서는 3D 프린팅을 하셨습니다)
- 모터가 강력하여 손으로 돌릴 수 없으므로, 타이밍벨트를 헛돌게 할 수 있는 방법 찾기 - 현재는 전동으로만 초점을 조절할 수 있는 문제가 있습니다.
- 실전에 맞추어 모터 회전 수를 조정
1) 모터
- 생각보다 10rpm 모터 찾기가 어려웠습니다. 결국 아마존에서 Greartisan 12V 10rpm 모터를 구입했습니다. Aliexpress에서도 하나 샀지만, 설이 끼면서 배송도 너무 느렸고 빠르게 도착한 아마존 모터가 워낙 튼튼하고 강력해서 따로 테스트는 안 했습니다.
- 10rpm을 고른 이유는 선배님들의 가르침으로,,, 참고: https://m.blog.naver.com/taifight/220801984510 위에 링크한 동작 영상을 보시다시피, 10rpm정도면 적당하다는 느낌이 듭니다.
2) 타이밍 벨트
- 모터 찾기만큼 어려웠습니다.
- https://www.aliexpress.com/item/33005589716.html?spm=a2g0o.order_list.0.0.21ef18020OZmtK 에서 6mm-20T, 10mm-40T를 선택했는데, 코동의 초점 휠을 빼낸 후 재보면 8mm가 조금 넘는 정도이지만 10mm로 구입했습니다. 대신 부족한 부분은 뭔가로 메꾸어야겠지요.
3) 아두이노 프로 미니 3.3V
- 아두이노 블루투스 모듈 HC-06과 통신할 때를 위해 3.3V로 사야 편안합니다. 5V로 사면 레벨컨버터나 저항을 달아야 할 거예요.
4) 아두이노 블루투스 모듈 HC-06
- BLE 버전도 있지만, 오래되어도 단순 무식한 것이 간단합니다. Arduino bluetooth controller앱을 Play 스토어에서 받고 나서 조이스틱 버튼마다 명령어 글자를 매핑해 줍니다.
- 좌측: L, 상향: U, 우측: R, 하향: D
- 좌우측 방향은 1초간, 위아래 방향은 4초간 모터를 구동해 보았습니다.
5) L298N 모터 드라이버
- 12V를 넣고 모터 제어 12V와 아두이노 프로 미니 구동용 5V전원을 공급해 줍니다. 구입한 아두이노 프로 미니는 3.3V버전이므로 VCC에 연결하면 안되고, 5V선은 RAW핀에 연결해야겠습니다.
6) USB to 12V 레벨업 컨버터 700mA
- 20000mA짜리 외장 배터리로부터 12V를 공급하면 되겠습니다.
7) 아두이노 모터 구동 테스트 코드
#include <SoftwareSerial.h>
int motor_1 = 10;
int motor_2 = 9;
int motor_latest = 0;
SoftwareSerial BTSerial(2,3);
void setup() {
// put your setup code here, to run once:
pinMode(motor_1, OUTPUT);
pinMode(motor_2, OUTPUT);
Serial.begin(9600);
BTSerial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
byte ch;
if (BTSerial.available()) {
ch = BTSerial.read();
if (ch == 'L' || ch == 'U') {
analogWrite(motor_1, 255);
digitalWrite(motor_2, 0);
motor_latest = 1;
} else if(ch == 'R' || ch == 'D') {
digitalWrite(motor_1, 0);
analogWrite(motor_2, 128);
motor_latest = 2;
}
}
if (motor_latest == 1){
delay(1000);
if (ch == 'U') delay(4000);
analogWrite(motor_1, 0);
motor_latest = 0;
} else if (motor_latest == 2){
delay(1000);
if (ch == 'D') delay(4000);
analogWrite(motor_2, 0);
motor_latest = 0;
}
}
2022-05-14 추가
- 몇 천원짜리 CCTV 각도기 거치대를 써서 모터를 고정해 보았습니다. - http://imky.egloos.com/3292287
덧글