Arduino Dueで連続的なパル​ス波を出力したいため​stateflow作​成したが正しく出力さ​れない

13 ビュー (過去 30 日間)
mochi
mochi 2022 年 5 月 6 日
編集済み: Toshinobu Shintai 2022 年 5 月 7 日
stateflowで1-10kHz程度のパルス波を出力したいと考えています.
そのため下記のチャートを作成しました.
チャートのプロパティから更新方法を不連続にし,入力(num_of_pulse)も不連続の場合,サンプル時間を細かくすれば正しく出力します.
しかし連続の入力の場合正しく出力できません.
結果は下図の青線になります.
ここで質問です.
・更新方法を不連続にしサンプル時間を極小にするとシミュレーション時間が非常に長くなるがArduinoに書き込んだ場合は正しく俊敏に動作してくれるのでしょうか?
・更新方法を連続にした場合,どのようにすれば正しいシミュレーション結果を得られるのでしょうか?

採用された回答

Toshinobu Shintai
Toshinobu Shintai 2022 年 5 月 7 日
編集済み: Toshinobu Shintai 2022 年 5 月 7 日
連続時間の場合は、タイムステップを可能な限り長く取り、計算時間を効率化することをしますので、今回のような結果になるかと思います。
一般的な話になりますが、Arduinoなどのマイコンに機能を実装する際には、離散的なタイムステップで計算できるモデルを作らなければなりません。「サンプル時間を細かくすれば正しく出力します」という動作は、正しい振る舞いになります。
例えば10kHzのパルス波で、dutyの分解能を1%刻みで出力したいという場合は、
1 / 10000 / 100 = 1e-6 = 1[us]
のサンプリングタイムステップを設定しなければなりません。Arduino DueにSimulinkモデルを実装して実行する場合は、これほど小さいタイムステップでは実行はできないと思います。分かりませんが、おそらく50[us]辺りが限界かと予想しています。
細かいパルス波形を出したいのであれば、こちらで紹介されているPWMブロックを用いることをおすすめします。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeArduino Hardware についてさらに検索

製品


リリース

R2019a

Community Treasure Hunt

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

Start Hunting!