Korona weight scale add-on module to read out measurement over USB using ATmega328 micro-controller
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
King Kévin d8d58bae2d fix typo 7 years ago
doc add spreadsheet with measured t1 ticks vs weight read from the scale 7 years ago
firmware tune threshold and add weight interpretation 7 years ago
README.md fix typo 7 years ago


This project is about interfacing a bathroom weight scale with the computer. The goal is to be able to connect the scale to the computer and have it sent the weight it measures.

The scale used is a Korona KFW-55. This scale was simply around when the project started.

To connect the scale to the computer a Arduino Nano development board is used. The Atmel ATmega 328P micro-controller is integrated in the scale case. It reads the PWM signal, interprets the weight, and sends it on UART (over USB).

The scale has a JP1 header on the board. Pin 1 is the one near the switch. The pinout is the following:

  1. ground
  2. low
  3. high on power on
  4. high on power on
  5. PWM
  6. high on power on

The scale's IC provides a Pulse Width Modulated (PWM) signal. This encodes the weight measures. It's frequency is around 3 Hz (it's not exact). The high and low duty cycle encode the current weight measured. The high duty cycle decreases when the weight increases. The low duty cycle increases when the weight increases. The low duty cycle is linearly proportional to the weight. It still needs a minimum weight to start measuring correctly. The origin of this linear curve is not at 0.

The micro-controller code is written in C. It reads the state of the scale using pin 3. It reads the weight on the scale using pin 5. By programming the curve parameters in the code it can calculate the weight. These parameters have been experimentally identify, using the measured values in scale.ods.