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

조회 수: 10(최근 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개)

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!