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

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

必要なパーツと用品

パーツ 数量
Arduino UNO 1
サーボモーター(Tower Pro MG996R) 1
フォトレジスタ(CdSセル) 2
抵抗 10k Ω 2
2.5V→5V ブーストコンバーター(USB出力対応) 1
小型ソーラーパネル 2

必要なツールと機械

使用するアプリとオンラインサービス

プロジェクト概要

グリーンエネルギーへの取り組み

オーストラリアで再生可能エネルギー業界に携わり、しばらくArduinoでいろいろ実験してきましたが、このプロジェクトでついに両者を融合し、自作の小型ソーラーデバイスを作ることにしました。最初に一点:このプロジェクトはArduinoとサーボに5V電源が必要ですが、ソーラーパネルの出力は良くても3.4V程度です。したがって、厳密には「元が取れる」仕組みではありません。しかし、このコンセプトはスケーラブルです。例えば、8枚のパネルアレイで12Vを生成すれば、Arduino駆動とスマホ充電を外部電源なしで両立できます。将来的にそのバージョンも作成予定で、完成次第ここにリンクを追加します。

参考にした情報源:

両方ともこのテーマに関する優れた情報源で、ここでのコンセプトの元になっています。

はじめに

まずソーラーパネルが必要です。私は2枚使用しましたが、枚数は自由です。ただし、9gサーボが持ち上げ・下げられる重量を考慮してください(重すぎると動作しません)。使用したパネルは1.5V、0.75W出力の、比較的低出力タイプですが、軽量で安価、概念実証には十分です。

2枚のパネルをエポキシ接着剤で端同士を接合。直列接続するには、一方のプラスリードを他方のマイナスリードにはんだ付けし、余ったプラスとマイナスのリードを取り出します。各パネルの両側(東・西)にCdSセル(フォトレジスタ)を取り付け、それぞれのリードにはんだ付けしてジャンパーワイヤーを接続します。ジャンパーワイヤーの片側を切って5mmほど被覆を剥くと、はんだ付けしやすくなります。

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

ArduinoでCdSセルを読み取るには、各セルに分圧回路が必要です。CdSセルをR1、10kΩ抵抗をR2として分圧し、2つの抵抗の接点からArduinoへジャンパーワイヤーを接続します。ブレッドボードで組む場合、CdSセルの一方のリードを分圧回路、もう一方をプラス電源レールに接続します。Fritzing図を参照してください。

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

トラッカー構造

次に、パネルを載せる旋回支持構造を作ります。私の設計は、2つのAフレームで支えられたスプリング鋼の棒です。パネルアレイの裏側に小さな木製ストラットを取り付け、スプリング鋼を通す穴を開けました。安価・簡単・軽量なバルサ材で作りましたが、恒久設置なら薄い鋼板や防腐処理した合板が望ましいです。構造の製作過程は動画で確認できます(サーボの取り付け位置も分かります)。私はパネルを下向き角度で取り付け、構造のベースを北向きに固定することで、パネルがどちらに振れても常に少し北向きに傾き、出力を最大化しています(南半球在住のため)。

サーボの取り付け

サーボはAフレームの支持梁の一つに取り付け、パネルの片側を持ち上げ・下げします。ペンチでスプリング鋼を曲げてフック状にし、パネルストラットとサーボアームに通します。サーボアームの穴を広げる必要がある場合は、最小のドリルビットで拡張します。スプリング鋼をサーボアームやパネルストラットに接着しないでください。 パネルがスムーズに動くためには、穴の中で自由に回転できる必要があります。取り付け後、パネルを構造から外し、サーボのみの状態でキャリブレーションを行います。

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

サーボのキャリブレーション

新しいスケッチを開き、以下のコードを入力:


#include 
Servo myservo1;
int pos = 10;

void setup() {
  myservo1.attach(9); // PWMピン9にサーボ接続
}

void loop() {
  myservo1.write(pos);
}

Arduinoにアップロードし、サーボの位置を確認。スケッチの'pos'値を0〜180の間で変更しながら再アップロードし、サーボアームが真上と真下を向く位置を見つけます。それらが最大・最小値になります。私の場合は15と140でした。180から0にオーバーラップする場合は、サーボアームを外して再配置してください。

すべてを組み合わせる

すべて接続し、以下のスケッチをアップロード:


// Sun Tracker Sketch
// 9gサーボ用(Arduinoから直接給電可能、外部電源不要)
// Fritzing図はGitHubリポジトリ参照
// https://github.com/nickalanf/Arduino--Projects
// シリアルモニタ部分はデバッグ用。動作確認後は無効化可能
// Sketch by FIELDING - 8/2/18

#include 
Servo servo;

int eLDRPin = A0;  // 東側CdSセル
int wLDRPin = A1;  // 西側CdSセル
int eastLDR = 0;   // 東側読み取り値
int westLDR = 0;   // 西側読み取り値
int difference = 0; // 差分
int error = 10;    // 許容誤差(両セルに均等な光が当たった時の差分補正)
int servoSet = 130; // サーボ位置(デバイスごとに異なる)

void setup() {
  servo.attach(9);
  Serial.begin(9600);
}

void loop() {
  eastLDR = analogRead(eLDRPin);
  westLDR = analogRead(wLDRPin);

  // 両方のCdSセルで低光量(夜間)なら、朝に備えて東(初期位置)に戻す
  if (eastLDR < 400 && westLDR < 400) {
    while (servoSet <= 140 && servoSet >= 15) {
      servoSet++;
      servo.write(servoSet);
      delay(100);
    }
  }

  difference = eastLDR - westLDR;

  if (difference > 10) { // 東側が明るい → 東へ
    if (servoSet <= 140) {
      servoSet++;
      servo.write(servoSet);
    }
  } else if (difference < -10) { // 西側が明るい → 西へ
    if (servoSet >= 15) {
      servoSet--;
      servo.write(servoSet);
    }
  }

  // シリアルモニタ出力(デバッグ・セットアップ用)
  Serial.print(eastLDR);
  Serial.print(" - ");
  Serial.print(westLDR);
  Serial.print(" - ");
  Serial.print(difference);
  Serial.print(" - ");
  Serial.print(servoSet);
  Serial.print(" - ");
  Serial.println(".");
  delay(100);
}

シリアルモニタを開き、CdSセルに光を当ててテストします。両方に均等に光を当て、表示されるdifference値を確認。25より大きい、または-25より小さい場合は誤差補正が必要です。該当するCdSセルの値にerror値を加減算して補正してください。差分が小さければそのまま使用可能です。

テストの準備完了!暗い部屋で懐中電灯やランプを使い、光を片方のCdSセルからもう片方へゆっくり動かし、パネルが追従する様子を観察できます。片方のCdSセルを覆うと、パネルが反対側に振れるはずです。

ボーナス:スマホ充電機能

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

パネルの出力を活用したい場合、2.5V-5V DC-DCブーストコンバーターをパネルの出力リードに直接接続できます。これはArduino/ブレッドボードとは完全に独立した回路です。一般的なスマホは5Vで充電されますが、パネルが5Vを出力しても電流が少ない場合、バッテリー満充電時や日照不足時には充電できません。最も簡単な解決策は、パネルを増やすことです!

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

コード

Sun Tracker


// Sun Tracker Sketch
// 9gサーボ用(Arduinoから直接給電可能、外部電源不要)
// Fritzing図はGitHubリポジトリ参照
// https://github.com/nickalanf/Arduino--Projects
// シリアルモニタ部分はデバッグ用。動作確認後は無効化可能
// Sketch by FIELDING - 8/2/18

#include 
Servo servo;

int eLDRPin = A0;
int wLDRPin = A1;
int eastLDR = 0;
int westLDR = 0;
int difference = 0;
int error = 10;
int servoSet = 130;

void setup() {
  servo.attach(9);
  Serial.begin(9600);
}

void loop() {
  eastLDR = analogRead(eLDRPin);
  westLDR = analogRead(wLDRPin);

  if (eastLDR < 400 && westLDR < 400) {
    while (servoSet <= 140 && servoSet >= 15) {
      servoSet++;
      servo.write(servoSet);
      delay(100);
    }
  }

  difference = eastLDR - westLDR;

  if (difference > 10) {
    if (servoSet <= 140) {
      servoSet++;
      servo.write(servoSet);
    }
  } else if (difference < -10) {
    if (servoSet >= 15) {
      servoSet--;
      servo.write(servoSet);
    }
  }

  Serial.print(eastLDR);
  Serial.print(" - ");
  Serial.print(westLDR);
  Serial.print(" - ");
  Serial.print(difference);
  Serial.print(" - ");
  Serial.print(servoSet);
  Serial.print(" - ");
  Serial.println(".");
  delay(100);
}

回路図

ポータブルソーラートラッカースマホ充電器:Arduinoとサーボで太陽追尾

製造プロセス

  1. 太陽電池:初期実験から現代フォトボルタイクスまで
  2. Arduinoで実現する低コスト・リアルタイム太陽光パネル監視システム
  3. ソーラートラッカー V2.0 – 高度なDIYソーラーパネル追尾システム
  4. IoT対応ソーラートラッカー:Arduinoによるスマートエネルギー管理
  5. Arduino UNOで作る太陽追尾式ソーラー発電システム – デュアルアックス完全ガイド
  6. SmartPostBox: IoT対応スマートメールボックスシステム (Sigfox + Arduino MKR Fox 1200)
  7. 高精度サーボ駆動ソーラートラッカー - 最大発電効率を実現する自動追尾プラットフォーム
  8. デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
  9. Arduino Nanoで作るMPPTソーラーチャージャー: 太陽光発電の最大電力追従制御
  10. ソーラーパネル品質管理:最適性能を引き出す必須チェックポイント
  11. ソーラーパネル製造の全工程:高品質太陽光発電へのステップバイステップガイド