라즈베리파이 모터 제어

차드마·2021년 6월 26일
0

DC모터?

연속회전이 가능하고 속도 및 회전 방향이 제어가능한 모터

DC모터 제어

  • DC모터의 회전 속도 및 방향을 제어하기 위해 별도로 드라이버가 필요

회전방향 제어하기

  • DC모터는 전류의 방향에 따라 회전 방향이 변경된다
  • +에서 -로 흐르는 전류방향을 -에서 +로 변경하면 회전방향을 반대가 된다.

속도 제어하기

  • DC모터는 전압의 크기를 변화시켜 속도를 제어한다.
  • 입력전압의 크기와 DC 모터의 속도가 비례
  • 전압의 크기를 가변하기 위해 PWM 제어를 이용

*PWM 제어란?

  • Pulse Width Modulation의 약자
  • 일정한 주기 내에서 신호를 On 시키는 시간을 제어하여 신호의 출력 레벨을 가변 할 수 있도록 하는 제어방식

ex) 1초의 주기에서
On 시간이 1초이면 Full duty가 되어 출력레벨은 Full
On 시간이 0.5초이면 50%(Half) duty가 되고 출력레벨은 50% 감소
On 시간이 0.2초이면 20% duty가 되고 출력 레벨은 80% 감소

코드

방향 전환하기


위 코드를 통해 DC모터는 5초 주기로 방향을 바꾸며 회전한다.

속도 제어하기

  • DC 모터의 속도를 제어하기 위해 PWM 제어를 이용
  • PWM 제어를 이용하기 위해 motor.forward(), motor.backward()에 speed 인자를 추가
  • Speed 인자는 0~1의 범위를 가지며, speed = 0.3이면 최대 속도의 30%로 속도가 감소

위 코드를 통해 모터는 최대 속도의 30%로 정회전하고 50%로 역회전한다.

출처 : https://digital-play.tistory.com/20?category=940925

profile
초보 개발자

0개의 댓글