본문 바로가기
라즈베리파이_피코_피코 W/circuitPython

12. Circuit 파이썬 라즈베리파 피코 W 서보모터

by 커피하는조이 2023. 3. 21.
728x90
반응형
SMALL

안녕하세요 땜블리 입니다.

라즈베리파이 피코 베이직 트레이닝 보드를 이용한 서보모터 제어를 진행 하겠습니다.

베이직 트레이닝 보드는 아래에서 확인이 가능합니다.

https://ttcw.tistory.com/4

 

라즈베리파이 피코 베이직 트레이닝보드 구성

라즈베리파이 피코 보드의 펌웨어실습을 위한 베이직 트레이닝보드를 소개 합니다. 현재 네이버 스마트스토어에서 판매가 진행되고 있습니다. 라즈베리파이 피코 베이직 트레이닝 보드 라즈베

ttcw.tistory.com

1) 서보모터 구동 원리

(1) 동작설명

서보(Servo)란 서보메커니즘을 적용했다는 의미로, 시스템에서 해당 기기를 시스템이 요구하는 특정 위치로 이동하거나, 특정 수치(속도, 토크 등)만큼 가동시킬때, 정확하게 제어할 수 있는 구조를 갖추고 있다는 의미 입니다.

서보계의 조작부에 사용되는 것을 서보모터라고 부르며 전기식, 유압식, 전기유압식으로 구성되어 있습니다.

VCC  GND 에 전원을 인가하고 Signal  PWM 신호를 인가하여 모터를 제어합니다.

 

 

서보 모터는 Signal 선에 인가되는 PWM 신호에 따라서 해당 각도로 회전하게 됩니다.

주기가 20ms인 신호에 0.7ms~2.3ms H폭을 가지는 PWM 신호에 따라서 모터의 각도가 결정됩니다. 45도 단위로 0.4ms씩 차이가 나므로 좀 더 세밀한 각도 조절을 위해 45도의 신호 폭을 기준으로 시간을 계산하면 됩니다.

 : 22.5 = 1.5ms(0)+(0.4ms(45)/2)= 1.7ms

(2) 코드작성

code.py

(3) 동작 결과

반응형

2) 가변저항을 이용한 서보모터 각도제어

(1) 동작설명

가변저항의 값을 가지고 서보모터를 구동하는 프로그램

(2) 소스 코드

code.py

import time
import board
import pwmio
import analogio

vr_adc = analogio.AnalogIn(board.GP26)
servo1_pwm = pwmio.PWMOut(board.GP19, duty_cycle=0, frequency=50)
servo2_pwm = pwmio.PWMOut(board.GP18, duty_cycle=0, frequency=50)

in_min = 0
in_max = 65535
out_min = 1000
out_max = 9000

while True:
    VRData = vr_adc.value
    servo2Data = (VRData - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
    servo1_pwm.duty_cycle = int(servo2Data)
    servo2_pwm.duty_cycle = int(servo2Data)
    time.sleep(0.01)

(3) 동작 결과

 

 

 

728x90
반응형
LIST

댓글