Controller for lights and relays — AVR driven
Control three lights or relays, with toggle switches and status LEDs. Uses an AVR ATtiny2313 microcontroller.
Table of contents
This was one of the first modules installed in the rack box project, I used it to control some lights and the sub-woofer in my old apartment. It had three operator panels; in the living room, entryway and as part of the status panel for Rack box project. Momentary switches were used to either show the status, or if held for more than one second, toggle the outputs.
The goal of this lights and relay controller was very simple; allow control of the lights and sub-woofer from more than one location and by using automation. I could send trigger signals to this controller using the parallel I/O module.
When receiving an switch input pulse longer than one second, the controller would toggle that respective output and show the current state on the status LED. This made it very easy to connect multiple switches, since they didn’t need to know anything about the current state.
For automation purposes however the output status also had to be read, either using the status signal for that output, or the output itself. The output state was stored in EEPROM, and restored when the module was powered up.
The status LEDs were only enabled when a switch input was active, and two seconds after. So during normal operation all status LEDs would be turned off. That way the current state could be checked by an switch input pulse shorter than one second, without toggling the output.
In my old apartment; I used this module to control:
- Living room lights
- Sound system sub-woofer
- Computer desk lights
45 seconds after the delayed all-off input was triggered; all outputs were turned off. During that countdown all the status LEDs were flashing, and the flashing pattern speed increased for the last 10 seconds. By activating any of the switch inputs the all-off countdown was aborted.
The auto light input was used by the Intruder alarm system controller to turn on the lights when someone enter the apartment. The IR sensor input were used so that the lights would stay on as long as there was movement. Two minutes after the movement stopped the lights would turn off.
I had three operator panels;
- In the living room, used to control the living room lights and sub-woofer.
- In the entryway, used to control the living room and desk lights, and activate the delayed all-off function.
- On the computer desk, as part of the status panel for Rack box project, this could control all three outputs.
By using two-way momentary toggle switches, I could control two outputs using the same switch.
220VAC relays were used to turn the lights and sub-woofer on and off. I made short extension cables though the relay, and thin signal cables going from the controller module activated the relays.
- Lamp living room
- Lights and printer on desk
- Lights living room (handled by Multi-purpose module 1)
The lights and relay controller appears at 1:00. First the sub-woofer is turned on, then the living room lamp.
- Switch channel 1
- Switch channel 2
- Switch channel 3
- IR Sensor (from Multi-purpose module 1)
- Lights out 45 sec
- Auto light 2 min
- Lights out
- Relay 1
- Relay 2
- Relay 3
- LED 1
- LED 2
- LED 3
- Life-signal to Module heartbeat monitor
- Red +5V
- Black 0V
- Brown Life-signal
- White IR sensor
- Green Lights out 45 sec
- Orange Auto light 2 min
- Blue Lights out
- White Switch 1
- Orange Switch 2
- Green Switch 3
- Yellow Relay 1
- Blue Relay 2
- Red Relay 3
- Brown LED 1
- Black LED 2
- White (clear) LED 3
- Bascom-AVR source is available in a git repository:
- 1 × AVR ATtiny2313-20PU, DIL-20, 20 MHz, 18 I/Os
- 1 × Capacitor, aluminium electrolytic, 10 µF, 25V
- 2 × Capacitor, ceramic, 22 pF, 100V
- 1 × Capacitor, ceramic, 1 nF, 100V
- 1 × DIL socket, 20-pin, 7.62mm
- 1 × Enclosure, plastic (1591), 100x50x25mm
- 1 × LED 5mm coloured clear, Green, 2.1V, 20mA, 30mcd, 10°
- 1 × LED holder 5mm, RTC51, black plastic
- 32 cm2 PCB, stripboard, 100x160mm, 160cm2
- 1 × Quartz crystal oscillator, 4 MHz
- 8 × Resistor, carbon film, 0.25W, 330 Ω, 5%
- 8 × Resistor, carbon film, 0.25W, 4.7 kΩ, 5%
- 7 × Resistor, carbon film, 0.25W, 10 kΩ, 5%
- 7 × Transistor, NPN, 100 mA, 45V, 0.5W, BC547B