센서와 모터 구동 테스트

by 조경식 | 2016-10-06 23:10
easy driver mpu6050 스테핑모터 아두이노 아두이노 우노

재료

  • LiPo 충전지 1개
  • 아두이노 우노 1개
  • Easy Driver Module 2개
  • MPU6050 모듈 1개
  • Step Motor 2개
  • 볼트, 너트 1개

도구

  • 인두
  • 드라이버
  • 전선
  • 니퍼

첨부파일

센서와 모터 구동 테스트 


일단 집에 있던 아두이노 우노 보드, 스텝모터, 모터 드라이버와 MPU6050 관성 측정 장치를 사용하여 조립 해 봤습니다. 모터 드라이버 모듈은 A4988 모듈을 사용하지 않고 이전에 쓰던 Easy Driver 모듈을 사용 하였습니다. 무선랜 모듈 ESP8266도 아직 구매하지 못해 달지 못했습니다. 센서로 위치를 읽어 넘어지지 않고 모터가 정상적으로 제어되는지 테스트 했습니다. 


조립 


3D 프린터로 출력한 부품은 M3 나사와 볼트를 사용하여 조립 하였습니다. M3 20mm 나사와 볼트를 사용하여 top shelf 와 motor shelf를 Lateral 과 연결 하였습니다. 모터는 M3 5mm 나사를 사용하여 모터와 motor shelf와 lateral 에 연결 합니다.  자세한 조립 방법은 B-ROBOT 사이트를 참조 합니다.  


사용된 나사의 구입 사이트와 가격은 아래와 같습니다. 

Part Name부품명Model Name구입 사이트단가수량
Bolts볼트M3 x 20mm썬더볼트 코리아2000/100100
M3 x 5mm썬더볼트 코리아2000/100100
Nuts너트M3 썬더볼트 코리아900/100100



아두이노 우노 보드 위에 기판을 올리고 기판에 MPU6050 센서 모듈과 Easy Driver 모듈 2개를 붙였습니다.  밧데리는 드론에서 쓰던 LiPo 2S 충전지를 사용했고 팔은 아직 달지 않았습니다. 



프로그램


B-Robot 최신 프로그램 소스는 Github 에서 받을 수 있습니다.  

소스를 받아 아두이노 개발 환경에서 보드를 Arduino Uno 로 변경 하고 컴파일 하니 에러가 발생 했습니다. B-Robot 은 아두이노 레오나르도 기반으로 만들어져서 스텝모터를 16비트 타이머 인터럽트 2개를 사용하여 구동 하는데 우노에는 16비트 타이머가 하나밖에 없어  에러가 발생 합니다.


그래서 16비트 타이머 하나로 두 개의 모터를 같이 구동 시켰습니다. 

그랬더니 일단은 센서값 정상적으로 읽고 손으로 세워 주면 넘어지지 않고 제대로 잘 서 있고 살짝 움직이면 균형을 잡기 위해 자동으로 앞 뒤로 움직입니다. 




프로그램 변경 부분은 다음과 같습니다.

- 모터  Step, Dir 포트 변경

- MPU 6050 Interrupt  포트 변경.

- WIFI 모듈 사용 하지 않음.

- 서버 사용하지 않음.

- 타이머 인터럽트 1 만 사용하여 양쪽 모터 구동.

- 마이크로 스테핑 16에서 8로 변경 


변경된 소스는 첨부 하였습니다. 

댓글 1

MADE BY

조경식

3d modeling, 3d printer, 3d printing, blender tutorial, drone, Linux, programming, raspberry pi, schematic drawing, 아두이노
센서와 모터 구동 테스트 현재글 스테핑 모터 이전글