超低速2相パルス発生回路・ケース入れ
2024年3月25日:超低速2相パルス発生回路 の続き。
こんな回路に落ち着きました。
・電池3本運用。
・秋月の昇圧DC-DCモジュール
AE-XCL102D503CR-G で5Vを発生。
ただし、ちょい改造(EN端子のプルアップを外す)
・電源スイッチと操作スイッチを共用。1つだけ。
長押しで電源のon/off操作。
短押しでCW/CCW/stop選択。
このためにあれこれややこしい回路に。(黄色部)
・最低周波数が0.1Hz。
最高周波数を(無理やり)9990.0Hzに。
・周波数によって設定できる最小桁が変化。
150Hzまでは0.1Hz。2800Hzまでが1Hz。それ以上が10Hz。
・1.5kHz程度までは、設定値から0.01%内の誤差。
10Hzステップになる2.8kHzあたりだと0.016%。
5kHzあたりまで上がると0.03%。
最高周波数に近づくと分周比が小さくなり誤差が目立ちます。
0.06%ほどの誤差が生じることがあります。
・例えば9810Hzの設定なら分周比が815で
出てくる周波数が9815.95Hzとなって+0.061%の差。
また、9970Hzも9980Hzも同じ分周比802になり
出てくるのはどちらも9975.06Hz。
でも、8000Hzの設定は誤差ゼロで出てきます。
バックアップがわりのスケッチ。
・ダウンロード - cw_ccw2k1b.txt
※inoではなくtxtにしてます。
箱はダイソーで買ったプラケース。
(電池保管用のものだったか・・・)
LowBat警報表示
電池電圧が3Vを切ると、空電池マークと半分電池
マークを交互に点滅表示します。
重要アラームは点滅させて欲しい
なんて記事も書いてますし。
内部処理でキツいのが周波数を上げたとき。
最高が9990Hzですので、その2倍の周波数
(トグルさせるので2倍に)でタイマー1の
コンペエマッチ割り込みが発生します。
周期が50μ秒ほどとなって、16MHzのATmega328P
にはなかなかキツい。
この割り込みの他に、システムタイマーであるタイマー0の
オーバーフロー割り込みを止めて、別の周期、
3.90625kHz=0.256msのタイマー割り込みを
使っています。
これの主目的はロータリーエンコーダのチャタリング除去。
2つの割り込み処理のタイミングを見てみます。
オシロの無限残光モードがありがたい
B相出力が変化する前にタイマー1のコンペエマッチ
割り込みを終えなければ、2つのパルスを正しい
タイミングで出力できません。
タイマー割り込みの処理時間がけっこう長いので、
これが問題。
シリアル出力すると、この割り込み処理による
遅延も入ってきます。
※I2C液晶制御でも割り込み絡むのか?
最高周波数になると、タイミングはなかなか
キビシイです。
ロータリーエンコーダの読み取りタイミング。
I2C液晶での文字表示(xxxx.xHzの8文字)に
いがいと時間がかかります。
| 固定リンク
「電子回路工作」カテゴリの記事
- トラ技2024年10月号に「加熱完了報知回路」(2024.09.08)
- 穴を残しておきたいのでハンダしたくない(2024.09.04)
- ひさしぶりのバージョンアップ:チャートレコーダ(2024.07.02)
- 磁石にくっつく電線(2024.06.11)
- AVRマイコンAT90S1200を使ったデジタル時計(2024.06.02)
「ツール」カテゴリの記事
- 40年前の「HAKKO DASH」(2024.07.17)
- ひさしぶりのバージョンアップ:チャートレコーダ(2024.07.02)
- 松下の「ホロホロブザー」つながりで(2024.06.19)
- 非反転アンプ 3kΩと27kΩの抵抗(2024.05.30)
- ハンダゴテのコテ先温度を上げたい エエ感じに(2024.05.19)
「Arduino」カテゴリの記事
- 液晶表示:CG-RAMの表示がちょいと違う(2024.09.12)
- ひさしぶりのバージョンアップ:チャートレコーダ(2024.07.02)
- 最適化処理のせいで悩んだぞ 呪文volatile再び(2024.06.06)
- 数値をBCD出力(表示)するルーチン #3(2024.05.03)
- ダイソー SHOOTING LIGHT:撮影用ライト LEDの輝度変化を探る #2(2024.05.03)
「割り込み処理」カテゴリの記事
- 最適化処理のせいで悩んだぞ 呪文volatile再び(2024.06.06)
- I2C液晶のアクセス、割り込みで処理しないようにすると(2024.04.12)
- I2C液晶のアクセス、割り込み処理で遅れる原因らしきもの(2024.04.07)
- 超低速2相パルス発生回路・ケース入れ(2024.04.03)
- 超低速2相パルス発生回路(2024.03.25)
コメント
おっと・・・
I2Cも割り込みを使こうとるゾ。
最高周波数9990Hzでの運用は、ほんとに微妙なところみたい。
オシロで見る限り、スカタンは生じてないようだけど、タイミングはギリギリ。
LowBat警報の表示、タイマー割り込みでタイムアップを検出。
その表示(I2C液晶だ)処理と「うまいこと」重なると、いちばん大事なOC1A割り込みの処理が遅れる。
けど、現状、なんとか間に合っているようでっす。
タイマー0割り込み(システム用)を殺した(オーバーフローさせない)状態でI2Cの液晶を使ったけど、どうなっているのか・・・
経過時間読み出しのmicrosはまともに動いていないはず・・・
I2Cに異常が起きたら・・・知らん
まぁ・・・エエか。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2024年4月 5日 (金) 19時43分
テストプログラムを書いてI2Cアクセスでの遅れを観察してみたら・・・
15μsほど遅れるタイミング(割り込みを受け付けてもらえない区間)が出現。
CW/CCW波発生の観察波形と合ってます。
微妙なタイミングが必要な処理で、I2Cアクセスの液晶を使うと、トラブルの要因になるかも。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2024年4月 6日 (土) 11時31分