人気ブログランキング | 話題のタグを見る

OceanBlue


リーフタンクでクイーンエンゼルのペアリング
by masaX
最新の記事
2023年捕獲群 記録
at 2023-04-14 22:01
2023年群入居
at 2023-04-14 21:56
シュワルベ ワンをチューブレス化
at 2022-12-25 17:20
ずんぐりむっくり
at 2021-08-29 10:08
コンチネンタル GP5000..
at 2021-06-19 15:15
コンチネンタル GP5000..
at 2021-06-02 10:08
コンチネンタル GP5000..
at 2021-06-01 08:22
カテゴリ
外部リンク
フォロー中のブログ
検索
以前の記事
2023年 04月
2022年 12月
2021年 08月
2021年 06月
2021年 05月
2021年 04月
2021年 03月
2021年 02月
2021年 01月
2020年 11月
2020年 08月
2020年 07月
2020年 05月
2020年 03月
2020年 02月
2020年 01月
2019年 11月
2019年 10月
2019年 09月
2019年 08月
2019年 07月
2019年 06月
2019年 05月
2019年 04月
2019年 03月
2019年 01月
2018年 12月
2018年 11月
2018年 10月
2018年 09月
2018年 08月
2018年 07月
2018年 06月
2018年 05月
2018年 04月
2018年 03月
2018年 02月
2018年 01月
2017年 12月
2017年 11月
2017年 10月
2017年 09月
2017年 08月
2017年 07月
2017年 06月
2017年 05月
2017年 04月
2017年 03月
2017年 02月
2017年 01月
2016年 12月
2016年 11月
2016年 10月
2016年 09月
2016年 08月
2016年 07月
2016年 06月
2016年 05月
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 05月
2015年 04月
2015年 03月
2015年 02月
2015年 01月
2014年 12月
2014年 11月
2014年 10月
2014年 09月
2014年 08月
2014年 07月
2014年 06月
2014年 05月
2014年 04月
2014年 03月
2014年 02月
2014年 01月
2013年 12月
2013年 11月
2013年 10月
2013年 09月
2013年 08月
2013年 07月
2013年 06月
2013年 05月
2013年 04月
2013年 03月
2013年 02月
2013年 01月
2012年 12月
2012年 11月
2012年 10月
2012年 09月
2012年 08月
2012年 07月
2012年 06月
2012年 05月
2012年 04月
2012年 03月
2012年 02月
2012年 01月
2011年 12月
2011年 11月
2011年 10月
2011年 09月
2011年 08月
2011年 07月
2011年 06月
2011年 05月
2011年 04月
2011年 03月
2011年 02月
2011年 01月
2010年 12月
2010年 11月
2010年 10月
2010年 09月
2010年 08月
2010年 07月
2010年 06月
2010年 05月
2010年 04月
2010年 03月
2010年 02月
2010年 01月
2009年 12月
2009年 11月
2009年 10月
2009年 09月
2009年 08月
2009年 07月
2009年 06月
2009年 05月
2009年 04月
2009年 03月
2009年 02月
2009年 01月
2008年 12月
2008年 11月
2008年 10月
2008年 09月
2008年 08月
2008年 07月
2008年 06月
2008年 05月
2008年 04月
2008年 03月
2008年 02月
2008年 01月
2007年 12月
2007年 11月
2007年 10月
2007年 09月
2000年 01月
その他のジャンル

なるほど そういう事か

先日から サイン波になぜか傷ができる件で いろいろ考える中



そらさんが 実際に同じ様なプログラムでテストして下さって



原因を特定して頂いたので 自分でもプログラムの動きを分析してみた



まずは フィルターを通した出力と 通さない出力をオシロスコープで同時に測定してみた



なるほど そういう事か_e0359523_12541817.jpg



確かに間違いなく Compare1aの割り込み時に起こっている



一コマ分、ONのままになってる時間があるようだ



次にCompare1aの割り込み(ポートをセットする)に入ってから ポートのリセットをするCompare1bの割り込みに入るまでのカウントを測ってみると およそ138あたりになる

それから サイン波の半波の両端部分のサイン波データを取り出すと 半波を100コマ割りの時で 始めと終わりの5コマ分ほどは138を下回ってる




この事からプログラムを解析してみると



↓今までのプログラム



Incr C_cycle
If C_cycle > Koma Then
  C_cycle = 1
  Toggle Fg_out1



  If Sw_on = 1 Then
    Compare1a = Compa1a_hi ’およそ1666
  Else
    Compare1a = Compa1a_low ’およそ5000
  End If
End If



If Sw_on = 1 Then
  Compare1b = Sinha_hi(c_cycle) ’サイン波データ半波分のデータを入れた配列
Else
  Compare1b = Sinha_low(c_cycle) ’Sinha_hi(c_cycle)のデータを何パーセントか減じた値の配列
End If



↑実際には(サイン波半波の両端付近では)この時点で Timer1のカウントはCompare1b を超えている



※Timer1=0  ’ここでタイマーをクリアすると治まる



↓Timer1がCompare1bを超えてからポート出力をONにするものだから 次の割込みに入るまでONのままで もしも次の割込みでもCompare1bより小さい場合には もう一コマONのまま進んでしまう 



If Fg_out1 = 0 Then
  Reset Out2
  Reset Swit2



  Set Out1
  Set Swit1
Else
  Reset Out1
  Reset Swit1



  Set Out2
  Set Swit2
End If



それなら サイン波両端の0に近い部分では ポート出力をONにせず(どうせ小さな電圧だし) 無視して走っていけば解決するんじゃないか?



Compare1aの割り込みに入ってからCompare1bの割り込みでポートをリセットするまでのカウントが 凡そ138だったので 余裕を見て サイン波データが150以下の場合は無視するようにしてみた



という事で 書き直してみたのが これ↓

     Incr C_cycle
     If C_cycle > Koma Then
       C_cycle = 1
       Toggle Fg_out1



       If Sw_on = 1 Then
          Compare1a = Compa1a_hi
       Else
          Compare1a = Compa1a_low
       End If
     End If



     If Sw_on = 1 Then
        Compare1b = Sinha_hi(c_cycle)
     Else
        Compare1b = Sinha_low(c_cycle)
     End If



     If Compare1b > Timplus Then ’このTimplusを150に設定
        If Fg_out1 = 0 Then
          Reset Out2
          Reset Swit2



          Set Out1
          Set Swit1
        Else
          Reset Out1
          Reset Swit1



          Set Out2
          Set Swit2
        End If

     End If



少々仕事が増えた事になりますが



これで どうだっ!!



低いコマ数ほど 強く出てた症状ですが



なるほど そういう事か_e0359523_12541974.jpg





30コマ割の 少ないコマ数でも スムーズに繋がるようになった



0V付近で スキップしてるデータがあるので 少し歪みが出てますが



今回は理由が分かってるのと ポンプを回すに当たってこの程度の歪みは



まったく影響の無いレベルなので 合格とします



フィルターを弱くしたので ぱっと見は昨日の波形の方が滑らかですが



こっちの方が正確です


どうしてタイマー1をクリアすれば解決したのかも理解できた



そらさん ありがとうございます!!




ここで面白いのが 乱れた波形を見ると どう見てもCompare1aの割り込み時(0V時)に見えないタイミングなのですが これはフィルターのコンデンサで 周期が送れて出てきてるものだったのも分かった



もう少し 波形を綺麗にする事もできる気がするので もう少しだけ頑張ってみる 







追記



最終的には



 Stop Timer1
   上記サブルーチン
 Timer1 = 0
 Start Timer1



として 上記Timplusを20に設定し



20以下のサイン波データだけを無視する事にした

なるほど そういう事か_e0359523_12542438.jpg



波形が歪むけれども キャリア周波数は高い方で40KHzでも追従できるようになった



(上記画像は8KHz 下の画像が40KHz)



なるほど そういう事か_e0359523_12542423.jpg





by masax7790 | 2011-06-17 23:06 | AVRマイコン関連
<< 改良 サンゴ再生プロジェクト 第3段 >>