Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

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

Automatische nachtlamp met Arduino: Code, simulatie & uitleg

  1. Lichtsensor: LDR + 10 kΩ in spanningsdeler tussen 5 V en GND. Knooppunt → Arduino A3 (ADC-in).
  2. ADC-principe: Meer licht → LDR weerstand ↓ → spanning op A3 ↑ (0–1023, 10-bit).
  3. Sturing: Arduino leest ADC, vergelijkt met drempelwaarde (bijv. 692 ≈ 3,3 V).
  4. Output: Pin 12 (digital) → basis BC547 (via 1 kΩ basisweerstand!) → collector → relais spoel → emitter → GND.
  5. 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

  1. Plaats Arduino UNO, LDR (LIGHT_DEPENDENT_RESISTOR), weerstand, BC547, relais (RELAY_SPST), lamp (LAMP).
  2. LDR eigenschappen: `R_DARK=1M`, `R_LIGHT=10K`, `LUX` variabel instellen via property editor.
  3. Compileer code in Arduino IDE → `Bestand > Voorkeuren > Toon uitgebreide output: compileren` → kopieer .hex pad.
  4. In Proteus: dubbelklik Arduino > Program File > plak .hex pad > OK.
  5. 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

  1. Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
  2. Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
  3. Real-time IoT hartslagmonitor met Arduino en MAX30100
  4. Arduino Uno WiFi Webserver: LED aan/uit schakelen via browser
  5. Bouw een geautomatiseerde Google Chrome Dino Game met Arduino
  6. Bouw een compacte FM-radio met Arduino Nano en RDA5807M
  7. Draadloze Arduino Programmeer Shield met HC-05 Bluetooth – Geen USB Nodig
  8. Capacitieve Touch LED Schakelaar met Arduino UNO – Eenvoudig DIY Project
  9. Bouw Een Real-Time Gezichtsvolgsysteem Met Arduino & OpenCV
  10. Hoe Automatische Tool Changers Werken: Een Uitgebreide Gids
  11. Hoe fabricanten automatisering benutten om e-commerce fulfillment te schalen