発振回路

2025年7月 3日 (木)

DDS IC「AD9833」をArduino UNO R3で制御:箱入れ #2

DDS IC「AD9833」をArduino UNO R3で制御:箱に入れる
ここからちょっと手直し。
 ・高い周波数で方形波を出力するとちゃんとした
  波形が出てこない。原因はアンプの飽和。
 ・AD9833の出力、正弦波と三角波だとおよそ
  0.6V(p-p)なのが、方形波だと電源電圧フルスイング
  になってしまう。
 ・このため、前の回路では前段のアンプ(4V(p-p)まで増幅)
  が飽和。
 ・そこで、方形波の時にレベルを下げるような細工
  を入れ込む。
 ・使ったのは2入力のアナログマルチプレクサ。
    74LVC2G53 8pinのIC
      「2G」なんで2ゲートかと思いきや
      機能ブロック的には一つだけ。
      なんかへんな感じ。
 ・方形波を出力する時は、出力レベルを1/9した側に
  切り替える。
 ・飽和しないしLPFを通らないので、まっとうな
  方形波(今度はアンプでの帯域制限)が出るように。

ということで、こんな回路になりました。
  ※回路変更あり(一連のコメントを参照)
Ad9833
・BSch3Vのデータ
   ・ダウンロード - ad9833_04.ce3

切り替え機能を追加したスケッチ。
   ・ダウンロード - ad9833_03.zip

AD9833を使う時の参考にどうぞ。

周波数を高くするときにいるのは、やっぱ、フィルタです。
これ以上の高速アンプは電気食いだし、電池運用はちょい
としんどいか。

※回路図をちょっと訂正
LVC2G53の手前の2段CRフィルタ。
マルチプレクサの入力容量がけっこうあるようなので
(データシートでオン時約20PF)フィルタ部を変更しました。
9833a
  入力部の抵抗を200Ω→1Kに。
  コンデンサをなしに。
1MHzあたりからレベルが落ち始めます。
4MHzになると出力電圧はほぼ半分に。

※追記
AD9833の出力を
  ・出力レベルを可変したい
  ・出力ののDCオフセット電圧を可変したい
ときの方法、面倒でもこんな構成かと。
Pm4
方形波の時はLPFを通さずできるだけ「生」信号
を使えるよう、MPXで分けます。
正弦波、三角波の時だけLPFを通します。
12dB/octので描きましたが、2段にして24dB/octや
LCフィルタでも良いわけです。
方形波出力のとき、後段アンプを飽和させないように
します。
  飽和させると電源ラインが汚くなります。
周波数が高くなると、高抵抗が使えなくなるので
ボリュームの入力部が面倒になります。

現スケッチのままで動くように
 マルチプレクサのプルアップ抵抗をプルダウンに。

04a


| | コメント (22)

2025年6月30日 (月)

DDS IC「AD9833」をArduino UNO R3で制御:箱に入れる

DDS IC「AD9833」をArduino UNO R3で制御
DDS IC「AD9833」の出力にバッファアンプを
DDS IC「AD9833」の出力にバッファアンプを #2

この時は、むき出しのユニバーサル基板でした。
便利に使おうとすると、
 ・箱に入ってて欲しい
 ・電池運用したい
となってしまいます。

百均屋で買ってきた透明樹脂の「箱」に入れました。
  回路は、元のとほぼ同じ。
  出力アンプはOPA2863で。
  1MHzちょいが安定して出ればOK。
  ほんとは出力レベルを可変したかったけど、
  DCオフセットの調整だけ。

Sw11
手組みした基板の様子。
Ss12_20250630150301
回路図。 (クリックで拡大↓)
Ad9833_dds03
スケッチ
  ・ダウンロード - ad9833_02.zip

AD9833のクロックをATmega328Pから出してますんで
ヒューズを書き換えて、16MHzクロックを出すようにし
なくちゃなりません。
  テストするだけならPB1に出してる8MHzも
  使えます。

役に立つかどうかは不明ですが、周波数スイープ機能を
入れてます。
  ラジオのIFトランスの調整あたりに
  使えないかなぁ。
ジャンクボックス内で拾った455kHzのセラミック・フィルタ
とTrラジオのIFTで試してみました。
Sw13

Sw14
フィルタの中心、455kHzが見えています。

スイープ速度を速くすると、周波数計算を行っている
サイクルが見えてきます。
Sw15
計算はもっと早くできるんですが液晶表示が遅い。
液晶表示は0.1秒に1回。

もうひとつ。
AD9833をはじめ、さまざまなDDS IC、無線家の皆さんが
VFOとして使われることが多いようで「スプリアス」を
気にされています。
しかし・・・原理的に、クロック周波数に近い、高い周波数
を出そうとすると、DDS処理に絡むジッタの割合が大きく
なり、きれいな波形が得られません。

これ、正弦波じゃなく方形波(DACデータのMSB)で見ると、
「なんじゃこりゃ」が見えてきます。
今回の回路では16MHzが基準クロック。
割り切れる8MHzや4MHz、2MHz、1.6MHz、1MHzは
きれいな波が出てきます。

4MHzだとまっとうな方形波。
Aa001_20250630170201
16クロックで1μsになり、そこに4発の方形波
が並びます。
1発あたり4クロック。

ところが5MHzになると・・・
  発生周波数を自由にできるのが
  DDSの取り柄なんですけれど。
Aa000_20250630170401
1μs間に5発のパルスが続くんで間違いなく5MHz。
でもそのパルスの間隔、周期は1クロック幅で右に
行ったり左に行ったり。

例えば、1秒ゲートの周波数カウンタで計ったら
こんな波形でもほんとにジャスト5MHzになります。
  それがDDSの原理。

オシロで単発波形を採るんじゃなくちょいと
流してみるとこんな波形になります。
Aa002
「なんじゃこりゃ」のデジタルデータを使って正弦波の
データが入ったROMをアクセスしてD/A変換。
周波数が高いほど、影響が大きく出てきます。
この波形が元になるんで、
  「スプリアス、そりゃ出まっせ」
かと。
クロック周波数に近い、高い周波数が欲しいときは、
出す周波数ギリギリのフィルタで高調波を落と
すしかないでしょ。

※追記
もう一つ、スイープ波形。
制限波出力で1kHz→4MHzを4秒かけてスイープ。
 上段がスイープトリガ用出力。
 中段がAD9833の出力。
 下段だOPA2863を2段通った出力。
  リニアでのスイープなんでこういった周波数特性
  を見る時はLOGスイープが欲しくなります。

Wv12
4MHzになるとレベルが約半分に。
OPA2863の性能が見えてます。
  オペアンプ前段に入れた220Ω+100PF2段の
  LPFのせいです。
  OPA2863はもっと優秀。

※MAX038発振器では ・・・
昔に組んだMAX038発振器では出力オペアンプとして
「AD811」を使ってました。
  帯域幅    140MHz
  スルーレート 2500V/μs
DigiKeyでの現在価格2200円。

※続き
DDS IC「AD9833」をArduino UNO R3で制御:箱入れ #2


| | コメント (0)

2025年6月26日 (木)

DDS IC「AD9833」の出力にバッファアンプを #2

2025年5月27日:DDS IC「AD9833」の出力にバッファアンプを
この記事でチラリと書いた、高速オペアンプ。

この時は手持ちの「AD823」を使いました。
その後、OPA2863(バイポーラのdual op-amp)と
OPA810(SOT23のsingle FET入力OP-AMP)とを手
に入れて比較してみました。

AD823
 FET-input
 Output swings rail-to-rail
 -3dB bandwidth of 16MHz, G = +1
 Slew rate of 22V/μs
 maximum input bias current: 25pA

OPA2863
 rail-to-rail input and output,
 Unity-gain bandwidth: 110MHz
 Gain-bandwidth product: 50MHz
 Slew rate: 105V/μs
 Input bias current: 300nA

OPA810
 FET-input
 Rail-to-rail input and output
 Small-signal bandwidth: 140MHz
 Gain-bandwidth product: 70MH
 Slew rate: 200V/μs
 Input bias current: 2pA

AD9833 DDS ICが出す出力波形は、
  正弦波、三角波、方形波が
選べます。
正弦波と三角波は、L電圧が0.038V、H電圧が0.65Vで
P-P値で0.6Vほど。
方形波にすると、0V~5Vのフルスイング波が出てきちゃう
のです。
こんな回路でバッファしたので、方形波を出すとAMP1が
飽和してしまいます。
Cc05
3種のアンプで、出力波形がどうなるか、方形波を
出力して比較してみました。
Cc02
それぞれの波形、
  上からDDS出力につながるAMP1の+入力。
  真ん中がAMP1の出力。
  下が出力波形。 (AMP2は反転増幅)
AD823は1MHzになるとまともな波形が出てきません。
  ※正弦波だとレベルは下がるけどちゃんと
   見えます。
他の二つはさすがに高速アンプ。
飽和した方形波でも頑張って出してくれました。

DigiKey調べだと
 AD823  1400円  昔はもっと安かった
 OPA2863 360円
 OPA2810 730円
  (実験で使ったのはsingleのOPA810を二つ)

OPA2863がリーズナブルでしょか。
ただし、バイポーラなんで入力バイアス電流が300nAと
だいぶと大きいです。
汎用のLM358の入力バイアス電流が20nAですんで、
15倍の差があります。
  LM1458は200nA。
帰還抵抗をあまり大きくできません。
バイアス電流の小さなFET入力のだと、自由に決められるんで
便利です。

| | コメント (0)

2025年5月27日 (火)

DDS IC「AD9833」の出力にバッファアンプを

2025年5月25日:DDS IC「AD9833」をArduino UNO R3で制御 
この続き。
便利そうなツールになりそうなのでケース(百均の)に
入れるつもりですが、作業はまだ。

AD9833の出力レベルが小さいので、もうちょい大きくして
みました。

定格だと、Vout(max)が0.65V。
正弦波や三角波だとGNDからちょっと上がったところ
から波形が始まり、ピークが約0.6Vちょい。
P-P値で0.6Vほど。
RF用途では、このままで良いかもしれませんが、
正確で安定した周波数を出せるんで、低周波発振器としても
役立ちそうです。

そこで、現状の
・0.6V(P-P)を6倍ちょいして0~4Vの振幅に。
・マイナス電源を用意して
  0~+4V、-2V~+2V、-4V~0V
 くらいの範囲で出力電圧をオフセットできるように。
   0Vを中心に4V(P-P)の波形を上下。
・オフセット電圧の調整はボリュームで。
・1MHzを越える周波数はちょっと置いておいて。
・低周波用に直流結合で。

こんな回路を付加してみました。
Ad98_01
手持ちの Rail to Rail In/Outのオペアンプで
使えそうなのが(帯域が欲しいゾ)AD823あたり。
  とりあえず、様子見で
出力波形を切り替えて方形波にしても、ドカンと大レベル
のが出ちゃうということがなくなります。
  正弦波や三角波だと0.6Vですが、方形波にすると
  電源電圧いっぱいの信号になります。
  4V(p-p)になるようにしてるのが、5Vで頭が
  制限されるので、信号が大きくなってびっくり
  することがありません。

帯域があって使いやすそうで安価なアンプ、
このあたりかな。
・OPA810 FET入力 70MHz 1コ入り
・OPA863 バイポーラ入力 110MHz 1コ入り
     OPA2863が2コ入り
     入力バイアス電流が大(0.3uA)
何かのついでに買ってみます。

OPA2863、OPA810での実験

| | コメント (0)

2025年5月25日 (日)

DDS IC「AD9833」をArduino UNO R3で制御

備忘録としてアップしておきます。
2025年5月21日:Arduino UNO R4 minima 電源供給方法でクロックが変わる#4 
この実験で使った「1MHz近傍周波数発振回路」です。

Arduino UNO R4 minima、あるいはRA4M1コアボードから
出力させた1MHzを、このDDS回路で出力した1MHzをmix
してビート音を出しました。
Ad9833_01
DDS IC AD9833は、モジュールじゃなく単体の石を
買ってありました。
25MHzの水晶もあったのですが、あえてATmega328P
から16MHzのクロックを出すようにして横取りしました。
  全体の消費電流は25mAくらい

出力はフィルタやアンプを入れずにそのままです。
  高速オペアンプを買ってあれこれ試して
  みたいところです。
最低周波数が1Hz。 最小桁が0.1Hz。
最高周波数は5MHzあたり。

周波数をスイープする機能を入れてありますんで、
何かの実験で役立つかもしれません。

・制御スケッチ
  ・ダウンロード - ad9833_01.zip

※スケッチ追加修正してます
・sweep時のトリガ用(オシロでの観察)として
 Rise時、PD4をHにしています。
 Hの↑エッジで周波数 A->Bのスイープが
 始まります。
 ↓エッジがWait-Hのタイミングになります。

ABCラジオ(AM 1008kHz)にビートをかけて
遊んでいるところ。 (ラジオを横に置いて)
Aa11_20250525180601

液晶アクセスの「TWI」、AD9833アクセスの「SPI」。
ともにライブラリは使わずATmega328PのI/Oレジスタを
直接操作しています。

ATmega328Pの「SPI」なんて、ほんとに簡単。
  (出力制御の場合)
I/Oポートを操作してる感覚で制御できますんで、
ライブラリなんて要りません。
要るのはATmega328Pのハードウェアマニュアル。


※関連
2024年10月6日:おっと。map関数の計算桁に注意

| | コメント (0)

2025年5月23日 (金)

DDS IC「AD9833」の周波数レジスタ書き込みで

Arduino UNO R4 minimaの1MHz波ビート音実験で
急ぎでっちあげたアナデバのDDS IC「AD9833」。

Arduino UNOで制御する時にちょいと気になる
ことがありました。
  ・・・たいしたことじゃないけど
AD9833の周波数レジスタは28bitで、LSBとMSBに
分けて2回、14bitで書き込みを行います。

こんな感じ。

AD9833ctrl(0x2000);     // B28 on コントロール
spi16(0x4000 | (d & 0x3FFF));     // ch0 LSB 14bit
spi16(0x4000 | ((d >> 14) & 0x3FFF)); //   MSB 14bit

「d」が32bit(つまり4バイト)の書き込みデータで、
最初に「これから2回のデータを書くで」っという
制御コード(B28 on)を送ってから、LSB、MSBの順に
14bitのデータをSPIで書き込みます。

このタイミングをオシロで見たら、SPIの間隔がずいぶん
空いていたのです。
  16bitのSPI転送は5μsほどなのに、
  LSBとMSBのあいだが9μsほどに
  広がっていました。

32bit値を右に14bitシフトする「(d >> 14)」に、
いがいと時間がかかります。

このようにコードが展開されてました。

bae:  ldi  r17, 0x0E ;14
bb0:  lsr  r7
bb2:  ror  r6
bb4:  ror  r5
bb6:  ror  r4
bb8:  dec  r17
bba:  brne .-12   ;0xbb0
bbc:  ldi  r24, 0x3F ;上位3Fでマスク
bbe:  and  r5, r24
bc0:  movw r24, r4  ;R5,R4をR25,R24に
            ;コピーしてspi16()へ

ここで時間がかかっているのが
32bitデータを保持しているR7,R6,R5,R4レジスタの
14回のシフト。
シフト命令もDEC命令も1クロック。
loop中のBRNEが2クロック。
7クロックが14回で98クロックを要します。

そこで、ちょっとでもスピードアップということで、
14bitのシフト方法を変えてみました。

uint16_t a;          // 2バイトの一時レジスタ
  AD98ctrl(0x2000);       // B28 on コントロール
  spi16(0x4000 | (d & 0x3FFF)); // ch0 LSB 14bit
  d = d << 2;          // d >> 14のかわり
  a = d >> 16;         // シフト2回とレジスタ交換に
  spi16(0x4000 | (a & 0x3FFF)); // MSB 14bit


これだと、このように展開されて、シフト回数が2に
なり、ちょいとだけ高速化できます。

bae:  ldi  r17, 0x02  ; 2
bb0:  add  r4, r4
bb2:  adc  r5, r5
bb4:  adc  r6, r6
bb6:  adc  r7, r7
bb8:  dec  r17
bba:  brne .-12     ; 0xbb0
bbc:  movw r24, r6
bbe:  andi r25, 0x3F

さらに「d = d << 2;」という2bitのシフトを、
「d <<= 1; d <<= 1;」と2つに分割してたら
 ldi r17,1
 dec r17
 brne  .-12 が無くなるかと
期待したのですが、同じコードに展開されました。
  brneを使う方が1命令少なくなります。

オシロで見るとこんな波形。
A01_20250523114301
上段の(d >>14 )のところ、なぜか広いので
「これはなんだろか?」っと思いませんか?

気になってコードを見たら、14回のループに
時間がかかっていたというお話しでした。



※関連
2025年5月21日:Arduino UNO R4 minima 電源供給方法でクロックが変わる#4

| | コメント (0)

2025年5月15日 (木)

Arduino UNO R4 minima 電源供給方法でクロックが変わる#3

2025年5月9日:Arduino UNO R4 minima 電源供給方法でクロックが変わる#2 
この続き。

UNO R4の内蔵クロック、とりあえず判明していることは
 ・USBでPCとつないだときはクロック精度が上がる。
    水晶発振並みに
 ・USBを外して外部電源にした時はクロック精度が落ちて
  しまう。
 ・外部電源のときは「HOCOUTCR」トリミングレジスタで
  周波数を調整できる。
 ・でも、USBにつないだ状態でHOCOUTCRを触ったら、
  なんかおかしい。
この他、ジッタ(周波数の微少変動)の問題もあります。

気になるのは、USB接続時のHOCOUTCR操作。
これがどんなものか、テストプログラムを書いてみました。

 ・D4ポートに内蔵クロックを分周して作った1MHzの方形波を出力。
  この周波数をチェックして内蔵クロックの変化を見る。

 ・D3ポートは32ビットのGPT1タイマーのクロック入力に。
  ここにD4ポートが出す1MHzパルスを入れる。

 ・D2ポートをGPT1タイマーのキャプチャ入力に。
  外部から(正確な)1Hzのパルスを入力。
  その↓エッジでカウント値をラッチ。
  1秒周期なのでHz単位でカウント値が読める。

 ・D8ポートはキャプチャのチェックに使える1Hzパルス。
  でもHOCOUTCRを操作して周波数を変えると、この
  パルスの周波数も変わってしまう。
  1MHzパルスと同じ比で変化するので、D8→D2とつな
  ぐと、HOCOUTCRが変わってもいつも1000000Hzジャスト
  のカウント値が得られる。

UNO R4 minimaとの接続はこんな具合。
H11_20250515151201
USBコネクタを外しても通信できるよう、D0ポートの
TXDでデータを出力しています。
  SrealではなくSerial1で。

・制御スケッチ(ファイルタイプをtxtにしています)
   ・ダウンロード - hoco_02.txt

HOCOUTCRを-10~+10まで変化させた時の1MHz周波数を
順次シリアルデータとして出力します。

・外付け電源のときのデータ。
   ・ダウンロード - aux01.txt

・USB接続でのデータ。
   ・ダウンロード - usb01.txt

それをグラフにすると

・外付け電源のとき
Cap004_20250515151601

まっとうに変化しました。
それが、USB接続ではもうはちゃめちゃに。
Cap006_20250515151701
ほぼ1MHzなんですが、ところどころで、タイミングか
なにかは不明ですが、とんでもない周波数が出ています。

これを見ての評価。
  USB接続のときにHOCOUTCRを触ると、クロック周波数が
  とんでもない値になることがある。

内蔵クロックを分周して作った1MHz、USB接続では
1MHzになるよう合わせ込みをしているようです。
しかし、HOCOUTCRをユーザーが変更すると、競合して
しまうようです。

HOCOUTCRの値は、書いたものがそのまま読み出されま
したので、USBでの周波数合わせではこれは触っていない
ようです。

ということで、
 ・HOCOUTCRを触ってメインクロック周波数を
  変えてはダメ。
 ・クロック周波数の精度がいるのなら水晶発振子を
  使うように。

が結論でしょうか。


ちなみに、1Hz信号発生回路はこんなの。
1hz_osc

「ダイソーのミニケース」 に組んでます。
Osc1hz

8ピンの小マイコンを使うとか、リアルタイムクロックICを
使うとか、あれこれ考えられますが、プログラムを組まなくて
も1Hzが得られる4060Bを使いました。
これの欠点。4060Bひとつだと出てくるのは2Hz。
もう1/2したいわけですが、それに何を使うか。

フリップフロップ4013や4027で1/2するのも手ですが、
ワンゲートロジックに「74LVC1G80」という5本足の
「D type FF」があるんで、これで1/2が作れます。
  電源とGND。
  クロック入力(立ち上がり)とD入力。
  そして/Q(反転)出力。
反転出力というのが面白い。
何かのついでに買っておきますわ。

| | コメント (0)

2025年3月 7日 (金)

14bitカウンタ74HC4060の発振段はアンバッファ型じゃないのか?

CMOSのカウンタIC「4060」、昔から便利に使ってきました。
例えば、
 ・2024年6月2日:AVRマイコンAT90S1200を使ったデジタル時計
これは4000番CMOSの4060を使って、32.768kHzの水晶を
発振させてます。
停電時のバックアップができるくらい、消費電流は小さいです。

そして、
 ・2022年6月17日:秋月の赤外光送受信モジュール(AE-RPM851A)を使ってみる(IrDAを試す)
これは、74HC4060で4.9152MHzの水晶を発振させてIrDA通信用
ボーレートのクロックを作っています。
この他、いろんなタイミング作りに4060を使ってきました。
401
4060で発振回路を組むのに重要なのが初段のG1ゲート。
11pinと10pinにつながります。

CR発振ならこんな接続。
402
そして、水晶発振の回路例。
403
Rfで帰還をかけてアナログの反転アンプにします。

問題なのが74HC4060を使った時の挙動です。
CR発振だとCp(10~22PF)を入れておかないと
出力にグリッチが乗ってカウントをミスするのです。

この手の発振回路には「アンバッファ型のインバータ
を使います。
4060のG1がアンバッファ型ならグリッチは出てこないはず
なんです・・・。

で、ちょっと調べてみました。
手元にあった日立のHD74HC4060
11pin入力に三角波を入れ、10pin出力を観察します。
比較するのはアンバッファ型の「74HCU04」の出力。

こんな波形が出てきました。
H000  

もう一つ比較したのが4000番CMOSの4060B。
モトローラのMC14060Bです。
H002

これらを見る限り、HD74HC4060のG1ゲートは
アンバッファ型じゃありません。
入力に対して出力の変化が急峻すぎるのです。

バッファ型だと、CR発振回路を構成したときに
出現するグリッチ、出るのがあたりまえです。

HC4060の10pin、このオシロ波形ではきれいにH/Lが
切り替わっているように見えますが、拡大すると
およそ100μs区間で振動波形(ン十MHz)が出ています。

確認したいのは別メーカーの74HC4060。
何かの時に買って試してみます。

前からむちゃ気になっていたのです。

※関連
2025年1月31日:NECは3段タイプの発振回路をすすめてる

※三角波発生回路はこの記事を
2015年07月31日:レールtoレールOP-AMPの特性を見る
単電源オペアンプの入出力特性を調べる
  POTを回して電圧調整するのがわずらわしいので
  ターゲットの電源電圧範囲(GND~+V)を見て
  三角波の振幅を制限するようにしてます。
   こんな実験回路、他にないでしょっと自画自賛

※追記 4000番CMOSの波形
4000番CMOSのMC14060Bの11pin・10pin間の
G1ゲートが間違いなくアンバッファ型であるのを
チェックするため、アンバッファの4069UBと
バッファ型の4000B(8pin入力、9pin出力)の
3つの出力を比較してみました。
  4069Bの手持ちがなかったので
  間違いなくバッファ型インバータである
  4000Bを使いました。
  4000番CMOSのトップ番号。
  こんな(ちょっと変態)接続。
47_20250308165801  
3つの波形。
48_20250308170001
バッファ型である4000Bの出力が急峻になっていて
4060の出力が4069UBと同じような変化なので
4060がアンバッファ型であるのは間違いありません。

4000Bの出力、エッジ部を拡大すると振動波形
が現れます。
70
シュミット入力じゃないので緩やかに変化する
三角波のどこでH/Lを決めるかが不安定になって
しまい、こんなグリッチが出現します。
4000Bの8pin-9pinゲートは4069Bと同じような
3段型のインバータです。

デジタルオシロの無限残光モードを使うと
うまいこと記録できます。


| | コメント (0)

2025年2月 5日 (水)

CMOS ICを使った発振回路

2025年1月31日:NECは3段タイプの発振回路をすすめてる

この続きで、CMOS ICを使った発振回路、自作したエレクトロニクキーヤー
回路での例を示しておきます。
リンクするページはこの二つ。

2006年06月24日:1975年に作ったエレキーの回路図
2021年9月13日:JK-FF 4027 使用例:ロジックICを使ったエレクトロニックキーヤー

1975年の製作物、これのクロック源はトランジスタでした。
「JK-FF 4027」の記事から、回路図を拾っておきます。

0ek81_01_20250205180001
これは「4538」モノマルチを2段連結にして
クロックパルスを得ています。
モニター音用の発振回路は2段型。

0ek91_20250205180001
こっちは2段型の発振回路。
クロックパルスとモニター音用。

パルス発生の立ち上がり1発がちょっと長くなるので、
それを抑止するのにダイオードでゴソゴソしています。



| | コメント (0)

2025年1月31日 (金)

NECは3段タイプの発振回路をすすめてる

CMOS ICのノンバッファ(アンバッファ)タイプ、ほんとに
少なくなっちゃいました。
74HCで残っているのはHCU04のインバータだけ。
  シングルゲートでは7SU04が現役

4000番シリーズではかろうじて
インバータが4069UBと4049UB、そして
NANDゲートの4011UBが手に入るようです。

古いファイルやデータブックを整理(いらないのを捨てよう)
していたら1984年のNEC CMOS標準ロジックデータブック
出てきました。
CMOSインバータを使った無安定マルチバイブレータ発振回路が
説明してあります。
要は、
 ・アンバッファタイプを使え
 ・2段タイプより3段タイプがおすすめ
   2段だと発振しないかも
 ・バッファタイプだと異常発振

※pdfをアップしておきますのでご一読を。
  ダウンロード - CMOS発振回路.pdf


HS-CMOSを使うと、異常に遭遇する可能性が高くなります。

2段タイプの発振回路例
G11_20250131155001

3段になっても原理は同じです。
G12_20250131155101
1ゲートでon/offするならシュミット入力NANDゲート
がおすすめですが、安定度はもうひとつ。
G13_20250131155101
確実に異常に遭遇するのが74HC4060を使った場合。
A11_20250201083301  
Cpコンデンサを入れておかないと、カウントをミスして
欲しい周波数のパルスが出てきません。

発振部の出力にグリッチが乗ってしまい、カウントが
好き勝手に進むのです。
  高周波のグリッチをカウントしてしまうので
Cpでそれが避けられます。

でも、MC14060B(4000番CMOSの仲間)だとCp無しでも
正しくカウントしてくれます。
  「昔は大丈夫だったのに」に出会えます。

モトローラのMC14060Bのデータシート。
その発振段の説明はこんな図になっています。

G14
リセット入力で初段ゲートを殺して発振を止めるように
なっているのですが、G1の絵では
  出力をフローティングに
というふうな感じに受け取れます。
G1出力が浮いたらG2入力も浮いてしまい、
  ちょっとヤバいんじゃ
と思ってしまいます。
  ※CMOSの入力は浮かしたらアカン

昔々、これを確かめたことがありました。
G1はゲートで、フローティングにはなりません。

74HC4060では、このように描かれています。
G15
上が東芝ので下がTIの。
MC14060Bでもこれと同じでした。
G2入力は浮きません。

4060、スピードやドライブ能力、電圧下限を許すなら
MC14060Bのほうが安定して使えます。

CR発振をon/offしたいとき、アンバッファ型の
ゲートが無いので、しかたなしにHC00を使います。
  ※4011UBの出番なんですが
例えば、こんなブザー駆動回路です。
G16
Cpを入れないと出力波形にグリッチが出ます。
しかし、Cpを入れると、電源電圧が影響して
発振しないとか異常な周波数で発振とか、
おかしなトラブルがおこるのです。
この回路が出すのは単純な音。
ブザー駆動波形のエッジにグリッチが出ていても
「気にしない」ということで、Cpは入れません。


※関連
2017年9月16日:枯れた技術の伝承が・・・
2017年9月17日:枯れた技術… んっ! 枯れ過ぎた?

リップルカウンターICをアナログで使う:Hanako's Papa
インバータを使った矩形波発振回路:meyon's STUDY
デジタル時計をつくる (7) / 32.768KHz 発振回路:meyon's STUDY



| | コメント (0)