Rack box mute and light controller

From uCtrl
This page is kept for historical interest. It may document projects or methods that are obsolete and/or no longer relevant. The information here is not kept up-to-date.

This module was part of the rack box project — which was terminated when I moved out of my first apartment.
MICU installed in the Rack box

Information

MICU takes care of misc small tasks in the Rack box, it controls the system mute function, the lights inside and the door sensor of the Rack box. When the door is opened the light turns on automatically, and stays on for five minutes. The light can also be affected manually with a switch, the light is then active for 30 minutes but is turned off if the door is closed. Door N.O and N.C signal is available for other modules.

Mute

When system mute (quiet mode) is active, sound alarms and the stack light is deactivated. Errors are only shown in Serial Client and on the Rack status panel. Mute can be affected manually or with the computer, using the Serial I/O system. A timer automatically sets the system in mute at night.

Weekdays mute is activated at 11PM and deactivated at 9AM. In the weekend it's activated 1AM and deactivated 11AM.

Crontab example for Linux:
01 23 * * 0-4 root /var/www/ctrl_files/turn_port 4 1 #weekday on
01 01 * * 0,6 root /var/www/ctrl_files/turn_port 4 1 #weekend of
01 09 * * 1-5 root /var/www/ctrl_files/turn_port 4 0 #weekday off
01 11 * * 0,6 root /var/www/ctrl_files/turn_port 4 0 #weekend off

I/O

Inputs

  1. Mute switch
  2. Mute auto signal from timer
  3. Light switch
  4. Door switch

Outputs

  1. Mute relay
  2. Lights
  3. Door N.O
  4. Door N.C
  5. Mute LED
  6. Lifesignal (to Module stability monitoring unit 2)
  7. Lifelight

Wires

Side

  • Red 5V+
  • White 0V
  • Black Lifesignal (out)

Bottom

  • Yellow Mute switch (in)
  • Green Mute auto signal (in)
  • Orange Light switch (in)
  • Brown Door switch (in)
  • Red Mute relay (out)
  • Blue Lights (out)
  • White Door N.O (out)
  • Black Door N.C (out)
  • Black (clear) Mute LED (out)

Images

Schematic drawing

Rack-box-mute-and-light-controller-circuit-436j34.png

Parts list

Qty. Part
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 FL), 100x50x25mm, flange
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
5 Resistor, carbon film, 0.25W, 330 Ω, 5%
7 Resistor, carbon film, 0.25W, 4.7 kΩ, 5%
4 Resistor, carbon film, 0.25W, 10 kΩ, 5%
6 Transistor, NPN, 100 mA, 45V, 0.5W, BC547B

Source code

Template:Basic code

'--------------------------------------------------------------
' Thomas Jensen
'--------------------------------------------------------------
' file: AVR_MICU
' date: 20/04/2006
'--------------------------------------------------------------
$crystal = 500000
Config Portd = Input
Config Portb = Output
Config Watchdog = 1024

Dim Lifesignal As Integer
Dim Lystimer As Integer
Dim Muteled As Integer
Dim Dor As Integer
Dim A As Byte

Lifesignal = 21
Lystimer = 0
Muteled = 0
Dor = 0

Portb = 0 'boot

For A = 1 To 20
    Portb.4 = Not Portb.4
    Portb.6 = Not Portb.6
    Waitms 250
Next A

Waitms 1000
Start Watchdog
Portb = 0

Main:
Portb.2 = Pind.3 'door switch
Portb.3 = Not Pind.3

If Pind.2 = 0 And Lystimer = 0 Then Lystimer = 18000 'lights timer
If Pind.2 = 0 And Lystimer < 17975 Then Lystimer = 15
If Pind.3 = 0 Then Lystimer = 0

If Pind.3 = 1 Then
   If Dor = 0 Then
      Lystimer = 3000
      Dor = 1
      End If
   End If
If Dor = 1 And Pind.3 = 0 Then Dor = 0

If Lystimer > 0 Then 'set light
   Lystimer = Lystimer - 1
   Portb.1 = 1
   End If
If Lystimer = 0 Then Portb.1 = 0

If Pind.1 = 0 Then 'mute relay
   If Muteled = 0 Then Muteled = 10
   Portb.0 = 1
   End If
If Pind.0 = 0 Then
   If Muteled = 0 Then Muteled = 5
   Portb.0 = 1
   End If

If Pind.0 = 1 And Pind.1 = 1 Then
   Portb.0 = 0
   End If

If Muteled = 3 Then Portb.4 = 1 'mute led
If Muteled = 1 Then Portb.4 = 0
If Muteled > 0 Then Muteled = Muteled - 1

If Lifesignal > 0 Then Lifesignal = Lifesignal - 1 'lifesignal
If Lifesignal = 6 Then Portb.5 = 1
If Lifesignal = 1 Then Portb.5 = 0
If Lifesignal = 0 Then Lifesignal = 21

Reset Watchdog 'loop cycle
Portb.6 = 1
Waitms 25
Portb.6 = 0
Waitms 75
Goto Main
End