일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MIT앱인벤터
- 삼성sw
- 두봇
- SW역량 평가
- 공압
- Dobot
- 경기인력개발원
- 삼성SDS
- 코딩테스트
- 삼성전자
- 유압
- 근접센서
- 스마트팩토리
- 앱인벤터 강의
- 코테
- 동패동맛집
- SWEA
- 공유압
- 공유압기능사
- 앱인벤터 강좌
- 아두이노
- 앱인벤터
- 백준
- 지능형스마트팩토리구축실무(+AI)
- 파주맛집
- 센서
- C++
- AI컴패니언
- 삼성 코테
- 삼성코테
- Today
- Total
IT를 품은 기계공학도
3축 짐벌 프로젝트 - 3D프린터 출력 및 코드와 시연영상 본문
2020/08/27 - [아두이노 프로젝트/3축 짐벌] - 3축 짐벌 프로젝트 - 3D설계와 자이로 센서(MPU6050) 각도 읽어오기
3D 출력물과 조립
지난 번 포스팅에서는 3D 프린팅을 위한 설계와 자이로 센서의 값을 받아오는 것을 하였다.
이번 주에 모터랑 나사들이 도착했는데.. 안타깝게 설계실 수로 인해 사포질과 구멍 내기 작업을 직접 손으로 했다.
출력물은 꽤 깔끔하게 나왔다!! 서보모터를 껴보니 딱 중간끼워맞춤이 잘 돼있었다!
모터가 딱딱 들어가고 나사들도 딱 맞아떨어지니 기분이 좋았다.
조립하고 나니 제법 그럴싸한 짐벌이 완성된 것 같다. 하지만 아직 배선이 남았다는 것!..
아두이노 보드와 브레드보드 그리고 모든 선들을 본체 안에 넣어버렸다. 그 결과 나름 깔끔한(?) 외형을 갖게 되었다.
코드와 실험
우선 모터를 3개 돌리려면 한 개부터 돌릴 줄 알아야 한다.
#include <Servo.h>
int Servo_Pin1 = 9;
Servo Servo1;
void setup() {
Servo1.attach(Servo_Pin1);
}
void loop() {
Servo1.write(90);
delay(1000);
Servo1.write(0);
delay(1000);
Servo1.write(180);
delay(1000):
}
아주 간단한 예제이다 모터의 신호선을 9번 핀에 꽂고 코드를 실행하면 위와 같이 실행이 될 것이다.
모터 3개를 돌려보자!
#include <Servo.h>
int Servo_Pin1 = 9;
int Servo_Pin2 = 10;
int Servo_Pin3 = 11;
Servo Servo1;
Servo Servo2;
Servo Servo3;
void setup() {
Servo1.attach(Servo_Pin1);
Servo2.attach(Servo_Pin2);
Servo3.attach(Servo_Pin3);
}
void loop() {
Servo1.write(90);
Servo2.write(90);
Servo3.write(90);
delay(1000);
Servo1.write(0);
Servo2.write(0);
Servo3.write(0);
delay(1000);
Servo1.write(180);
Servo2.write(180);
Servo3.write(180);
delay(1000):
}
3개라고 뭐가 달라지겠냐만, 서보 객체를 좀 더 선언해주었을 뿐 큰 어려움은 없다. 라이브러리를 사용하니까 코드가 굉장히 간단해진다! 마지막으로 최종적으로 자이로 센서까지 연결해 준 뒤 아래와 같은 코드를 넣어준다. 그냥 라이브러리 두 개를 합쳐 놓았을 뿐.. 어려운 것은 없다.
최종 코드이다. 혹시 코드가 오작동하거나 궁금한 점이 있다면 언제든지 코멘트 부탁드립니다.
//All copyright 2020.8.30 공돌학사. All rights reserved
//If you have a any question, Send me a E-mail
//My email address : kaingsik4@naver.com
//라이브러리를 불러옵니다.
#include <Servo.h>
#include <MPU6050_tockn.h>
#include <Wire.h>
//MPU6050 객체 선언
MPU6050 mpu6050(Wire);
//SERVO 신호 선 설정 및 서보 객체 선언.
int Servo_Pin1 = 9;
int Servo_Pin2 = 10;
int Servo_Pin3 = 11;
Servo Servo1;
Servo Servo2;
Servo Servo3;
//X,Y,Z축 각도를 받아올 변수 선언
int Deg_X;
int Deg_Y;
int Deg_Z;
//시작 될 때 한번 설정
void setup() {
//MPU사용 ON
Serial.begin(19200);
Wire.begin();
mpu6050.begin();
//서보모터 사용할 핀 연결
Servo1.attach(Servo_Pin1);
Servo2.attach(Servo_Pin2);
Servo3.attach(Servo_Pin3);
// 서보모터 초기 각도 설정
Servo1.write(90);
Servo2.write(90);
Servo3.write(90);
}
void loop() {
mpu6050.update();
Deg_X = mpu6050.getAngleX();
Deg_Y = mpu6050.getAngleY();
Deg_Z = mpu6050.getAngleZ();
Servo1.write(90-z);
Servo2.write(90+y);
Servo3.write(90+x);
}
그리하여 최종 영상!
마치며
이번 프로젝트는 뭐 제어기법이 들어가거나 한 부분은 하나도 없다. 모터의 다이나믹 특성도 이미 라이브러리에서 다 잡혀있고, 자이로의 값을 얼마나 정확히 받아오냐가 이번 프로젝트의 핵심이었던 것 같다. 한 가지 아쉬운 점은 서보모터의 미세한 진동과 내 손떨림은 잡지 못했지만. 이번 프로젝트는 이쯤에서 마무리하려고 한다. 짧았지만 첫 프로젝트 포스팅인 만큼 부족한 점이 참 많은 것 같다. 혹시 프로젝트를 역설계하시다가 모르는 부분이 있으면 언제든지 코멘트 부탁드립니다 :)
'아두이노 프로젝트 > 3축 짐벌' 카테고리의 다른 글
3축 짐벌 프로젝트 - 3D설계와 자이로 센서(MPU6050) 각도 읽어오기 (1) | 2020.08.27 |
---|