simulink上で​PWMを生成するには​どうすれば良いですか​。

初歩的な質問ですみませんが、下記のようなコードでデジタルピンからPWM出力をすることはmatlabでは容易ですが、simulinnkではどのように実装できるのでしょうか。
for j=0:255
writePWMVoltage(a,'D10',j*5/255);
end

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 6 Aug 2022

0 votes

「writePWMVoltage」は、Arduinoのデバイス操作の関数だと想定してお答えします。まず、「Simulink Support Package for Arduino Hardware」をインストールしてください。そうすると、Arduinoのデバイスを読み書きできるブロックが扱えるようになります。
ブロックの使い方は、こちらの動画が参考になると思います。

3 Comments

KO
KO on 6 Aug 2022
参考動画までありがとうございます。
PWMといえどアナログ端子を使うのでしょうか?
参考動画内の添付写真のブロック図は、上下の繋がりが一見ないのにどうして上段の変数が下のアナログ入力のスコープに反映するのでしょうか。
また、PIN0とPIN2はそれぞれどこに対応しているのでしょうか。
立て続けに申し訳ございませんが、ご教授のほどよろしくお願い致します。
Toshinobu Shintai
Toshinobu Shintai on 7 Aug 2022
PWMをArduinoから出力するには「PWM」ブロック、Arduinoのアナログ入力ピンの数値を参照するには「Analog Input」ブロックを使います。
動画の6:22辺りをみていただければ分かりますが、アナログ入力ピンにはRC回路が接続されており、PWM波形にローパスフィルタがかけられたような波形が入力されることになります。つまり物理的にPWM出力ピンとアナログ入力ピンは繋がっています。
ブロックのピン設定とそれに対応するピンの位置は、Arduinoのボードに書かれている番号そのままに対応しています。詳しくはこちらと、Arduinoさんのドキュメントをご参照ください。
KO
KO on 9 Aug 2022
ご丁寧にありがとうございます。
Arduinoのanalog 入力ピンにRC回路およびGNDが接続されているためそこに電流が流れ、そこにスコープを当てれば波形が観れるということがなんとなくわかりました。Pin2がPWM対応なのかは疑問ですが。
実際にキットを組み立てて実装して確認してみようと思います。細かな疑問にお答えしてくださりありがとうございました。

Sign in to comment.

Products

Release

R2021a

Asked:

KO
on 6 Aug 2022

Commented:

KO
on 9 Aug 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!