« 不安定なDCプラグ | トップページ | 御幸森神社宮司さんより緊急呼び出し »

2024年10月13日 (日)

1/nカウント方式とDDS方式の2相パルス発生回路

Arduino UNO R3を使った2相パルス発生回路
 ・1/nカウント方式:タイマ1の分周器を制御
 ・DDS方式:クロック80kHzでDDS処理
のスケッチ、バックアップがわりに置いておきます。
   ・ダウンロード - cw_ccw.zip

2つの回路図は同じ。
Arduino UNO R3で試すならこちらを。
Z12_20241013173501

ATmega328Pで手組みするならこんな感じ。

Z13_20241013173601

※関連
2024年10月5日:DDS方式の2相パルス発生回路、周波数スキャン機能を付ける
2024年9月24日:秋月のI2C接続液晶 AQM1602XAを基板に直付け

※1/nカウント方式2相パルス発生回路の概略

・出力周波数範囲  0.1Hz~9990.0Hz
  ロータリ・エンコーダで周波数を設定
  周波数により設定できる最小桁が変化
    0.1~299.9Hz : 0.1Hz単位で設定
    300~ 2999Hz : 1Hz単位で設定
   3000~ 9990Hz : 10Hz単位で設定
・指定した数のパルスを出力する機能を持つ
  1~999999の範囲で指定した数のパルスを出力して停止
・タイマ1のクロック入力周波数÷目的周波数で分周比(16bit整数)を
 計算しているので、周波数が高くなると誤差が出る
・設定周波数に対する実出力周波数の誤差を液晶表示
・1/nで出力周波数を得ているのでジッタは発生しない
・電池電圧低下で警報表示
・スイッチ機能(短押し)
 SW1 設定した数のパルスをCCWで出力
 SW2 パルス出力を停止
 SW3 設定した数のパルスをCWで出力
 SW4 周波数とパルス数の設定入力の切り替え
・スイッチ機能(長押し)
 SW1 CCWでパルスを連続出力
 SW2 設定値をEEPROMに保存
 SW3 CWでパルスを連続出力
 SW4 パルス・カウント・エッジ↓↑の切り替え


※DDS方式2相パルス発生回路の概略

・出力周波数設定範囲  0.10Hz~9999.99Hz
  0.01Hz単位
  入力位置はカーソル移動で
  ロータリ・エンコーダで設定
・DDSの基準クロックは80kHz
・ジッタが発生するが平均すると設定周波数が得られる
・電池電圧低下で警報表示
・画面を切り替えて周波数スイープ機能のパラメータを設定
  周波数の下限,上限
  rise,fall時間
  上限,下限でのwait時間
・スイッチ機能(短押し)
 SW1 パルス出力on/off
 SW2 周波数入力カーソル位置を左へ
 SW3 周波数入力カーソル位置を右へ
 SW4 sweep開始
・スイッチ機能(長押し)
 SW1 設定値をEEPROMに保存
 SW2 CCWでパルスを連続出力
 SW3 CWでパルスを連続出力
 SW4 sweep機能のパラメータ設定


出力パルスを「周波数」で設定できます。
1/nカウントは「整数分の1」ですんで誤差が生じます。
  (液晶に設定値と出力値の誤差を表示)
DDS方式のは0.01Hzを可変できるようにしたんで
ちょい面白いかも。 ただし、ジッタが出ます。

※追記
1/nパルス方式もDDS方式も2相パルスを出しますが、
その1相だけ(単発パルスとして)を使っても便利です。

・1/nパルス方式なら「60Hzのパルスを120発出して停止」。
何て機能、これを備えたツール、なかなかありませんよ。
パルス数の最大が99999発と16bit越え。

・DDS方式のスイープが便利。
59Hz~61Hzを10分かけてup/downという設定も可能。
最小桁が0.01Hzですんで、59.01、59.02、59.03・・・
と周波数が変化します。
一定周期で周波数が振る信号、たまに欲しい時があります。
  ・・・このツールでは方形波ですが


|

« 不安定なDCプラグ | トップページ | 御幸森神社宮司さんより緊急呼び出し »

Arduino」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 不安定なDCプラグ | トップページ | 御幸森神社宮司さんより緊急呼び出し »