hw 연결 1: smps - 모터 드라이버 - 모터 연결 및 아두이노로 제어하기

지난 번 포스팅에 이어 두 번째 hw 연결 관련 정리이다.

유아용 전동차 스티어링 휠 축에 가변저항 모듈을 물리적으로 연결하고, 가변저항 모듈을 아두이노에 연결하여 실시간으로 현재 조향각을 감지 및 보정하도록 만들었다.

가변저항 모듈과 축을 연결한 모습.
글루건을 활용하여 가변저항의 꼭지를 축과 물리적으로 연결하고, 가변저항의 몸통은 덕트 테이프를 활용하여 차체와 연결하였다.
이렇게 하면 꼭지 부분만 돌아가며 저항(전압)이 변하고, 이를 아두이노로 감지할 수 있다.

가변저항 모듈과 축을 연결한 모습. 글루건을 활용하여 가변저항의 꼭지를 축과 물리적으로 연결하고, 가변저항의 몸통은 덕트 테이프를 활용하여 차체와 연결하였다. 이렇게 하면 꼭지 부분만 돌아가며 저항(전압)이 변하고, 이를 아두이노로 감지할 수 있다.

<aside> <img src="/icons/bell_gray.svg" alt="/icons/bell_gray.svg" width="40px" />

<20kΩ 가변저항 모듈(ELB030640)> OUT - A0 VCC - 5V (13PIN을 5V로 사용) GND - GND

<모터 드라이버> IN1, IN2: 방향 제어 입력 PWM: 속도(PWM) 입력 OUT1, OUT2: 모터 출력 COM: GND

IN1 - D8 IN2 - D9 PWM - D5

</aside>

가변저항 모듈과 아두이노는 파워 허브를 통해 연결했다. 왼쪽 뒷바퀴를 연결했을 때 처럼 5V 전원은 아두이노의 pwm 13번 핀을 활용하여 연결했다.

모터 드라이버와 아두이노는 8번, 9번, 5번 핀을 활용하여 연결했다.

in1, in2로 회전 방향을, pwm으로 회전 속도(모터 출력)를 결정한다.

전체 흐름은 다음과 같다.

가변저항 모듈의 전압 out → 아두이노 A0 핀에서 전압 인지 → 조향 방향 결정 → 결정된 방향에 따라 in1 혹은 in2 활성화 → 미리 정해놓은 pwm으로 모터 출력

pwm을 너무 약하게 설정해놓으면 우리가 원하는 만큼 조향이 되지 않는다. (토크 부족으로 인한 오차 발생)

pwm을 너무 강하게 설정하면 헌팅(Hunting)이라는 현상이 발생하게 된다.

헌팅은 쉽게 말해 돌리는 힘이 너무 세서 발생하는 현상인데, 예를 들어 스티어링 휠 중앙 정렬을 원할 때, 오른쪽으로 30도만 돌리면 될 걸 너무 세게 돌려서 40도가 돌아간다고 치면, 이걸 다시 보정하기 위해 왼쪽으로 10도를 돌리게 된다. 하지만 마찬가지로 힘이 너무 세기 때문에 15도가 돌아가고, 또 이걸 보정하기 위해 5도를….

이를 오버슈트(Overshoot)라고 한다. 즉 헌팅은 오버슈트가 무한 반복되는 현상인 것이다.

영상으로 보면 확 이해가 된다.