본문 바로가기

프로젝트 (Project)/자율주행로봇 (SLAM)

3. 모듈형 드라이버 쉴드 보드 제작

EasyEDA 라는 툴을 급히 익혀 모듈형으로 드라이버 보드를 만들었는데 이거 참... 나한테는 안맞는 툴인거 같다.

JLCPCB에서 아주 저렴하게 샘플 보드를 얻을 수 있어 빠르게 얻었다. 설계에 발주까지 한 1주일 조금 걸린거 같다.

학교 생활이 바빠서 설계, 테스트한 보드를 이제서야 올리는 것이 참 애매하다..

위 보드는 21년 8월 설계한 보드로 내가 느끼기에는 실패한 보드에 가깝다..

쉴드를 장착하면 위 사진처럼 나온다. 서포터로 지지해주고 여러가지로 고민해줘야할 부분이 참 많다.

EasyEDA를 사용한 PCB 설계의 첫걸음을 땐거나 다름이 없었기에 footprint 설계에 실수가 생겨 커패시터의 footprint가 엉망이다.. ㅠㅠ

전원은 Lipo 3S 12V 전원을 공급받아 스위칭 레귤레이터로 5V를, 리니어 레귤레이터로 3.3V를 변환해 라즈베리파이에 공급한다. 모터 전원은 드라이버에 12V를 넣어 라즈베리파이의 gpio 신호를 통해 조작한다.

이건 아두이노로 엔코더를 인터럽트로 받아서 7.4v 전원의 환경으로 간단히 테스트한 영상이다.

한바퀴를 무한반복으로 회전하는 동작인데 정밀도가 꽤나 마음에 든다.

 

이건 드라이버 쉴드로 12V를 사용하여 한바퀴 로직은 그대로 넣어 테스트한 영상이다.

인터럽트는 라즈베리파이 자체의 software에서 신호를 받아 제어한다.

오차가 매우 크게 발생하는 것을 볼 수 있는데, 아두이노의 인터럽트 레이턴시보다 라즈베리파이의 인터럽트 레이턴시가 수십배는 크다는 것이다. 때문에 인터럽트 사이의 신호에 정확한 시호가 회손되어 이러한 오차가 발생하는 것같다.

그래도 시간제어를 사용하면 회전, 주행 등에 있어 문제가 없다.

하지만 해당 로봇의 경우 바퀴가 총 3개로 최소 3개의 PWM을 필요로 한다.

라즈베리파이는 최대 2개의 하드웨어 PWM 채널을 제공하고, 나머지는 소프트웨어로 PWM 제어가 가능하다.

뒤늦게 안 것이 해당 로봇 주행에 큰 치명타를 입혔다..

라즈베리파이의 SoftPWM은 HardwarePWM 만큼의 주기를 따라잡기 못하고 CPU 처리량에 따른 상황 변동에 따라 민감하게 반응하기에 모터 제어를 권장하지 않다는 것을 깨달았다.

최근에 RP2040 칩이 싸게 나와서 이를 이용한 4채널 모터 제어 드라이버를 쉴드보드 형태로 다시 만들어볼까 생각한다.