[RaspberryPI] 모터

개념 및 종류

모터 : 전기를 이용하여 회전력을 발생시키는 장치
종류

1. DC 모터
2. 서보모터(DC + 센서)
3. 스테핑모터

DC모터

원리

자기장이 존재하고 그 안에 플레밍의 왼손법칙(전류를 흘려주면 특정방향으로 힘이 가해지는 현상)을 이용한 원리

극성에 따라 회전방향이 달라집니다.

DC모터 한계를 해결한 모터

  1. 엔코더 모터 : 정확한 각도 제어 가능
    엔코더 : 회전수를 검출하여 특정 순간에 Stop / 속도 제어 할 수 있는 장치
  2. 기어드 DC 모터 : 회전수를 낮추는 대신 토크(파워)를 높인 모터
  3. 브러시리스 모터 : 브러쉬가 닳는 문제로 수명이 짧은 문제를 해결하기 위해 브러쉬를 제거하고 바깥 통이 돌아가는 모터

주의점

높은 전류가 필요한 DC 모터를 GPIO로 함부로 돌리게 되면 라즈베리파이가 고장날 수 있다. 공급전류 > 구동전류(300mA) 여야한다. GPIO핀의 출력전류는 20mA이기 때문에 고장 유발 가능하다.

GPIO 출력 전류 증폭
트랜지스터를 사용하여 GPIO핀으로 DC모터를 제어할 수 있습니다.

동작 테스트

ON/OFF 버전

from gpiozero import LED
from time import sleep

motor = LED(4)

while True:
    motor.on()
    sleep(1)
    motor.off()
    sleep(1)

강중약 버전

from gpiozero import PWMLED
from time import sleep

motor = PWMLED(4)

while True:
    motor.value = 0
    sleep(1)
    motor.value = 0.1
    sleep(1)
    motor.value = 0.5
    sleep(1)
    

DC모터 한계

회전방향을 S/W(코딩)으로 제어가 불가능하다!

해결방법
1. H-Bridge 회로
2. 모터 드라이버

서보모터

DC모터에 더 강한 힘, 각도 제어를 하기 위해 만들어진 모터 ex) 차단기

소모 전압과 소모 전류를 잘 파악해야합니다. 소모 전압보다 공급전압이 크거나 소모 전류보다 공급전류가 작으면 고장이 날 확률이 높다

서보모터 테스트

from gpiozero import AngularServo
from time import sleep

servo = AngularServo(17, min_angle = 0, max_angle = 90)

while True:
    for i in range(0,90,15): # 0~90까지 15도씩 증가
        servo.angle = i
        sleep(0.2)
    for i in range(90,0,-15): # 90~0까지 15도씩 감소
        servo.angle = i
        sleep(0.2)

참고
서보모터는 스톨전류가 존재하여 작동하지 않을 때는 덜덜 떨리는 현상이 있다. 다른 LIB를 사용하도록 권장하는 오류메세지가 발생한다.

스테핑 모터

Stepping Motor : 전기를 돌아가며 로터를 돌리는 원리를 사용하여, 특정 각도에서 멈출 수 있으며, 각도 제어가 가능한 모터로 프린터 / 로봇 팔 등에 사용된다. 스텝모터에 비해 토그(힘)이 좋다.

좋은 웹페이지 즐겨찾기