[흥프로] 라즈베리파이 실습 예제 SG90 서보 모터 사용하기



라즈베리파이 실습 예제 
SG90 서보 모터 사용하기 




안녕하세요~!!

구독자 여러뷴~

디바이스마트 엔지니어 흥프로 입니다~~!!~!

오늘의 포스팅은 !!!

라즈베리파이 실습 예제 2탄

서보모터 사용하기 입니다.!!

저는 Raspberry Pi 3 B+에 Raspbian 이고 python을 사용합니다. 참고하세요!


서보 모터를 사용하려면!!!! 

PWM(펄스 폭 변조)을 알아야 합니다.~



PWM(Pulse Width Modulation)


펄스 폭 변조(Pulse Width Modulation)는 펄스의 폭을 조절하는 제어 방법으로,
주로 LED의 밝기를 조절하거나 모터의 출력을 조절할 때 사용됩니다.
PWM방식은 일정한 주기(cycle)동안 On/Off 를 반복하며
ON이 되어있는 시간(Duty Cycle)을 조절하여
원하는 출력을 조절하는 방법입니다.
이를 통해 디지털 값을 아날로그 값처럼 사용 할 수 있습니다.

예를 들어 5V 출력 전압에서 Duty Cycle을 50%로 한다면,
LED나 모터는 2.5V의 출력으로 동작 합니다.
그리고 Duty Cycle을 25%로 한다면 1.75V의 출력으로 동작합니다.

실습 예제 입니다.!!!
구성은 간단하게 SG90 서보모터를 사용합니다.
아래 배선도를 확인해주세요.~


SG90 서보 모터 연결

서보모터 - 라즈베리파이

VCC - 5V

GND - GND

SIG - GPIO 18PIN

파이썬 스크랩트를 작성해 봅시다.

sudo nano Servo.py

import RPi.GPIO as GPIO
import time

pin =18
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
p= GPIO.PWM(pin, 50#PMW:펄스 폭 변조
p.start(0)
cnt = 0

try:

    while True:
        p.ChangeDutyCycle(12.5) #최댓값
        time.sleep(1)
        p.ChangeDutyCycle(10.0)
        time.sleep(1)
        p.ChangeDutyCycle(7.5) #0
        time.sleep(1)
        p.ChangeDutyCycle(5.0)
        time.sleep(1)
        p.ChangeDutyCycle(2.5) #최솟값
        time.sleep(1)

except KeybordInterrupt:
     p.stop()
    
GPIO.cleanup()



p.ChangeDutyCycle(12.5) 이게 듀티사이클입니다.

얼마의 듀티비로 출력을 할껀지 설정 하는겁니다.


저장하시고 

$ python3 Servo.py

를 해보세요.!!

어떻게 움직이는지 확인하시고
코드가 어떻게 동작하시는지 확인하시면
좀 더 응용해서 사용하실수 있습니다. 


오늘은 여기까지~

다음 포스팅도 많은 기대 부탁 드려요~~

라즈베리파이와 같이 쓰기 좋은 키트 소개 해드릴께요.!
기초적인 학습은 가능합니다.~


라즈베리파이3 B+ 기본키트
http://www.devicemart.co.kr/goods/view?no=1385485


라즈베리파이 베이직 키트
http://www.devicemart.co.kr/goods/view?no=1264628

감사합니다!!~ 안뇽!!!

댓글 쓰기

2 댓글

  1. 궁금한 것이 있어서 댓글을 남깁니다. 저는 수상드론을 만드려고 하는데, 수상드론 모터에 전원을 따로 공급해야 한다고 합니다. 이 경우에도 위의 방식을 적용해서 pwm을 사용할 수 있나요?

    답글삭제
    답글
    1. 답글이 늦어서 죄송합니다! 전원 공급과 PWM 는 전원과 신호 라는 차이가 있습니다.

      모터에 전원을 따로 공급한다는 건 외부 전원을 사용하는것인데 대부분 모터 드라이버에서 전원을 공급받고 신호도 받아 모터를 제어합니다. 신호 레벨이 다르지 않는 이상 문제 없습니다. 참고 바랍니다.

      삭제