工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoソーラートラッカー

コンポーネントと消耗品

>
Arduino UNO
× 1
SG90マイクロサーボモーター
× 2
LDR、5オーム
× 4
抵抗330オーム
× 4
ロータリーポテンショメータ(汎用)
× 1
押しボタンスイッチ、押しボタン
× 2
ミニソーラーパネル
× 1

必要なツールとマシン

Arduino IDE
Parallax PLX-DAQ

このプロジェクトについて

このプロジェクトは、ソーラートラッカー用のオープンハードウェア/ソフトウェアテストベンチを提供します。提案されたプロトタイプは、使いやすいハードウェアとソフトウェアに基づくオープンソースのプロトタイピングプラットフォームであるArduinoUnoで制御される2軸ソーラートラッカーに基づいています。ソーラートラッカーは、LightDependent Resistor(LDR)センサーを使用して自動的に制御することも、ポテンショメーターを使用して手動で制御することもできます。さらに、このテストベンチは、Excelに基づく仮想計測器を提供し、ソーラートラッカーデータを記録および表示できます。使用されるハードウェアは、安価でコンパクトで用途が広いように選択されています。提案されたテストベンチは、学生が制御理論とその応用についての理解を深めるのに役立つように設計されています。

提案されたテストベンチを図1に示します。これは、4つのLDRセンサーと2つのサーボモーター(SM1とSM2)を使用して、またはポテンショメーターを使用して手動で回転して太陽を追跡できるソーラートラッカーに基づいています。 2つのモード(自動と手動)を切り替えるには、押しボタンを使用します。別の押しボタンを使用して、SM1(上下サーボモーター)またはSM2(左右サーボモーター)のいずれかをポテンショメーターにリンクして、それらの動きを制御します。さらに、コンピューターを仮想機器として使用して、MS Excelで時間に応じてPVパネルのモードと電流、電圧、および電力を視覚化します。 Arduino Unoボードは、システムのすべてのソフトウェア要件を実装するために使用されます。

<図>

機械設計

図2に示すように、ソーラートラッカーのコンピューター支援設計(CAD)3DモデルはCATIAで設計されています。これは、PVパネル、左右および上下のサーボモーター、および4つのLDRセンサーで構成されています。横軸は上下サーボモータと平行にベアリングを固定し、柔軟性を高めています。ソーラートラッカーは、左右のサーボモーターによって東から西へ、上下のサーボモーターによって南から北への2つの自由度を持つように設計されています。 LDRセンサーはPVパネルの四隅に配置され、太陽の照明を検出するために上部に小さな穴が開いた暗いチューブに入れられます。これらの暗い管はまた、放射線の濃縮器と見なされ、ソーラートラッカーの堅牢性を高めるために使用されます。

<図>

ハードウェアシステム

図3に提案したテストベンチの電子回路を示します。自動モードの場合、マイクロコントローラーはLDRセンサーのアナログ値(ピンA0からA3)をデジタルに変換します。次に、2つのパルス幅変調(PWM)信号(ピン5と6)を使用して2つのサーボモーター(上下と左右)を制御し、太陽を追跡します。回転運動は、2つの軸で発生します。方位角は、毎日の太陽の経路に従って東から西に、仰角は季節の太陽の経路に従って南から北になります。手動モードの場合、ポテンショメータ(ピンA4)を使用して2つのサーボモーターの動きを制御し、プッシュボタン(ピン11)を配置して、ポテンショメータを上下サーボモーターまたは左右サーボモーターに接続します。さらに、別の押しボタン(ピン12)を使用して2つのモードを切り替えます。さらに、PV電圧はArduinoのアナログピンA5を介して測定され、負荷の抵抗がすでにわかっているため、PV電流が計算されます。次に、PV電流、電圧、電力対時間、および実際のモードがコンピューターに送信され、MSExcelにリアルタイムで表示されます。

<図>

LDRセンサー回路は分圧回路として設計されています。光強度の変化は、分圧器の出力電圧の変化に比例します。分圧器の上部は5Vで、グランドは0 Vで、分圧器の出力はアナログ入力( A )に接続されています。 マイクロコントローラの0)。続いて、マイクロコントローラのアナログ-デジタルコンバータ(ADC)は、 A によって読み取られたアナログ値を変換します。 ADCは10ビットでコード化されているため、0を0〜1023のデジタル値に変換します。この値に応じて、光のレベルを知ることができます。分圧器で使用される抵抗の値は330Ωです。

2つの180度サーボモーターが使用されます。左右のサーボモーターである縦軸に応じてソーラートラッカーを制御するサーボモーター(MG996R)。また、上下サーボモーターである横軸に応じてソーラートラッカーを制御するマイクロサーボモーター(SG90)。サーボモーターの利点は、ドライバーを必要とせずに、マイクロコントローラーの出力に直接接続された1本の低電流ワイヤーを使用して、停止、実行、回転方向、および速度を制御できることです。使用するサーボモーターは、図3に示すように、Arduino UNOボードによって3線式電気ケーブルを介して制御されます。供給用に2線、PWM用に1線で位置を制御します。

組み込みソフトウェアの設計

組み込みソフトウェアは、ソーラートラッカーのテストベンチを制御および監視するためにハードウェア(Arduino Uno)に組み込まれる部分です。組み込みソフトウェアは、次の要件を満たすように設計されています。

1。 テストベンチには、手動と自動の2つのモードがあります。押しボタンがピン12に接続され、2つのモードを切り替えます。

2。 手動モードがアクティブな場合、ポテンショメータは、左右のモーターの場合は東から西に、上下のモーターの場合は南から北にサーボモーターを制御できます。押しボタンがピン11に接続され、ポテンショメータを2つのモーター間で切り替えます。これにより、左右のサーボモーターまたは上下のサーボモーターが制御されます。

3。 自動モードがアクティブな場合、図4に示すアルゴリズムが実行されます。後者は、LDRセンサーによって返されるアナログ値を使用します。たとえば、方位角または垂直軸を考慮して、2つの右LDRと2つの左LDRの平均値が比較され、左のLDRセットがより多くの光を受け取ると、ソーラートラッカーは左右のサーボモーターを介してその方向に移動します。後者は、差の結果が[-10、10]の範囲になるまで回転し続けます。この範囲はコントローラーを安定させるために使用され、ソーラートラッカーが太陽に対して垂直になると、それ以上の制御は行われません。一方、右側のLDRセットがより多くの光を受け取ると、ソーラートラッカーは左右のサーボモーターを介してその方向に移動し、差の結果が[-10、10]の範囲になるまで回転し続けます。仰角軸にも同じ方法が使用されます。さらに、4つのLDRセンサー間の平均放射線量を決定し、この値がわずかな値(8:実際に調整およびテストされ、照射がヌルの場合に返される値)未満であるかどうかを判断しました。つまり、夜が来たということです。この場合、ソーラートラッカーは太陽の上昇位置に戻る必要があります。たとえば、左右のサーボモーターで0度、上下のサーボモーターで30度を設定することで、太陽の昇る位置に到達できる場合です。これは、C関数「servox」を介して簡単に実行できます。 「write(angle)」はArduinoIDEによって提供されます。

4.アナログピンA5を介して取得されたPV電圧は、PV電流と電力を計算するために処理および使用する必要があります。次に、これらすべてのデータと実際のモードをUSBケーブルを介してコンピューターに送信し、MSExcelに表示する必要があります。

<図>

PLX-DAQ Excelマクロは、ArduinoマイクロコントローラーからExcelスプレッドシートへのデータ取得に使用されます。ダウンロードするだけです。インストール後、「PLX-DAQスプレッドシート」という名前のショートカットが含まれているPC上に「PLX-DAQ」という名前のフォルダが自動的に作成されます。次に、ボードとExcel間の通信を確立するには、スプレッドシートを開き、PLX-DAQウィンドウで接続設定(ボーレートとポート)を定義する必要があります(図5)。その後、[接続]をクリックすると、出力データが収集され、Excelスプレッドシートにリアルタイムで表示されます

<図>

プロトタイプ

図6は、取り外した状態と組み立てた状態のソーラートラッカーを示しています。提示されているように、構造全体が木製プレートを使用して製造されており、手動モードと自動モード(LDRセンサー、Arduino Uno、サーボモーター、ポテンショメーター、プッシュボタン、および小さなPVパネル)。

<図>

図7は、テストベンチ全体、仮想計測器を備えたソーラートラッカー、およびソーラートラッカーをテストするために光を露光できる人工ランプを示しています。ソーラートラッカーとコンピューターはUSBケーブルで接続されています。 PV電圧が取得されると、コントローラーはこの情報を処理し、それを使用してPV電流と電力を計算します。次に、これらのデータはすべてコンピューターに送信され、MSExcelに表示されます。イチジクから。図5と図6を見ると、提案されているテストベンチは小さく、柔軟性があり、使いやすいことがわかります。これにより、学生、研究者、エンジニアは、大型のソーラートラッキングデバイスの実装に進む前に、アルゴリズムを簡単に適用できます。

<図>


コード

  • 組み込みソフトウェアOSソーラートラッカーテストベンチ
組み込みソフトウェアosソーラートラッカーテストベンチ Arduino
 //サーボモーターライブラリ#include  //変数の初期化intmode =0; int ax =0; int buttonState1 =0; int buttonState2 =0; int prevButtonState1 =0; int prevButtonState2 =0; int ldrtopr =0; //右上のLDRint ldrtopl =1; //左上のLDRint ldrbotr =2; //右下のLDRint ldrbotl =3; //左下のLDRint topl =0; int topr =0; int botl =0; int botr =0; // 2つのサーボを宣言しますServoservo_updown; Servoservo_rightleft; int threshold_value =10; //測定感度voidsetup(){Serial.begin(9600); //シリアル接続のセットアップ//シリアルポートを開き、データレートを9600 bpsに設定しますSerial.println( "CLEARDATA"); //すでにSerial.println( "LABEL、t、voltage、current、power、Mode");に配置されているすべてのデータをクリアします//列見出しを定義します(PLX-DAQコマンド)pinMode(12、INPUT); //モードスイッチボタンpinMode(11、INPUT); //軸スイッチpinMode(A4、INPUT); //左右の動きと上下の動きのためのポテンショメータservo_updown.attach(5); //サーボモーターの上下移動servo_rightleft.attach(6); //サーボモーターの左右の動き} void loop(){// pv_power(); charモード;フロートボルト=analogRead(A5)* 5.0 / 1023;フロート電圧=2 *ボルト; //ボルト=(R1 / R1 + R2)*電圧/ R1 =R2 =10オーム=>電圧=2 *ボルト)フロート電流=電圧/ 20; // I =電圧/(R1 + R2)フロート電力=電圧*電流; Serial.print( "DATA、TIME、"); // PLX-DAQコマンドSerial.print(voltage); //電圧をシリアルポートに送信Serial.print( "、"); Serial.print(current); //電流をシリアルポートに送信Serial.print( "、"); Serial.print(power); //電源をシリアルポートに送信Serial.print( "、"); // Serial.println(Mode); buttonState1 =digitalRead(12); if(buttonState1!=prevButtonState1){if(buttonState1 ==HIGH){//モードを変更して正しいインジケーターを点灯if(mode ==1){mode =0; } else {モード=1; }}} prevButtonState1 =buttonState1; delay(50); // 50ミリ秒待つif(mode ==0){Mode ='M'; Serial.println(モード); //モード「手動」をシリアルポートに送信manualsolartracker(); } else {//モード自動モード='A'; Serial.println(モード); Automaticsolartracker(); //モード「自動」をシリアルポートに送信}} voidautomaticsolartracker(){//各LDRのアナログ値をキャプチャするtopr =analogRead(ldrtopr); //右上のLDRのアナログ値をキャプチャしますtopl =analogRead(ldrtopl); //左上のLDRのアナログ値をキャプチャしますbotr =analogRead(ldrbotr); //ボットライトのアナログ値をキャプチャするLDRbotl =analogRead(ldrbotl); //ボット左LDRのアナログ値をキャプチャします//平均intavgtop =(topr + topl)/ 2を計算します; //上位LDRの平均intavgbot =(botr + botl)/ 2; //下位LDRの平均intavgleft =(topl + botl)/ 2; //左LDRの平均intavgright =(topr + botr)/ 2; //正しいLDRの平均//異なるintを取得しますdiffelev =avgtop --avgbot; // LDRtopとLDRbotの異なる平均を取得しますintdiffazi =avgright --avgleft; // LDRの右と左の異なる平均を取得します//ソーラートラッカーの左右の動きif(abs(diffazi)> =threshold_value){//光の差がthreshold_valueよりも大きい場合にのみ位置を変更しますif(diffazi> 0 ){if(servo_rightleft.read()<180){servo_rightleft.write((servo_updown.read()+ 2)); }} if(diffazi <0){if(servo_rightleft.read()> 0){servo_rightleft.write((servo_updown.read()-2)); }}} //ソーラートラッカーの上下移動if(abs(diffelev)> =threshold_value){//光の差がthreshold_valueよりも大きい場合にのみ位置を変更if(diffelev> 0){if(servo_updown.read()<180){servo_updown.write((servo_rightleft.read()-2)); }} if(diffelev <0){if(servo_updown.read()> 0){servo_updown.write((servo_rightleft.read()+ 2)); }}}} void manualsolartracker(){buttonState2 =digitalRead(13); if(buttonState2!=prevButtonState2){if(buttonState2 ==HIGH){//モードを変更して正しいインジケーターを点灯if(axe ==1){ax =0; } else {ax =1; }}} prevButtonState2 =buttonState2; delay(50); // 50ミリ秒待機if(axe ==0){//左右の動きを制御servo_rightleft.write(map(analogRead(A4)、0、1023、0、180)); } else {// //上下の動きを制御servo_updown.write(map(analogRead(A4)、0、1023、0、180)); }} 

回路図


製造プロセス

  1. Arduino Digital Dice
  2. Arduinoゲームコントローラー
  3. Solar Tracker V2.0
  4. ピクセルチェイサーゲーム
  5. モノのインターネット(IoT)ベースのソーラートラッカー
  6. Arduinoの反発電磁浮上
  7. Alexaによってアクティブ化されたArduinoホームコントローラー
  8. NeoMatrix Arduino Pong
  9. Arduinoで日射量を測定する
  10. LEDルーレットゲーム
  11. サントラッキングソーラーシステム