Electric heater and timer 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.
OSU installed in the Rack box

Information

Tasks:

  • The module turns of the heat in the living room after the porch door has been oven for 20 seconds. 90 seconds after the door has been closed the heat is turned back on. It can also be controlled using an external switch.
  • A short signal pulse from another module or a switch, will activate the output for 15 minutes. Used for turning on the test voltage on the Rack status panel. A new pulse within these 15 minutes turns the output off.

Leakage current

The solid state relay leaks a small amount of current to the oven, about 10mA. This current can be eliminated using a resistor in parallel over the oven supply after the relay. A 22K, 5W resistor should be the job.

I/O

Inputs

  1. Porch door, from Multi-purpose module 1
  2. Manual oven disengage
  3. Signal activate

Outputs

  1. Oven relay N.O
  2. Oven relay N.C
  3. Oven LED
  4. Oven local LED
  5. Signal output
  6. Lifesignal (to Module stability monitoring unit 2)

D-Sub 9-Pin

  • Red: 5v
  • Black: 0v
  1. Input: Porch door
  2. Input: Manual oven disengage
  3. Input: Signal activate
  4. Output: Oven relay N.O
  5. Output: Oven relay N.C
  6. Output: Oven LED
  7. Output: Signal
  8. Output: Lifesignal

Images

Schematic drawing

Electric-heater-and-timer-controller-circuit-gr5654.png

Parts list

Qty. Part
1 AVR AT90S2313-10PI, DIL-20, 10 MHz, 15 I/Os
1 Capacitor, aluminium electrolytic, 10 µF, 25V
2 Capacitor, ceramic, 22 pF, 100V
1 Capacitor, ceramic, 1 nF, 100V
1 D-Sub soldering cups, 9 pin male
1 DIL socket, 20-pin, 7.62mm
3 Diode, small signal, 1N4148/Ph
1 Enclosure, plastic (1591), 100x50x25mm
1 LED 5mm coloured clear, Green, 2.1V, 20mA, 30mcd, 10°
1 LED 5mm coloured clear, Red, 2.1V, 20mA, 8mcd, 10°
2 LED holder 5mm, RTC51, black plastic
2 Mounting bracket, DIN rail, Plastic
1 Quartz crystal oscillator, 4 MHz
5 Resistor, carbon film, 0.25W, 330 Ω, 5%
6 Resistor, carbon film, 0.25W, 4.7 kΩ, 5%
3 Resistor, carbon film, 0.25W, 10 kΩ, 5%
1 Switch, toggle, 1-pole, micro, on-on
5 Transistor, NPN, 100 mA, 45V, 0.5W, BC547B

Source code

Template:Basic code

'--------------------------------------------------------------
' Thomas Jensen
'--------------------------------------------------------------
' file: AVR_OSU
' date: 23/12/2006
'--------------------------------------------------------------
$regfile = "2313def.dat"
$crystal = 4000000
Config Portd = Input
Config Portb = Output
Config Watchdog = 1024

Dim A As Byte , Lifesignal As Integer
Dim Doraapen As Integer , Pretimer As Integer
Dim Ovndiode As Integer , Posttimer As Integer
Dim Ovndiode2 As Integer , Servertimer As Integer

Lifesignal = 21
Doraapen = 0
Pretimer = 0
Posttimer = 0
Ovndiode = 0
Ovndiode2 = 0
Servertimer = 0

Portb = 0

For A = 1 To 20
    Portb.2 = Not Portb.2
    Portb.3 = Not Portb.3
    Waitms 200
Next A
Portb = 0

Waitms 1000

Start Watchdog
Portb.0 = 1

Main:
If Pind.1 = 1 Then

'sense if door is open/closed
If Pind.0 = 0 Then Doraapen = 21
If Doraapen > 0 Then Doraapen = Doraapen - 1

'activate pre delay
If Doraapen > 1 And Pretimer = 0 And Portb.0 = 1 Then Pretimer = 201
If Pretimer > 0 Then Decr Pretimer
If Doraapen = 0 And Pretimer <> 0 Then Pretimer = 0
If Pretimer > 5 And Ovndiode = 0 Then Ovndiode = 3

'turn off oven
If Pretimer = 1 And Doraapen > 1 Then
   Portb.0 = 0
   Pretimer = 0
   End If

'activate post delay
If Doraapen = 0 And Posttimer = 0 And Portb.0 = 0 Then Posttimer = 901
If Posttimer > 0 Then Decr Posttimer
If Doraapen > 0 And Ovndiode = 0 Then Ovndiode = 50
If Posttimer > 200 And Ovndiode = 0 Then Ovndiode = 15
If Posttimer < 200 And Posttimer > 0 And Ovndiode = 0 Then Ovndiode = 10

'turn on oven
If Posttimer = 1 Then Portb.0 = 1

'turn on LED
If Ovndiode > 0 Then Ovndiode = Ovndiode - 1
If Ovndiode = 10 Then
   Portb.2 = 1
   Portb.3 = 1
   End If
If Ovndiode = 2 Then
   Portb.2 = 1
   Portb.3 = 1
   End If
If Ovndiode = 1 Then
   Portb.2 = 0
   Portb.3 = 0
   End If

Else
Portb.0 = 0
Pretimer = 0
Posttimer = 100
Ovndiode = 0
Doraapen = 0
If Ovndiode2 = 0 Then Ovndiode2 = 50
End If

'local oven LED
If Ovndiode2 > 0 Then Ovndiode2 = Ovndiode2 - 1
If Ovndiode2 = 11 Then Portb.3 = 1
If Ovndiode2 = 1 Then Portb.3 = 0

'oven NC
Portb.1 = Not Portb.0

'signal
If Pind.2 = 0 And Servertimer = 0 Then Servertimer = 9000
If Pind.2 = 0 And Servertimer < 8975 Then Servertimer = 15

If Servertimer > 0 Then
   Decr Servertimer
   Portb.4 = 1
   End If
If Servertimer = 0 Then Portb.4 = 0

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

'Loop cycle
Reset Watchdog
Waitms 100
Goto Main
End