Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

サーボモーターで自動エサやりマシーンを作る(前半)

サーボモーターって

ミニ四駆のモーターくらいしか知りませんでしたがモーターにも種類があるようです。
(電子工作を始めて知らなかった事が次々と出てくる。。)

  • ACモーター ・・・ AC(交流)電源により動きます。 例) 家のコンセント
  • DCモーター ・・・ DC(直流)電源により動きます。 例) 乾電池とかラズパイとかの電源
    • 一般的なモーター ・・・ 一方向に対して回転し続けます。
    • サーボモーター  ・・・ 指定した角度に回転します。行ったり来たり可能。

サーボモーターとの接続と動かし方

今回はSG90という入門編っぽいサーボモーターを使うことにします。数百円で買えます。

RaspberryPiとサーボモーターの接続方法

配線も3つしかないので迷う事は何も無いと思います。

ラズパイGPIO サーボモーター 用途
(5V) 電源
(動作電圧が4.8Vなので3.3Vだと足りません!)
GND グラウンド
14 オレンジ 信号

IMG_20180203_140006.jpg

実行するpythonスクリプト

ポイントはモーターを動作させるための「PWM制御」というものです。
ウィーン、ウィーンと2回動きます。

servo.py
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 (12 - 2.5) / 2 = 4.75
4.75 + 2.5 = 7.25
12.0 90° 最大値

IMG_20180203_225329.jpg

そしてpythonを実行すると、、おー動きましたー

もっと何か作りたい

いつになく配線もプログラムもサックリとできてしまいました。
うーーん、何だか物足りない。。
ということで、最初に作った時計のような感じで、お遊びでも実用的な形にしてみようかと思います。

自動エサやりマシーン!

我が家には小さいですが熱帯魚の水槽がございまして、私が彼らにえさをやり忘れる事が良くございます。
『自然界にいたら毎日必ずエサなど当たらないべ!』という酷い理由で正当化していましたが、彼らの待遇を改善すべくマシーンを作ってみる事にしました。

電子工作ではなくただの工作

家で眠っていた何の変哲も無い端材を使ってまずは試作品を作ってみました。
※ここから暫く技術的な話とは関係ないただのDIYが続きます m(_ _)m

サーボホーンと工作資材との接続

サーボモーターの駆動部の先につける角のような部品をサーボホーンというそうです。
このサーボホーンには小さい穴が開いてますが、こんな小さい穴に挿すようなネジとかあるのかしら?
分からない事は全部ジョイフルAKで聞く事にしている私はさっそく店員さんに相談しました。

私「この穴に留めれるようなネジってあるんですかね?」
AK「こんな小さいの無いわ。針金ででも留めればいいんでないかい?」

・・・なんて素敵なご回答。さすが信頼のジョイフルAKさん。
何の変哲も無い端材に穴を開けて針金でサーボホーンを固定しました。
IMG_20180203_135352 (1).jpg

熱帯魚のエサの取り付け

普段あげている(あげ忘れている)何の変哲も無いエサに輪ゴムでさっきの端材を固定します。
IMG_20180203_135741.jpg

水槽の上に設置

その他さまざまな何の変哲も無い端材をつなぎ合わせてこんな感じで水槽の上に固定しました。
上からにゅっと出ている棒は上にある棚に仮止めしています。
試作なので見た目は悪いですが、オラわくわくしてきたぞ!
IMG_20180203_223226.jpg

動作確認

ezgif.com-resize (3).gif
出た出たーーーーwwww
いい感じにエサが出ましたー!

今はEnterキーを叩いてスクリプト実行しているので、時刻起動とかにしてホントに自動にしないとですね。
折角だからこれまでにやった7セグメントLEDとかも使ってCOOLなガジェットにしてみようか

後半へ続く(予定)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
6
Help us understand the problem. What are the problem?