Arduino Dueで連続的なパルス波を出力したいためstateflow作成したが正しく出力されない
5 views (last 30 days)
Show older comments
stateflowで1-10kHz程度のパルス波を出力したいと考えています.
そのため下記のチャートを作成しました.
チャートのプロパティから更新方法を不連続にし,入力(num_of_pulse)も不連続の場合,サンプル時間を細かくすれば正しく出力します.
しかし連続の入力の場合正しく出力できません.
結果は下図の青線になります.
ここで質問です.
・更新方法を不連続にしサンプル時間を極小にするとシミュレーション時間が非常に長くなるがArduinoに書き込んだ場合は正しく俊敏に動作してくれるのでしょうか?
・更新方法を連続にした場合,どのようにすれば正しいシミュレーション結果を得られるのでしょうか?
0 Comments
Accepted Answer
Toshinobu Shintai
on 7 May 2022
Edited: Toshinobu Shintai
on 7 May 2022
連続時間の場合は、タイムステップを可能な限り長く取り、計算時間を効率化することをしますので、今回のような結果になるかと思います。
一般的な話になりますが、Arduinoなどのマイコンに機能を実装する際には、離散的なタイムステップで計算できるモデルを作らなければなりません。「サンプル時間を細かくすれば正しく出力します」という動作は、正しい振る舞いになります。
例えば10kHzのパルス波で、dutyの分解能を1%刻みで出力したいという場合は、
1 / 10000 / 100 = 1e-6 = 1[us]
のサンプリングタイムステップを設定しなければなりません。Arduino DueにSimulinkモデルを実装して実行する場合は、これほど小さいタイムステップでは実行はできないと思います。分かりませんが、おそらく50[us]辺りが限界かと予想しています。
0 Comments
More Answers (0)
See Also
Categories
Find more on Arduino Hardware in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!