This is something I’ve had built for a while but haven’t until now gotten around to writing a post about. Last year I got some IV-9 numitron tubes, 12 of them, and with some I’ve designed a basic 4 digit numitron clock, however I think my method for doing it is quite elegant. Instead of most clocks you see, with their crappy 2 button interfaces, I’ve opted to use a computer (or in the future Android device) to set the time, alarm, settings, etc. There are still two buttons, however these are dedicated to features, one changes mode, the other changes the brightness. I have currently only written a .NET application for changing settings, but I would like to add an Android application, which should be easy using a HC-05 for interface.
The clock is pretty power efficient when without a proper power supply, and can last on it’s super-capacitor for hours, to keep time. The design has no RTC instead using the WDT of the MSP430 for time keeping. Aside from the super-capacitor it uses only jelly bean parts, an MSP430G2452, 4 74HC595s (admittedly these aren’t speced for the current I’m actually drawing, but it’s been running for months without any issue), 2 tactile buttons and 2 resistors to detect the voltage drop from the 3.3V supply to the 2.7V cap and an IN4148 diode to create the voltage drop the safely charge the cap. This has been run for about 3 months non stop, and has only drifted a few minutes, and this is possibly fixable anyway since the “RTC” is only the WDT, and I am using the 32.768kHz crystal and so it should be accurate. The temperature mode relies on the MSP430s internal sensor, and so isn’t that accurate, but it does work. The UART is done in software, and so for reliable operation it can only work at 2400 baud, which is more than enough for the amount of data.
When without external power I set all the pins low, and change the WDT from 512Hz (allowing for me to PWM the 74HC595′s enable pin) to 1Hz, allowing me to still keep accurate time, but draw less power with a reduced function set. The longest I’ve tested without power is about 8 hours, and it was still keeping time then. What I need to do now is get some PCBs manufactured, and possibly switch out the 74HC595s for some devices that are speced for 20mA/pin.
I’ve recently moved the blog off on an old server to a new one, this should be better and give me more ability to mess around with. I also updated WordPress in the process. I haven’t recently written but this seems like a good opportunity to post something more recent.
I made a little 3d rendering engine in C++ with OpenGL, and it’s all abstracted so that it should be able to support other APIs too. I haven’t really got very far yet though, and even the mesh rendering is a bit messy, but it’s getting there.
I’ve always been interested in the Source engine, even though it’s hardly the most accessible I like how it works, and it’s structure compared with UDK or CryEngine. UDK and CryEngine are great but rely heavily on having artists as the pipeline is very content based. Source is different, it’s maps are still brush based and the SDKs ship with a large amount of content you can use.
Based on the Alien Swarm SDK I’ve added PNG screenshot support and Squirrel scripting. The Squirrel scripting support is by no means finished, but when it’s more usable I may release it, it should work on 2007 as well. The PNG screenshot support is finished. It uses libpng and is reasonably fast, but of course the result is bigger than the jpeg screenshots. I may release the screenshot stuff too, but the code isn’t really in a state I’d like to currently.
Currently the Squirrel bindings include binding Source’s filesystem, console commands and console printing functions. The above is achieved with the following
Msg(format("Command parameters: %sn",args.ArgS()))
local myfile = file("nut\test.nut", "r+")
local cols = [Color(255,0,0), Color(255,127,0), Color(255,255,0),
Color(0,255,0), Color(0,0,255), Color(111,0,255), Color(143,0,255)]
local num = 0
for(local str = myfile.readline();str != "";str = myfile.readline())
CCTest <- ConCmdTest
ConCommand.Add("Test", "Test", ConCmdTest)
Hello! This is my first blog post on my new blog and yes, I have some content. I got my samples from TI, great service that they provide, I ordered on the Friday of last week and they arrive today. These are actually going to be used to prototype some designs using numitron tubes on breadboard, before moving to a custom PCB.
First on the list I ordered a PTH08080. After ordering I realized that this part was coincidentally very popular with people making portable consoles, specifically portable Nintendo 64s. This really is a great part with a wide output range (0.9 – 5.5V) and an even wider input range (4.5-18V). This will be used to provide the correct voltage while prototyping for my numitrons and will probably stay on my breadboard from now on.
Annoyingly the pin-out of the PTH08080 isn’t not the standard 0.1″ nor are it’s pins small enough to fit in a breadboard anyway. Because of this I had to modify a piece of stripboard to fit the pins, a screwdriver works quite well to make the holes a bit wider and the join 2 pairs for the outer on the row of 3 pins. I then added a pair of headers and two capacitors (one of which is required, the other recommended for better transient response). I also plan to add a precision 50K potentiometer to allow me to change the voltage without having to change a resistor. Would also give a bit more room next to the input, ground and output pins. I may also add a small switch for the inhibit line, allowing the supply to be turned off.
In addition to the PTH08080 I got some LM317Ls (through hole), some LM317Ms (smd), some MSP430F6638s and finally some TLC5940s (through hole). I plan to use the TLC5940s to drive 6 of the 12 numitron tubes (IV-9) I have ordered, not sure what I will do with the other 6. Eventually I plan to build a clock, just like nearly every ever person that own some old display tubes.