Wednesday, 13 August 2025

PROJEK IZZUL 1: Projek pelajar bertajuk Small Smart Electric Generator-siri 2

 


Small Smart Electric Generator – Student Project Pack

1) Objektif & Spesifikasi Minimum

  • Menjana tenaga daripada putaran mekanikal (tangan/roda/turbin kecil) dan mengecas bateri 18650.

  • Pintar (smart): papar voltan, arus, kuasa & tenaga terkumpul (Wh) pada OLED; perlindungan beban rendah.

  • Output pengguna: USB 5V (maks ~1A) untuk LED/kipas kecil/telefon (slow charge).

Sasaran prestasi: 3–15 W bergantung kepada kelajuan putaran dan jenis generator.


2) Senibina Sistem (Blok Diagram)

[ Sumber Putaran ] --> [ DC Motor/Generator ] --> [ Penerus (Bridge) ] --+--> [ DC-DC (Buck/Boost ~5.2V) ] --> [ TP4056 Charger + Protection ] --> [ 18650 Battery ]
                                    |                                    |
                                    |                                    +--> [ INA219 Sensor (V/I/P) ] -- I2C --> [ Arduino/ESP32 ] -- I2C --> [ OLED 0.96" ]
                                    |                                                                 |
                                    |                                                                 +--> [ Kawalan Beban (MOSFET/Relay) ] --> [ Beban: USB/LED ]

3) Skematik Ringkas & Pendawaian

3.1 Rangkaian Kuasa

  1. Generator ➜ Penerus: DC motor/stepper ➜ jambatan diod (MB6S atau 4× 1N5819).

  2. Pelicin: kapasitor elektrolit 1000–2200 µF / 25V pada output jambatan (paralel 0.1 µF).

  3. Penstabil: modul buck/boost set ~5.2V menuju modul pengecas TP4056 + protection (DW01 + 8205).

  4. Bateri: 18650 dalam holder ➜ dari modul TP4056 (BAT+ / BAT-).

  5. Output pengguna: dari bateri ➜ modul step-up 5V USB (jika perlu), lalui MOSFET/relay untuk kawalan beban.

Nota: Letak fius 2A pada talian bateri; gunakan diod Schottky (jatuhan voltan rendah) untuk kecekapan.

3.2 Sensor & Kawalan (Arduino Nano atau ESP32 DevKit)

  • INA219 (I2C): VCC 5V (atau 3.3V jika ESP32), GND ke GND, SDA ke SDA (A4 pada Nano / GPIO21 ESP32), SCL ke SCL (A5 Nano / GPIO22 ESP32). Sambung shunt INA219 di antara penerus/penstabil dan input TP4056 untuk ukur kuasa masuk.

  • OLED 0.96" SSD1306 (I2C): VCC 5V/3.3V ikut papan, SDA/SCL selari dengan INA219.

  • Pembaca voltan bateri: pembahagi voltan ke A0 (Nano) atau ADC GPIO34 (ESP32). Guna 100kΩ ke BAT+ dan 33kΩ ke GND ➜ tap ke pin ADC.

  • Kawalan beban: Gate MOSFET N-channel (modul) ke D6 (Nano) / GPIO27 (ESP32), Source ke GND, Drain ke beban (atau ikut modul). Buzzer ke D5 (Nano) / GPIO26 (ESP32).

3.3 Susunan Pin (contoh Arduino Nano)

ModulPin ModulPin Arduino
INA219VCC5V
GNDGND
SDAA4
SCLA5
OLED SSD1306VCC5V
GNDGND
SDAA4
SCLA5
MOSFET/RelayIND6
Buzzer+D5
Buzzer-GND
Pembahagi VoltanTapA0

4) Senarai Komponen (BOM) + Anggaran Harga (MYR)

Anggaran Malaysia (2025); harga berbeza ikut jenama/kualiti/kedai. Pilih salah satu bagi item bertanda (pilih).

#ItemSpesifikasi/NotaKuantitiAnggaran (RM)
1DC Motor/Generator (pilih)Motor DC 12–24V (contoh RS-775) atau stepper NEMA17 + rectifier125–60
2Jambatan DiodMB6S atau 4× 1N5819 Schottky11–6
3Kapasitor pelicin1000–2200 µF, 25V + 0.1 µF22–5
4Modul DC-DC (pilih)Boost MT3608 (jika voltan rendah) atau Buck XL4015 (jika voltan tinggi)15–12
5Modul PengecasTP4056 + protection (DW01+8205)13–6
6Sel 18650 + Holder2000–3000 mAh (utamakan yang berkualiti)112–30
7Modul USB 5VStep-up 5V 1A/2A (port USB-A)15–10
8Sensor INA219I2C current/voltage/power18–15
9Papan Mikro (pilih)Arduino Nano (murah & mudah) atau ESP32 DevKit (WiFi/BLE)115–40
10Paparan OLED 0.96"SSD1306, I2C110–15
11MOSFET/Relay ModulN‑MOSFET logic level atau relay 5V16–12
12Buzzer aktif kecil5V11–2
13Suis gelangsar & jackOn/Off & pilihan beban22–6
14Fius + pemegang2A13–6
15Rintangan100kΩ & 33kΩ (pembahagi), lain‑lainBeberapa2–4
16Wayar, PCB berlubang, skru10–25
17Kotak projek3D print/akrilik/kayu115–40
Jumlah Anggaranbergantung pilihan~RM140 – RM220

Tip: jika mahu ringkas & murah, guna Arduino Nano + MT3608 + TP4056 + MOSFET.


5) Prosedur Pembinaan (Langkah Demi Langkah)

  1. Uji generator: Putar motor dan ukur voltan AC/DC selepas jambatan diod; pastikan >6V pada kelajuan biasa.

  2. Tambah pelicin & DC-DC: Laras modul buck/boost kepada ~5.2V tanpa beban.

  3. Sambung TP4056 & bateri: Pastikan polariti betul; LED merah = mengecas, biru/hijau = penuh.

  4. Pasang INA219 di talian dari penstabil ke TP4056.

  5. Pendawaian I2C & OLED ke Arduino/ESP32; sambung buzzer & modul MOSFET.

  6. Muat naik kod (seksyen 6). Periksa bacaan pada OLED.

  7. Uji beban: Sambung beban USB melalui MOSFET. Uji fungsi cut‑off bila voltan bateri rendah (cth <3.3V).

  8. Kemas & perumah: Pasang fius, susun kabel, pastikan ventilasi.


6) Kod Arduino (contoh, Arduino Nano)

Memerlukan perpustakaan: Adafruit_SSD1306, Adafruit_GFX, Adafruit_INA219.

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include <Adafruit_INA219.h>


// --- Paparan ---

#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);


// --- Sensor INA219 ---

Adafruit_INA219 ina219;


// --- Pin ---

const int PIN_BUZZ = 5;     // buzzer

const int PIN_LOAD = 6;     // MOSFET/relay

const int PIN_BAT_ADC = A0; // pembahagi voltan 100k:33k


// --- Parameter ---

const float R1 = 100000.0; // ohm (ke BAT+)

const float R2 = 33000.0;  // ohm (ke GND)

const float VREF = 5.0;    // rujukan ADC Arduino Nano

const float ADC_MAX = 1023.0;

const float VLOW_CUTOFF = 3.30; // V (cut load)

const float VLOW_WARN = 3.50;   // V (buzzer berkelip)


// integrasi tenaga

float wattHours = 0.0;

unsigned long lastMs = 0;


void setup() {

  pinMode(PIN_BUZZ, OUTPUT);

  pinMode(PIN_LOAD, OUTPUT);

  digitalWrite(PIN_LOAD, HIGH); // HIDUP beban pada mula


  Wire.begin();

  ina219.begin();


  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); }

  display.clearDisplay();

  display.setTextSize(1);

  display.setTextColor(SSD1306_WHITE);

  display.setCursor(0,0);

  display.println("Smart Gen");

  display.display();

  delay(800);


  lastMs = millis();

}


float readBatteryVoltage() {

  int adc = analogRead(PIN_BAT_ADC);

  float vTap = (adc / ADC_MAX) * VREF;           // volt di titik tap

  float vBat = vTap * ((R1 + R2) / R2);          // pulangkan voltan bateri sebenar

  return vBat;

}


void buzzerBeep(int t){ digitalWrite(PIN_BUZZ, HIGH); delay(t); digitalWrite(PIN_BUZZ, LOW); }


void loop() {

  // Bacaan kuasa masuk dari generator (sebelum TP4056)

  float busV = ina219.getBusVoltage_V();     // volt pada input charger

  float shuntV = ina219.getShuntVoltage_mV()/1000.0;

  float loadV = busV + shuntV;               // anggaran sebelum shunt

  float current = ina219.getCurrent_mA()/1000.0; // A

  float power = ina219.getPower_mW()/1000.0; // W


  // Integrasi tenaga

  unsigned long now = millis();

  float dt_h = (now - lastMs) / 3600000.0; // jam

  wattHours += power * dt_h;                // Wh

  lastMs = now;


  // Bateri

  float vBat = readBatteryVoltage();


  // Perlindungan beban

  if (vBat <= VLOW_CUTOFF) {

    digitalWrite(PIN_LOAD, LOW); // MATI beban

  } else {

    digitalWrite(PIN_LOAD, HIGH); // HIDUP beban

  }


  // Amaran rendah

  if (vBat <= VLOW_WARN && vBat > VLOW_CUTOFF) {

    buzzerBeep(50);

  }


  // Paparan

  display.clearDisplay();

  display.setCursor(0,0);

  display.print("Vin:"); display.print(loadV,2); display.println("V");

  display.print("Iin:"); display.print(current,2); display.println("A");

  display.print("Pin:"); display.print(power,2); display.println("W");

  display.print("Energy:"); display.print(wattHours,2); display.println("Wh");

  display.print("Vbat:"); display.print(vBat,2); display.println("V");

  display.print("Load:"); display.println(digitalRead(PIN_LOAD)?"ON":"OFF");

  display.display();


  delay(300);

}

7) Ujian & Demonstrasi (Cadangan Aktiviti Makmal)

  1. Kalibrasi kelajuan: kaitkan RPM kepada kuasa; bentangkan graf RPM vs Watt.

  2. Perbandingan sumber putaran: crank tangan vs roda basikal vs kipas; mana paling efisien?

  3. Analisis tenaga: guna bacaan Wh untuk kira masa mengecas LED/telefon.

  4. Refleksi kejuruteraan: bincang kerugian (diod, DC-DC), cara naikkan kecekapan.


8) Keselamatan & Amalan Baik

  • Jangan cas sel tanpa modul perlindungan; elak litar pintas.

  • Gunakan fius, penebatan panas pada sambungan, dan pengudaraan mencukupi.

  • Elak over‑speed motor; pasang had mekanikal jika digerakkan mesin.

  • Gunakan sel 18650 yang berkualiti (bukan terpakai).


9) Pembentangan Pelajar (Rubrik Ringkas)

  • Reka bentuk (20%): kemasan, susun letak, keselamatan.

  • Prestasi (30%): kuasa maksimum, kestabilan 5V, masa cas.

  • Ciri pintar (30%): paparan data, cut‑off berfungsi, pengiraan Wh.

  • Dokumentasi (20%): skematik, gambar binaan, analisis data.


10) Pilihan Peningkatan (Opsyen “Smart+”)

  • Tambah SD card untuk data logging.

  • Guna ESP32 + MQTT/WiFi untuk paparan data di telefon.

  • Tambah sensor suhu sel bateri untuk hadkan arus cas jika panas.

  • Guna MPPT mini (buck/boost dengan kawalan duty cycle) untuk kecekapan lebih baik.


 

No comments:

Post a Comment