Arduino UNOを使用した可変電源–回路とコード
ArduinoUNOを使用して可変電源を作成する方法
電源は、電子機器、電気機器、および回路の基本的かつ不可欠な要件です。回路や機器にはさまざまな種類があるため、電子回路ごとに電源の需要が異なります。たとえば、Wi-Fiモジュール、リレー、モーターなどには異なる電圧が必要です。市場では、電子機器ごとに異なる電源を入手することはないため、さまざまな方法で独自の特定の電源を生成します。このための簡単な解決策は、バッテリーを使用することです。
バッテリーは、簡単に入手でき、簡単に接続できるため、一般的に電子回路とプロジェクトの電源を入れるために使用されます。しかし、それらはすぐに消耗し、新しいバッテリーが必要になります。また、これらのバッテリーは、強力なモーターを駆動するための大電流を供給することができません。そのため、バッテリーが放電し、回路がかさばります。また、電子機器を長期間使用したり、過度に使用したりすると、バッテリーが熱くなり、時間の経過とともにバッテリーの寿命が短くなります。この問題を克服するために、どの回路でも使用できるより優れた効率的なソリューションを紹介します。このプロジェクトでは、ArduinoUNOから可変電源を生成する方法を紹介します。 。
このプロジェクトを使用すると、充電、放電、加熱の問題などを心配することなく、電子機器に応じて可変電源を得ることができます。可変を生成するために利用できる多くの方法があります電源ですが、安価で簡単に入手できるコンポーネントが必要なため、これが最も簡単な方法です。それでは、このプロジェクトに必要なコンポーネントを見てみましょう。
- 関連記事:Arduinoによるオブジェクト検出機能付き自動ドアベル
必要なコンポーネント
- Arduino UNO
- 16×2LCDディスプレイ
- 100μFコンデンサ
- 1kΩ抵抗
- ジャンパー線
- 5ボルト電源
- 2N2222トランジスタ
ソフトウェア: AURDINONightlyまたはAtmelStudio6.2
- 関連記事:Arduinoと超音波センサーを使用した距離測定
可変電源回路図
このプロジェクトに入る前に、プロジェクトについていくつかお知らせください。
Arduino UNO
Arduino UNOは、エレクトロニクスプロジェクトの開発に使用されるオープンソースプラットフォームです。いつでも簡単にプログラム、消去、再プログラムできます。 Arduino UNO、Arduino Nano、Arduino Mega、Arduinoユリパッドなど、用途に応じて仕様が異なる多くのArduinoボードが市場に出回っています。このプロジェクトでは、ArduinoUNOを使用して家電製品を自動的に制御します。 16MHzのクロック速度で動作するATmega328マイクロコントローラICが搭載されています。これは、USART、I2C、およびSPI通信プロトコルで動作できる強力な機能です。
- 関連記事:Arduinoを使用した自動常夜灯
このボードは通常、マイクロUSBケーブルを使用したソフトウェアArduinoIDEを使用してプログラムされます。 ATmega328には、事前にプログラムされたオンボードブートローダーが付属しており、外部ハードウェアを使用せずにコードを簡単にアップロードできます。エレクトロニクスプロジェクトや製品の製造に幅広い用途があります。 CおよびC++言語は、習得と使用が非常に簡単なボードのプログラミングに使用されます。 Arduino IDEを使用すると、プログラミングがはるかに簡単になります。コードを2つの部分、つまりvoid setup()とvoid loop()に分けます。関数voidsetup()は1回だけ実行され、主に何らかのプロセスを開始するために使用されますが、void loop()は、継続的に実行する必要があるコードの一部を構成します。
このモデルは、6つのアナログ入力ピンと14のデジタルGPIOピンで構成され、入力出力として使用できます。そのうちの6つは、pinMode()、digitalWrite()、を使用してPWM出力とアナログを提供します。 digitalRead()およびanalogRead()関数。 6つのアナログ入力チャネルチャネルはピンA0からA5であり、10ビットの分解能を提供します。ボードは、5ボルトで動作するUSBケーブルを使用するか、7〜20ボルトで動作するDCジャックから電力を供給できます。
低電力デバイスを操作するために3.3ボルトを生成するためのオンボード電圧レギュレータがあります。 ATmega328はUSART、SPI、およびI2C通信プロトコルで動作するため、USART通信用に0(Rx)および1(Tx)ピン、I2CおよびSS(10)、MOSI(11)用にSDA(A4)およびSCL(A5)ピンがあります。 、SPI通信プロトコル用のMISO(12)およびSCK(13)ピン。
- 関連記事:Arduinoによるシリアル通信
ArduinoUNOのADC
Arduino UNOには、0ボルトから5ボルトの範囲のアナログ信号を検知または読み取るために使用できる6つのADCチャネルが搭載されています。センサーをArduinoUNOのようなマイクロコントローラーとインターフェースすると、センサーはアナログ出力値を生成し、ArduinoUNOはデジタル値を感知します。したがって、ADCはセンサー値をアナログ値に変換し、それをマイクロコントローラーに供給するのに役立ちます。温度検知、距離測定、速度測定、アナログ値を生成する多くのセンサーなど、ADCには多くのアプリケーションがあります。
Arduino UNOには10ビットADCがあります。これは、各ステップで値が0から1023に変化することを意味します。これは解像度と呼ばれ、アナログ値の範囲で生成できる離散値の数を示します。
ADCの最大電圧は5ボルトであるため、0〜1023の範囲のADCの各ステップの値は約5mVに相当します。 Arduino UNOボードのA0からA5までの6つのADCチャネルがあり、アナログ値を生成する6つのデバイスを同時に制御またはインターフェースできることを意味します。
Arduino IDEには、アナログ値を読み取るための組み込み関数analogRead(pin)が用意されています。
デバイスが接続されているA0からA5までのピン番号を指定するだけで、この関数はアナログ値を読み取るのに役立ちます。
- 関連記事:クローバー回路とは何ですか?設計と運用
ArduinoUNOのPWM
パルス幅変調(PWM)は、周波数を一定に保ちながらパルスの幅を変化させることにより、デジタルソースを使用してアナログ信号を生成するために使用される手法です。 PWMを定義する2つの主要な重要事項は、デューティサイクルと周波数です。
信号のデューティサイクル:
信号が完全な期間でオンになっている部分は、デューティサイクルと呼ばれます。
デューティサイクル=100 * Ton /(Ton + Toff)
これは通常、信号をオン/オフすることによって負荷に供給される電力を制御するために使用されます。たとえば、光の強度やモーターの速度を制御するために使用できます。 analogWrite()関数の呼び出し後、ピンは、同じピンでの次のanalogWrite()の呼び出し、またはdigitalRead()またはdigitalWrite()の呼び出しまで、指定されたデューティサイクルの定常方形波を生成します。
>- 関連記事:555タイマーとBC547トランジスタを使用したシンプルなタッチセンシティブスイッチ回路
信号の頻度:
信号の周波数は、信号がオン状態からオフ状態に、またはその逆に切り替わる時間の中で、信号がサイクルを完了する速度を意味します。特定のデューティサイクルでこれを行うことにより、出力は一定のアナログ電圧のように動作します。ほとんどのピンのPWM信号の周波数は約490Hzです。 Unoおよび同様のボードでは、ピン5と6の周波数は約980Hzです。 Leonardoのピン3と11も980Hzで動作します
Arduino UNOには、記号〜が付いた6つの8ビットPWMチャネルがあります。 Arduino IDEの関数analogWrite関数を使用してアナログ電圧を取得できます:
analogWrite(ピン、デューティサイクル)
ピン:アナログ出力の生成に使用されるArduinoUNOのピンを使用します。
デューティサイクル:デューティサイクルを変更するには、入力として0(最小)から255(最大)の範囲の値が必要です。
- 関連記事:ツェナーダイオードを使用した単純な過電圧保護回路
16×2LCDディスプレイ
LCDでカスタム文字を生成するのはそれほど難しくありません。 LCDのカスタム生成ランダムアクセスメモリ(CG-RAM)とLCDチップコントローラに関する知識が必要です。これは、ArduinoUNOを16×2JHD162ALCDモジュールに接続することについてです。 JHD162Aは、日立のHD44780ドライバーをベースにした16×2LCDモジュールです。 JHD162Aには16個のピンがあり、4ビットモード(4本のデータラインのみを使用)または8ビットモード(8本のデータラインすべてを使用)で操作できます。このプロジェクトでは、ワイヤを接続するために4ビットモードで使用します。
16×2LCDモジュールのピンの説明:
LCDのピン | 説明 |
VSS | グラウンドピン |
VCC | +5V電源 |
VEE | LCDのコントラストを変更するためのピン |
RS | 登録選択:データモードまたはコマンドモード |
RW | 読み取りまたは書き込みモード |
E | LCDを有効にする |
DB0-DB7 | データとコマンドはこれらのピンを使用して供給されます |
LED + | バックライトLEDのアノード |
LED- | バックライトLEDのカソード |
- 関連記事:自動バスルームライトスイッチの回路図と操作
このLCDには独自のライトがないため、画面の後ろにディスプレイのバックライトとして機能するLEDがあります。このLCDとArduinoUNOのインターフェースは、Arduino IDEがLiquidCrystalライブラリを提供するため、非常に簡単です。LiquidCrystalライブラリには、ディスプレイ上のあらゆるものの初期化と印刷を容易にする多くの機能が組み込まれています。このプロジェクトで主に使用するLCD機能は次のとおりです。
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
- 関連記事:12Vから5Vへのコンバータ回路
Arduinoを使用した可変電源の動作
回路図に示されているようにワイヤを正しく接続します。このプロジェクトでは、出力端子で得られた電圧に行き、ADCチャネルの1つへの入力としてそれを与えます。さらに、ADCチャネルはデジタル値を提供し、後で16×2LCDディスプレイに表示されます。プロジェクトで使用されるボタンは、電圧をインクリメントおよびデクリメントするためのものであり、ArduinoUNOのピン4とピン5に接続されています。 Arduino UNOの分解能は10ビットであり、0から1023まで変化し、最大ADC電圧は5ボルトであるため、1ビットは5/1024 =4.9ミリボルト(約)に等しくなります。したがって、デジタル値を移動する増分と減分は、0から1023まで変化します。
これで、A0チャネルのADC値を読み取っています。 Arduino IDEは、ADC値を読み取るための組み込み関数analogRead(pin)を提供します。ここでは、Arduino UNOのチャネルはA0であるため、ピンはA0です。さらに、ArduinoUNOのPwmにピン3を使用しています。 Arduino IDEは、関数analogWrite(pin、Duty Cycle)を提供して、ピン3で指定されたデューティサイクルで目的の出力電圧を生成します。
2つのボタンを押すと、pwm信号のデューティサイクルが変更され、結果として出力電圧が変更されます。 1つのボタンはデューティサイクルを増やすためのもので、もう1つはデューティサイクルを減らすためのものです。 Arduino UnoのPWM値は0から255に変化します。0は最小で0ボルトを達成し、255は最大で5ボルトを達成します。ピン3はさらにNPNトランジスタに供給され、トランジスタはエミッタに可変電圧を供給し、スイッチングデバイスとして機能します。
トランジスタのベースのデューティ比は可変であるため、端子で可変の出力電圧を得ることができます。電圧は線形ではないため、コンデンサを接続して可変出力電圧のノイズを除去します。
- 関連記事:IC4017および555タイマーを使用した信号機制御電子プロジェクト
コードの説明
ライブラリを含める:
#include <LiquidCrystal.h>
これは、LCDディスプレイを使用するための組み込みライブラリです。 LCDディスプレイに文字を表示するために簡単に使用できる機能を提供します。
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt =125;
float flag =0;
液晶lcdは、LCDディスプレイのデータピンとRS、RW、およびEピンが接続されているピン番号を取得します。基準電圧を2.5ボルトに設定しているため、ref_voltを125に設定して、デューティサイクルを50%に設定しています。
pinMode (3, OUTPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);
Arduino UNOのピン3はPWM出力として設定され、ピン4とピン5は入力を取得して電圧をインクリメントおよびデクリメントするように設定されています。
lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Variable Voltage");
lcd.clear();
delay(1000);
lcd.begin関数は、LCDディスプレイの文字数を設定します。最初は、画面に「可変電圧」を表示しています。
float value = (analogRead(A0));
value = (value*5)/1024;
analogWrite(3,ref_volt);
値変数は、A0 ADCチャネルから取得したデジタル値を読み取り、このデジタル値を電圧値に変換します。 AnalogWriteは、ArduinoUNOのピン3でPWMを提供します。
if (digitalRead(4)==LOW)
{
if (ref_volt<250)
{
ref_volt=ref_volt+1;
delay(100);
}
}
これは、インクリメントボタンが押されているかどうかをチェックします。誰かが増分ボタンを押すと、ref_voltが増加します。
if (digitalRead(5)==LOW)
{
if (ref_volt>0)
{
ref_volt=ref_volt-1;
delay(100);
}
}
これは、デクリメントボタンが押されているかどうかをチェックします。誰かがデクリメントボタンを押すと、ref_voltが減少します。
- 関連記事:IC 555タイマーを使用したクラップスイッチ回路&#038;タイマーなし
このようにして、ArduinoUNOを使用して5ボルトの可変電源を生成できます バッテリーをあまり気にせず、回路をかさばることはありません。
産業技術
- AIを使用してサプライチェーンの野生生物と人身売買を明らかにする
- Arduinoのみを使用するDTMFデコーダー
- Arduinoとスマートフォンを使用したDIY電圧計
- Arduino UnoWiFiを使用したWebServerBlink
- Python3とArduinoコミュニケーション
- ArduinoとRDA8057Mを使用したFMラジオ
- Gセンサースマートフォンを使用して制御されるロボットカー
- Helium、Azure IoT Hub、およびPowerBIを使用したGPS追跡
- 可変速ドライブの電流、電力、トルク
- デュアル電源回路図– 230VAC〜±12VDC
- トランスレス電源:コストとスペースを克服する承認された方法