この場合、ソーラートラッカーのプロトタイプはArduinoに基づいて組み立てられました。 プラットフォームを水平および垂直軸で回転させるには、フォトレジストに入射する光のパワーに依存する回転角度のサーボが使用されます。 ケースとして、みんなのお気に入りのソビエト金属デザイナーが使用されます。
これらはすべてコースプロジェクトとして行われたことに言及する価値があります。そのため、ソーラーパネル自体とバッテリー自体の購入と取り付けを開始しませんでした。 正当化するために、ソビエトの金属設計者の能力は計り知れないと言えるので、そのような欲求が生じた場合、小さなソーラーパネルをその上にねじ込んで電話を充電することは難しくありません。
したがって、アセンブリ中に使用されたもの:
- Arduino MEGA 2560 R3
- サーボタワーSG90-2x
- フォトレジスタMLG4416(90mW; 5-10kOhm / 1.0MOhm)-4x
- 圧電ベルKPR-G1750
- メタルコンストラクタ
- 出力抵抗10 kOhm; 0.25W; 5%-4x
- プリントブレッドボード、ケース、接続コード
Megaは、プロジェクトテーマの承認時にクローゼット内に存在するという理由だけで使用されました。すべての要素を最初から購入することを検討する場合、この場合はUnoで十分ですが、もちろん安くなります。
突然、ハイテク効果を高めるためにリストのスピーカーが必要になりました。 事実、サーボは180度しか回転できません。太陽を見ているので、これ以上は必要ありません。 しかし、プロジェクトの作業をテストするとき、特に2分間太陽をデモンストレーションできないときは、サーボがデッドゾーンに達したので、懐中電灯を振るのをやめる価値があるポイントに信号を送るのが良いことがわかりました。 このため、前述の呼び出しが追加されました。
それでは、トラッカーの構築を始めましょう。 まず、今後の作業フロントを4つの条件付きステージに分割します。ソーラーパネル用のスタンドの組み立てとサーボの固定、組み立てられた構造への感光性エレメントの固定、Arduinoのはんだ付けとコードの記述です。
図1:デザイン
徹底的な検索により、このようなデバイスの設計例がいくつか見つかりました。 最も注目されたのは次の2つです。
- www.youtube.com/watch?v=SvKp3V9NHZY-デバイスの信頼性と実用性で失われた「マテリアルサプライ」ノミネートの勝者:デザインは直接2つのサーボの組み合わせです。
- www.instructables.com/id/Simple-Dual-Axis-Solar-Tracker-実際、私の設計の主なアイデアは、材料とロータリーハウジングの一般的な外観を除いて、ここから取られました。
メタルコンストラクターからのアセンブリには、特定の困難が伴いました。サーボをドリルで接続するための穴を調整し、2つの平面でプラットフォームにしっかりと接着する必要がありました。 起こったことは、以下のビデオに示されています。
2番目の図:回路
フォトレジスタを取り付ける主なタスクは、それらの接続さえもではなく、4つの要素のそれぞれに光分離を提供することでした。 フォトレジストから得られる値はほぼ同じであり、回転が機能しないため、パーティションなしでそれらを残すことは不可能であることは明らかです。 ここで、残念なことに、金属設計者の能力は、主にすべての細部に穴があるために失望しました。 適切な金属部品が見つからなかったため、ソーラートラッカーに革新的な段ボールの仕切りが付いていました。 かなり悲惨な外観にもかかわらず、彼女はミッションを完璧に遂行します。
フォトレジスタは非常にしっかりとケースに取り付けられており、作業する価値があるのはプラットフォーム上の位置の精度です。今では垂直に上向きに見えず、完璧主義者を混乱させ、回転の精度をわずかに損なう可能性があります。
少しの回路:感光性エレメントの接続は、エレメントのリストに示されている出力抵抗を必要とする分圧回路に従って実行されます。 すべてのフォトレジスタは、Arduinoの5ボルト出力に接続された共通ピンにはんだ付けされています。 利便性と美観のために、フォトレジスターの脚は、2本の3線絶縁ワイヤーの接点にはんだ付けされています(1つの接点は未使用のまま隠されています)。 下の図では、すべての回路の詳細を検討できます。
3番目の図:はんだ付け
ここで詳細を説明するのはあまり意味がないので、使用した素材と作成したブレッドボードの写真を添付します。
4番目の図:新しいコードで!
一般的な作業のアルゴリズムは、ADCを使用してフォトレジスタからのデータを処理することです。 4つの要素、つまり4つの読み取り値があり、平均読み取り値は左側((左上+左下)/ 2)にあり、同様に右側、上側、下側にあります。 左右の絶対値の差がしきい値よりも大きい場合、平均値が大きい側に回転します。 上部と下部についても同様です。 コード内の特別なパン:2つの平面で応答感度と最大角度と最小角度を手動で設定できます。 作業コードのリストを以下に示します。
コード
#include <Servo.h> Servo horizontal; int servoh = 90; int servohLimitHigh = 180; int servohLimitLow = 0; Servo vertical; int servov = 45; int servovLimitHigh = 180; int servovLimitLow = 0; int ldrlt = A2; //LDR top left - BOTTOM LEFT int ldrrt = A3; //LDR top rigt - BOTTOM RIGHT int ldrld = A1; //LDR down left - TOP LEFT int ldrrd = A0; //ldr down rigt - TOP RIGHT int buzz_pin = 10; int buzz_tone = 20; int tol = 50; void setup() { Serial.begin(9600); pinMode(buzz_pin, OUTPUT); horizontal.attach(31); vertical.attach(30); horizontal.write(servoh); vertical.write(servov); } void loop() { int lt = analogRead(ldrlt); // top left int rt = analogRead(ldrrt); // top right int ld = analogRead(ldrld); // down left int rd = analogRead(ldrrd); // down rigt int avt = (lt + rt) / 2; // average value top int avd = (ld + rd) / 2; // average value down int avl = (lt + ld) / 2; // average value left int avr = (rt + rd) / 2; // average value right int dvert = abs(avt - avd); // check the diffirence of up and down int dhoriz = abs(avl - avr);// check the diffirence of left and right Serial.print("avt: "); Serial.print(avt); Serial.print(" "); Serial.print("avd: "); Serial.print(avd); Serial.print(" "); Serial.print("avl: "); Serial.print(avl); Serial.print(" "); Serial.print("avr: "); Serial.println(avr); Serial.print("h: "); Serial.print(servoh); Serial.print(" "); Serial.print("v: "); Serial.print(servov); Serial.print(" "); if (dhoriz > tol) { if (avl > avr) { if (servoh - 1 >= servohLimitLow) servoh--; else beep(150); } else if (avl < avr) { if (servoh + 1 <= servohLimitHigh) servoh++; else beep(150); } horizontal.write(servoh); } if (dvert > tol) { if (avt > avd) { if (servov + 1 <= servovLimitHigh) servov++; else beep(100); } else if (avt < avd) { if (servov - 1 >= servovLimitLow) servov--; else beep(100); } vertical.write(servov); } } void beep(unsigned char delayms){ analogWrite(buzz_pin, buzz_tone); delay(delayms); analogWrite(buzz_pin, 0); delay(delayms); }
作業結果
結論-プロジェクトで今何を変えるか
- 仕事のアルゴリズムの改善:フォトレジスタから得られた値の差に対する回転の度合いの依存性、つまり一度に数度の回転。
- プラットフォームへのフォトレジスタの完全に垂直な取り付け。
- ワイヤのないBluetooth-もちろん、アイデアは悪くありませんが、設計を大幅に改良し、2番目のArduinoを取得する必要があります。
- 金属歯車を備えたサーボの使用(信頼性とより確実な回転は、特にソーラーパネルを構造に追加し、それを意図した目的に使用する場合は害になりません)