RS-232 interface module, with 9 inputs and 9 outputs. Uses an AVR ATmega8 microcontroller.

Table of contents

Details

This I/O module provides 9 digital inputs and outputs for the computer serial port. The outputs are open collector — giving GND when activated, max load per channel is 100mA.

The inputs are triggered when they are pulled low.

By sending commands to the module; one can change the status of the outputs, the module will confirm when the action is carried out.

It’s also possible to ask for the current status of any in- or output, this is done by not sending a set value:

002:o:01:1 will set output 1 active
002:o:01   will return the output 1 value

The same can be done with the inputs:

002:i:01   will return the input 1 value

All commands from the module is sent with a checksum.

After the Rack box project was terminated, this project was rebuilt into Temperature and light sensor with signalling LEDs.

I/O

Input

  • PC0 Input 1
  • PC1 Input 2
  • PC2 Input 3
  • PC3 Input 4
  • PC4 Input 5
  • PC5 Input 6
  • PD5 Input 7
  • PD6 Input 8
  • PD7 Input 9

Outputs

  • PB0 Output 1
  • PB1 Output 2
  • PB2 Output 3
  • PB3 Output 4
  • PB4 Output 5
  • PB5 Output 6
  • PB6 Output 7
  • PB7 Output 8
  • PD2 Output 9
  • PD3 Life-signal (to Module stability monitoring unit 2)
  • PD4 Link activity

D-Sub 25-pin

  1. 5V +
  2. 5V -
  3. Input 1
  4. Input 2
  5. Input 3
  6. Input 4
  7. Input 5
  8. Input 6
  9. Input 7
  10. Input 8
  11. Input 9
  12. Output 1
  13. Output 2
  14. Output 3
  15. Output 4
  16. Output 5
  17. Output 6
  18. Output 7
  19. Output 8
  20. Output 9
  21. Life-signal

Communication

Interfacing is done with RS-232, using MAX232 or MAX202 and the SIOS protocol.

13:53:08 => 002:i:06:1:122
13:53:08 <= 002:i:06:0
13:53:05 => 002:o:01:0:122
13:53:05 <= 002:o:01:0
13:53:03 => 002:o:01:1:123
13:53:03 <= 002:o:01:1
13:52:58 => 002:s:01:1:127
13:52:35 => 002:s:00:1:126

Serial settings

  • Baud: 9600
  • Data bits: 8
  • Parity: None
  • Stop bits: 1

Source code

I wrote a v2.0 of the firmware, changing six inputs from digital to analog. But I never made the required changes to the electronics. The repository below links to v.1.0

Photos

Cutouts in plastic enclosure
Circuit board with output transistors, and input resistors
Soldering on the backside of circuit board
D-sub connectors, and fuse holder, mounted in enclosure
Strip-boards fitted inside enclosure
Backside of in- and output circuit board
Circuit board for AVR microcontroller and MAX232 interface IC
Circuit boards wired together
Mounting circuit boards inside enclosure
Inside the module
I/O board inside the module
Controller board inside the module
Backside of I/O board
D-sub serial connector
Module mounted in the rack box

Schematic drawing

Schematics for the serial interface module

Parts list

  • 1 × AVR ATmega8-16PU, DIL-28, 16 MHz, 23 I/Os
  • 5 × Capacitor, aluminium electrolytic, 1 µF, 50V
  • 1 × Capacitor, aluminium electrolytic, 10 µF, 25V
  • 1 × Capacitor, ceramic, 1 nF, 100V
  • 2 × Capacitor, metallized polyester foil, 10 nF, (0.01 µF)
  • 1 × D-sub soldering cups, 25 pin male
  • 1 × D-sub soldering cups, 9 pin female
  • 1 × DIL socket, 16-pin, 7.62mm
  • 1 × DIL socket, 28-pin, 7.62mm
  • 1 × Enclosure, plastic (1591 FL), 150x80x50mm, flange
  • 1 × Fuse 5x20 mm, 800 mA, fast-acting
  • 1 × Fuse holder, panel, 5x20mm, PTF30
  • 1 × LED 5mm clear, Green, 2.1V, 20mA, 385mcd, 6°
  • 1 × LED 5mm clear, Yellow, 2.0V, 20mA, 250mcd, 6°
  • 1 × LED lens 5mm, CLB 300 low, Green
  • 1 × LED lens 5mm, CLB 300 low, Yellow
  • 64 cm2 PCB, stripboard, 100x160mm, 160cm2
  • 11 × Resistor, carbon film, 0.25W, 330 Ω, 5%
  • 11 × Resistor, carbon film, 0.25W, 4.7 kΩ, 5%
  • 9 × Resistor, carbon film, 0.25W, 10 kΩ, 5%
  • 1 × RS232 interface, MAX232CPE, dual
  • 58 × Straight pin header, female, Single row, 2.54mm
  • 48 × Straight pin header, male, Single row, 2.54mm
  • 11 × Straight pin header, male, Y, Single row, 2.54mm
  • 10 × Transistor, NPN, 100 mA, 45V, 0.5W, BC547B