※ 주의사항 ※
본 블로그는 수업 내용을 바탕으로 제가 이해한 부분을 정리한 블로그입니다.
본 내용을 참고로만 보시고, 틀린 부분이 있다면 지적 부탁드립니다!
감사합니다😁
안녕하세요!!
오늘은 아래와 같은 내용을 확인해보겠습니다.
DC모터 제어
서보(Servo)모터 제어
스텝(Step) 모터 제어
1. DC모터 제어
1-1. 모터 종류
1) DC 모터
- 최초로 만들어진 가장 간단한 형태
- 연속적인 축의 회전으로 전원이 끊어지는 경우에만 정지
- 정지 위치를 정확히 지정할 수 없음
2) 서보 모터
- DC모터 + 위치 보정을 위한 귀환 제어 회로
- 가격은 비싸지만 정밀한 위치 제어 가능
3) 스테핑 모터
- 펄스에 의해 일정한 각도를 회전하는 모터
- 제어가 간단하지만 분할각 단위로 이산적으로만 회전 가능
- 분할각이 1도인 경우 9.5도의 회전은 불가능 하다
1-2. DC모터 제어 방법
1) 모터 제어 모듈의 필요성
- 디지털 핀의 출력은 모터를 회전시키기에 충분한 전력을 공급할 수 없음
(트랜지스터 등을 사용하여 디지털 핀의 출력을 모터 전용 전원 제어를 위한 스위치로 사용)
- 전원 연결 방향을 구동 중 변결할 수 있어야 함
(위의 모듈은 2개의 브리지 회로를 사용해서 2채널 모터 제어가 가능함)
2) 모터 제어를 위한 결선 및 설정
- 모터 제어 모듈을 사용해서 제어를 하기 위해선 4개의 케이블을 결선해주어야 한다.
- 왼쪽부터 1,2,5,6번 핀에 PWM 신호를 입력함으로써 DC 모터의 방향과 속도를 제어한다.
- 1번,3번 타이머/카운터의 비교 일치 인터럽트를 이용해서 OCR1A를 통해 만들어낸 PWM신호는 B-1A에 연결하여 B채널을 정방향회전 동작 수행, OCR1B를 통해 만들어낸 PWM 신호는 B-1B핀에 연결해서 역방향회전 동작을 수행하게 된다.
- 나머지 2개의 핀은 DC MOTOR 및 보드에 공급되는 VCC, GND에 해당된다.
1-3. DC모터 제어 실습
1) 실습 코드
- PWM 관련 설정 : 8비트 고속 PWM모드, 비반전 모드, 64분주
- UART통신을 통해 사용자의 입력을 받아 모터를 약 6.4초간 속도 0 ~ 100%까지 동작
2) 실습 사진
- OC1A핀과 OC1B핀에 각각 PWM 파형이 들어오는것을 알 수 있다.
(위의 코드에 해당되는 PWM 파형은 아닙니다... 🤣)
- DC 모터가 1번 회전하고 멈추는 주기는 약 4s에 해당된다.(오실로스코프 격자 1칸 = 2s)
- PWM의 DUTY RATE에 의해 DC모터의 속도가 정해진다.
(DUTY RATE가 100%면 DC 모터의 속도는 최대가 된다.)
- B포트의 5번 6번핀을 출력으로 설정해서 LED도 같이 결선을 하면 LED가 점등될때 DC모터도 같이 동작함을 알 수 있다.
2. 서보(Servo)모터 제어
※ 서보 모터는 0 ~ 180도 회전하는 '표준 서보 모터'와 360도 까지 회전 가능한 '연속 회전 서보 모터'로 나뉘는데 본 실습에서 사용되는 서보 모터는 최대 180도 회전하는 표준 서보 모터에 해당됩니다!!
2-1. 서보모터 제어 방법
1) 서보모터 위치 제어
- 20ms 주기의 PWM 신호를 사용하여 위치 제어(Servo 모터만 20ms 고정)
- 듀티 사이클에 따라 회전 각도 제어
- 약 5~10%의 DutyRate로 0 ~ 180도 회전 각도 제어
(즉, 약 1 ~ 2ms의 주기로 최대 180도까지 회전 제어, 모델에 따라 상이함)
- 8비트 타이머/카운터를 사용하는 경우 정밀한 제어는 불가능 하다.
(8비트 타이머의 경우 256단계에서 5%는 약 12단계에 불과하기 때문에 정밀할수 없다. 1단계당 14도 회전)
2) 모터 제어를 위한 결선
- VCC : 붉은색
- GND : 갈색, 검정색
- 제어선 : 노란색, 주황색 (OCXn핀에 연결해서 사용)
2-2. 서보모터 제어 실습
- 고속 PWM 모드 ( TOP : ICR1), 8분주, 비반전 모드
- TOP 값 : 39999
- 서보모터 제어에 사용되는 PWM 신호의 주파수 :
내부 클록 주파수 / (분주율 * (TOP + 1)) = 16,000,000 ( 8 * (39999 + 1)) = 50Hz
- ADC를 통해 가변저항의 값을 받아서 가공하여 OCR1A 레지스터에 저장한다.
(OCR1A 값이 1000일때 0도 회전, 5000일때 180도 회전 한다. DUTY RATE : 2.5% ~ 12.5%)
- delay는 단순히 모터 동작 사이의 지연시간으로 모터 동작시간과는 전혀 관계가 없음
(LED 밝기 조절할때 while문안에 들어간 _delay_ms와는 의미가 다르다.)
3. 스텝(Step)모터 제어
3-1. 스텝모터 제어 방법
- 한바퀴의 회전을 많은 수의 스텝들로 나누어서 회전하는 모터
- 입력 펄스 수와 모터의 회전각도가 완전히 비례하므로 회전 각도를 정확하게 제어 가능
- 1상(Sigle Phase), 2상(Dual Phase), 1-2상(Single - Dual) 여자 방식
1) 1상 여자 방식
- 1개의 상씩 번갈아가면서 1개씩 펄스를 순차적으로 가하는 방식
- 단, 순서는 일정한 방향으로 순차적으로 나가야 한다.(징검다리 불가)
- 순서 : 1 → 2 → 3 → 4 → 1 →
※ MOTOR를 1바퀴 돌리는데 필요한 스텝의 수는 ??
- Speed Variation Ratio : 1/64 = 기어비 1/64 (한 바퀴 돌려면 64바퀴)
- Stride Angle : 5.625º/64 = 1스텝당 모터가 최소 회전하는 각도
- 1상 여자 방식으로는 (64*64) / 2 = 2048 Step, 1-2상 여자 방식으로는 64*64 = 4096 Step
2) 2상 여자 방식
- 1스텝에 펄스가 2개씩 들어간 형태
- 장점 : 모터의 토크(힘)가 크다
- 순서 : 12→ 23 → 34 → 41 → 12
3) 1-2상 여자 방식
- 1상과 2상 혼합 형태
- 장점 : 돌리는 각도가 절반, 즉 더 세밀하게 돌릴 수 있다.
- 순서 : 1 → 12 → 2 → 23 → 3 → 34 → 4 → 41 → 1 →
2-2. 스텝모터 제어 실습
- 모터 내부의 각 스텝에 해당되는 핀을 PORTB의 0 ~ 3번 핀에 연결
- 해당 핀을 출력으로 주고 for문을 통해 0 → 3 순서로 5ms간 HIGH 신호 출력 (정방향)
- 3 → 0의 순서로 5ms간 HIGH 신호를 주면 역방향으로 모터가 회전하게 된다.
- 위의 1상, 2상, 1-2상 여자 방식은 for문내에서 HIGH신호를 주는 핀의 패턴을 변경해주면 된다.
댓글