#サーボモーターって
ミニ四駆のモーターくらいしか知りませんでしたがモーターにも種類があるようです。
(電子工作を始めて知らなかった事が次々と出てくる。。)
- ACモーター ・・・ AC(交流)電源により動きます。 例) 家のコンセント
- DCモーター ・・・ DC(直流)電源により動きます。 例) 乾電池とかラズパイとかの電源
- 一般的なモーター ・・・ 一方向に対して回転し続けます。
- サーボモーター ・・・ 指定した角度に回転します。行ったり来たり可能。
#サーボモーターとの接続と動かし方
今回はSG90という入門編っぽいサーボモーターを使うことにします。数百円で買えます。
RaspberryPiとサーボモーターの接続方法
配線も3つしかないので迷う事は何も無いと思います。
ラズパイGPIO | サーボモーター | 用途 |
---|---|---|
(5V) | 赤 | 電源 (動作電圧が4.8Vなので3.3Vだと足りません!) |
GND | 茶 | グラウンド |
14 | オレンジ | 信号 |
実行するpythonスクリプト
ポイントはモーターを動作させるための「PWM制御」というものです。
ウィーン、ウィーンと2回動きます。
import RPi.GPIO as GPIO
import time
INTERVAL = 0.6
PIN = 14
FREQ = 50
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)
servo = GPIO.PWM(PIN, FREQ)
#init
servo.start(0.0)
for i in range(2):
servo.ChangeDutyCycle(2.5)
time.sleep(INTERVAL)
servo.ChangeDutyCycle(10.0)
time.sleep(INTERVAL)
GPIO.cleanup()
SG90のデータシートを見るとこいつの周波数が「50Hz」だと書いてありました。
なので、使用するPIN(14)に対して周波数FREQ(50)を以下のように指定します。
servo = GPIO.PWM(PIN, FREQ)
次に、ループの中でモーターの角度を指定しています。
ここに2.5~12.0の数値を指定する事で角度が決まるようです。
servo.ChangeDutyCycle(2.5)
詳しい説明は他のサイトにお任せして、ここでは指定した値と角度だけ整理します。
正確かは分かりませんが、理屈から行くとだいたいこんな感じ。
指定値 | 角度 | 説明 |
---|---|---|
2.5 | -90° | 最小値 |
7.25 | 0° | (12 - 2.5) / 2 = 4.75 4.75 + 2.5 = 7.25 |
12.0 | 90° | 最大値 |
そしてpythonを実行すると、、おー動きましたー
#もっと何か作りたい
いつになく配線もプログラムもサックリとできてしまいました。
うーーん、何だか物足りない。。
ということで、最初に作った時計のような感じで、お遊びでも実用的な形にしてみようかと思います。
##自動エサやりマシーン!
我が家には小さいですが熱帯魚の水槽がございまして、私が彼らにえさをやり忘れる事が良くございます。
『自然界にいたら毎日必ずエサなど当たらないべ!』という酷い理由で正当化していましたが、彼らの待遇を改善すべくマシーンを作ってみる事にしました。
##電子工作ではなくただの工作
家で眠っていた何の変哲も無い端材を使ってまずは試作品を作ってみました。
※ここから暫く技術的な話とは関係ないただのDIYが続きます m(_ _)m
###サーボホーンと工作資材との接続
サーボモーターの駆動部の先につける角のような部品をサーボホーンというそうです。
このサーボホーンには小さい穴が開いてますが、こんな小さい穴に挿すようなネジとかあるのかしら?
分からない事は全部ジョイフルAKで聞く事にしている私はさっそく店員さんに相談しました。
私「この穴に留めれるようなネジってあるんですかね?」
AK「こんな小さいの無いわ。針金ででも留めればいいんでないかい?」
・・・なんて素敵なご回答。さすが信頼のジョイフルAKさん。
何の変哲も無い端材に穴を開けて針金でサーボホーンを固定しました。
##熱帯魚のエサの取り付け
普段あげている(あげ忘れている)何の変哲も無いエサに輪ゴムでさっきの端材を固定します。
##水槽の上に設置
その他さまざまな何の変哲も無い端材をつなぎ合わせてこんな感じで水槽の上に固定しました。
上からにゅっと出ている棒は上にある棚に仮止めしています。
試作なので見た目は悪いですが、オラわくわくしてきたぞ!
##動作確認
出た出たーーーーwwww
いい感じにエサが出ましたー!
今はEnterキーを叩いてスクリプト実行しているので、時刻起動とかにしてホントに自動にしないとですね。
折角だからこれまでにやった7セグメントLEDとかも使ってCOOLなガジェットにしてみようか
後半へ続く(予定)