lnwshop logo
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

แจก Code ตั้งเวลาชาร์จแบตเตอรี่ สำหรับโซล่าเซล กรณีมีแบตมากกว่า 1 ลูก

sawoey 9 เดือนที่ผ่านมา

/*

Code สำหรับจับเวลาให้การชาร์จแบตเตอร์ สำหรับโซล่าเซล กรณีที่มีแบตหลายลูก แต่มีแผงโซล่า 1 แผง

ซึ่งถ้าเราต่อชาร์จแบตแบบ ขนานหลายลูกพร้อมกันจะทำให้ใช้เวลาในการชาร์จ นานขึ่น จึงจะเต็ม ดังนั้นเราจึงเลือกชาร์จครั้งละ 1 ลูก

ทำให้ใช้เวลาชาร์จน้อยลง แล้วหมุนเวียนไปชาร์จลูกอื่นต่อไป ถ้าไฟ control ดับ จะเริ่มจับเวลาใหม่ ในbatt ลูกเดิม โดยใช้ <EEPROM.h> เก็บสถานะเดิม

สามารถเพิ่มจำนวน batt ชาร์จได้สูงสุดเท่าที่ขาของ arduino มี

*/

 

 

#include <EEPROM.h>

int address = 1;

byte value;

unsigned long timer; // the timer

unsigned long INTERVAL_6 = 60000*1;// กำหนดเวลาที่จะให้ ON 1 นาที ของแต่ละช่อง 

unsigned long INTERVAL_7 = 60000*1;// กำหนดเวลาที่จะให้ ON 1 นาที ของแต่ละช่อง 

unsigned long INTERVAL_8 = 60000*1;// กำหนดเวลาที่จะให้ ON 1 นาที ของแต่ละช่อง 

unsigned long INTERVAL_9 = 60000*1;// กำหนดเวลาที่จะให้ ON 1 นาที ของแต่ละช่อง 

 

int Batt_Grid_pin6 = 6;//batt1

int Batt_Grid_pin7 = 7;//batt2

int Batt_Grid_pin8 = 8;//batt3

int Batt_Grid_pin9 = 9;//batt4

 

void setup()

{

  Serial.begin(9600);

  pinMode( Batt_Grid_pin6, OUTPUT);

  pinMode( Batt_Grid_pin7, OUTPUT);

  pinMode( Batt_Grid_pin8, OUTPUT);

  pinMode( Batt_Grid_pin9, OUTPUT);

 // EEPROM.write(address, 6);// ตั้งค่าจะให้เริ่มต้นที่ batt ลูกไหนก่อน

  value = EEPROM.read(address);

}

 

void loop()

{

Batt_changer();

delay(500);

}

 

 

void Batt_changer()

{

  value = EEPROM.read(address);

  Serial.println(" -------- Batt_ON "+String(value)); 

  

  value = EEPROM.read(address);

  

  switch (value) {

        case 6:

            Serial.println(" ------- ***** Batt_ON = 6");

            digitalWrite(Batt_Grid_pin6, 1);

 

            if(  (millis() - timer) > INTERVAL_6 )

                 {

                   Serial.println(" ------- ***** Batt_OFF => 6");

                   Serial.println(" ------- ***** Batt_ON 7");

                   EEPROM.write(address, 7);

                   digitalWrite(Batt_Grid_pin6, 0);

                   timer = millis(); // สั่งให้ start timer

                 }

                                    

      break;

 

        case 7:

            Serial.println(" ------- ***** Batt_ON = 7");

            if(  (millis() - timer) > INTERVAL_7 )

                 {

                   Serial.println(" ------- ***** Batt_OFF = >7");

                   Serial.println(" ------- ***** Batt_ON 8");

                   EEPROM.write(address, 8);

                   timer = millis(); // สั่งให้ start timer

                 }

                                    

      break;

 

        case 8:

            Serial.println(" ------- ***** Batt_ON = 8");

 

            if(  (millis() - timer) > INTERVAL_8 )

                 {

                   Serial.println(" ------- ***** Batt_OFF => 8");

                   Serial.println(" ------- ***** Batt_ON 9");

                   EEPROM.write(address, 9);

                   timer = millis(); // สั่งให้ start timer

                 }

                                    

      break;

 

        case 9:

            Serial.println(" ------- ***** Batt_ON = 9");

            if(  (millis() - timer) > INTERVAL_9 )

                 {

                    Serial.println(" ------- ***** Batt_OFF = >9");

                    Serial.println(" ------- ***** Batt_ON 6");

                    EEPROM.write(address, 6);

                    timer = millis(); // สั่งให้ start timer

                 }

                                    

      break;

 

 

                 }//switch (value) {

  

}//void Batt()

//อาจจะเพิ่มในส่วนของการเช็คว่า volt เต็มยัง ถ้าเต็มก็ช้ามไปชาร์จลูกต่อไปได้

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน
เจ้าของร้าน
9 เดือนที่ผ่านมา

 

เพิ่มวงจรวัดโวลต์ให้

http://arduinotronics.blogspot.com/2011/03/monitoring-voltage-of-dc-battery-supply.html

http://electronics.stackexchange.com/questions/93416/relevance-of-amperage-in-a-voltage-divider-circuit

ขอบคุณครับ Laughing

QUOTE 
ความคิดเห็นที่ #2
siri 3 เดือนที่ผ่านมา

มีวงจรใหมครับ

1
แสดงความคิดเห็นที่ 1-2 จากทั้งหมด 2 ความคิดเห็น
ชื่อ
อีเมล
ข้อความ
  • ตอบกระทู้

หมวดหมู่สินค้า

สมาชิก Arduino All

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

Arduino All ขายดี

รหัสสินค้า A015
300.00 บาท
  • สั่งซื้อ
รหัสสินค้า A233
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A115
10.00 บาท
สินค้าหมด
รหัสสินค้า A238
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A237
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A014
90.00 บาท
  • สั่งซื้อ
รหัสสินค้า A225
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A097
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A474
7.00 บาท
สินค้าหมด
Go to Top