라즈파이에서 Servo Driver HAT를 사용해보십시오.
11133 단어 ServoMotorRaspberryPi4PCA9685우분투
공식 페이지
Servo Driver HAT 사양
사양
전원
6V~12V(VIN 단자)
서보 전압
5V
로직 전압
3.3V
운전자
PCA9685
제어 I/F
I2C
치수
65.0mmx36.0mm
장착 구멍 크기
3.0mm
PIN 사양
흰색 프레임으로 둘러싸인 곳
PIN 색상
블랙
GND (서보 모터의 갈색과 연결)
레드
5V VCC
노랑
PWM 신호선
모터
갈색 선을 GND에 연결
이곳은 갈색이 없어 블랙을 GND에 연결
I2C 활성화
ubuntu이므로 raspi-config를 사용할 수 없으므로/boot/firmware/config.txt를 직접 다시 씁니다.
/dev/firmware/config.txt의 끝에 다음을 추가합니다.
/boot/firmware/config.txt
dtparam=i2c_arm=on
/etc/modules의 끝에 다음을 추가한다.
i2c-dev
i2c-bcm2708
재부팅
$ sudo reboot
재부팅 후 i2c가 활성화되어 있는지 확인
$ dmesg | grep i2c
[ 2.824095] i2c /dev entries driver
$ lsmod | grep i2c
i2c_bcm2708 20480 0
도구 설치
$ sudo apt install i2c-tools
$ sudo apt install python3-smbus
i2c가 유효한지 확인
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --
Python에서 PCA9685를 사용할 수 있습니다.
Adafruit Python PCA9685 에서 라이브러리와 샘플 가져오기
pip가 설치되지 않았기 때문에 먼저 pip 설치
$ sudo apt install python-pip python3-pip
그런 다음 PCA9685용 라이브러리 설치
$ sudo pip install adafruit-pca9685
FS90R을 사용한 경우
이번에는 FS90R을 0번으로 연결하여 아래와 같은 샘플을 동작시켜 보았더니 모터가 on→off했다.
sample.py
#!/usr/bin/python
import Adafruit_PCA9685
import time
pwm = Adafruit_PCA9685.PCA9685()
pwm.set_pwm_freq(60)
pwm.set_pwm(0, 0, 1)
time.sleep(1)
pwm.set_pwm(0, 0, 0)
set_pwm의 최초로 인수는 몇번에 접속하고 있는지, 2,3번째는 좀 더 공부하지 않으면….
SG92R을 사용하는 경우
PCA9685는 펄스 150 ~ 650이 각도 0 ~ 180에 해당하므로 다음 방정식을 사용하여 펄스를 생성합니다.
pulse = ( 650 - 150 ) / 180 * 角度 + 150
sample.py
#!/usr/bin/python
import Adafruit_PCA9685
import time
pwm = Adafruit_PCA9685.PCA9685()
pwm.set_pwm_freq(60)
# 180度
pwm.set_pwm(0, 0, 650)
time.sleep(1)
# 90度
pwm.set_pwm(0, 0, 400)
time.sleep(1)
# 0度
pwm.set_pwm(0, 0, 150)
FS90R(추기)
360도 서보 모터는 각도를 90을 기준으로 0~180 사이에서 변화시킴으로써 회전 방향과 속도를 제어하는 것 같기 때문에 다음과 같은 샘플을 만들어 보았습니다.
sample.py
#!/usr/bin/python
import Adafruit_PCA9685
import time
pwm = Adafruit_PCA9685.PCA9685()
pwm.set_pwm_freq(60)
# 180度
pwm.set_pwm(0, 0, 650)
time.sleep(1)
# 0度
pwm.set_pwm(0, 0, 150)
time.sleep(1)
# 90度
pwm.set_pwm(0, 0, 400)
를 실행해 보면, 0도와 180도에서는, 같은 속도로 역회전이 되었습니다.
하지만 90도라고 생각했던 400에서는 멈추지 않았다.
그렇지만 372~382정도라면 멈추는구나-.
벌써 사서 와서 시험했더니 375에서는 멈추지 않고 380으로 멈췄다.
개체 차이?
펄스는 130~630 사이에서 380 정도로 정지가 좋은 느낌일까.
아키즈키의 PCA9685의 기판의 취설에는 펄스 150~600이 되어 있었다. 이것이라면 375는 그냥 가운데 값이야-.
htp // 아키즈키덴시. 이 m/두w응아 d/ds/아키즈키/아에-P인가 9685. pdf
FS90R 및 micro:bit
micro : bit의 서보 드라이버를 사용하여 다음과 같은 샘플을 동작시킨 곳 90도에서 멈추지 않았기 때문에, 역시 어긋나 있을 것 같다.
sample.js
input.onButtonPressed(Button.A, function () {
kitronik_i2c_16_servo.servoWrite(kitronik_i2c_16_servo.Servos.Servo1, 0)
})
input.onButtonPressed(Button.AB, function () {
kitronik_i2c_16_servo.servoWrite(kitronik_i2c_16_servo.Servos.Servo1, 90)
})
input.onButtonPressed(Button.B, function () {
kitronik_i2c_16_servo.servoWrite(kitronik_i2c_16_servo.Servos.Servo1, 180)
})
Reference
이 문제에 관하여(라즈파이에서 Servo Driver HAT를 사용해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Toshiaki0315/items/2dfe61cd6dd53325db1d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)