MENU
  • ホーム
  • 生成AI
  • Drone
  • Minecraft
  • RaspberryPi
  • 随想
面白いこと発掘だ
northarantの研究室
  • ホーム
  • 生成AI
  • Drone
  • Minecraft
  • RaspberryPi
  • 随想
northarantの研究室
  • ホーム
  • 生成AI
  • Drone
  • Minecraft
  • RaspberryPi
  • 随想
  1. ホーム
  2. RaspberryPi
  3. PWMでサーボを動かす

PWMでサーボを動かす

2023 2/06
RaspberryPi
2023年2月6日

いよいよサーボを動かしてみたいと思います。

私が買ったサーボはSG90というやつですが、amazonで買った安物なので当たり外れがひどいです。外れると負荷が大きいのかセンターまで戻らなかったり、ちょっとだけ動かしたいのに動いてくれなかったりします。ちなみに10個セットを買ったのですが、3〜4個はハズレ(と言っても動くことは動く)でした。

それは置いておいて、いよいよプログラムを組んでいくわけですが、使う言語はpythonです。

プログラミングなんてやった事ないよ〜という人でも大丈夫です。

pythonは入門しやすい言語だと思います。

なんせ、ラズパイに最初から入っているのでラズパイでは一番使いやすい言語だというのが本当の理由だったりします。

かくいう私も、pythonは初心者の部類です。これからもっと勉強したいと思いつつ、まずはサーボを動かすという事ができれば良いということで、行ってみよ〜♪

目次

ライブラリのインストール

いきなりハードルが・・・と思ったでしょ?

そりゃ電気的にはラズパイとPCA9685は接続したよ。でも、Windowsじゃないので、接続したらすぐ使えるわけではないのです。

だって、I2Cで信号のやり取りは出来るとしても、どういうフォーマットでデータを送れば良いのかラズパイは知らないのです。データのやり取りを行うためのライブラリ(Windowsで言うところのドライバー)をインストールしなければいけないのです。

PCA9685をデザインしたメーカーはAdafruitなので、Adafruitからライブラリを入手します。AdafruitはライブラリをGitHubで公開しています。

GitHub
GitHub - adafruit/Adafruit_Python_PCA9685: Python code to use the PCA9685 PWM servo/LED controller w... Python code to use the PCA9685 PWM servo/LED controller with a Raspberry Pi or BeagleBone black. - adafruit/Adafruit_Python_PCA9685

上のページに行くと、README.mdというのがあるので、それを見るとインストールの方法が書いてあります。GitHubとは、公開されているライブラリを簡単に取りに行けるようになっている場所なのです。

README.mdによると、ライブラリをインストールするには、次のようにコマンドラインに入力すれば良いみたいです。

sudo apt-get install git build-essential python-dev
cd ~
git clone https://github.com/adafruit/Adafruit_Python_PCA9685.git
cd Adafruit_Python_PCA9685
sudo python setup.py install

無事インストールが出来ました。

サーボモータの接続

の前に、PCA9685という下請け会社は今のところVcc,GND,SDA,SCLの4本でラズパイと繋がっています。この4本は電源を供給し、指示を出す事は出来るようになったのですが、仕事をする事はできません。なぜかと言うと、サーボモーターへ指令は出せてもモーターを動かす電力が供給されていないからです。

PCA9685のVccは自分を動かすための電源であり、LEDの調光だけならV+は繋がなくても良いのですが、サーボなどを動かす場合は、その電源を「V+」に入れてやらなければいけないのです。V+は5v~6vで良いのですが、電流の関係からラズパイから取るのは不安なので、別に電源を取ります。

ちなみに、ラズパイに接続するUSB機器も含めて、ラズパイ4Bだと1.2Aまでは大丈夫なようです。

あわせて読みたい
Just a moment...

FPV-TANKの場合、電源からの5vを色々な所に配らなければいけないので、ミニブレッドボードを使っています。

レギュレーターの出力をブレッドボードに出して、そこからラズパイやPCA9685のVcc,V+に分配しています。

PCA9685に電源を接続したら、いよいよサーボモーターを接続します。

サーボモーターからは、PWM, V+, GND の3本の線がまとまって出ています。色も黄色(PWM)、赤(V+)、黒または茶色(GND)となっていて、PCA9685もピンの根元に色がついているので、色をあわせて0番ピンに接続します。

SG90
PCA9685に接続したところ
12-bit PWMという文字が見えます。

12-bitってことは解像度が2の12乗で4096段階と言うことです。すごい精度ですよね。

動かしてみよう!

ブラウザで、以下のフォルダに行くと、サンプルプログラムがありました。

/home/pi/Adafruit_Python_PCA9685/Adafruit_Python_PCA9685/examples

サンプルプログラムの場所

この simpletest.py をダブルクリックすると、次の画面になります。

サンプルプログラム

これは、ラズパイでpythonを実行する環境Thonnyというプログラムが、さっきのサンプルプログラムを読み込んだ状態になっています。詳しい説明は追々やっていくとして、アイコンの再生ボタンと停止ボタンみたいなのが、プログラムの実行と停止です。今回はその程度の知識で、サーボを動かしてみます。

では、再生ボタンをクリックしてみます。

無事サーボモーターが動きました。ここまで来るのは大変だったけど、このモーターが動いたという感動は、やってみないと味わえません。これが電子工作にハマる理由なんですね。

何か工夫したら色んなことに応用ができそうな気がする。だから色々勉強しちゃうんですよね。

次回は、このサンプルプログラムを解読してみたいと思います。

RaspberryPi
PCA9685 SG90
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • I2C通信
  • simpletest.pyの解読

この記事を書いた人

northarantのアバター northarant

1968年生まれ。職業は高校数学の教員。自分では変わり者だと思っています。常により良い未来を目指して、時に楽しく、時に苦しみながら、人生を歩いています。

関連記事

  • INA219を使った電圧と電流の監視
    2023年3月4日
  • PWM制御を用いたLEDの輝度調整
    2023年2月27日
  • Picamera2を使った写真の撮影
    2023年2月26日
  • OSのクリーンインストール
    2023年2月19日
  • 自動ブレーキの搭載
    2023年2月18日
  • HC-SR04を用いた距離の測定
    2023年2月17日
  • 移動するだけのTANK
    2023年2月12日
  • モータードラーバーL9110S
    2023年2月9日

コメント

コメント一覧 (1件)

  • PWM制御を用いたLEDの輝度調整 - northarantの研究室 より:
    2024年11月6日 8:24 PM

    […] I2C通信 pwmでサーボを動かす […]

    返信

コメントする コメントをキャンセル

カテゴリー

  • Drone
  • Minecraft
  • Python
  • RaspberryPi
  • Twenty Twenty-Tree
  • これすごい
  • 生成AI
  • 随想

アーカイブ

  • 2025年5月
  • 2024年12月
  • 2024年11月
  • 2024年9月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年3月
  • 2023年2月
  • 2023年1月

© northarantの研究室.

目次