RaspberryPi3B+とサーボモータードライバ(PCA9685)でサーボを動かしてみた

RaspberryPi3B+とサーボモータードライバ(PCA9685)でサーボを動かしてみた

今回はRaspberryPi3B+とサーボモータドライバ(PCA9685)でサーボを動かしてみたいと思います。サーボモータドライバを使用する理由としては、RaspberryPiのGPIOでは正確なPWM制御をすることができずにサーボモータが振動してしまうため、サーボモータドライバを使用して正確なPWMを行いたいからです。

では以下に手順を記載していきます。

PCA9685を動かすのに必要なものをインストール

以下のコマンドを実行してPCA9685を動かすのに必要なものをインストールしていきます。

まずはI2Cのツールをインストール。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install python-dev and python3-dev
sudo apt-get -y install python-smbus i2c-tools

次にAdfruitのライブラリをインストール

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

以上で必要なものは全てインストールすることができました。

I2Cの有効化

ラズパイの設定からI2Cを有効化しておきます。GUIからI2Cを有効にするには以下の手順で行います。
設定→Raspberry Piの設定→インターフェイス→I2Cを「有効」に設定→OK→ラズパイを再起動(念のため)

こちらのサイトが参考になります。
Raspberry PiのI2Cを使って電圧を測定する(2019年3月版)

RaspberryPiとPCA9685を配線する

RaspberryPiとPCA9685を配線していきます。

PCA9685 GND <-> Raspberry Pi GND

PCA9685 VCC <-> Raspberry Pi 3.3V

PCA9685 SDA <-> Raspberry Pi SDA

PCA9685 SCL <-> Raspberry Pi SCL

上記に加えて、サーボモータとACアダプタ(もしくは電池)をつなぐ線と、サーボモータの線を0番のところに差し込む必要があります。こちらのサイトの説明が写真があって分かりやすいです。

https://snapguide.com/guides/bezeri-pi-tosabodoraibanojie-sok/

I2Cの接続確認

この段階でI2Cの接続確認を行います。こちらの結果がうまく行かなければサーボモータは動かすことができません。

以下のコマンドを実行してみます。

sudo i2cdetect -y 1

結果が以下のように表示されればちゃんとI2Cが認識されています。

00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: 70 -- -- -- -- -- -- --

以下のように表示されたときは何かしらの手順が失敗しています。

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 
70: 70 71 72 73 74 75 76 77

失敗したときはこちらの記事を確認してみてください。

RaspberryPiとPCA9685でサーボモータが動かない原因を探る

サンプルプログラムを動かしてみる

上記までで全ての準備が整いましたのでサンプルプログラムを動かしてみましょう。

cd /home/pi/Adafruit_Python_PCA9685/examples
sudo python simpletest.py

全てうまくいっていればサーボが動くと思います。

 

以上、今回はRaspberryPi3B+とサーボモータードライバ(PCA9685)でサーボを動かす方法についてご紹介させていただきました。

電子工作カテゴリの最新記事