rilyのアイコン画像
rily 2026年01月05日作成 (2026年01月06日更新)
製作品 製作品 閲覧数 41
rily 2026年01月05日作成 (2026年01月06日更新) 製作品 製作品 閲覧数 41

PFM発振器をLTSpiceで作ってみた

PFM発振器をLTSpiceで作ってみた

今回はPFM発振回路を考案してLTSpiceで作ってシミュレーションしてみました。
PWM発振回路は沢山あるのですが、オン時間やオフ時間が固定されたPFM発振回路はあまり聞きません。ですので作ってみることにしました。

PFMってなんですの?

まず、PWM変調はご存知かと思います。この回路は入力のアナログ信号電圧をパルス信号の幅で表現する手法となります。
PWM波形
このときパルスの幅(デューティ比)に対して、パルスの周期が変化しないのが特徴となっています。
一方パルス幅のうち、オン時間もしくはオフ時間を固定すると、パルス幅の変化に伴いパルスの周期(周波数)も変化します。
一方PFMでは、
PFM波形
PWM波形と違い、概ねオン時間が固定されているのがわかります。
波形の通り、デューティ比の高さに比例してパルス周波数が上昇しているのがわかります。

回路

PFM試作

まず原理から
pfmコンデンサ波形
(緑の線がコンデンサ波形です。)
1:tonの期間でRchからCcが充電されます。充電電圧は0~Vchまでで、デューティ比に依存しません。またCcの電圧がVchになるとU1の出力が1になり、フリップフロップA1を反転させます。このとき出力が1→0になります。また同時にQ5をoffに、Q4をonにしてCc放電モード(toff)に移行します。
電源電圧をVとすると

Vch=V(1etonRchCc){V_{ch}=V(1-e^{-\frac{t_{on}}{R_{ch}C_c}})}

つまりtonは

ton=RchCc×ln(1VchV){t_{on}=-R_{ch}C_c\times ln(1-\frac{V_{ch}}{V})}

です。

2:Q5がoff,Q4がonになり、toffの期間に入ります。Rdiscを界してCcの放電が開始されます。Ccの電圧がVdchになるとQ6がオンになってCcが完全に放電されます。このとき、フリップフロップA1にU2からパルスが送られて出力を反転し、出力を0→1に反転します。同時にQ6がonになってCcが完全放電されます。またQ5がon,Q4がoffになり、再びtonの期間に入ります。

Vdch=VmetoffRdiscCc{V_{dch}=V_me^{-\frac{t_{off}}{R_{disc}C_c}}}

つまりtoffは

toff=RdiscCc×ln(VdchVm){t_{off}=-R_{disc}C_c\times ln(\frac{V_{dch}}{V_m})}

このVdchの可変することででtoff期間をさせてデューティ比を変化させます。
このとき

VdchVch{V_{dch}\leqq V_{ch}}

がデューティ比Dを変化できる条件となります。

デューティ比Dは

D=tonton+toff=11+toffton{D=\frac{t_{on}}{t_{on}+t_{off}}=\frac{1}{1+\frac{t_{off}}{t_{on}}}}

より

D=11+(RdiscRch×ln(VdchVm)ln(1VchV)){D=\frac{1}{1+(\frac{R_{disc}}{R_{ch}}\times \frac{ln(\frac{V_{dch}}{V_m})}{ln(1-\frac{V_{ch}}{V})})}}

また、Dが0.5のときton=toffなので、Vdchは

Vdch0.5=VmeRchRdisc×ln(1VchV){V_{dch_{0.5}}=V_me^{\frac{R_{ch}}{R_{disc}}\times ln(1-\frac{V_{ch}}{V})}}

となります。Vdch=Vchのときデューティ比Dが1に近づきます。

ちなみに電源電圧V=5V,Vch=3V,Vdch=2.5VとしてCc=0.01uF,Rch=10kΩ,Rdich=50kΩとすると

ton=10×103×0.01×106×ln(135)=91.6[μs]{t_{on}=-10\times 10^{3}\times 0.01\times 10^{-6} \times ln(1-\frac{3}{5})=91.6[\mu s]}

さらにデューティ比は

D=11+(5010×ln(2.53)ln(135))=0.501{D=\frac{1}{1+(\frac{50}{10}\times \frac{ln(\frac{2.5}{3})}{ln(1-\frac{3}{5})})}=0.501}

大体半分になりました。
出力波形
んーーー、、、トランジスタの素子の応答速度の遅さやその他の容量成分などの原因か、、、tonが10%以上ずれてる気がします。。。。ですけどデューティ比は綺麗かも。。。
それとシミュレートしてて思いましたが、コンパレータは入力バイアス電流がnAクラス以下のものでないと正しく動作しない現象に遭遇しています。

ロジック版

ロジック版
今度はトランジスタとダイオードで再現していた一部部分をロジック化してみました。こうしたほうがいいかもしれません。
動作が早くなりすぎてCcの放電が追いつかなかったので、Q1にC1,R7,D1でデッドタイムを挿入してみました。

ORとANDをNANDで置き換え

ORとAND回路を一々入手するのも面倒だと思います。ですので、ANDとORをNAND回路で作ってみました。

NANDの全入力をショートさせるとOR回路になります。
NOT回路
つまり、ANDはAND*ORになります。

AND=NAND=AB=AB{\text{AND} =\overline{\text{NAND}}=\overline{\overline{A\cdot B}}=A\cdot B}

NAND回路

次にOR回路を作ります。
NAND回路はド・モルガンの法則によりNOT入力OR回路に等価できます。

AB=A+B{\overline{A\cdot B}=\overline{A}+\overline{B}}

つまりNAND回路の入力にNOT回路をつけるとOR回路になります。

NOTANOTB=AB=A+B=A+B{\overline{\text{NOT}_A\cdot \text{NOT}_B}=\overline{\overline{A}\cdot \overline{B}}=\overline{\overline{A}}+\overline{\overline{B}}=A+B}

OR回路
そうしてできたのが以下の回路になります。
NAND版
しかしNANDを5個使い、74HC00のようにNANDが4個しか内蔵されないICであれば、もう一つ必要になります。ですので一つ減らして4個バージョンにしてみました。
NAND削減版

rilyのアイコン画像
作った回路,プログラム等が正しく動く補償はできないのでご注意を
  • rily さんが 前の月曜日の18:00 に 編集 をしました。 (メッセージ: 初版)
  • rily さんが 前の月曜日の18:01 に 編集 をしました。
  • rily さんが 前の月曜日の18:38 に 編集 をしました。
  • rily さんが 前の月曜日の18:40 に 編集 をしました。
  • rily さんが 前の月曜日の19:07 に 編集 をしました。
  • rily さんが 昨日の1:00 に 編集 をしました。
  • rily さんが 昨日の18:22 に 編集 をしました。
ログインしてコメントを投稿する