Name: Michael Shimniok
Member since: 2007-12-23 16:33:37
Last Login: 2013-08-22 04:57:14
Author of Bot Thoughts blog, interested in robotics since '89. Since 2007, dove in full force, built Pokey the firefighter (failure = learning), and then Data Bus, 3rd place in 2012 AVC, my Rapsberry Pi tele-rover, a beam robot, and have tinkered with lots of other electronic thingies.
Recent blog entries by shimniok
Cyber Monday, 2015
Bot Thoughts20% off - 80CFB16
- eeZee Propeller, an affordable Propeller breakout
- PIPduino, a 'duino designed to mount in your project
- eeZeeAmp LM386 with great features for breadboarding
- RoverMux: take control of your robot rover before it crashes
10% off - 6B54471
- Convenient eeZeePower USB or eeZeePower DC Jack versions
- ATtiny Boards: ATtiny4313, ATtiny84, ATtiny85/ATtiny13
- eeZeeMicroSD, great for breadboard Arduino and more
PololuHappy Thanksgiving from Pololu! Our Black Friday/Cyber Monday sale is almost here! We will be offering huge discounts on hundreds of products and automatically upgrading you to the next best price break for everything else. We will also have some great limited-quantity doorbusters. The special offers become active Wednesday morning (November 25) at midnight PST (3:00 AM EST/08:00 UTC), and the sale runs through Cyber Monday (November 30), ending at 11:59 PM PST. More information is coming soon, including a full list of the doorbusters and sale items, but for now, here is a sampling of the discounts.
SparkfunCyber Monday and all its glory is nearly upon us! For this year's celebration of festively-timed discounts, we're putting a huge selection of some of this year's best-selling and most popular products on sale for one day only – from 10-40% off! Check out our Cyber Monday page to get the scoop on the day's special deals!
Fixing Flaky LCD Monitor with ESR Meter
My Dell E2210H LCD monitor was really wonky.
Powering up from sleep, it would only occasionally come back to life, usually after resetting itself several times.
More often, it would power off or go into power saving mode, leaving the front panel buttons inoperative.
Occasionally it would reset or power off while operating normally.
Here's how I fixed it, using my DIY ESR test harness to find a bad capacitor without desoldering.
You can find disassembly videos and tutorials out on the web specific to your monitor. Remember, safety is your responsibility so please learn how to safely deal with dangerous high voltages, how to safely discharge capacitors, etc.
|Low voltage drop; low ESR.|
The device sends a 1.0 Vp-p, 1kHz - 250kHz square wave through a capacitor on the board while the oscilloscope displays voltage drop across the capacitor.
You turn on the ESR harness, connect Channel 1 to the Probe BNC and Channel 2 to the Trigger BNC.
Then touch the red/black probes to the positive/negative capacitor terminals while they are on the board. Which is nice; you don't have to desolder every cap.
|High voltage drop; high ESR.|
But usually it's really obvious when you find a bad capacitor.
What you should see is a very low voltage drop across the capacitor as pictured above right.
A capacitor with overly high ESR will drop far less voltage as shown below right.
And that is just what I found on one of the 100uF supply capacitors on the main driver board for the LCD. The rest of the capacitors tested ok.
|The bad cap looked fine but tested bad.|
Normal ESR for good capacitors of similar size are orders of magnitude less than that.
With such a high ESR, the capacitor was slowly charging and discharging, likely confusing whatever circuit or MCU was controlling the main power.
After replacing the capacitor with a good one, the monitor works normally, as expected. All with a minimum of work and the very low cost of a capacitor.
Admittedly, I somehow missed the bad capacitor the first time I tested so I ended up buying a power supply board. Now I have a spare. Oops.
Automated OLED Test Jig: eeZee MicroSD
How does one test boards one sells on Tindie?
With a fancy-pants, standalone, OLED-equipped, high-zoot test jig, of course.
At least, that's what I built for testing my eeZee MicroSD boards. They're microSD breakouts for breadboard Arduinos. They've got the microSD socket plus 3.3V regulator, level-shifter IC, and various passives.
The test jig features an Arduino on the top of a two-layer permanent breadboard apparatus. Power is supplied by convenient USB connector. I manually place the board onto good ol' pogo pins soldered into the D10-D13 positions (plus power and ground).
A red and a green LED indicates overall status, while the Digole Serial OLED displays pass/fail status for each of the tests: initializing the card, creating a file, and removing a file, with an overall board status.
Here's the source code for the test jig: TestJig.ino
Redlink Connection Refused
Here's the real answer: actually troubleshoot and solve the problem on your unsupported Linux distro. It's easy, just read on...
OpenMV: Counting Pips on Dice
One of our backers, Damage, had a great project idea for OpenMV Cam: count a dice roll visually. Here's what I ended up with.
I used simple blob detection. What ended up working best was to first find the white dice (I had no real dice; these are paper cutouts).
To look for color blobs you supply the threshold() function with a color, an RGB value, and a "distance" value (how close a pixel is to the specified color). Behind the scenes this is based on LAB colorspace and euclidean distance between colors.
bin = image.threshold([(160, 210, 255)], 20)
|Note the dice are actually bluish-white|
# image closing
# Find white dice
dbin = image.threshold([(160, 210, 255)], 20)
# image closing
# find dice
dice = dbin.find_blobs()
# Draw rectangles around detected dice
for d in dice:
Now to find the pips. Same process all over again, only this time, the color is sort of a bluish black. I had to experiment with the color and the dilate/erode calls to get it working.
# Find pips in dice blobs
binary = image.threshold([(40, 60, 110)], 25)
# Image closing
# Detect blobs in image
blobs = binary.find_blobs()
Finally, go through all the pips and count the ones that are inside the bounds of the white blobs, the dice. Then display the numbers in the corners of the dice and the total at the bottom. The find_blobs() function returns a list of (x, y, width, height) for each blob.
# Count pips
pips = 0
for d in dice:
dr = (d, d, d+d, d+d)
subpips = 0
for p in blobs:
pr = (p, p, p+p, p+p)
if pr > dr and pr < dr and
pr > dr and pr < dr:
subpips += 1
image.draw_string(d-8, d-8, str(subpips),
(50, 255, 50))
pips += subpips
image.draw_string(55, 120, "total="+str(pips),
(50, 255, 50))
And that's all there is. It works pretty ok for having spent very little time on it. There's some room for improvement. More tuning might help. Better lighting. Real dice. Also, when you roll a 6, it merges adjacent pips.
That's because the firmware normally ignores blobs that are too small. Small blobs next to each other can only be detected if you dilate() enough to make them bigger than the threshold, but that merges them because they're close together. We just have to lower the blob size threshold, I think.
Also, we might get more accurate detection by refactoring threshold() to take separate parameters for color and lightness thresholds.
Meanwhile, OpenMV Cam's Kickstarter ends Feb 25. If you want one click here.
Others have certified shimniok as follows:
[ Certification disabled because you're not logged in. ]