4.2 PWMでサーボ-モータを回して見よう
(1) サーボ-モータの回路を作ろう
PWMを使ってサーボモータを回します。サーボモータの回る角度はPWM信号のパルス幅で変わります。
(2) 回路を作ろう
①組立
下の配線図、回路図をみて、回路を組立て下さい。
(2) 部品を作ろう
サーボモータ(SG-90)は、
動作パルス:20ms–>周波数50Hz
0度:1.0m–>デユーティ5%
90度:1.5ms–>デユーティ7.5%
180度:2.0ms–>デユーティ10.0%
で動作します。
①電源を入れます。
RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。
②ログインします。
Raspbianが立ち上がったら、ログインして下さい。
③「nano」エディター立ち上げます。
「nano rpi_bp_pwm_sv1_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。
④プログラムを入れます
サンプルプログラム1
#! /usr/bin/env python
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) # use GPIO Number SV1 =12 servo = GPIO.PWM(SV1, 50) # set 20 ms / 50 Hz angle = 0.0 # set angle angle = 90.0 # set angle angle = 180.0 # set angle angle = 0.0 # set angle servo.stop() # stop servo |
⑤入力を終わります。
「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。
⑥入力したプログラムを実行します。
「sudo python rpi_bp_pwm_sv1_1.py」を実行します。
*サーボモータが0度、90度、180度、0度とまわります。その後に、「sv1 done」のメッセージが出ます。
(2) 部品にしよう
初期化、回転角の制御を部品にします。
①「nano」エディター立ち上げます。
「nano rpi_bp_pwm_sv1a_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。
②プログラムを入れます
サンプルプログラムを見て、入力します。
サンプルプログラム2
#! /usr/bin/env python
import RPi.GPIO as GPIO def sv_init(sv): def angle_duty(angle): if __name__ == (“__main__”) : GPIO.setmode(GPIO.BCM) # use GPIO Number SV1 =12 angle = 0.0 # set angle print(new_duty) angle = 90.0 # set angle angle = 180.0 # set angle angle = 0.0 # set angle servo.stop() # stop servo |
③入力を終わります。
「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。
④入力したプログラムを実行します。
「sudo python rpi_bp_pwm_sv1a_1.py」を実行します。
*サーボモータが0度、90度、180度、0度とまわります。
その後に、「sv1a done」のメッセージが出ます。
(3) モジュールを使おう
(2)で作った部品(関数)の入ったファイルをモジュールとして使います。
①「nano」エディター立ち上げます。
「nano rpi_bp_pwm_bz1b_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。
②プログラムを入れます
サンプルプログラムを見て、入力します。
サンプルプログラム3
#! /usr/bin/env python
import RPi.GPIO as GPIO from rpi_bp_pwm_sv1a_1 import * if __name__ == (“__main__”) : GPIO.setmode(GPIO.BCM) # use GPIO Number SV1 =12 angle = 0.0 # set angle print(new_duty) angle = 90.0 # set angle angle = 180.0 # set angle angle = 0.0 # set angle servo.stop() # stop servo |
③入力を終わります。
「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。
④入力したプログラムを実行します。
「sudo python rpi_bp_pwm_sv1b_1.py」を実行します。
*サーボモータが0度、90度、180度、0度とまわります。
その後に、「sv1b done」のメッセージが出ます。
⑤電源をきります。
「sudo shutdown -h now」を入力して下さい。
*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。