RaspBerryPi3에서 서보 모터 제어 (Pi4j)
\def\textlarge#1{%
{\rm\Large #1}
}
\def\textsmall#1{%
{\rm\scriptsize #1}
}
1, 서보 모터 제어!
지난번의 「RaspBerryPi3로 LED를 PWM으로 빛나게 한다(Pi4j)」로 PWM을 조종할 수 있었으므로, 드디어 모터의 제어입니다.
입문 키트※1 에 있는 SG90을 PWM 제어로 제어합니다. 이 제어를 통해 임의의 각도를 유지할 수 있습니다.
주의
・나는 전자 기기에 대해서는 전압=저항×전류가 아는 정도의 전혀 아마추어입니다.
$\textsmall{ ※1「Kuman 35개 Raspberry Pi에 적용 초보자 전자 공작 1602 액정 디스플레이+온도/습도 센서+BMP180 디지털 기압 센서}$
$\textsmall{0+HC-SR501 적외선 모션 센서 모듈 어린이 놀이 Raspberry Pi 3 2 model B A A+ + 에 대응 전자공작 입문 키트 라즈베리 파이 K71」}$
2, 주제
(1) 접속
서보 모터를 접속하고 있습니다.
①전체 화상
②상세
(2) Raspberry pi 설정
직렬을 활성화하면 핀을 제어 할 수 있습니다.
(3) 실행 프로그램
180도, 1초 대기, 90도, 1초 대기, 0도, 1초 대기를 반복합니다.
TestPwmServoMotor.javaimport com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinPwmOutput;
import com.pi4j.io.gpio.Pin;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.util.CommandArgumentParser;
public class TestPwmServoMotor {
public static void main(String[] args) throws InterruptedException {
pwm(args);
}
/**
* 100Hzで出力
* @param args
* @throws InterruptedException
*/
public static void pwm(String[] args) throws InterruptedException{
final GpioController gpio = GpioFactory.getInstance();
Pin pin = CommandArgumentParser.getPin(
RaspiPin.class,
RaspiPin.GPIO_00,
args);
GpioPinPwmOutput pwm = gpio.provisionSoftPwmOutputPin(pin);
pwm.setPwmRange(100);//出力時間を100分割
int sleep = 1000;
for(int i = 0 ;i<10;i++){
//180度
pwm.setPwm(25);//デューティー比25
System.out.println("PWM rate is: " + pwm.getPwm());
Thread.sleep(sleep);
//90度
pwm.setPwm(15);//デューティー比15
System.out.println("PWM rate is: " + pwm.getPwm());
Thread.sleep(sleep);
//0度
pwm.setPwm(6);//デューティー比6
System.out.println("PWM rate is: " + pwm.getPwm());
Thread.sleep(sleep);
}
gpio.shutdown();
System.out.println("pwm end");
}
}
javaDoc의 설명을 보면 아무래도 100Hz의 신호를 내고있는 것 같습니다.
측정해 보면 확실히 거의 100Hz!
(4)실행 결과
3단계의 각도를 제어할 수 있습니다.
3, 결론
모터가 제어할 수 있으면 여러가지 할 것 같고 꿈이 퍼집니다!
언젠가 해보고 싶었던 로봇 만들기를 할 수 있을지도.
이번 테스트에서 두 가지 과제가 있습니다.
1개는 지정할 수 있는 듀티비가 0~100이기 때문에 미묘한 각도를 표현할 수 없습니다.
두 번째, 사실은 하드웨어 PWM을 사용하고 싶었지만 왜 잘 작동하지 않았습니다.
하드웨어라면 지정할 수 있는 듀티비가 0~1024인데!
java로부터 제어가 되어 있지 않은 것 같아요. 권한의 문제입니까?
참고
모터 제어에 빠뜨릴 수 없는 기술 “PWM”은 무엇?
PWM 제어가 굉장히 알기 쉽게 해설되고 있었습니다.
Reference
이 문제에 관하여(RaspBerryPi3에서 서보 모터 제어 (Pi4j)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otesho1/items/df99835a44fd4c91f7e6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(1) 접속
서보 모터를 접속하고 있습니다.
①전체 화상
②상세
(2) Raspberry pi 설정
직렬을 활성화하면 핀을 제어 할 수 있습니다.
(3) 실행 프로그램
180도, 1초 대기, 90도, 1초 대기, 0도, 1초 대기를 반복합니다.
TestPwmServoMotor.java
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinPwmOutput;
import com.pi4j.io.gpio.Pin;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.util.CommandArgumentParser;
public class TestPwmServoMotor {
public static void main(String[] args) throws InterruptedException {
pwm(args);
}
/**
* 100Hzで出力
* @param args
* @throws InterruptedException
*/
public static void pwm(String[] args) throws InterruptedException{
final GpioController gpio = GpioFactory.getInstance();
Pin pin = CommandArgumentParser.getPin(
RaspiPin.class,
RaspiPin.GPIO_00,
args);
GpioPinPwmOutput pwm = gpio.provisionSoftPwmOutputPin(pin);
pwm.setPwmRange(100);//出力時間を100分割
int sleep = 1000;
for(int i = 0 ;i<10;i++){
//180度
pwm.setPwm(25);//デューティー比25
System.out.println("PWM rate is: " + pwm.getPwm());
Thread.sleep(sleep);
//90度
pwm.setPwm(15);//デューティー比15
System.out.println("PWM rate is: " + pwm.getPwm());
Thread.sleep(sleep);
//0度
pwm.setPwm(6);//デューティー比6
System.out.println("PWM rate is: " + pwm.getPwm());
Thread.sleep(sleep);
}
gpio.shutdown();
System.out.println("pwm end");
}
}
javaDoc의 설명을 보면 아무래도 100Hz의 신호를 내고있는 것 같습니다.
측정해 보면 확실히 거의 100Hz!
(4)실행 결과
3단계의 각도를 제어할 수 있습니다.
3, 결론
모터가 제어할 수 있으면 여러가지 할 것 같고 꿈이 퍼집니다!
언젠가 해보고 싶었던 로봇 만들기를 할 수 있을지도.
이번 테스트에서 두 가지 과제가 있습니다.
1개는 지정할 수 있는 듀티비가 0~100이기 때문에 미묘한 각도를 표현할 수 없습니다.
두 번째, 사실은 하드웨어 PWM을 사용하고 싶었지만 왜 잘 작동하지 않았습니다.
하드웨어라면 지정할 수 있는 듀티비가 0~1024인데!
java로부터 제어가 되어 있지 않은 것 같아요. 권한의 문제입니까?
참고
모터 제어에 빠뜨릴 수 없는 기술 “PWM”은 무엇?
PWM 제어가 굉장히 알기 쉽게 해설되고 있었습니다.
Reference
이 문제에 관하여(RaspBerryPi3에서 서보 모터 제어 (Pi4j)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otesho1/items/df99835a44fd4c91f7e6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(RaspBerryPi3에서 서보 모터 제어 (Pi4j)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otesho1/items/df99835a44fd4c91f7e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)