728x90
반응형
SMALL
안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 서보모터 제어를 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
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
'라즈베리파이_피코_피코 W > circuitPython' 카테고리의 다른 글
11. Circuit 파이썬 라즈베리파 피코 W 블루투스/ SDCARD (0) | 2023.03.20 |
---|---|
10. Circuit 파이썬 라즈베리파 피코 W OLED 제어 (0) | 2023.03.19 |
09. Circuit 파이썬 라즈베리파 피코 W DHT11 (0) | 2023.03.18 |
08. Circuit 파이썬 라즈베리파 피코 W 릴레이제어 (0) | 2023.03.17 |
07. Circuit 파이썬 라즈베리파이 피코 W WS2812 제어하기 (2) | 2023.03.16 |
댓글