レポート
ブログ一覧
アナログ回路(13)-オペアンプ(定電流回路)
前回は、微分回路と積分回路を構築しました。前回の内容に関しては下記のリンクを参照してください。
今回までに、抵抗を使用したLEDの点灯回路やトランジスタを使用したLEDの点灯回路を作成しました。前回までの内容に関しては下記のリンクを参照してください。
これらの回路は、LEDが発熱すると、LEDのVFが下がり、流れる電流が変わってしまいます。そこで、今回は、定電流回路を構築したいと思います。
使用する環境は下記のとおりです。
- Windows10
- LTspice XVII
それでは、LTspiceを使用して、回路図を作成して、回路を作成したらシミュレーションを行いたいと思います。
アナログ回路(12)-オペアンプ(微分回路、積分回路)
前回は、加算回路、減算回路(差動増幅回路)を構築しました。前回の内容に関しては下記のリンクを参照してください。
アナログ回路(11)-オペアンプ(加算回路、減算回路-差動増幅回路)
今回は、微分回路、積分回路を構築したいと思います。
使用する環境は下記のとおりです。
- Windows10
- LTspice XVII
それでは、LTspiceを使用して、回路図を作成して、回路を作成したらシミュレーションを行いたいと思います。
まずは、オペアンプを使用せずに微分回路と積分回路を作成してみます。まずは、微分回路です。
次に積分回路です。
このようにオペアンプを使用しなくても、微分回路と積分回路は構築できます。では、なぜオペアンプを使用するのでしょうか?
これは、電圧フォロア回路の時と同じです。オペアンプを使用しない微分回路の場合、R3の値を変更すると波形が変わります。カーブが緩やかになっています。
オペアンプを使用しない積分回路の場合、R4の値を変更すると波形が変わります。出力電圧が高くなっています。
そこで、オペアンプを使用して回路を分離してしまいます。微分回路の場合は、下記のようになります。
アナログ回路(11)-オペアンプ(加算回路、減算回路-差動増幅回路)
前回は、電圧フォロア回路(バッファ回路)を構築したいと思います。前回の内容に関しては下記のリンクを参照してください。
アナログ回路(10)-オペアンプ(電圧フォロア回路-バッファ回路)
今回は、加算回路、減算回路(差動増幅回路)を構築したいと思います。
使用する環境は下記のとおりです。
- Windows10
- LTspice XVII
それでは、LTspiceを使用して、回路図を作成して、回路を作成したらシミュレーションを行いたいと思います。
まずは、加算回路です。
下記のシミュレーション結果のように、このアンプからの出力は約 -2.0Vになります。
SDR(2)-RTL-SDRを使ってFM放送受信
前回は、「GRC」をインストールして実際に使用してみました。具体的には、cos波を出力してみました。前回の内容は下記より参照できます。
今回は、「GRC」を使用して、FM放送を受信してみようと思います。使用するSDRデバイスは、「RTL-SDR」になります。下記のような流れで進めていきたいと思います。
- 「RTL-SDR」のドライバをインストール
- 「SDR#」を使用して、FM放送の受信
- 「GRC」を使用してFM放送の受信
「GRC」でFM放送を受信してみる前に、「RTL-SDR」が「SDR#(受信した無線電波を処理してくれるソフトウェア)」を使用して動作するかどうか確認してみようと思います。
まずは、「RTL-SDR」のドライバのインストールからです。
「RTL-SDR」のドライバをインストールするときには、「zadig」というソフトウェアを使用します。「Windows10」に対応したドライバがないようなので、このようなソフトウェアが用意されているですかね?「SDR#」のパッケージに含まれていますので、まずは下記のサイトよりダウロードします。
参考にですが、下記のサイトより直接「zadig」をダウンロードすることも可能です。
「SDR#」をダウロードしたら解凍します。その中の「install-rtlsdr.bat」を実行します。すると、「zadig.exe」が同じフォルダにダウンロードされます。「zadig」がダウンロードできたので、まずは、「RTL-SDR」をPCに接続します。私の場合最初は認識せずに、「Bulk-In, Interface (Interface 0)」と「Bulk-In, Interface (Interface 1)」が表示されていました。ここで私は間違って、ドライバの更新をしてしまい、「サウンド、ビデオ、およびゲームコントローラ」の「REALTEK 2832U Device」として認識してしまいました。この状態で、「SDR#」を試してみましたが、動作はしませんでした。そこでダウンロードした「zadig.exe」を実行して、ドライバを変更しました。「zadig.exe」を実行して、メニューの「Options」→「List All Devices」を選択します。
すると、下記のように「Bulk-In, Interface (Interface 0)」を選択できるようになります。「Bulk-In, Interface (Interface 0)」を選択したら「Replace Driver」を選択して、ドライバを変更します。
変更が完了したので、デバイスマネージャで確認すると、ユニバーサルシリアルバスデバイスに「Bulk-In, Interface」として認識されています。これでドライバの設定は完了です。
ダウンロードして解凍したSDR#フォルダの中にある「SDRSharp.exe」を実行します。すると、「SDR#」が起動します。
歯車マークを選択すると、デバイスの選択画面が右側に表示されました。現在、「AIRSPY」と選択されているので、これを、「RTL-SDR USB(Original)」に変更します。
もう一度歯車マークを選択すると、下記のようにRTL-SDR Controller画面が表示されます。ここで、RF Gainなどを設定できます。
あとは、Radioより「WFM」を選択して、中央に表示されている周波数をFM放送の周波数に設定します。
再生ボタン「▶」を押すと受信を開始します。FM放送が受信できました。これで、「RTL-SDR」の動作確認ができたので、次は「GRC」を使用してFM放送を受信してみたいと思います。「GRC」を起動して下記のようにボックスを配置して接続しました。
配置したボックスは、「RTL-SDR Source」「LowPass Filter」「WBFM Receive」「Audio Sink」「QT GUI Time Sink」「 QT GUI Range」になります。「RTL-SDR Source」は、ライブラリ→(no module specified)→Source→RTL-SDR Sourceをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。まだ試していませんが、osmocom Sourceでも問題ないと思います。ここで、選局しています。「Low Pass Filter」は、ライブラリ→Core→Filters→Low Pass Filterをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、高周波成分を除去しています。「WBFM Receive」は、ライブラリ→Core→Modulators→WBFM Receiveをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、復調しています。
「Audio Sink」「QT GUI Time Sink」「QT GUI Range」に関しては、前回設定したので下記のサイトを参考にしてください。
「RTL-SDR Source」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Device Arguments = rtl=0
- Sample Rate(sps) = samp_rate*50
- Ch0:Frequency(Hz) = vairiable_qtgui_range_0 ※QT GUI RangeのID
- Ch0:Gain Mode = Automatic
この「Device Arguments」に悩まされました。デバイスを引数で設定する必要があるようです。「Low Pass Filter」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Decimation = 5
- Sample Rate = sample_rate*50
- Cutoff Freq = 150e3
- Transition Width = 50e3
「WBFM Receive」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Quadrature Rate = samp_rate*10
- Audio Decimation = 10
「Audio Sink」ブロックはデフォルト値のままです。
「QT GUI Time Sink」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Type = Float
「QT GUI Range」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Default Value = 80e6
- Stop = 100e6
- Step = 1e5
これで、作成は完了したので、実行します。FM放送を受信することができました。
SDR(1)-GRCを使ってみる
SDRは、Software Defined Radioの略です。要するにソフトウェア無線です。従来はアナログ回路で構成されていた無線機器をソフトウェアによるディジタル信号処理に置き換えたものになります。SDRはディジタル信号処理を行うDSP(Degital Signal Proccessing)を利用した無線機器です。ハードウェアを変更することなく変調方式などのパラメータを変更することができます。
GRCは、GNU Radio Companionの略です。GRCは、ブロックを配置して繋いでいくことでプログラムを構築します。SDRの信号処理方法として、GNU Radioというオープンソースのソフトウェアが提供されていますが、プログラミングをしなくても操作ができるようにしたものが、GRCになります。今回、このGRCを使ってみようと思います。
まずは、インストールからです。GRCは、Windowsでは、動作しないと思っていたので、Ubuntuを用意してインストールしましたが、よくよく調べましたら、Windowsでもインストール可能でした。Ubuntuでのインストールは、下記のコマンドを実行することで、インストールできます。
sudo apt-get install gnuradio
それでは、cos波を生成して、音として出力してみたいと思います。下記のようにブロックを配置して、作成しました。
Single Sourceは、ライブラリ→Core→Waveform Generators→Singnal Sourceをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、cos波を生成しています。
Audio Sinkは、ライブラリ→Core→Audio→Audio Sinkをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、音声出力を生成しています。
QT GUI Time Sinkは、ライブラリ→Core→Instrumentation→QT→QT GUI Time Sinkをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、画面出力を生成しています。
QT GUI Rangeは、ライブラリ→Core→GUI Widgets→QT GUI Rangeドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここでcos波の周波数を操作するスライダを生成しています。
SingleSourceのOutput TypeとQT GUI Time SinkのTypeはfloatにしています。Audio Sinkの入力タイプがfloatのためです。SingleSourceのFrequencyには、QT GUI Time SinkのID(今回は、variable_qtgui_range_0)を入力します。それ以外は、デフォルト値です。
これで、作成は完了したので、実行します。実行するとスピーカからの音と共に、cos波の波形が画面に出力されます。
先程、記載したように、Windowsでも動作ました。Windowsの場合は、下記サイトからインストーラがダウンロードできるので、ダウンロードしたファイルを実行することでインストールできます。
http://www.gcndevelopment.com/gnuradio/index.htm
同様にcos波を発生して音声として出力する仕組み作成しましたが、問題なく動作しました。