アナログ回路(4)-ダイオードブリッジ回路

前回は、抵抗、LEDを並列に接続した回路を作成しました。前回の内容は下記のリンクを参照してください。

アナログ回路(3)-並列回路

今回は、ダイオードを使用した回路を作成しようと思います。交流を直流に変換する回路を構築します。

使用する環境は下記のとおりです。

  • Windows10
  • LTspice XVII

LTspiceを使用して、回路図を作成して、回路を作成したらシミュレーションを行いたいと思います。

まずは、ダイオードの動作を確認してみたいと思います。下記のような回路を構築しました。電流は 100mA 流す回路にしたいと思います。ダイオードの順方向電圧は、データシートより、950mA になります。抵抗にかかる電圧は、4.05V になるので、抵抗値はオームの法則より 40.5Ω になります。電源は交流で、振幅5Vの周波数50Hzです。

シミュレーションを実行すると下記のような結果を得ることができました。抵抗に流れる電流値を表示しています。

マイナス電圧になったと時に、ダイオードが電流を流さないため、上記のような電流値になっています。

それでは、ダイオードブリッジを作成して、交流を直流に変換してみたいと思います。

下記のような回路を構築しました。電流は 100mA 流す回路にしたいと思います。ダイオードの順方向電圧は、データシートより、950mA になります。抵抗にかかる電圧は、3.1V になるので、抵抗値はオームの法則より 31Ω になります。電源は交流で、振幅5Vの周波数50Hzです。

シミュレーションを実行すると下記のような結果を得ることができました。抵抗に流れる電流値を表示しています。

参考に抵抗の手前の電圧は下記のようになっています。

ダイオードブリッジを構築することで、マイナス電圧になったと時にも、抵抗にプラス側電流のみ流れる回路になっています。これでは直流電流とはほぼ遠いので直流電流になるように電流を補完していきます。そこでコンデンサーを使用します。下記のような回路を構築しました。コンデンサーは1000μFです。

シミュレーションを実行すると下記のような結果を得ることができました。抵抗に流れる電流値を表示しています。

だいぶ直流っぽくはなってきましたが、リンプル電流が大きく見られます。

この回路では、振幅5Vの交流だと値が電圧が低いかもしれませんね。試しに振幅10Vの交流で抵抗を81Ωに変更した結果が下記のものになります。

最大電流が100mAに近づきました。リップル電流も小さくなっています。今度は、振幅5Vの交流で抵抗に電流50mA流れる回路を構築してみます。ダイオードの順方向電圧は900mVになるので、抵抗の抵抗値は、64Ωになります。シミュレーションの結果は下記のようになります。

最大電流が比率で考えると流したい電流値に近づいたと思います。リップル電流も小さくなっています。

今回、悩んだところがグランドの位置です。始めは、交流電源のマイナス側にグラウンドを下記のように繋げたのですが、電流は同じような結果になりましたが、電圧が思うような波形がでませんでした。

グラウンド(基準)をどこで考えるかによって電圧は変わってくるためです。

コンデンサを試しに繋げてみましたが、マイナスに電圧がふれているためだと思いますが、電圧を補完することはできませんでした。

アナログ回路(3)-並列回路

前回は、LEDを使用して、簡易的な回路を作成しました。最初は、電源に直接LEDを接続した回路でしたが、途中からは、電源とLEDの間に直列抵抗を追加した回路に変更しました。前回の内容は下記のリンクを参照してください。

アナログ回路(2)-LED

前回は直列接続の回路であったので、今回は並列に抵抗やLEDを使用した回路を作成してみようと思います。

使用する環境は下記のとおりです。

  • Windows10
  • LTspice XVII

LTspiceを使用して、回路図を作成して、回路を作成したらシミュレーションを行いたいと思います。

まずは下記のような回路図を作成してみました。同じ抵抗値の抵抗を4つ(R2~R5)並列に接続してある回路です。R1のみ抵抗を70Ωと指示してあります。

この回路で電流値を 20mA を流したい場合、R2~R5の抵抗値はいくつにすればよいかオームの法則を使用して考えます。4つの抵抗に流れる電流は、抵抗値が等しいため、電流値も同じになります。ですから、20mA ÷ 4 = 5mA になります。R1に流れる電流は、0.02A × 70 = 1.4V になります。R2~R5は並列回路のであるので電圧の値は同じです。よって、5V – 1.4V = 3.6V になります。あとは、オームの法則より、3.6V ÷ 0.005A = 720Ω になります。R2~R5の各々に 720Ω を設定します。

シミュレーションを実行すると下記のような結果を得ることができました。

R2~R5の各々に流れる電流値は、5mA となっており、合計で 20mA になっています。R1に流れる電流値も、20mA になっています。今回、R2~R5の抵抗値を変えて 20mA を流れるような回路を作成しましたが、もちろん、R2~R5の抵抗値を先に決めてしまい、R1の抵抗値を変更することで、20mA 流れる回路を作成することも可能だと思います。

次に、LEDを並列に並べた時と比較するために、R2~R5の各々の抵抗値を180Ωに設定してシミュレーションしてみます。

R2~R5は並列回路なので、この部分の抵抗値は 45Ω になります。全体を流れる電流は、5V ÷ (70Ω + 45Ω) = 0.0434783 になります。R2~R5は同じ抵抗値なので、各々に流れる電流は、5V ÷ (70Ω + 45Ω) ÷ 4 = 0.0108696 になります。※計算値は四捨五入した値です。

R2~R5の抵抗値をLEDに置き換えて考えてみます。下記のような回路図を作成してみました。LEDはNSCW100を使用しています。R1は 70Ω と設定しました。

試しに、シミュレーションを実行すると下記のような結果を得ることができました。

先ほどの抵抗値180Ωを4つ並列に並べた時とは違う結果になります。これは、LEDのVFとIFの関係は1次関数(比例)ではないからです。データシートを見ると曲線カーブになっています。ですから、抵抗と同じようには考えられません。

また、抵抗とLEDでは役割が違います。そのため、抵抗は抵抗値を変えたい場合、他のものに変えればよいですが、LEDの場合、抵抗値を変えたいからLEDを変えるということはしないと思います。ですから、R1の抵抗を変えて、各LEDに 20mA を流したいと思います。

LEDが4つ並列に並んでいるので、この部分の合計電流は、80mA になります。オームの法則より、R1の抵抗は、(5V – 3.6V) / 0.08 = 17.5Ω になります。それでは、R1に 17.5Ω を設定して、シミュレーションを行いたいと思います。下記のシミュレーション結果を得ることができました。

各LEDには、0.0195018mAの電流が流れており、概ね20mAの電流が流れています。

アナログ回路(2)-LED

前回は、抵抗を使用して、簡易的な回路を作成しました。シミュレーションをした結果、オームの法則に沿った結果を得ることができました。前回の内容は下記のリンクを参照してください。

アナログ回路(1)-抵抗

今回はLEDを使用した回路を作成してみようと思います。

使用する環境は下記のとおりです。

  • Windows10
  • LTspice XVII

LTspiceを使用して、回路図を作成して、回路を作成したらシミュレーションを行いたいと思います。

まずは下記のような回路図を作成してみました。LED(NSCW100)に電流を流す回路です。

OP解析を行うと下記のような結果を得ることができました。

電流が129mA流れています。NSCW100のデータシート見てみると、絶対定格は下記のようになっていました。

  • IF(順方向電流):25mA

絶対定格をかなり超えているので、壊れるまたは寿命が短くなると思われます。

それでは、電気的・光学的特性をみてみたいと思います。電気的特性は下記のようになっております。

  • VF(順方向電圧)※条件20mA:標準3.6V、最大4.0V

それでは、電源電圧を 3.64V にしてみます。OP解析を行うと下記のような結果を得ることができました。

電流値は、0.0197A になっており概ね 20mA となっています。今回電源電圧を変更してシミュレーションを行いましたが、電源電圧を変更するのはあまり現実的ではありません。さまざまな半導体素子をしようすれば、それだけさまざまな電圧が必要となります。

そこで、直列抵抗を使用します。抵抗を使用して、LEDの電流を調節します。下記のような回路図を作成します。

LEDのVFとIFの関係は特性としてデータシートに曲線グラフが記載されています。(調光用途がないもに関しては、グラフまではのっていないかもしれません。)ですから、IFの値を決めれば、VFの値もわかります。今回、電気的・光学的特性より、20mA の時、3.6V となっています。では、R1の抵抗値をいくつにすればよいか考えたいと思います。直列回路であるので、R1に流れる電流は20mA になります。電圧は、5V – 3.6V より、1.4V になります。オームの法則より、1.4V ÷ 0.02 は、70Ω となります。

R1を 70Ω にすることで、LEDに電流 20mA が流れます。OP解析を行うと下記のような結果を得ることができました。

電流値は、0.0195A になっています。概ね 20mA となっています。

アナログ回路(1)-抵抗

今回は、プログラミングの内容ではないです。内容はアナログ回路に関してです。組込みのファームウェアを作成しているとどうしてもアナログ回路の知識が必要となってきます。なんとか感覚だけで、ファームウェアを作成してきましたが、そろそろアナログ回路に関しても知識を身につけていきたいなと思い、取り組みことにしました。

今回は、抵抗を使用してアナログ回路を組んでみたいと思います。

使用する環境は下記のとおりです。

  • Windows10
  • LTspice XVII

LTspiceを使用して、回路図を作成して、シミュレーションしながらアナログ回路の知識を身につけていきたいと思います。

まずは下記のような回路図を作成してみました。抵抗に電流を流す回路です。

GNDは、メニューバーの[Edit]→[Place GND]で追加できます。抵抗は、メニューバーの[Edit]→[Resistor]で追加できます。電源は、メニューバーの[Edit]→[Component]を選択すると、下記のような画面が表示されるので、voltageを選択して、「OK」ボタンを押すと追加できます。

抵抗値や電源電圧は、表示されているコンポーネント上で右クリックしてダイアログが表示させて設定します。

シミュレーション結果は下記の通りです。

R1(抵抗)に電圧5V、電流値が5mAであることがわかります。R1の抵抗は、1kΩなので、オームの法則も成立していることがわかります。オームの法則は下記のとおりです。

V(電圧) = I(電流) × R(抵抗)

計算結果は下記の通りです。

5V = 1000Ω × 0.005A

シミュレーションは、メニューバーの[Simulate]→[Run]を選択すると実行できます。初回は、「Edit Simulate Command」ダイアログが表されます。

「Transient」タブの「Stop time」に値を記入しないとシミュレーションは実行できません。「Stop time」に値を入力すると、下記のようにコマンドが表示されています。

おそらくシミュレーションはコマンドを形成して実行するのではと思います。このダイアログを使用することで、コマンド作れるようです。試しに、コマンド側の数値を変えると、「Stop time」の値も変更されました。「OK」ボタンを押すとシミュレーションが実行されます。

メニューバーの[Simulate]→[Edit Simulate Command]を選択して、「Edit Simulate Command」ダイアログが表させます。「Dc op pnt」タブを選択して、下記のように「.op」と入力して、「OK」ボタンを押します。

すると、下記のようにOP解析した結果が表示されます。

これらの解析ですが、同時にはできなかったです。同時に行う方法もあるのかもしれませんが、とりあえず解析できたのでよかったです。

MCU STM32(2)-アナログデータのサンプリング(Mbed)

以前、GR-ROSE(開発環境:e2studio)、NUCLEO-F446RE(開発環境:STM32CubeIDE)で本機能を構築しました。これらの内容は下記のサイトを参考にしてください。

GR-ROSE(1)-アナログデータのサンプリング

MCU STM32(1)-アナログデータのサンプリング

今回も使用するボードは、NUCLEO-F446REですが、開発環境を下記のものにしてアナログデータのサンプリング機能を構築したいと思います。

  • Visual Studio Code
  • GNU Arm Embedded Toolchain
  • opneOCD

これらの開発環境においての機能構築に関しては下記のサイトでも紹介しておりますので、参考にしてください。

Mbed | プログラミングのあれこれ

今回はサンプリング周波数500khzで、アナログデータを取得して、取得したデータをDACで出力する機能を構築したいと思います。下記は、NUCLEO-F446REでパルス波をアナログ値で取得して、DACでそのまま出力した結果になります。

それでは機能を構築したいと思います。
まずは、新規プロジェクトの作成を行います。
新規プロジェクトの作成方法は、下記のサイトを参考にしてください。

Mbed | プログラミングのあれこれ

MCU RX65N(1)-アナログデータのサンプリング(GR-ROSE)

今回はGR-ROSEを使用して、アナログ値をサンプリングしたいと思います。GR-ROSEには、RX65N マイコンが搭載されています。GR-ROSEは小型の基板でありながら、WiFi、Ethernet、USB、RS485などさまざまなインターフェイスを搭載しており、応用が利きそうです。GR-ROSEの開発は、オンラインのIDEとオフラインのIDEが用意されています。オフラインのIDEには、e2studioやIDE for GRがあります。IDE for GRを使用するとArduinoライクなスケッチで開発を行うことができます。今回は、e2studioを使用して開発を行いたいと思います。

GR-ROSEに関しては、姉妹サイトでも紹介しているので参考にしてください。

今回作成する機能は下記のハードウェア構成で作成します。RS232通信を行うために、FTDIのICも使用します。

機能の概要は下記のようになります。

  • 1秒間ごとに入力されているアナログ値をAD変換(サンプリング)します。
  • サンプリングした値は、RS232通信で送信されます。
  • サンプリングする際に、LEDを点灯と消灯を切り替えます(点滅する)。

それでは、アナログ値をサンプリングする機能を構築したいと思います。まずは、新規プロジェクトを作成します。新規プロジェクトの作成方法は、下記のページを参考にしてください。ターゲット・デバイスは、「R5F565NEHDFP」なので、「R5F565NEHxFP」に設定してください。

RX(3)-RS232通信

MCU STM32(1)-アナログデータのサンプリング

今回は、アナログデータのサンプリング機能を構築したいと思います。具体的には、サンプリング周波数1HzでAD変換を行い、RS232C通信を使用して、AD変換した値を送信します。下記のようにAD変換した値が送信されます。

使用するマイコンは、「STM32F446」です。使用するボードは、「STM32F446」マイコンが搭載されている「NUCLEO-F446RE」です。開発環境は、「STM32CubeIDE」を使用します。

「STM32CubeIDE」は下記のサイトからダウンロードできます。

https://www.st.com/ja/development-tools/stm32cubeide.html

SMT32マイコンに関しては、下記のサイトでもレポートにしてありますので、よろしかったら参考にしてください。

プログラミングのあれこれ

それでは、アナログデータのサンプリング機能を構築したいと思います。まずは、新規プロジェクトを作成します。

FPGA MAX10(20)-Nios II SPI通信

前回は、Nios Ⅱを使用して、UART機能(RS232シリアルポート通信機能)を構築しました。具体的には、受信したデータをそのまま返信するエコーバック機能を構築しました。前回の内容は下記のサイトを参考にしてください。

FPGA MAX10(19)-Nios2 UART(RS232)

今回も以前のお話ですが、SPI通信機能を構築しました。その時には、Nios Ⅱを使用せずに動作させました。以前の内容は下記のサイトを参考にしてください。

FPGA MAX10(8)-SPI通信

今回は、Nios Ⅱを使用して、SPI通信機能を構築したいと思います。具体的には、プッシュスイッチを押すと、トグルスイッチで指定した数値をSPI通信で送信します。受信したら、その数値を7セグメントで表示する機能を構築したいと思います。2つの評価ボードがあれば、通信している感じがあり、よりよいのですが、今回は1つの評価ボード上で、自ら送信を行い、自ら受信する機能を構築します。機能をリスト化すると下記のようになります。

  • トグルスイッチを4つ使用して、0~9を指定できるようする。10~16の時は、0として扱います。
  • プッシュスイッチを押すと、トグルスイッチで指定した数値をSPI通信で送信する。
  • SPI通信で送信されたデータを受信する。
  • 受信した数値をを7セグメントに表示する。

それでは、Nios Ⅱを使用して、SPI通信機能を構築したいと思います。まずは新規プロジェクトを作成します。新規プロジェクトの作成方法、下記のリンクを参照してください。

FPGA MAX10(4)-LEDシフト点灯回路

まずは、Platform Designerを使用して、各コンポーネント(CPUや周辺機器など)を配置、接続します。メニューより「Tools」→「Platform Designer」を選択します。Platform Designerの画面が表示されます。Platform Designerの設定内容方法は、下記のサイトを参考にしてください。

FPGA MAX10(15)-AD変換

System Contentsに下記のように追加されたコンポーネントが表示されています。

FPGA MAX10(19)-Nios II UART(RS232)

前回は、Nios Ⅱを使用して、ADCの制御を行いました。機能としては、AD変換した電圧の値を7セグメントに表示する機能です。7セグメントに表示する値は、入力電圧を1000倍した値を表示します。前回の内容は下記のサイトを参考にしてください。

FPGA MAX10(18)-Nios2 ADC

今回も以前のお話ですが、UART機能(RS232シリアルポート通信機能)を構築しました。その時には、Nios Ⅱを使用せずに動作させました。以前の内容は下記のサイトを参考にしてください。

FPGA MAX10(14)-RS232Cシリアル通信エコーバック

今回は、Nios Ⅱを使用して、UART機能(RS232シリアルポート通信機能)を構築したいと思います。具体的には、受信したデータをそのまま返信するエコーバック機能を構築します。

それでは、Nios Ⅱを使用して、UART機能(RS232シリアルポート通信機能)を構築したいと思います。まずは新規プロジェクトを作成します。新規プロジェクトの作成方法、下記のリンクを参照してください。

FPGA MAX10(4)-LEDシフト点灯回路

まずは、Platform Designerを使用して、各コンポーネント(CPUや周辺機器など)を配置、接続します。メニューより「Tools」→「Platform Designer」を選択します。Platform Designerの画面が表示されます。Platform Designerの設定内容方法は、下記のサイトを参考にしてください。

FPGA MAX10(15)-AD変換

System Contentsに下記のように追加されたコンポーネントが表示されています。

FPGA MAX10(18)-Nios II ADC

前回は、MAX10にNios Ⅱを2個搭載して動作をさせてみました。Nios Ⅱの周辺機器としてTimerを配置してLEDの点滅回路を構築しました。各々のCPUにTimerを一つずつ載せて動作させたので、お互いの動作に干渉することなく動作させることができました。前回の内容は下記のサイトを参考にしてください。

FPGA MAX10(17)-Nios II マルチコア

以前、MAX10に搭載されているADCを使用してみました。その時には、Nios Ⅱを使用せずに動作させました。以前の内容は下記のサイトを参考にしてください。

FPGA MAX10(15)-AD変換

今回は、Nios Ⅱを使用して、ADCの制御を行おうと思います。機能としては、依然と同じでAD変換した電圧の値を7セグメントに表示する機能です。7セグメントに表示する値は、入力電圧を1000倍した値を表示します。

それでは、Nios Ⅱを使用して、ADCの制御を行う機能を構築したいと思います。まずは新規プロジェクトを作成します。新規プロジェクトの作成方法、下記のリンクを参照してください。

FPGA MAX10(4)-LEDシフト点灯回路

まずは、Platform Designerを使用して、各コンポーネント(CPUや周辺機器など)を配置、接続します。メニューより「Tools」→「Platform Designer」を選択します。Platform Designerの画面が表示されます。Platform Designerの設定内容方法は、下記のサイトを参考にしてください。

FPGA MAX10(15)-AD変換

System Contentsに下記のように追加されたコンポーネントが表示されています。