Proxmox Serial Port Pass Through Fireplace
I decided on using a TEC, as I have no familiarity with using them, and condensers can be loud, which is unappealing. The noise from a fan is acceptable. I don't need it to be large, and a simple cooler associated with shipping chemicals should be more than sufficient. The 3cm thick walls realistically should provide enough insulation to allow the TEC to get it cold. Of course, as the cooling is a function of the air temperature (e.g.
Introspectionparser bqpjson pandas-profiling freemusicarchive coverage-env-plugin xontrib-avox CodeAnalyzer wolfson simplescraper grafana-cassandra netease-dl sndict django-poeditor-com-field ansibilo netforce-test isoprene-pumpjack dr-microservices SiteReg nestable pip_services_commons ozelot pytc-gui whych.
If an ideal 40°C gradient, the cold side could get below zero), if the room temperature is too warm the cooling effect will not be significant.A standard ATX PSU is being used to supply power to the fan and the TEC, as the 12V *rail* can provide as much as 22A. The TEC can handle as much as 200W, but for safety concerns, I'll limit the TEC to 100W, and see the results. Currently with my benchtop supply, 36W (12V, 3A) does not provide much for cooling, maybe 3-4°C below room temperature. For the temperature display, I decided to go archaic and not use any MCU for an A->D converter to display. I will be using a comparator network with closely matched resistors, and display the current temperature in C on 2 7 segment displays, and 1 LED to indicate negative (although I do not expect to drop below freezing). OK, so for now I ditched the motherboard idea. I am not willing to buy a motherboard from a fab, so later I may make a homemade board with vias, as seen here.
That blog is really awesome btw, consider reading it sometime.Well anyways I have been trying to get a 16550 UART working, so far with no luck. I have pretty much reduced the problem down to the UART or the data bus's connection to the 'expansion board' I made because I ran out of room on my first board.I also added a nice ATX power supply controller circuit, which allows power to go to the (currently useless) IDE hard drive. It's still pretty cool though.Well, here is the system so far:You can see why I need to make my own smaller and more clean PSU.
This 'wires going crazy shorting everywhere' business with a WAY oversized powe is beyond terrible. OK, now the computer itself. Finally took some decisions.
Project will use a cheap mini tv as display: The next step I took was to plug everything to a simple power outlet, since every part I'm using is either 5v or 12v an ATX power supply sounded good, also I had a power connector adapter laying around, used it to make this cable with all the required voltages plugged, tried to avoid modding the PSU to get some maintenance possibilities:I also ditched rune audio in favour of raspbian with mopidy. Mopidy has a HTTP API and some awesome plugins, will try to make my own web front end to run it on the display using Fluxbox Window Manager. I have also worked a little more on the code for controlling the volume and the playback, will try to turn it into a mini keyboard for navigation inside the web client.
All it's written in nodejs and mopidy has a JS wrapper for it's API. All things are wired to ATX and inside of that green box until I get something nice to put them into.A reused and old usb hub now wired to ATX. This project, retroactively named Mark I, was built out of salvaged & retired computer parts. The concept worked well enough for me to embark on Mark II, which uses components I purchased for the purpose.
After two major revisions I'm pretty confident the idea will pan out. Several more iterations are still needed before it meets all of my objectives. The major differences are: Mark IMark IIScreenSalvaged 17' laptop LCD panel Larger 24' monitorMotherboardFull sized ATX boardSmaller mini-ITX boardPower SupplyFull sized ATX power supply unit.Smaller SFX PSU At this point I do not expect to put any more effort into Mark I, though if anybody wants to take the files I've shared here as a basis for their project I'd love to hear about it. For the foreseeable future I'll be refining Mark II. The full verbose build blog is here, the 'Cliff Notes' version of progress summaries will be posted on the Mark II Hackaday.io project page here.
End Of Life CycleKitchenDuino has run for the best part of a year attached to a laptop where it was saving climate and some movement data using gobetwino, which is just a software terminal that reads data, optionally formats it, and saves it to a file. Now that laptop has finally died the death of a thousand melted fans, and sadly is no more, at least until I can find a new cooling fan and CPU. I needed to test the Nixie Tube Power supply, but I didn't have any 12V wall plugs, so it was the perfect excuse to finally finish my ATX benchtop power supply so that my little desk top circuit lab could have a decently regulated 3. Microsoft Office 2007 Pro Hybrid Download on this page. 3V, 5V, and 12V source (not to mention Ground and a bonus -12V). I followed a tutorial from this great video (I am not affiliated with them at all, it's just an easy to follow guide), where he does a very thorough walkthrough on creating a nice bench top power supply out of an old ATX power supply. I used a red LED on mine to show that it had AC power connected, and a green LED to show that it was switched on and delivering power to the screw terminal.
I accidentally shorted out the first power supply that I attempted to do this to, because I forgot to connect the ground from the AC adapter back to the ground on the bottom of the power supply and I moved the top shell into contact with one of the heatsinks inside, shorting out the power supply and welding the top of the case to the heat sink. It wasn't worth saving so I trashed it and used a second old power supply I had laying around. I prototyped Illuminatrix on my printer Cupcake155.
Then I built the DeltaFlyer and recently got around to installing Illuminatrix. The original setup uses a full Arduino Diecimila.
It's physically big and I decided to reduce some stuff on my second round with it.Here it is in its second iteration:Here I'm using an Arduino Mini Pro instead of the full Diecimila. Controlling it is different since there's no FTDI and thus we have to use legitimate RS-232, but all I actually had to do was connect the Mini Pro's RXD pin to the Raspberry Pi's GPIO TXD pin. This course depended on first having actually flashed the Mini Pro with my Illuminatrix Arduino firmware.Since I build my printers around ATX PSUs, I have 5V and 12V rails handy and that helps a lot for Illuminatrix. As you can see above, 5V from the PSU goes right to my board. I run the 12V line to my Vcc of my LED strip and that's it for power (plus GNDs, obviously).I'm toying seriously with the idea of doing a PCB run to formalize this, I am very much not happy with wires hanging around, so I think there's a good chance I'll make this clean. In that event, I may order a bunch of extras and possibly make them available as kits. Please please drop me a line if that interests you, I wouldn't really be doing this to make money (I'm highly employed as it is).
I found this on the net, where someone started with a simple beaker and then also created the successor with a gastronorm container:(in german)The interesting bit is how he did the heating: immersed power resistors, rated for 5 W. Apparently he did some tests and came to the conclusion that even 30 W per immersed resistor is acceptable. Resistors are rated for a specific dissipation in air, but those numbers don't apply when the resistor is surrounded by a fluid with hugely different properties.However, supplying power to immersed resistors might be a problem. Using 230 V just doesn't feel right even if the Galden doesn't conduct current, because it's still a steel container (afraid of shorts.) and the cables would have to exit through the top where I'd be handling the PCBs.About 10 rows with 4 or 5 resistors each fit into the available space at the bottom. At, say, 10 W each that's a total power of 400 to 500 W.
This could be handled by a decent ATX power supply, or a 24 V PSU for less current. That's an attractive option epseciall with PWM, but with the drawback that I'd need enough Galden to cover the resistors.Power resistors aren't cheap if bought from digikey or mouser: about € 0,50 to 1,00 each.
That's a lot if you need 50 of them. Replacing one would also be tedious.Regarding heat transfer, immersed resistors might be very effective since they provide a relatively large surface and there's no extra heat loss from an external heater below the container.
OK, so I've start this project before submitting it. Best bring it up to date.Firstly I got myself a beefy heatsink (one that was supplied with an AMD Phenom2 I bought ages ago) that would fit into the enclosure and drilled and tapped 2 holes for 2x D1047 transistors (like 2n3055) and mounted them onto it with some thermal paste.Why accomodate 2? Well just in case I wanted more amps!I then built up the circuit I intended to use:Using another bench supply as a load and running my circuit off a separate 5V supply, it worked as I expected. However, 2 things were an issue:Using a 1R resistor: it was getting hotthe bench supply I was using for load could only do 2.2A - I needed a beefier supply - I managed to dump 60W though!The heatsink had a fan on it and I'd like to use it! The pass transistor was getting hot enough to not bear touch it (which is roughly 60 degC or so)In short I wanted MORE!SO i swapped the 1R out for a 0R1 resistor.This made things very sensitive!
For every 100mV on pot meant 1A through the Pass transistor. [update 1/15/2016] Periodically, I notice in my email that someone has 'liked' or 'skulled' this project. Awesome, but. Sadly, as mentioned in the last log update (more than half a year old, as of this intro), I pretty thoroughly killed this power supply through my own stupidity and haven't actually pulled the thing off the shelf since. I eBay'd a nifty old HP bench supply, and most of my stuff is USB powered, and. Well, I just haven't needed it since. Either way, if I were to do it all over again, I'd probably start from scratch instead of doing a conversion.In any case--if you're looking for a DIY power supply project, I suggest checking out @Stefan Lochbrunner's excellent list: pulling together pictures I took of the build process; the circuitry is super duper simple, so most of the tips I can offer are centered around hardware concerns (it's a bit of a tight fit).
Hopefully you can learn from my careless mistakes and build an even better cheap power supply.I'll probably mention this a few times, but safety is a concern with this project; switchmode power supplies operate directly on 120vac mains, and it's not always cut-and-dry where the circuit board is potentially dangerous. Worse, as compared to standard transformer-type supplies that operate on 60Hz AC, these units tend to have large capacitors on the high voltage side that can be lethal for days or weeks after the power supply is unplugged.
My supply has an insulating sheet under the board that I didn't remove; in fact, I never took the main board out at all, as all of the modifications were to the metal chassis or the low voltage wiring side. My supply had also been unpowered for over a year, so there likely wasn't much left in the caps. Even so, I treated the board as if it were a live high-voltage circuit.In other words: don't mess around with this stuff unless you know what you're doing.
Well, I finally got busy with the soldering iron again. This time, installing the regulators in the cluster nodes and in the 26-port switch.I had a puzzle as to where to put the regulator, I didn't want it exposed, as they're a static-sensitive device, so better to keep them enclosed.
It needed somewhere where the air would be flowing, and looking around, I found the perfect spot, just in behind the CPU heatsink. There's a small gap where the air will be flowing past to cool the CPU, and it's sufficiently near the ATX PSU to feed the power cabling past.I found I was able to tap M3 threads into the tops of the heatsinks and fix them to the 'front' of the case near where the DIN rail brackets fit in. So from the outside, it looks all neat and tidy.After installing those, I turned my attention to the switch. Now I had an educated guess that the switch would be stepping down from 12V, so being close to that was not so critical, however going above it would stretch the friendship.Rather than feeding it 13.1V like the compute nodes, I decided I'd find some alternate resistor values that'd be closer to 12V. Those wound up being R1=3.3k and R2=390, which gave about 11.8V. Close enough.
It was then a matter of polarity. The wiring inside this switch uses a non-standard colour code, and as I suspected, the conductors are just paralleled, it's the one feed of 12V.Probing with a multimeter revealed the pin pairs were shorted, and removing the PSU confirmed this.
I pulled out the switch mainboard and probed around the electrolytics which had their negative sides marked. Sure enough, it's the Australian Olympic team colours that give away the 0V side.I've shown the original colour code here as coloured dots, but essentially, green and yellow are the 0V side, and red and black are the +12V side.
So I had everything necessary. I grabbed a bit of scrap PCB, used the old PSU as a template for drilling out the holes, used a hacksaw to divide the PCB surface up then dead-bugged the rest. To position the heatsink, I drilled a 3mm hole in the bottom of the case and screwed a 10mm M3 stand-off there. Yes, this means there's an annoying lump on the bottom, I should use a countersunk M3 screw, I'll fix that later if it bothers me, I'll be rack-mounting it anyway.On the input to the regulator, I have a 330uF electrolytic capacitor and 100nF monolithic capacitor in parallel, on the output, it's a 470uF and a 100nF. A third 100nF hooks the adjust pin to 0V to reduce noise. I de-soldered the original PSUs socket and used that on the new board.
It fits beautiful. Not any more Linksys.So now, the whole lot runs off a single 12V battery supply. The remainder of this project is the charging of that battery and the software configuration of the cluster.At present, the whole cluster's doing an `emerge @system`, with distcc running, and drawing about 7.5A with the battery sitting at 12.74V (~95W). Edit: Now that they've properly fired up, I'm seeing a drain of 10.3A (126W). Looks that's going to be the 'worst case scenario'. I've punched the 'counter-bores' for the screws that will be used to hold the DVD plate onto the chassis. They didn't come out as well as I'd hoped, but they work.I left off last time with the punch set banging holes through the steel instead of forming it.
I enlarged the die hole and tapered and smoothed the punch, which helped. I could punch on a hole and it would simply enlarge the hole and flare it, but it wasn't tearing.I tried to punch without the hole, which was a lot harder to align. Every time it would BANG! And the metal would tear. I also tried annealing the steel by heating it red hot and letting it air cool, but it didn't make much of a difference.I drilled another die hole in the other end, shorter than the punch, with the thought of using it as a two step process. This made a big difference - the metal didn't tear on the first side, and only just tore once the die was flipped. However, trying to drill the screw hole in the middle was a pain.
I need a pillar drill.In the end I settled for punching on a hole, just using the short die. After a practice try, I ran it on the DVD mount and it produced four enlarged holes, counter-bored, with just enough metal at the bottom for a flange screw to hold.With the screws in place the DVD drive slides over no problem. Now I need to draw and cut the adapter plate.Also, I've ordered a PSU.
It's a 250 Watt flex-ATX, which is quite a bit smaller than standard ATX PSUs. (Kittan) Got the computer functional. We've got a vid card on order that'll handle screens 9-12 (so far the only out-of-pocket expense for the project) but I have a machine already running screens 1-8.
6 of them are touchscreens already hacked to work off 12VDC with the connectors we're going to use. I need to rebuild the other 6 - though really only 4 of them need, so I might leave it at that. Should be borrowing some tools tomorrow to make housing fabrication faster.
By the end of the week we'll be welding a frame to mount everything on. Every screen is going to get a custom box built for it, with its own crappy paint job and, potentially, actual bulletholes and fungus, to make it look more like what's in the film.(note the server PSU providing 12VDC for everything)The computer case was an old Gateway 2000 full tower I got off some guy for like $5 about six years ago. I think it came with a Pentium 2. The board in there now is an Intel LGA775 full-ATX board I bought last summer for a project that's since been retired; it has three long-slot PCIe and two PCI.
Currently running a Core2Duo 2.13GHz, 1GB RAM. GPUs are ATI FirePro 2450 (purchased 2 years ago for a multiscreen workbench, which was recently upgraded to an EyeFinity 6 card instead), which support 4 monitors per card natively; I didn't have full-height brackets for any of them so I had to make some by cutting and drilling out some blanks.(Behold the Not-So-Greatway 2000)The tower got a new paint job, a grey base with dusting of black and brown rattlecan to make it look crappy - glad to have a banana box full of spraypaint, mostly acquired for some movie props about three years ago. Had to do some cutwork as well, to mount up the power supply I wanted to use. The Intel board requires the 8-pin CPU power connector, which I'd already melted on that supply, so I sorta had to rebuild that too. OK, so these are my first uninformed baby-steps towards realizing my overly ambitious world-dominating bench/lab power supply, but i am old enough to handle people laughing at me or calling me an idiot, so this will not be a tested and verified recipe for how to build a power supply, but rather document my progress or failures through my learning process and perhaps someone can at least learn how not to do (I will make sure to add a section in my last will and testament requesting someone to post a warning here if this ends up causing my early demise). Premise: Safety first - while building and when using.ATX PSUs are made for ATX cases, use it!Minimize reinvention, if there is a part that is ready to buy, buy it and use it!Push the boundaries of my knowledge to expand them, don’t step over them!!!Avoid unnecessary investment where possibleUse low-cost sources (Aliexpress/Banggood/ebay)If possible, re-use my beautiful analog Conar Instruments gauge (mostly for style points). This project was inspired by the device made by The Big One willing to build a reasonably good power supply for a hobby kind of projects.
My power supply shall provide 2 variable voltage outputs (-12V.0, 0.+12V) under current control. In personal practice I rarely need currents over 1A, while negative voltage is just a good option to have. Most of my projects could be satisfied from fixed +3.3V and +5V low current sources, but sometimes is worth to see how my HW design would work under variation of power. Started from pure functional needs this project gradually spins off to a kind of incremental design work where each step was driven by previous. OverviewMajority of hobby like projects can be sourced from simple power regulator chips like 7805 or 7117 which are working well enough. A higher power can be taken from popular ATX suppliers under some limitations.
Looking on the design of The Big One I was love to repeat it but considering my needs decided to limit it to 2 channels of -12 and +12V in a solid design (single board). Having some of things I adopted design to my existing stuff as a true hacker. In such a way the design was mainly resource based targeting to build a good power supply reusing what I had.Plan to put more details on the project soon. The PC market is largely dominated by two main categories: (1) Large desktop towers offering wide spectrum of options and upgrade capability, and (2) laptops offering portability in exchange for limited options and upgrade capability.
The laptop market has seen a great deal of innovation in form factors. From super thin-and-light convertible tablets to heavyweight expensive 'Gamer Laptops.' The latter pushes the limits of laptop form factor towards the desktop segment.
In contrast, the PC desktop market has not seen a similar level of innovation. The only significant deviation from the standard tower are the all-in-one PCs ('iMac clones') sharing many of the same limitation as laptops. In general there's been far less pushing the limits of desktop machines towards portability.
The 'Luggable PC' project ventures into this under-explored space, to design a portable chassis which accepts commodity desktop PC components.The key features over commercially available all-in-one desktop PCs are:Accepts standard ATX motherboard: Enough space for a full ATX motherboard ensures the widest choice of options. Note that while it is a goal for the full sized motherboard to fit, it is not a goal to ensure all expansion slots are usable. I use ATX power supplies on my printers. I do so because they're readily available and have gone through a relatively large amount of safety scrutiny for home-use (especially considering I only buy high-quality PSUs). Also I really like having a high-quality 5V source around as I use for things.The rocker switch I use for the Delta Flyer has just hung aimlessly until now. Today I CADed-up a model for a casing for it and installed it. It looks absolutely excellent.
Before After The Episode V photo album is here. Yesterday, i received white led strips from china. I thus now have quite a lot of LED, enabling me to rethink the lighting of the aquarium.
As of now, i was using fluorescent bulbs for one aquarium, another kind of home appliance for the second one, and traditional neon tubes for the third.I ordered two kind of led strips:andare 5630 LED, known to be quite efficient, with aproximately 25-50 lumen per LED.According to the specifications, we have 60 led per meter, and aproximately 9W per meter. Specs claim 40-55 lumen per led, i'll be conservative and consider those to have 30-40.
Indeed, it will be easier to stop using some LED if i have too much light than adding more LED in my design.Both LED strips are meant to be used in 12V, and i have 2 reels of 5m of each (i probably won't use that much, but it was cheap, free shipping, so i got extra that i can use for other things. And i have spare, just in case, so that i don't have to wait 2 months!).I will be using a FSP180-50LE 180W flex atx PSU to power everything. It is very compact (40*80*150mm), and can provide 3.3V, 5V and 12V, with up to 14 amps there. That should be enough to power my LED, and why not, TEC modules to cool the water! I will use the 5V and 3.3V for the electronics, and thus have a reliable power source, rather than using unregulated wall warts.Those LED are not addressable, but i can cut the strips up to any length. If i consider my shrimp aquarium, i will cut smaller sections of 50cm. Each section,should thus use 4.5W, with 30 led per section giving 900 to 1200 lumen.
As of now, this aquarium has 3 fluorescent bulbs, each providing 700-900 lumen. I will thus probably use 3 to 5 sections of LED, and use a transistor to control each, so that i can modulate the light intensity. I'll see if i can use PWM to dim the LED.Compared to my previous solution, i'll end up with a slimmer light ramp, use less power 10-15W total for the same light output, not have to worry about changing the bulbs often, no need for mains current there, and gain the ability to easily modulate the light intensity.
The light will also be well distributed, and since the LED are directional, all the luminous is oriented towards the water. Those LED don't have the best CRI (Color Restitution Index), with 80%, but neither did my previous solution (even lower than 80%). I can anyway compensate with more light if a color is a bit weak for my plants.See you next! Happy new year everybody!Before and after excessively celebrating a new, awesome year with the people of the Attraktor Makerspace, I had time to setup a small testing rig for more thorough testing of the heated beds. @Alex Rich suggested recording a temperature graph to show the performance in comparison to the regular MK2 heated bed, which will be covered in this log, however, this is not meant as a competition.
The LED Christmas lights I purchased operated using 3 AA cells, so you could place them safely anywhere without access to an electrical outlet. The battery box has a second, small, compartment that houses the control board that has a switch coming out the side. There are four positions for the switch: off, solid on, blinking, and a pulsing fade in and out. The first thing I did was test that I could power the lights with 3.3V, since that's what I'd get off the Raspberry PI's GPIO pins. I simply connected the +/- terminals of the battery box to a hacked ATX power supply from a dead computer that I use for testing such things. (An ATX PSU has 3.3V, 5V, 12V and -12V outputs.) 3.3V illuminated the set of lights just fine, but they were a bit more dim than when using 4.5 V from cells. However I wasn't too worried about it.Once it was determined that I could power the lights, I opened up the battery box, removed the control board, and desoldered it from the battery terminals.
I then soldered on some longer lead wires, using black for neutral and red for power. I connected these directly to the Raspberry Pi GPIO pins.
This may not be the safest thing to do when it comes to the preserving the longevity of the Raspberry Pi. After all, who knows what poor quality electronics were used to fabricate $3 Christmas lights? On the other hand, that's sort of the point of Raspberry Pi, isn't it? It's a $35 computer so if I wreck one or two during the learning process, then my mortgage isn't going to be affected.
The system has been running for many months now, so I'm going to say that I lucked out here. Some quick use of the 'gpio utility' that comes with the Wiring Pi library allowed me to test that the hardware modifications were working well with the Raspberry Pi's GPIO pins.Speaking of Wiring Pi.
At this point I had already downloaded and built Gordon's great little library and gpio utility. It's very easy to setup and install.
There are great instructions on the author's website. (See the link on the project page.)One 'feature' of my Christmas lights was that they automatically turned off after 5 or 6 hours to save battery life. Rather than make my own control board to replace the one it came with, I decided to fix this with software. I already had cron setup to check for updates on my computer every couple of hours. This script writes a small, hidden, text file to my home directory when I have a software update available. The last line of my.bashrc just cat's the content of this file every time I log into the Pi so I know how many packages are available. My plan was to update this script to turn on the lights when there was a software update.
Since I'll be checking for updates every couple of hours, all I have to do is toggle the Christmas lights off and on if there's an update to make sure that I'm not affected by the 5 hour auto shut-off written into the micro controller on the LED driver board. I used the Wiring Pi library to write a small app called 'lights' that I install into /usr/local/bin and I gave my account sudo permissions to execute this program without a password. 'lights on' turns on the lights and 'light off' turns off the lights. Gordon's library makes it easy.
It's in this little app that I toggle the GPIO pins off and on to make sure that the LEDs stay lit.That's all the hard parts in place. My CheckUpdates.sh bash script is a utility that I keep maintaining for myself. It's not too complex if you know bash. Except for the syntax of the 'test' command (the [square brackets] used for 'if' conditions), bash reads pretty easy.
I use some arguments to 'apt-get dist-upgrade' combined with grep to compute a list of packages that need to be updated. Then I use the wc command to count how many package updates there are.
Most of the script is just formatting output nicely.I set up a crontab to execute my script to check for updates periodically. There's an example with my code. That's about it.One more little detail.
Since I saved the original driver board from the LEDs, I also saved the switch that was soldered onto it. My work desk is actually in the guest bedroom. If we have overnight guests staying with us, they may be annoyed by glowing lights illuminating the room all night. So I mounted the LED driver board to the underside of my desk with the switch just within reach on the left side. This way I can use the hard switch to make sure that the lights will remain off. I can also use the switch to select between solid, blinking, and fading in and out illumination, but I usually just keep it on the fade setting.
So in the last test, I tried setting up the nodes with the ATTiny24A power controller attempting to keep the battery between 11.8 and 13.8V.This worked moreover it worked without any smoke signals being emitted.The trouble was that the voltage on the battery shot up far faster than I was anticipating. During a charge, as much as 15.5V is seen across the battery terminals, and the controller was doing exactly as programmed in this instance, it was shutting down power the moment it saw the high voltage set-point exceeded.This took all of about 2 seconds. Adding a timeout helped, but it still cycled on-off-on-off over a period of 10 seconds or so. Waay too fast.So I'm back to making the nodes more tolerant of high voltages.The MIC29712s are able to tolerate up to 16V being applied with peaks at 20V, no problem there, and they can push 7.5A continuous, 15A peak. I also have them heatsinked, and the nodes so far chew a maximum of 3A.I had set them up to regulate down to approximately 13.5V using a series pair of 2.7k and 560ohm resistors for R1, and a 330ohm for R2. Those values were chosen as I had them on hand 5% tolerance ¼W carbon film resistors.
Probably not the best choice I wasn't happy about having two in series, and in hindsight, I should have considered the possibility of value swing due to temperature.Thinking over the problem over the last week or so the problem seemed to lay in this set point: I was too close to the upper bound, and so the regulator was likely to overshoot it. I needed to knock it back a peg. Turns out, there were better options for my resistor selections without resorting to a trim pot.Normally I stick to the E12 range, which I'm more likely to have laying around. The E12 series goes 2.7, 3.3, 3.9, 4.7, 5.6 so the closest I could get was by combining resistors.
The E24 range includes values like 3.0 and 3.6.Choosing R1=3.6k and R2=390 gives Vout ~= 12.7V. Jaycar sell 1% tolerance packs of 8 resistors at 55c each.
While I was there today, I also picked up some 10ohm 10W wire wound resistors before unleashing this on an unsuspecting AU$1200 computer, I'd try it out with a dummy load made with four of these resistors in parallel making a load that would consume about 5A for testing.Using a variable voltage power supply, I found that the voltage could hit 12.7V but no higher and was at worst.7V below the input. Good enough.At 16V, the regulator would be dropping 3.3V, passing a worst case 3A current for a power dissipation of 9W out of the total 48W consumption. About 80% efficiency.Not quite what I had hoped for but this is a worst case scenario, with the nodes going flat chat and the battery charger pumping all the electrons it can. The lead acid battery has a nominal voltage of 13.8V meaning we're dropping 1.1V.On a related note, I also overlooked this little paragraph in the motherboard handbook:(*Do not use the 4-pin DC power @J1 when the 24-pin ATX Power @JPW1 is connected to the power supply. Do not plug in both J1 and JPW1 at the same time.)Yep, guess what I've done.
Being used to motherboards that provide both and needed both, I plugged them both in.No damage done as all nodes work fine (or they did last time I tried them yet to fire them up since this last bit of surgery). It is possible there is no isolation between the on-motherboard PSU and the external ATX one and that if you did plug in power from two differing sources, you could get problems.In a way if I had spotted this feature before, I could have done without those little PSUs after all, just needing a Molex-style power adaptor cable to plug into the motherboard.Still this works, so I'm not changing it. I have removed that extra connection though, and they've been disconnected from the PSUs so they won't cause confusion in future.I might give this a try when things cool down a bit BoM still reports it being about 32°C outside (I have a feeling where I live is a few degrees hotter than that) and so I don't feel energetic enough to drag my cluster out to the workbench just now. (Edit: okay, I knowthose in NSW are facing far worse.
Maybe one of the mob in New Holland should follow the advice of Crowded House and take the weather with them over here to the east coast! Not all of it of course, enough to cool us off and reduce their flood.).
PARTS FOR THIS PROJECTThe parts needed are available from any supplier, but I prefer Sparkfun and Futurlec electronic supplier. The list is as follow:Six (6 units:3 columns,2 rows for 96x64 resolution) RGB LED Panel - 32x32One Teensy 3.1/3.2 (the computer) One WiFi Module ESP8266One Power Supply (30A). You can recycle any PC Power Supply.
I used one from an old IBM Netvista DesktopScreen Frame made of aluminium profiles. This can be obtained locally easily.One PCB/stripboard with LED BOARD designLM1117T-3.3 - LM1117T 3.3V 0.8A Low-Dropout Positive RegulatorHEADS20 - 20 Pin.100' Straight Male Single HeadersTwo 1/4 W 4.7 K resistorsOne 10 uF CapacitorOne 1000 uF CapacitorSoldering Iron andSolder Leaded - 100-gram Spool. Well, figured I'd document this project here in case anyone was interested in doing this for personal amusement or for their workplace.The list I've just chucked up is not a complete list, nor is it a prescribed list of exactly what's needed, but rather is what I've either acquired, or will acquire.The basic architecture is as follows:The cluster is built up on discrete nodes which are based around a very similar hardware stack and are tweaked for their function.Persistent data storage is handled by the storage nodes using the Ceph object storage system. New board, 9000 lines of software, resistive load, drill-press frame.I managed to pick up a bug which slowed me down a little this week.
Just wrote software and did a few minor tasks.Someone at my space works for Linear Technologies (!), and knows LTSpice (!), and is an electronics designer, and has agreed to help me simulate the driver board and adjust it for clean output (!!!). When he comes back from vacation, in about 2 weeks. Woot!Sorry for the haphazard placement of images and text. I'm finding that it is nigh impossible to predict what the Hackaday.io system will show after something is published. It's not WYSIWYG - things change after posting.I made a 'soldered' version of the control board. I'm hoping everything fits in a 4'x4' area, so that an ATX PSU case can be the project enclosure. Note: socketed Nano can be removed and used for other projects.
Update 1-16-17: It's NOT Friggin' Diodes! AND I FOUND A USE!---------------------Update 1-15-17: FRIGGIN DIODES! (see the bottom)Update II, vague recollection of BJTs used instead of diodes for reverse-polarity-protection.
Notes and excessive ramblings at the end.Update 1-2-17: Found some discussion about misuse of transistors, similar to what I experienced, here. Notes and ramblings and no conclusions added to the bottom.--------------------In the interest of making this blasted thing even more robust, yahknow, by being in-spec, rather'n just 'it works' and moving on. And, since I was already modifying the circuit to lower the pull-down resistor (see last log), and add a Power LED.I decided to add a transistor to the output of the Flip-Flop.
Thus, the connection to the /PWR_ON signal would be open-collector, and capable of sinking more current, if necessary (e.g. On another Power Supply, should this one go flakey).Simple!FlipFlop Output C.----->/PWR_ON Buffer / Input v / -- >---/ / / --- NPN B v E v GND The /PWR_ON signal powers up the system when grounded, and the system is OFF when that pin is floating/unconnected.
So, obviously, it must have a pull-up resistor somewhere in the circuit (if necessary).--------I powered it up (works great! Finally!)But the stupid LED wasn't lighting. Alright, musta reversed it.
Swapped the polarity, and sure 'nough, it's lit. Excellent!No, wait. The fan's not spinning. Push the button and the LED goes off but the Fan starts up.WTF?The LED is connected to the Q (non-inverted) output of the FlipFlop, anode tied high through a resistor (since TTL has much greater drive-strength when driving low).
The /Q output drives the transistor when high. (Note To Self: drive-strength??? HFE measured at 220. Is that better than just driving low from the TTL output?
IOH system.So. What's wrong now.?Ultimately. Turns out I grabbed a PNP by mistake.But now I'm *really* confused.
How the heck can this thing work at all?!FlipFlop Output C.----->PWR_ON Buffer / Input v / -- >---/ / / --- !!!!PNP!!!! (A) B ^ E v GND VBE will never be forward-biased!-----------------Measurements (between point and GND):SYSTEM OFF: VA = 3.9V VB = (not measured) VC = 4.5V (VE = 0.0V)SYSTEM ON: VA = 0.1V VB = 0.2V VC = 0.8V (VE = 0.0V)--------------Alright, so, have we established, yet, that I'm certainly no BJT expert? This was mentioned in the last log, as well as a few logs on other projects (e.g. The Transistor-based RS-232 inverter, which wound up acting as an amplifier).But, here I think I can see something that *sort of* makes sense.Note the voltage difference when ON: VC - VB (VBC) = 0.6V. A transistor-bias voltage, if I've ever seen one. Except, VBC, not VBE.And, similarly, when OFF: VC - VA = 4.5-3.9 = 0.6V. (Imagining not much drop across that resistor, since there's little current flowing between the Emitter and Collector.But.
OK, I'm pretty sure I've read somewhere that swapping E for C will still function, but at a *really low* hFE. So I plug one in the ol' transistor-meter backwards, and sure-enough hFE = 2 (when forward, hFE=220).---------But, I can't let this go. This just doesn't seem right to me.
If you can turn on a transistor with VBC, then how come all those open-collector circuits don't turn themselves on.? 9V ^ light-bulb, ->( ) solenoid, etc. 5V Buffer C Output / v / -- >---/ / / --- NPN B v E v GND VBC is always greater than 0.6V, in this case. OK, so it's not the *voltage* that turns it on, but the *current*, right?
But, we've already seen that current through VBC can turn on the transistor. Right?So then, I guess, in this circuit IBE may be lower than IBC. And with hFE, it. In this case, VBC is ( ) solenoid, etc. 5V Buffer C Output / v / -- >---/ / / --- NPN B v E v GND Ah, right, so. When the buffer outputs 5V, BOTH VBE and VBC are forward-biased, the switch turns on. When the buffer outputs 0V, I guess we rely on the hFE to determine how 'off' the transistor will be. VBC is reverse-biased, it'll inherently be off.Man, once these things seemed so intuitive to me.Lesson repeatedly-learned the hard way: Transistors Are NOT Switches.
They're more like Teeter-Totters.------------And. This is just another in the *LONG* list of things that should've been easy that have turned into *huge* ordeals prepping for *this* project, which *still* hasn't even started.----------Found an interesting discussion kinda touching on my PNP-resistor experience.some really weird linking-system making it impossible to show the image here without my re-uploading it.
Weee: (not my work):Except, actually, this one's a lot more obvious to me. In fact, it's pretty much normal BJT-biasing. In fact, it's not at all similar to my circuit, now that I look further. (VCE is reverse-biased, VBE is forward-biased like a regular-ol' BJT circuit). Though it's interesting, nonetheless.Again, what I had was:: 5V: ^: : /: PRESUMED 7400-series *TTL*: / FlipFlop: Output + C.->:>-+-- >--- Buffer 0.6V /: Gate(?) v - /.. -- >---/ / / --- !!!!PNP!!!! (A) B ^ +: + E: 0.2V 0.1V: REVERSED v -: - GNDMeasurements (between point and GND):SYSTEM OFF: VA = 3.9V, VB = (not measured), VC = 4.5V, (VE = 0.0V)SYSTEM ON: VA = 0.1V, VB = 0.2V, VC = 0.8V, (VE = 0.0V)So, when on, this is acting as a non-inverting *buffer* rather than the typical *inverter* I'd've experienced if this were the NPN I intended.And, when on, I'm getting: VBE = 0.1V (NOT enough to turn on the diode, nevermind being *reverse* biased for a PNP)VBC = -0.6V (a diode-drop.
Also properly-biased for a PNP)And. Random-observation: *exactly* the output-voltage a regular ol' TTL considers VIL-Max. Some discussion I read, either at that link, or another it linked, suggests that TTL actually used this design(?). So, plausibly, if I hadn't done this with a regular ol' TTL 7400-series chip, and instead used CMOS or something of this era, this wouldn'ta worked, since the drive-strength and voltage of the output, when high, would probably be enough to assure even VBC would be zero, rather'n forward-biased. Unless, somehow.
Nah, plausibly even 'weirder' than that. If the output driving the base is *only* tied-high (when high), then no current could flow, the transistor would never turn on. Huh.See, Q3 and Q4 can both be on simultaneously, depending on the load. But in the MOSFET case.? Hmmmm.So many oddities!---------------------------------It's finally come back to me: Somewhere 'round this site, a year+ish ago, somehow it came up to use a BJT instead of a diode to protect a circuit from reverse-polarity.V+ ---..----->Circuit V+ / C v E ------- B / GND ------+-------->Circuit GND(From Memory)Yep. That's with the emitter connected to the LOAD, and V+ connected to the collector.This guy turns on when VBC (not VBE) is forward-biased. As I recall, the purpose is that VEC is typically *smaller* than VCE.
And an experiment here states the same. (Something like 1/4!)Unlike my circuit, VBE will *also* be forward-biased in both of these circuits, but less-so than a full diode-drop.So, I've still no idea what this thing I've run into could be useful for.
I had *an* idea, then started realizing all the inherent oddities I keep running into with various circuit elements' not working the way I'm used to. So, one idea is similar to the reverse-polarity protection, except with an NPN instead of PNP.12V -----. / B ------- / / v 5V ----' '----->Circuit 5V GND --------------->Circuit GNDA bit ridiculous, because it requires your 12V to be correctly-polarized. But, maybe, it could be used with/as e.g. A power-switch for some ridiculous reason.BEWARE: I found out the hard-way. This will *NOT* work if you use a linear voltage-regulator to output that 5V (maybe from the 12V rail?).Why.?
Because, at the fundamental-level, of the same friggin' principle that got me into this mess in the first place, I think. Linear voltage-regulators are designed to *source* current, not to *sink* it, so, when the load's too small, this circuit would pull the 5V 'regulated' output up to around 12V. HAHAHA.A more obvious alternative is to do the same reverse-polarity circuit as earlier, except with an NPN on ground. But, yahknow, switching ground isn't such a great idea.And, again, don't forget that hFE is something like 2 (not 200) when turning on with VBC, so. If the circuit uses 1A, does that mean this thing would require 0.5A into the base?
But, then, maybe that's irrelevent, because, again, once the circuit turns on, *both* VBC and VBE will be forward-biased. No, wait, forward-biased, but VBE's not going to reach the diode voltage-drop, so not *on*, right? LOL this is ridiculous.VBC will be, say, 0.6V, then VBE will be 0.595V! Does that mean *both* sides are active, and hFE is something like the average of 200 (C->E) and 5 (E->C)?This is *SO WEIRD*. 'Spose I should just dig out the ol' text-book and refresh myself. But apparently I'm in a rambling mood.----------Anyways, it's not so much that I want to find *a use* for this thing (though that's always nice), but that I'm almost certain there must be somewhat common cases where this situation is actually an oft-neglected side-effect. Just can't seem to think of one.----------UPDATE: DIODES:Hah, I have no idea how I didn't see it before.
The circuit's basically nothing more than diodes. (Oh, and I came up with a groovy AND gate from 'em. Over at #Random Ridiculosities and Experiments: it's *slightly* better than using diodes. Since I measured the reverse-hFE as 2. I can’t claim originality here. As I remember the XENON machine at a past TPF which had NIXIE tubes instead of the standard VFD displays. I always thought they were cool.
Now that I’m designing Star Trek: The Mirror Universe; I’m thinking that I want to put NIXIE displays in the machine instead of stock Bally displays. I’ve been doing some design work; and have come up with the following schematics which use the IN-12A tubes from Russia. They are nearly the same digit height as a stock display and are relatively inexpensive compared to other tubes. Just put the finishing touches on the silk screen for the Base board for the Nixie display. Here’s a image of the boards as they stand today. Base Board: Display Board:New features added: 1) The “Right angle” Display board has surface mount LEDs under the tubes; the idea here is that when the display is “active” meaning PlayerX is up. The switched LAMP driver on the side of the display turns on these LEDs causing them to backlight the display.
To help identify which player is active. A Brightness POT on the baseboard controls the brightness. Opto-Isolated the “lamp” input from +5V logic. 2) I added decode logic to support 7digit display ROM hacks:Update 6 Digit Bally pinballs to 7 digit where buy D5 =1= D6 causes the 7th digit to become active. U3 & U4 provide this functionality. Feature is jumper selectable to for native 7digit or Rom-Hack 7digit mode via JP1. 3) Clearly labeled Test Points with voltages.
Added 80V test point. 4) Additional decoupling caps near U1,U2,U3 and well as a bulk cap for 5V.
5) Nixie tube display board is at a “right angle” to the base board (like original); but is back set far enough so “front” of IN-12A displays are near same position as the VFD display. 6) HV areas “inside” dotted lines.
Generous ground planes to help with thermals. 7) Same PCB sizes as original.
The Schematics are posted here for review. I’ve never designed a display before.
So will probably need to do some design tweaks once I get the Tubes in.At this time; the design remains my copy-protected property! Once I've proven the design; I'll consider open-sourcing the design for others to build.
I went 7digits instead of 6. So they can be used in other machines. I’ll either de-pop NIXIE_A7 or figure out how to make my Bally FW run a 7digit display.3/23/2013: I hand assembled the base and display boards and soldered them together.
I didn't want to commit the untested display to my Bally Star Trek. So I needed to figure out how to facilitate debug. First problem was how to supply 190VDC to the HV section. Some googling found me some 555 timer circuits which would run off of a 9V. Had most of the parts except a 250V 4.7uf cap and a pot. A trip to Frys solved that problem.
A bread board and an ATX power supply and I had a 190V psu. The ATX supply provides +5v to the display and +12V to the 190V psu's input. Here’s a picture of the prototype 555 190V Nixie supply: Initial debug turned up a dumb assembly mistake.– I swapped U1 & U2 despite the clear labels on the silkscreen. I hardwired the display inputs to only lite digit 1 and display an 8 (1000b).
8 because it's the digit which uses the most current given the largest area. This will allow me to verify the anode current before committing to a final anode resistor. To 'latch' the 8 digit; I used my RatShack Logic pulser to toggle the LE pin.
I was able to empirically calculate the Anode resistor using the built-in test point and pot. Now I just need to find some 22k 603 resistors to make it work. 21.4k gives me 2.5mA of anode current which is typical for the NH-12A tubes I’m using. Here’s the top view of the display boards:And the money shot for the backlite display: I decided early on that I wanted the backlite to be purple rather than some other color because I thought it’d contrast nicely against the orange digits. You can see the testpoint and Anode pot right below the Nixie tube. Obviously; these will be de-poped for “production” boards.
Here’s a picture I just thought was cool. A result of playing with camera shutter times: With the resistor calculated; I need to focus on creating a Display tester so I can run the display thru all the digits and functions.4/9/2013: More debug this wkend seems to point to the 4555 1to4 decoder circuit. I pulled the tristate buffer (u4) and solder bridged the outputs of the 1to4 decode straight to the transistors thru a 9.1k resistor. The display does the same thing without U4. This points to U3 (cd4555) being the culprit.
Now; given I’ve already verified 7 digit emulation with the arduino which doesn’t work in the machine; seems to be a clue. I’m leaning toward the output of the MPU being TTL compatible; but not CMOS compatible. I don’t think the signal to the displays is meeting CMOS high requirements for digits 5&6. According to my mpu schematics; the digit enables are driven directly by the output of a 6821 PIA.
So; next step is going to be to wire in an oscope to see what D5’s levels are. Then figure out how to solve if hypothesis proven. This pretty much sums it up:PeakToPeak; my displays (digit enables) are only getting 1.6V for a high. Well below the cmos “good” for a 1.
This is measured at R44 and R43 closest to the connector on stock displays. This is the reason why my Nixie design isn’t working. I can design around this with either a transistor or some other translation logic; just not sure why the value is so low. I see why it works on stock displays as all we need is for the high to be >~0.7V to turn on the digit enable transistors in the original design. Just need to confirm with other pins / people that they see similar results. I only have the one Bally Star Trek; no other era pins.
By confirming other pins; we can determine if this is a design change is warranted.4/11/2013: I did some 'dead bug' rework to the existing display; basically epoxing two SMT 2N3904s to the top side of U3. I cut some traces and soldered a 20K ohm pull up between VCC and the collector of the transistors. Emitters were tied to ground. Bases were connected to the series resistors currently present in the schematic.The goal here is to work out the kinks in the design so they can be incorporated into a FAB B board and be relatively confident the design will work out of the box. Because the BJTs are single transistor inverters; I needed to rewire the input to U3. I wanted to reuse the existing CD4555B chip already present to keep the design similar. Turns out that by swapping A & B inputs vs the schematic; the following Boolean logic become obvious: U3A Q1 =!B*A = D5 U3A Q2 = B*!A = D6 U3A Q0 =!B*!A = D7 Remember that when the MPU is driving A5 or A6 high; the BJTs invert that to be an active low.
So the boolean math makes it logical. The result (finally):Click here for YouTube movie Here are some pictures of the display installed in my Bally Star Trek machine: Known issues: Digits are too light when running in multiplexed mode (in a real machine); plan to drop the anode resistor to ~2.7k from 22k to brighten the digits.
Not a good idea for non-pinball machines which aren't multiplexing the digit enables; but should be fine for more machines. Need to 'fix' the native 7 vs emulated 7 digit jumper selector given the need to invert D7 in native mode.5/15/2013: I’ve completed assembly of FAB B of the NIXIE tube displays. The emulation and 7 digit native modes work as designed. I’ve posted a youtube video with it installed in the backglass.Obviously; the 7digit modes do not work “ideally” with a machine designed for 6digits. I may spend some time in the future to make a 6 digit “right angle” board if there is enough interest. Need to confirm in a 7digit machine that it works properly.
I already have a volunteer. Next step is to write a blog post with schematics and pictures. Need to send the boards out for Black PCB fabbing. Boards are available ODrive v3.3 boards are available at the ODrive Shop. : With the Laser Cut Inserts finshed it was time to work over thanksgiving weekend; I worked extensively on the PF.
I started by spraying backside of the PF with grey primer. Unsure why the older Bally PF had the grey paint on the backside. But I figured when in Rome; do as the romans do. Once the grey primer was dry; Sprayed the inside of the insert holes white; partly due to the Romans. Partly due to the desire to have a clean looking insert. Here's the back of the PF trimmed up and sprayed.With the white dry; I began gluing in the inserts. Hack Smurf Village Android 2014.
Once I had the inserts glued inplace and dry; I took a 80 grit orbital sander to the whole PF to level the inserts and remove the white primer. Here's the PF at 80 grit:And again at 220grit:Then I proceeded to sand the inserts to 500 and 800 grit. At this point I considered the PF ready for ClearCoat. For this I used ChromaClear 2part 4:1 automotive clear. I put down one light coat and 3 medium coats.
Heres the PF after clearcoat:I let the clearcoat cure for a little over 24 hours; then sanded it flat with 220grit orbital sander to remove the orange peel and give the inserts another flat process. The PF/inserts needs to be flat so the sign shop can print the insert circles and artwork without any gaps in the art.
Here's the PF being back lit by shop lights:On Friday afternoon; I took the PF and artwork files to Austin Color Labs so they can put the artwork directly on the PF. I hope to hear from them by end of week with a printed PF. When the PF gets back from the printers; my plan it to put 4-6 coats of clear coat over the art then sand flat and polish to a shine. While I wait for the PF; I'll try to clear coat the decaled apron inserts. If we get a warm day in the near future. In the meantime I have PCBs to assemble; including the ATX PSU board.: Got the Playfield back from the great people at Austin Color Labs. Remember; this was direct printed onto the Playfield:Honestly; The PF looks awesome except they made an error and sprayed most of the PF white before laying down the color.
I supplied the 'white' file. But not sure what happened. The inserts are fine; just the shooter was suppose to be bare wood. They said if I wanted; I could sand it back down and they'd redo it.
I think I'll just leave it as-is; I could nickpick the bare wood issue; but Its bright and growing one me. Also something's up with the red special insert (over planet). Somehow the paint didn't seem to work right over that insert. May try to use a water slide decal to 'fix' it.: Been working on the Playfield over the holiday break. Not making as much progress as I'd like.
But here's some. First; I needed to tackle the Special insert. Basically; something went wrong at the printer and it didn't come out right:I took the graphic file back into Photoshop and trimmed a new copy up for printing on some white water slide decal paper. Some patience and water yields this corrected implementation:Much better. Some black sharpie on the trimmed edges and a couple coats of acylic clear and that area is ready for the 2part automotive clear coat. 1/5/2014: Lots happening behind the curtains.
But thought I'd take a break to update the worklog. ClearCoat is on the Playfield I put about 6 coats of clearcoat on the surface to ensure I didn't blow thru the clearcoat and destroy the art underneath. I waited about 24 hours before beginning the process of re-leveling the surface. You'll note that I still had some 'orange peel' problems with the clear coat. I needed to remove the orange peel so I started by sanding with 220 grit orbital sander:Then the hand sanding began with 320:wet sand 500:NOTE: I wouldn't recommend wet sanding a traditional PF. I've had issues with the plywood swelling under the clearcoat. In this case; I used a spray bottle to wet the surface and then used the wet/dry sandpaper. I did this because the clearcoat under the art and the white under the art did an excellent job of sealing the wood around the cnced holes.
The sprayed water just beaded on the surface. Wet sand 800:At this point; with this era of machine. I might have stopped here for a 'matte' finish; but this is 'The Mirror Universe'.
So maybe I should put a mirror shine on it. Wet sand 1000 followed by 1500: Closer. But that still won't do. I'd done quite a bit of sanding. All within 24hrs of laying the final coats of clear; so I decided to wait another 24hrs for the 'time to decal' interval on the paint can.1/5/2014: So I waited at least a day; but in reality.
I think other aspects of the project got in the way; so yesterday I got back to addressing the playfield shine - or lack there of. I chucked a buffing cloth into the cordless drill and proceeded to use rubbing compound on the clear coat: Then polishing compound: And two sessions of Carnauba Wax: Yeap; I think we'll call that a near mirror shine. So, as promised, the re-design of the charge controller. Now under the the influence of a few glasses of wine, so this should be interesting As I mentioned in my last post, it was clear that the old logic just wasn't playing nice with this controller, and that using this controller to maintain the voltage to the nodes below 13.6V was unrealistic. The absolute limits I have to work with are 16V and 11.8V. The 11.8V comes from the combination of regulator voltage drop and ATX PSU power range limits: they don't operate below about 10.8V, if you add 700mV, you get 11.5V you want to allow yourself some head room. Plus, cycling the battery that deep does it no good.
As for the 16V limit this is again a limitation of the LDOs, they don't operate above 16V. In any case, at 16V, the poor LDOs are dropping over 3V, and if the node is running flat chat, that equates to 15W of power dissipation in the LDO. Again, we want some headroom here. The Xantrex charger likes pumping ~15.4V in at flat chat, so let's go 15.7V as our peak.
Those are our 'extreme' ranges. At the lower end, we can't disconnect the nodes, but something should be visible from the system firmware on the cluster nodes themselves, and we can thus do some proactive load shedding, hibernating virtual instances and preparing nodes for a blackout. Maybe I can add a small 10Mbps Ethernet module to an AVR that can wake the nodes using WOL packets or IPMI requests.
Perhaps we shut down two nodes, since the Ceph cluster will need 2/3 up, and we need at least one compute node. At the high end, the controller has the ability to disconnect the charger. So that's worked out. Now, we really don't want the battery getting that critically low.
Thus the time to bring the charger in will be some voltage above the 11.8V minimum. Maybe about 12V perhaps a little higher.
We want it at a point that when there's a high load, there's time to react before we hit the critical limit. The charger needs to choose a charging source, switch that on, then wait after a period check the voltage and see if the situation has improved. If there's no improvement, then we switch sources and wait a bit longer.
Wash, rinse, repeat. When the battery ceases to increase in voltage, we need to see if it's still in need of a charge, or whether we just call it a day and run off the battery for a bit.
If the battery is around 14.5~15.5V, then that's probably good enough and we should stop. The charger might decide this for us, and so we should just watch for that: if the battery stops charging, and it is at this higher level, just switch to discharge mode and watch for the battery hitting the low threshold. Thus we can define four thresholds, subject to experimental adjustment: Symbol Description Threshold Critical high voltage 15.7V High voltage 15.5V Low voltage 12.0V Critical low voltage 11.8V Now, our next problem is the waiting how long do we wait for the battery to change state? If things are in the critical bands, then we probably want to monitor things very closely, outside of this, we can be more relaxed. For now, I'll define two time-out settings which we'll use depending on circumstances: Symbol Description Period Low-frequency polling period 15 sec High-frequency polling period 5 sec In order to track the state, I need to define some variables we shall describe the charger's state in terms of the following variables: Symbol Description Initial value Last-known battery voltage, set at particular points. 0V The current battery voltage, as read by the ADC using an interrupt service routine. 0V Timer delay a timer used to count down until the next event.
Charging source, an enumeration: 0: No source selected 1: Main charging source (e.g. Solar) 2: Back-up charging source (e.g. Mains power) 0 The variable names in the actual code will be a little more verbose and I'll probably use #defines for the enumeration.
Below is the part-state-machine part-flow-chart diagram that I came up with. It took a few iterations to try and describe this accurately, I was going to use a state machine syntax similar to what my workplace uses, but in the end, found the ye olde flow chart shows it best. In this diagram, a filled in dot represents the entry point, a dot with an X represents an exit point, and a dot in a circle represents a point where the state machine re-enters the state and waits for the main loop to iterate once more.
Edit, managed to get it up there had to go to HTML mode, copy the text out, re-load the edit page, paste it back. Then I could post without getting a text/plain document with the content 'Error 403' thrown in my face.You'll note that for this controller, we only care about one voltage, the battery voltage. That said, the controller will still have temperature monitoring duties, so we still need some logic to switch the ADC channel, throw away dummy samples (as per the datasheet) and manage sample storage.
The hardware design does not need to change.We can use quiescent voltages to detect the presence of a charging source, but we do not need to, as we can just watch the battery voltage rise, or not, to decide whether we need to take further action.