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

デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム

必要な部品と材料

部品 数量 備考
Arduino UNO 1 制御用マイコン
ロータリーポテンショメーター 2 手動モード時のX/Y軸角度指定用
LED(赤・青) 各1 モード表示:赤=手動、青=自動
タクトスイッチ 12mm 1 自動/手動モード切替ボタン
サーボモーター MG996R(高トルク) 2 パネルの水平・垂直回転駆動用
フォトレジスター(CdSセル) 4 自動モード用光センサー(上左・上右・下左・下右)
10kΩ 抵抗 5 フォトレジスタープルダウン、スイッチプルアップ等
220Ω 抵抗 2 LED電流制限用

必要な工具

使用設計ツール・ソフトウェア

プロジェクト概要

2017-2018年度の放課後クラブ「Young Hackers」で小学生たちがチーム制作したデュアルアクシス(2軸)ソーラートラッカーです。小型5Vソーラーパネルを水平・垂直2軸で回転させ、太陽光を常に正面に受けられるよう制御し、発電効率を最大化します。OpenSourceClassroomのプロジェクトをベースに、手動モード(ポテンショメーター操作)と自動モード(4分割フォトレジスターによる太陽追尾)の2モードをプッシュボタンで切替可能にしました。生徒たちはライン生産方式で配線・はんだ付け・ネジ締め等を分担し、数回のセッションで完成させました。

デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
完成したソーラートラッカー(自動モード:青LED点灯)
デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
手動モード時(赤LED点灯)
デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
内部配線と基板実装の様子
デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
ソーラーパネル取り付け状態
デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
屋外での動作テスト風景

動作原理

手動モード(赤LED点灯)

2つのポテンショメーター(A0: 水平/X軸、A1: 垂直/Y軸)の値を0-1023から0-180°にマッピングし、それぞれ対応するサーボ(D9: 水平、D10: 垂直)に書き込みます。ユーザーがつまみを回してパネル向きを任意に設定可能。

自動モード(青LED点灯)

4つのフォトレジスター(A2: 左上、A3: 右上、A4: 左下、A5: 右下)で受光強度を測定。各センサーのばらつきをmap()関数で0-100の相対光量に正規化し、左右平均・上下平均を比較します。

ループごとに1ステップずつ追尾するため、滑らかに太陽を追従します。センサーごとの感度差(map()の入力範囲)は実測でキャリブレーションしています。

ソースコード

#include <Servo.h>

// 変数初期化
int mode = 0;           // 0=手動, 1=自動
int buttonState = 0;
int prevButtonState = 0;
int topLeftLight = 0;
int topRightLight = 0;
int bottomLeftLight = 0;
int bottomRightLight = 0;
int LeftLight = 0;
int RightLight = 0;
int TopLight = 0;
int BottomLight = 0;

Servo servo_9;  // 水平(左右)
Servo servo_10; // 垂直(上下)

void setup() {
  pinMode(7, INPUT);       // モード切替ボタン
  pinMode(12, OUTPUT);     // 手動モードLED(赤)
  pinMode(11, OUTPUT);     // 自動モードLED(青)
  pinMode(A0, INPUT);      // ポテンショメーター水平
  pinMode(A1, INPUT);      // ポテンショメーター垂直
  pinMode(A2, INPUT);      // フォトレジスター左上
  pinMode(A3, INPUT);      // フォトレジスター右上
  pinMode(A4, INPUT);      // フォトレジスター左下
  pinMode(A5, INPUT);      // フォトレジスター右下
  servo_9.attach(9);       // 水平サーボ
  servo_10.attach(10);     // 垂直サーボ
}

void loop() {
  // モード切替ボタン検出(エッジ検出)
  buttonState = digitalRead(7);
  if (buttonState != prevButtonState) {
    if (buttonState == HIGH) {
      if (mode == 1) {
        mode = 0;
        digitalWrite(12, HIGH); // 赤ON
        digitalWrite(11, LOW);  // 青OFF
      } else {
        mode = 1;
        digitalWrite(11, HIGH); // 青ON
        digitalWrite(12, LOW);  // 赤OFF
      }
    }
  }
  prevButtonState = buttonState;
  delay(50); // デバウンス兼ループ間隔

  if (mode == 0) {
    // 手動モード:ポテンショメーター値を直接サーボ角度にマッピング
    servo_9.write(map(analogRead(A0), 0, 1023, 0, 180));
    servo_10.write(map(analogRead(A1), 0, 1023, 0, 180));
  } else {
    // 自動モード:フォトレジスター値を読み取り・正規化
    topLeftLight     = map(analogRead(A2), 50, 980, 0, 100);
    topRightLight    = map(analogRead(A3), 200, 990, 0, 100);
    bottomLeftLight  = map(analogRead(A4), 170, 970, 0, 100);
    bottomRightLight = map(analogRead(A5), 250, 1000, 0, 100);

    // 平均光量計算
    TopLight    = (topRightLight + topLeftLight) / 2;
    BottomLight = (bottomRightLight + bottomLeftLight) / 2;
    LeftLight   = (topLeftLight + bottomLeftLight) / 2;
    RightLight  = (topRightLight + bottomRightLight) / 2;

    // 水平追尾(左右差が閾値超過で1ステップ駆動)
    if (abs(RightLight - LeftLight) > 4) {
      if (RightLight < LeftLight) {
        if (servo_9.read() < 180) servo_9.write(servo_9.read() + 1);
      } else {
        if (servo_9.read() > 0) servo_9.write(servo_9.read() - 1);
      }
    }

    // 垂直追尾(上下差が閾値超過で1ステップ駆動)
    if (abs(TopLight - BottomLight) > 4) {
      if (TopLight < BottomLight) {
        if (servo_10.read() < 180) servo_10.write(servo_10.read() - 1);
      } else {
        if (servo_10.read() > 0) servo_10.write(servo_10.read() + 1);
      }
    }
  }
}

回路図

デュアルアクシスソーラートラッカー:自動/手動切替搭載の高効率太陽追尾システム
全体配線スケマティック(Tinkercad設計)

教育的ポイント・工夫

改善・拡張アイデア

製造プロセス

  1. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  2. Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
  3. ソーラートラッカー V2.0 – 高度なDIYソーラーパネル追尾システム
  4. IoT対応ソーラートラッカー:Arduinoによるスマートエネルギー管理
  5. Arduino Unoと1Sheeldで作る4x4x4 LEDキューブ – インタラクティブLEDプロジェクト
  6. Arduinoで高速・高精度RPM測定 – レーザーとIRセンサーによる新アルゴリズム
  7. 銅メッキプロジェクト:Arduino UNOで作るスマート電気メッキシステム
  8. Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
  9. デジタルロジックボードキット: 構成部品とセットアップガイド
  10. 高精度サーボ駆動ソーラートラッカー - 最大発電効率を実現する自動追尾プラットフォーム
  11. ソーラーパネル品質管理:最適性能を引き出す必須チェックポイント