As an Electronic Computer System Engineer at Delmac Instruments and in the needs of a customer i managed to develop/design a digital adjustable spirit level indicator. The main purpose was to set a zero point which means it is the starting measurement position and a limit point which will be the limit for the indication. When pitch or roll exceeds the limit point a buzzer will start ringing and indication LEDs will show the direction. There has been also added a UART interface which transfers axis values and some extra port outputs for debuging.
NEW CASE DESIGN
This is a project i designed a year ago but never built, because of not enough spare time. This month i found some free time so i started building it and i send the pcb layout for manufacturing.
All started when i received some IV-11 vfd tubes from an ebay seller i ordered from and i started testing and prototyping by first trying to simple light up the VFD tube.
A VFD tube works like a 7-segment led display with some small differences.
A) The Filaments. The Filaments exists to power the tube. We have to supply these two pins with 1.2Volt and nothing more (polarity doesn't matter).
B) The Grid. The Grid is like the common anode of a 7-Segment LED display. So the Grid has to be pushed high at 60Volt (in these tubes) in order the segments to be able to light up.
C) The Segments. The Segments light's up simple by pushing them high at 60Volt.
Here are the very first steps of powering the tube manually.
To make the powering of the tube digitaly in order to use it in the final design we have to built a simple circuit which will impliment the above description. The circuit has to be able to push each segment at 60Volt or Pull it to Ground at 0Volt. To do this two transistors (Push-Pull) are needed for each segment. One for pushing the voltage and one for pulling it down.
Push Pull Transistor connection:
We have 9 lines at each tube which need push pull transistors including Dot segment and Grid. So we have 2 transistors x 9 lines= 18 transistors in total for one tube, 28 for 6 tubes (8 lines for segments are in common for all tubes, only Grid is seperate and used for multiplexing). The number of transistors needed are enough for a fault on soldering or pcb etching (more routes) decreasing the finall product reliability and increasing cost because of the more pcb space needed. Less components more reliability.
To make VFD tube driving easier and more reliable Maxim has built MAX6921. MAX6921 is a Push Pull shift register where each bit of the register is ported on a specific pin of the device. So if we shift a bit of '1' the corresponding pin will be pushed high and if we shift '0' the corresponding pin will be pulled low. The communication to the shift register is implimented via SPI which makes it more easier as most of the MCU's nowadays have embedded SPI. By using this chip we only need 3 pins from the main MCU to impliment the SPI communication and nothing more.
Prototyping the basic powering circuit using MAX6921 VFD tube driver.
To make all the 6 display tubes used in clock, appear at the same time we have to multiplex them. To do it so we have to turn on and off each tube in the row, enough times in a second in order, the transaction not to be visible in human eye (about 70~100Hz). As you can see on the above right video multiplexing for two tubes is tested.
Testing Filaments in series.
Describing the final circuit.
The integrated circuits i have used are:
The main brain and RTC, ATMEL's AVR Atmega168p which has SPI, 16K of memory to write plenty of code, Counter/Timer with asychronous external crystal interrupt to update the RTC even in sleep mode, ADC for ambient light sense, an Analog Comperator for voltage drop sense to turn mcu in sleep mode when runing on backup battery and PWM to control LED brightness and voltage booster for Segments brightness.
The MAX6921 VFD-tube Push-Pull driver used for the tubes driving.
The external supply voltage of the circuit is designed to be 1A 12Volt Power Plug Adapter.
To power the two chips a simple 5V stabilized power supply with LM7805 is used. Also has been used a full bridge rectifier in order to make the circuit work in any voltage polarity. At the output a low voltage drop 1N5817 diode is used to prevent back voltages.
To convert supply voltage from 12Volt to 60Volt for Grid and Segment supply a boost converted has been used which is controlled with PWM from Atmega168. The boost converter is inspired from adafruit's ice tube clock. A pull down resistor has been used at the MOSFET Gate to pull it down in no operation and a 60Volt zener diode is added in parallel to output to prevent over voltages.
A backup battery is used to keep runing the mcu when power supply is unplagged. A low voltage drop diode 1N5817 is connected in series to prevent battery charging.
Three buttons are used for user interface (configure time/date/alarm and change menu) with pull up resistors and decoupling capacitors for spikes, AVR In System Programmer, and a voltage divider used for voltage drop sense. A decoupling capacitor is also used here to prevent spikes.
Ambient light sensor (a voltage divider with a photoresistor), a UART pinout for additional modules to be add in future and a transistor in series with a 2Watt resistor, is used to adjust filament voltage/current using PWM. Because the circuit is designed to be powered by a power plug adapter the filaments are connected in series to reduce current darw and they are supplied directly from +12V.
There have been also used 6 RGB leds, one under each tube, filling in the tubes with more color and making it more impressive. The color change depending on the selected menu.
Blue : Date
Red : Alarm
They are also supplied directly from the power plug adapter in order not to overload LM7805 and increase it's temp.
The main circuit.
The tube segments are connected in parallel via the bus to MAX6921 and a FET is used to turn on/off the chip. Atmega168 is connected with ISP to MAX6921. A 32,768KHz crystal is used to count the time. Also a buzzer has been used for alarm mode and button press feedback.
Crystals with frequiency 32,768KHz is used in RTC's beacuse they make perfect division with 128. 32 768 / 128 = 256. So we use this crystal with a clock prescaler of 128 and we have a counter (max value of counter 256) overflow interrupt occured once a second with accuracy of 0.002% depending on crystal.
Finall design photos:
The PCB Desing:
Showing Time (GREEN Light).
Showing Alarm (RED Light).
Showing Date (BLUE Light).
And some more photos.
A photo with less light to capture clear digits.
Update! Building a wooden case.