Vermes
Advanced Member level 4
It is a universal programmable logic driver, which consists of three parts:
- the driver
- system responsible for programming driver/communication of the system with a computer
- application which supports creating programs for the driver
USBasp programmer and FT232RL were used in this project.
Driver:
The driver has eight inputs and eight digital outputs (positive logic, 24VDC). Half of the outputs is based on transistors NTD20P06L, while the rest is based on relays AZ6991. Transistor outputs load is 500mA, but it can be a bit more as well. There are two separate power paths in the driver – one for powering the outputs (24VDC) and the second for the rest (24VDC).
In addition, there is RTC (DS1307), 2x16 LCD (in standard HD44780) and a buzzer. The whole device is closed in housing Z-109.
Main element is Atmega16. Application described below can be used for creating software for Atmega.
The application was written using Python with Qt. It allows you to create programs in FBD. In order to program the driver, convert FBD to ASM and then induce gavrasm and avrdude.
Initially, there are 32 commands implemented in the program – below you can see some of them:
- logic
- timers
- counters
- flip-flops
- comparisons
Program operates with GNU/Linux and Windows systems.
And some videos:
The driver can be improved:
- you can replace stabilizer 7805 with converter A8498, because the stabilizer heats up too fast
- number of cables which connect both boards of the driver can be reduced
- you can add two memories, 24C256 – write/read password and name of the driver, AT45DB041B – write/read program (additionally Atmega32u2; in the first version of the driver there is no such a possibility)
- MCP23008 to control digital outputs, which will force using the cycle: inputs read → execution of the program → setting outputs
- you can also add two inputs and one analog output
The second version of the driver board can look like that:
Link to original thread (useful attachment) - Uniwersalny programowalny sterownik v1