MyLifeSucks.de Logo News | Fireblade Repsol | Webcam Kiel | BlinkenCUBE | Open Source MAX7456 OSD Software | HiFi & Heimkino | Ehemalige Hebbelschüler ABI 2003 | Über mich/Impressum

oss/c-scale



For a project I needed a scale that can be read out from a PC, but since those are quite expensive I decided to modify a cheap scale myself.
So last week I ordered a "Digital 5kg Küchenwaage Waage Briefwaage Haushaltswaage" off eBay for 9,39€ including shipping. A reasonable price for a somehow well designed (imho) piece of plastic with a glass-plate. This is one of things that has got a WAF of a really acceptable level! Actually the most important feature was "Das Präzisions-DMS-Sensor und hohe-Leistungsfähigkeit CPU sorgt für eine hohe Wiegegenauigkeit." which means something like "high performance CPU and high precision sensor" since it caused a little smile in my face.
Imperial houseware HD-806 original scale

It happened to be a scale sold under the label "Imperial houseware" and has been given the Model no. "HD-806" (just in case you want to buy one yourself).
Imperial houseware HD-806

After disassemling the body, which was really easy compared to my other digital scale where I failed opening without breaking the body, I inspected the PCB. Nothing special there:
Imperial houseware HD-806 PCB below display
Just one of those cheap and glued-to-the-pcb µCs, a LCD, two buttons, a PROM and some resitors and caps. Since there were no obvious ports to grep the actual weight from I decided to reverse engeneer the unlabeled LCD.
I connected a FPGA-based logic-analyzer and captured some different weights.
C-Scale display connected

Here is an captured example showing "0g":
C-Scale logic analyzer

After I while I figured out the rows and colums that are connected to the display:
C-Scale display pinout reverse engeneered

With the gained knowledge about the LCD I connected an AVR (Atmega32) to the whole PCB along with the display and started to capture the signals, evaluated them and sent the values back to the PC via a serial port:
C-Scale devel setup
(You can see PuTTy on screen showing the weight)

Since the devel-board was too big (and I use it a lot) I began to search through my various boxes with electronics and came up with some parts that I could use (and had at hand on a saturday evening) and draw a schematic for them: C-Scale schematic
(to be honest: I drew this one afterwards... the original schematic was drawn with a pencil and a lot of crossings due to late hours)

With those parts at hand I soldered the stuff together and placed it inside the scale, now looking like this:
C-Scale finished (without switch)

Why I took an Atmega8L? Maybe because it has sufficient I/O-ports, or maybe it runs at 3.3V, or maybe it is cheap... But to be honest: Just because I had it at hand.
The board powers the scale and the switch can be used to power the scale from the internal battery, for those days where you do not want to read the weight on a PC, although it is fun to say that one ownes a "full-hd kitchen scale"!
The software sends the values with 10Hz through a 19200 8N1 serial connection. Additionally you can send 'm' to toggle the mode or 'o' to switch the scale on/off (or tare). Every 5 secconds the software toggles through the modes (and ensures that the previously selected mode has been reached again) to prevent the scale from switching off, this is nearly the most important part since the scale will be used to monitor a weight over a longer period of time (another reason for the external power as well).
The external connection features ISP and the serial port along with power-connectors. I use those a lot and although I had some FDTI chips and USB-connectors in my hand I decided to keep the ISP-option and use one of my many UBS adapters which have a fitting pinout.
You can grep a copy of the software (and a precompiled hex-file along with the schematic) here:
C-Scale-20120502-0915 (~149kB)
C-Scale-20120425-1723 (~149kB)
C-Scale-20120423-1950 (~149kB)
C-Scale-20120422-2005 (~148kB)
Valid XHTML 1.0! Valid CSS