MATLAB/SimulinkでRasberry Pi制御その5:Simulink Onlineからラズパイに接続したサーボモーターを動かす

投稿日:2023年1月11日
最終更新日:2023年1月19日

Simulink OnlineからRaspberry Piに接続したサーボモーターを動かす

前回はSimulink OnlineでGPIO Read/Writeブロックをつかって、Raspberry PiのGPIOを制御してラズパイに接続したタクトスイッチ(ボタン)押したらブザーを鳴るようなシステムを作ってみた。

今回は、Servoブロックを使ってSimulink OnlineからRaspberry Piに接続したサーボモーターを動かしてみる。ちなみに使ったサーボモーターは以下のキットに入っていたSG90。おもちゃとかでよく使われるやつ。

サーボモーターの情報は以下を参照。

https://docs.sunfounder.com/projects/davinci-kit/ja/latest/1.3.2_servo.html

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Buster)

MATLAB online (MATLAB R2022a)

Simulink online

 

ラズベリーパイとサーボモーターの接続

今回はブレッドボードは使わず、サーボとラズパイを直繋ぎする。

キットのメーカーのwebサイトに記載通りに、サーボのVCCをラズパイの3.3Vピンに、サーボのGNDをラズパイのGNDピンに、サーボのSIGピンをGPIO18ピンに接続した。

※追記:SG90って5V駆動じゃなかったっけ?と思ったが、秋月で同じ型番のもののデータシートを見ると3.3V〜になっていた(模造品が大量にあるようなのでこのキットの部品の素性は不明だが)。ただ、ラズパイの3.3Vから引ける電流はかなり少ないので、サーボに負荷をつなげて動かすならVccはラズパイとは別の電源と繋げる必要あると思うので注意。

 

Simulink Onlineから動かす

GPIOのモデルをつくったときと同様に、まずMATLAB Onlineを開いて

open_system('raspberrypi_gettingstarted')

を実行して、raspberrypi_gettingstartedを開き、これを「raspberrypi_servo」という名前で保存して改造していく。

まずPulse Generator以外は削除したうえで、ライブラリブラウザーから「servo」で検索すると、Standard Servo Writeブロックが出てくるので、ドラッグ&ドロップする。これをPulse Generatorと接続して、Standard Servo Writeブロックをダブルクリックしてパラメーターを設定する。

今回はGPIO18を使うのでPinは18にする。また、今回つかったサーボのMinimum pulse durationは0.5msec、Maximum pulse durationは2.5msecなので、以下のように設定する。

また、Pulse Genearatorをダブルクリックして、サーボに与える信号を設定する。Standard Servo Writeブロックには角度0~180度を入力する必要がある。今回は、以下のように設定して90度と0度を1秒ごとに繰り返すような信号でサーボを動かしてみる。

あとはいつも通りConnected IOを使って実行する。以下が実際に実行した結果。1秒ごとにモーターが90度動いて、また0度に戻っていることがわかる。

Simulink Onlineからサーボモーターを動かすという目的は達成できた。次回はまた違うブロックを試してみよう。

 

参考文献

この本のMATLAB/Simulink 6か月ライセンスを使ってやってます↓
Interface 2022年 9月号

 

MATLAB/Simulink記事まとめ

MATLABとSimulinkの記事は以下にまとめてます。

MATLAB/Simulinkで遊んでみる まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください