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
Generator ➜ Penerus: DC motor/stepper ➜ jambatan diod (MB6S atau 4× 1N5819).
Pelicin: kapasitor elektrolit 1000–2200 µF / 25V pada output jambatan (paralel 0.1 µF).
Penstabil: modul buck/boost set ~5.2V menuju modul pengecas TP4056 + protection (DW01 + 8205).
Bateri: 18650 dalam holder ➜ dari modul TP4056 (BAT+ / BAT-).
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)
Modul | Pin Modul | Pin Arduino |
---|---|---|
INA219 | VCC | 5V |
GND | GND | |
SDA | A4 | |
SCL | A5 | |
OLED SSD1306 | VCC | 5V |
GND | GND | |
SDA | A4 | |
SCL | A5 | |
MOSFET/Relay | IN | D6 |
Buzzer | + | D5 |
Buzzer | - | GND |
Pembahagi Voltan | Tap | A0 |
4) Senarai Komponen (BOM) + Anggaran Harga (MYR)
Anggaran Malaysia (2025); harga berbeza ikut jenama/kualiti/kedai. Pilih salah satu bagi item bertanda (pilih).
# | Item | Spesifikasi/Nota | Kuantiti | Anggaran (RM) |
1 | DC Motor/Generator (pilih) | Motor DC 12–24V (contoh RS-775) atau stepper NEMA17 + rectifier | 1 | 25–60 |
2 | Jambatan Diod | MB6S atau 4× 1N5819 Schottky | 1 | 1–6 |
3 | Kapasitor pelicin | 1000–2200 µF, 25V + 0.1 µF | 2 | 2–5 |
4 | Modul DC-DC (pilih) | Boost MT3608 (jika voltan rendah) atau Buck XL4015 (jika voltan tinggi) | 1 | 5–12 |
5 | Modul Pengecas | TP4056 + protection (DW01+8205) | 1 | 3–6 |
6 | Sel 18650 + Holder | 2000–3000 mAh (utamakan yang berkualiti) | 1 | 12–30 |
7 | Modul USB 5V | Step-up 5V 1A/2A (port USB-A) | 1 | 5–10 |
8 | Sensor INA219 | I2C current/voltage/power | 1 | 8–15 |
9 | Papan Mikro (pilih) | Arduino Nano (murah & mudah) atau ESP32 DevKit (WiFi/BLE) | 1 | 15–40 |
10 | Paparan OLED 0.96" | SSD1306, I2C | 1 | 10–15 |
11 | MOSFET/Relay Modul | N‑MOSFET logic level atau relay 5V | 1 | 6–12 |
12 | Buzzer aktif kecil | 5V | 1 | 1–2 |
13 | Suis gelangsar & jack | On/Off & pilihan beban | 2 | 2–6 |
14 | Fius + pemegang | 2A | 1 | 3–6 |
15 | Rintangan | 100kΩ & 33kΩ (pembahagi), lain‑lain | Beberapa | 2–4 |
16 | Wayar, PCB berlubang, skru | — | — | 10–25 |
17 | Kotak projek | 3D print/akrilik/kayu | 1 | 15–40 |
Jumlah Anggaran | bergantung pilihan | ~RM140 – RM220 |
Tip: jika mahu ringkas & murah, guna Arduino Nano + MT3608 + TP4056 + MOSFET.
5) Prosedur Pembinaan (Langkah Demi Langkah)
Uji generator: Putar motor dan ukur voltan AC/DC selepas jambatan diod; pastikan >6V pada kelajuan biasa.
Tambah pelicin & DC-DC: Laras modul buck/boost kepada ~5.2V tanpa beban.
Sambung TP4056 & bateri: Pastikan polariti betul; LED merah = mengecas, biru/hijau = penuh.
Pasang INA219 di talian dari penstabil ke TP4056.
Pendawaian I2C & OLED ke Arduino/ESP32; sambung buzzer & modul MOSFET.
Muat naik kod (seksyen 6). Periksa bacaan pada OLED.
Uji beban: Sambung beban USB melalui MOSFET. Uji fungsi cut‑off bila voltan bateri rendah (cth <3.3V).
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)
Kalibrasi kelajuan: kaitkan RPM kepada kuasa; bentangkan graf RPM vs Watt.
Perbandingan sumber putaran: crank tangan vs roda basikal vs kipas; mana paling efisien?
Analisis tenaga: guna bacaan Wh untuk kira masa mengecas LED/telefon.
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