MATLAB/SimulinkでRasberry Pi制御その6:Simulink OnlineからラズパイをPWM制御(してブザーを鳴らしてみる)

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

Simulink OnlineからRaspberry PiのGPIOにWriteして動かす

前回はSimulink OnlineからRaspberry Piに接続したサーボモーターを動かしてみた。今回は、Simulink OnlineからラズパイをPWM制御してみる。具体的には、入力する方形波の周波数によって音が変わるパッシブザーをラズパイに接続して、パッシブブザーへの入力する方形波をPWM制御で変えて遊んでみる。

PWM制御については、MathWorks社の以下のページを参照して進める。

https://jp.mathworks.com/help/supportpkg/raspberrypi/ref/pwm.html

ちなみにパッシブブザーは以下のキットのものを使っている。

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Buster)

MATLAB online (MATLAB R2022a)

Simulink online

 

ラズベリーパイに接続する回路

回路はブレッドボードに組んでラズパイと接続するが、回路図&ブレッドボード上の接続は以下の記事で書いたものをそのまま流用しているので、以下を参照。

【電子工作】Python + pigpioでPWM制御をしてパッシブブザーを鳴らす(Raspberry Pi 4で遊ぼう日記 その14)

回路図だけ再掲しておく。今回はGPIO19ピンをPWM制御する。

実際に接続したのが以下の写真。

 

Simulink Onlineから動かす

次に、Simulink Onlineでモデルを作っていく。まずは前回同様にMATLAB Onlineを開いて

open_system('raspberrypi_gettingstarted')

を実行して、raspberrypi_gettingstartedを開く。今回はこれを「raspberrypi_pwm」という名前で保存して改造していく。まず、ConvertとLEDブロックは今回使わないので削除して、ライブラリーブラウザーから「pwm」とかで検索して、Raspberry Pi用のPWMブロックをドラッグ&ドロップして、Pulse Generatorと接続する。今回はGPIO19ピンを使うので、Pinは19にして、周波数は500Hzにした。

つぎにPulse Generatorをダブルクリックして、ラズパイに与える信号を変える。PWMブロックの入力は0~1の正のスカラー値で、値によってPWM信号のDuty比が変わるようになっている。今回はPulse Generatorから出す信号を0.5にして、Duty比50%で動かしてみることにした。ずっと鳴りっぱなしだとちょっとうるさいので、2.5秒ごとに振幅0.5の信号を出すようにしている。

これで準備完了。あとはいつも通り「IOを使って実行」から実行してみる。以下が実行した動画。PWM制御によって音が変わる様子を確認するため、動画の前半は上で書いたようにPWMブロックの設定を500Hzにした様子、後半はPWMブロックの設定を1kHzにした様子を撮影している。音を聞くと、周波数が高い方が高い音が出ていることがわかる。

本当はハンディのオシロスコープでPWM制御の波形も見てみようと思っていたのだが、充電が切れていたので面倒くさくなってやめた…笑

ひとまずSimulink OnlineからPWM制御してみるという目的は達成できた。

 

参考文献

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

 

MATLAB/Simulink記事まとめ

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

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

 


投稿者: wakky

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

コメントを残す

メールアドレスが公開されることはありません。

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