본문 바로가기
대한상공회의소 스마트팩토리 교육/IoT 디바이스 개발

[IoT 디바이스 개발] AVR(ATmega128A)«수업-16» : 모터 제어(DC Motor, Servo Motor, Step Motor)

by 나는영하 2022. 2. 20.

※ 주의사항 

본 블로그는 수업 내용을 바탕으로 제가 이해한 부분을 정리한 블로그입니다.
본 내용을 참고로만 보시고, 틀린 부분이 있다면 지적 부탁드립니다!

감사합니다😁

 

안녕하세요!!

오늘은 아래와 같은 내용을 확인해보겠습니다.

 

DC모터 제어

서보(Servo)모터 제어

스텝(Step) 모터 제어


1. DC모터 제어

1-1. 모터 종류

1) DC 모터

- 최초로 만들어진 가장 간단한 형태

- 연속적인 축의 회전으로 전원이 끊어지는 경우에만 정지

- 정지 위치를 정확히 지정할 수 없음

2) 서보 모터

- DC모터 + 위치 보정을 위한 귀환 제어 회로

- 가격은 비싸지만 정밀한 위치 제어 가능

3) 스테핑 모터

- 펄스에 의해 일정한 각도를 회전하는 모터

- 제어가 간단하지만 분할각 단위로 이산적으로만 회전 가능

- 분할각이 1도인 경우 9.5도의 회전은 불가능 하다

 

1-2. DC모터 제어 방법

DC MOTOR 및 모터 제어 모듈 / 제어 모듈 회로도(SZH-MDBL-002)

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) 실습 사진

DC MOTOR 제어 실습 및 오실로스코프 파형 측정

- 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. 서보모터 제어 방법

실습에 사용된 서보모터(SG90)

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바퀴 돌리는데 필요한 스텝의 수는 ?? 

28BYJ-48 Datasheet

- 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신호를 주는 핀의 패턴을 변경해주면 된다.

댓글