In my previous post, I slapped together a quick LED lighting solution for my workbench… but it is truly a hack. What I really want to do is make a simple constant current driver, so the power LEDs can be used in other projects. One of those projects is an LED swimming pool light. It needs to be running at maximum brightness and low cost.
For a while I have been looking to instal LED lighting in my workshop, but every time I go to the DIY center, I look at the price tags and keep on walking. About a month ago, the Electronics Goldmine had a sale on 12V/10W/900 Lumen LEDs. $3 each! 900 lumens is equivalent to a 60 watt incandescent bulb. The datasheet I am using is here.
Once I received the LEDs, a quick test with my powersupply demonstrated them working VERY well, but running them from my bench supply would not do in the long term. A solution had to be found in my parts bin…
Summer is finally here, and the hard work on the pool pump controller is starting to pay off. It looks like most of the bugs I ran into last year have been ironed out and it is working like a charm. Except when it doesn’t – but it quickly recovers.
In the video below, you can see the setup and a demonstration of its operation. Unfortunately, there is one more bug – when exiting high speed mode, the controller resets, but in 30 seconds it recovers and picks up where it left off. I think it is an EMP burst affecting the controller as it is in the same metal box as the relay.
A second gremlin sometimes affects the display on speed change, but the display refresh code eventually cleans that up.
Spring is here and the summer pool season opening is just a few weeks away. Over the past few weeks I have been working hard to make key improvements to the pool pump controller I mentioned here. For the uninitiated, a few years ago I upgraded the motor on my pool pump from a 1.5HP single speed motor to a dual speed motor. The high speed setting is great for vacuuming the pool and performing the necessary maintenance tasks, but eats an incredible amount of power – 10A @ 230V. When maintenance tasks are complete, I can set the motor to low speed and keep circulating and filtering the water, but consume only a few amps. Perfect until the heater turns on. The water flow is too low at the low speed and the water starts to boil in a heater. No way I am going to blow up a $2000 heater. Last season I built the automatic controller, which set the pump speed according to the difference in water temperature as it enters and leaves the heater. For the most part it worked great, but it had a few faults:
- Sometimes the controller would reset when the motor started at high speed, shutting everything down until the controller came back up.
- If the controller did not reset, then the display would crash and show no data
- The latest code revision was forgetting to read the thermometers
In order to resolve the reset and display issues, I added a few large capacitors to the power bus, increasing the power source fluctuation tolerance. Now it should be able to survive a one second full power outage without reset. While I was adding capacitors, I also added a bridge rectifier to the board power input. The bridge protects the board from Mr. Fumblefingers accidentally applying reverse polarity to the board. It also would allow me to use an AC power source, if necessary. Links to the schematics are at the bottom of the post.
Lately I have been working on an impractical project – to animate an ancient Imation tape cartridge I found. The tape has a clear face and an aluminum plate back, with very clean and precise reels. One of my colleagues at work promised a hundred bucks to me if I could animate it. Ha! Challenge! (not that I would take his money)
Seemed like a simple project – small motor, some pwm for speed control and see it roll. Never is that simple. I quickly came to the conclusion that setting a PWM for the speed is not enough, it would be best if I can set an absolute speed and automagically adjust power as needed. To do this, I dug into my parts bin for an IR detector. A handful of these came from a very expensive baby rocker – one of those that simulates the rocking motions of a mother’s arms.
In order to grow my inventory of parts, I scrounge the interwebs for people selling boxes of miscellaneous parts. I try to find those that look to have come out of a company’s lab or workshop. Sometimes I find some really cool stuff. Recently I picked up a batch of very old bipolar PROMs – memories that can be programmed once but read many times. The ones I found (82s129, 8bitx4, 1K) were used in arcade game consoles and Motorola two-way radios.
I know a few people who really want to have these, but they don’t want to waste their time writing data to used or bad chips. To keep them happy, I built a simple PROM tester, that scans through the entire memory array looking for high bits. (E)PROMs by default are all zeros. When they get programmed, the necessary bits are set to HIGH by exposing the bit to high voltage and burning an integrated nichrome fuse. Once the fuse has been burnt, it stays that way.
To check if the PROM has been used, I made a small circuit with a CD4040 binary counter and an Arduino. The binary counter has 12 output pins and when it receives a pulse on the pulse pin, it increments the output by one binary bit. The Arduino then scans the PROM output and checks for any HIGH bits. If one is found, the program halts and lights the PROM-BAD LED. If all bits are LOW, the Arduino sends another pulse to the binary counter and checks all the bits again until it reaches the max number of addresses the chip supports. If everything has been found good, the PROM-GOOD LED is lit and the program halts. Replace the PROM, hit reset and start over.
This same program can be used to test any type of memory for zeros. Static ram could be tested for write as well, with a few modifications.
The code can be found in my code repository.