2015-01-28 19:54:56 +01:00
|
|
|
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.
|
2015-01-29 12:16:05 +01:00
|
|
|
It reads the PWM signal, interprets the weight, and sends it on UART (over USB).
|
2015-01-28 19:54:56 +01:00
|
|
|
|
|
|
|
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.
|
2015-01-29 12:16:05 +01:00
|
|
|
The low duty cycle is linearly proportional to the weight.
|
2015-01-28 19:54:56 +01:00
|
|
|
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.
|
2015-01-29 12:16:05 +01:00
|
|
|
It reads the state of the scale using pin 3.
|
2015-01-28 19:54:56 +01:00
|
|
|
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`.
|