Arduino Dueで連続的なパルス波を出力したいためstateflow作成したが正しく出力されない
5 ビュー (過去 30 日間)
古いコメントを表示
stateflowで1-10kHz程度のパルス波を出力したいと考えています.
そのため下記のチャートを作成しました.
チャートのプロパティから更新方法を不連続にし,入力(num_of_pulse)も不連続の場合,サンプル時間を細かくすれば正しく出力します.
しかし連続の入力の場合正しく出力できません.
結果は下図の青線になります.
ここで質問です.
・更新方法を不連続にしサンプル時間を極小にするとシミュレーション時間が非常に長くなるがArduinoに書き込んだ場合は正しく俊敏に動作してくれるのでしょうか?
・更新方法を連続にした場合,どのようにすれば正しいシミュレーション結果を得られるのでしょうか?
0 件のコメント
採用された回答
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]辺りが限界かと予想しています。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Arduino Hardware についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!