
アナデバ様のWeb記事『StudentZone』の2025年1月号(日本語版)の実習初回。PWM(Pulse Width Modulation)。本サイトでも何度もPWMしてきてますが、毎度マイコン周辺のデジタルなタイマを使っての生成。今回はアナログ入力信号からPWM信号を得る回路です。どっかでやった気がするんだが。
※「お手軽ツールで今更学ぶアナログ」投稿順 indexはこちら
※学生でもないのに勝手に実習をさせていただいておりますアナデバ様の記事(日本語版)が以下です。
アナデバ様の元記事はアナデバ製測定ツールADALM2000を使えとの思し召しですが、当方持ち合わせないので、Digilent製Analog Discovery 2を使用です。まあ、コマケー話を除けば、だいたい同じようなことが出来るみたい。
アナログ入力信号からPWM信号を生成
本サイトではマイコン製品を扱わせていただくことが多いです。その場合、ざっくり言ってしまえば、以下の2つを制御すればPWM信号を得ることができます。
-
- 周波数
- デューティ比
このとき生成に使用するのはデジタルな周辺回路「タイマ」です。
しかし、今回行おうとするのはアナログ入力信号からPWM信号を得る回路です。アナログ入力信号の電圧が低いとデューティ比の小さなパルス、電圧が高いとデューティ比が大きくなるパルスが得られるっと。
別シリーズの過去回のどこかでそんな回路やったような気がするんだが。。。忘却力の老人はすっかり忘れていたので検索して見つけました。以下です。
定番回路のたしなみ(3) 555、アナログタイマICでアナログ・パルス幅変調(PWM)
555といえば、みんな大好き「タイマIC」ですが、アナログ・タイマです。通常RCの定数で時間を測る回路でありますな。その応用としてアナログ入力からPWM波形を作り出す回路を上記の過去回で練習してました。
一方、今回の回路はオペアンプ(コンパレータとして使用)1個です。555と違って内部にキャリアに当たる信号はないので、入力にお約束の「キャリア信号」三角波を天下り的に与え、これを入力アナログ信号で変調する感じ?でPWM波形を得るもの。
LTspiceの回路図
例によってLTspiceの回路図が以下に。アナデバ様元記事の図3に相当する回路です。
12月号のときに説明しましたが、諸般の事情でアナデバ様はLTspice上ではOP07のモデルを使い、実機実験時にはOP97を使うような使い分けをされてます。しかし当方、幸いにもOP07の持ち合わせがあるので、シミュレーション、実機ともOP07っす。
なお、アナログ入力信号にあたるW2の正弦波については図3に記載がありますが、「キャリア信号」にあたるW1の三角波(上記図の赤線部分)についてはLTspiceの波形定義はありません。実機で実験すればいいのだから不要ってことかな。ただ、LTspiceで三角波を定義するのはちょっとメンドイです。
しかし、お手製ツール wavegen.py を使えばちょろいもんです、ホントか?
LTspiceの電圧源の定義を「易しく」するツールです。Pythonのソースは以下に。
SPICEの小瓶(39) waveGen.py スクリプトの改定。バグFIX+PWM信号対応
シミュレーション結果
例によって実習初回の今回は手抜き。シミュレーションのみ。実機実験ヌキです。
緑のキャリア信号(W1の三角波)を、赤の信号(W2の正弦波)で「変調」したらば下のピンク色のvoutにPWM信号が得られたと。目論見どおりみたい。