Automatische nachtlamp met Arduino: Code, simulatie & uitleg
Automatische Nachtlamp met Arduino UNO, LDR en Relais - Volledige Handleiding
Deze tutorial laat zien hoe je een nachtlamp volledig autonoom laat schakelen op basis van omgevingslicht. We gebruiken Arduino UNO, LDR, transistor, relais en Proteus-simulatie. Ideaal als leerproject voor domotica en embedded systems.
Benodigde Hardware
- Arduino UNO (of Nano/Pro Mini)
- LDR (Light Dependent Resistor, bijv. GL5528)
- Weerstand 10 kΩ (voor spanningsdeler)
- Transistor BC547 (NPN, relaisdriver)
- Relaismodule 5 V (1 kanaal, opto-geïsoleerd aanbevolen)
- Lamp: 230 V AC gloeilamp/LED + passende bedrading
- Voeding: 5 V DC (USB of adapter) voor Arduino + relais
- Printplaat/breadboard, draden
Benodigde Software
- Arduino IDE (code schrijven, compileren, uploaden)
- Proteus 8+ (schematisch, PCB, simulatie met Arduino AVR model)
Schakeling & Principe

- Lichtsensor: LDR + 10 kΩ in spanningsdeler tussen 5 V en GND. Knooppunt → Arduino A3 (ADC-in).
- ADC-principe: Meer licht → LDR weerstand ↓ → spanning op A3 ↑ (0–1023, 10-bit).
- Sturing: Arduino leest ADC, vergelijkt met drempelwaarde (bijv. 692 ≈ 3,3 V).
- Output: Pin 12 (digital) → basis BC547 (via 1 kΩ basisweerstand!) → collector → relais spoel → emitter → GND.
- Relais: Schakelt 230 V lamp via COM/NO contacten. Flyback-diode over spoel (meestal op module).
Arduino Code (Geoptimaliseerd)
const uint8_t LDR_PIN = A3;
const uint8_t RELAY_PIN = 12;
const uint16_t THRESHOLD = 692; // Kalibreer via Serial Monitor
const uint16_t HYSTERESIS = 50; // Voorkomt trillen bij drempel
bool lampState = false;
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Relais uit (actief hoog aangenomen)
}
void loop() {
uint16_t lightLevel = analogRead(LDR_PIN);
Serial.println(lightLevel);
if (!lampState && lightLevel < (THRESHOLD - HYSTERESIS)) {
// Donker genoeg -> lamp AAN
digitalWrite(RELAY_PIN, HIGH);
lampState = true;
Serial.println("Lamp: ON");
} else if (lampState && lightLevel > (THRESHOLD + HYSTERESIS)) {
// Licht genoeg -> lamp UIT
digitalWrite(RELAY_PIN, LOW);
lampState = false;
Serial.println("Lamp: OFF");
}
delay(1000); // 1 Hz polling voldoende
}
Code-uitleg
- Hysterese: Voorkomt schneller schakelen (trillen) wanneer lichtniveau rond drempel fluctueert. Essentieel voor betrouwbaarheid.
- State-tracking: Alleen schakelen bij toestandsverandering, niet elke loop.
- Kalibratie: Open Serial Monitor (9600 baud), noteer waarden bij dag/licht. Stel THRESHOLD dazwischen in.
- Relais-logica: Controleer of jouw module actief HOOG of LAAG is. Pas `HIGH`/`LOW` aan.
- Basisweerstand: 1 kΩ tussen pin 12 en basis BC547 beperkt basistroom (IB ≈ 4,3 mA), voldoende voor relais < 100 mA.
Proteus Simulatie
- Plaats Arduino UNO, LDR (LIGHT_DEPENDENT_RESISTOR), weerstand, BC547, relais (RELAY_SPST), lamp (LAMP).
- LDR eigenschappen: `R_DARK=1M`, `R_LIGHT=10K`, `LUX` variabel instellen via property editor.
- Compileer code in Arduino IDE → `Bestand > Voorkeuren > Toon uitgebreide output: compileren` → kopieer .hex pad.
- In Proteus: dubbelklik Arduino > Program File > plak .hex pad > OK.
- Simulatie starten: variëer LDR LUX waarde, observeer relais/LED.
Praktische uitvoeringstips
- Voeding: Gebruik 5 V/1 A adapter. Arduino VIN kan 7–12 V, maar 5 V direct op 5V-pin is schoner.
- Relaismodule: Kies module met optokoppelaar + flyback-diode + transistor op print. Dan heb je geen BC547 meer nodig (direct van Arduino pin).
- Behuizing: IP65 voor buitengebruik. LDR achter diffus lichtdoorgevend glas/plastic.
- 230 V veiligheid: Alle hoogspanningsbedrading in behuizing, strain relief, aardingsklem, dubbele isolatie.
- Uitbreiding: RTC (DS3231) voor tijdgebaseerd uitschakelen (bijv. na middernacht), PIR-sensor voor bewegingsdetectie, WiFi (ESP8266) voor logging/app-besturing.
Conclusie: Een automatische nachtlamp is het perfecte "Hello World" project voor Arduino-domotica. Je leert ADC, drempelvergelijking, hysterese, relaissturing, simulatie en veilige netspanningsintegratie. De basis voor slimme verlichting, energiebesparing en comfort.
Industriële technologie
- Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
- Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
- Real-time IoT hartslagmonitor met Arduino en MAX30100
- Arduino Uno WiFi Webserver: LED aan/uit schakelen via browser
- Bouw een geautomatiseerde Google Chrome Dino Game met Arduino
- Bouw een compacte FM-radio met Arduino Nano en RDA5807M
- Draadloze Arduino Programmeer Shield met HC-05 Bluetooth – Geen USB Nodig
- Capacitieve Touch LED Schakelaar met Arduino UNO – Eenvoudig DIY Project
- Bouw Een Real-Time Gezichtsvolgsysteem Met Arduino & OpenCV
- Hoe Automatische Tool Changers Werken: Een Uitgebreide Gids
- Hoe fabricanten automatisering benutten om e-commerce fulfillment te schalen