HX711 Load Cell

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
sebi2k
User
Beiträge: 1
Registriert: Montag 30. April 2018, 20:52

Hallo zusammen ich zerbreche mir seit Tagen den Kopf

ich habe eine Pi3 mit HX711

inzwischen habe ich hinbekommen das die Waage als Dienst lädt und mir die werte via UDP versendet.

Jetzt habe ich nur noch ein Problem die Waage reset sich nach jedem Neustart und das darf nicht sein.
Es werden Flaschen mit Gewicht gemessen diese Flaschen können nicht bei jeden Neustart von der Waage genommen sondern müssen dauerhaft drauf bleiben.


mein Code:

Code: Alles auswählen

#!/usr/bin/env python
import time
import sys
import os
import socket
from hx711 import HX711

def cleanAndExit():
    client.disconnect();
    print "Cleaning..."
    GPIO.cleanup()
    print "Bye!"
    sys.exit()

hx = HX711(27, 17)
hx.set_reading_format("LSB",)

hx.set_reference_unit(92)

hx.reset()
hx.tare()

UDP_IP = "192.168.210.113"
UDP_PORT = 1234

while True:
    try:
        val = hx.get_weight(5)
        print val

	val2 = str(val)
        MESSAGE = "GewichtGas="+ val2
	sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

        hx.power_down()
        hx.power_up()
        time.sleep(0.5)
    except (KeyboardInterrupt, SystemExit):
        cleanAndExit()
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wieso musst du überhaupt neu starten?
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@sebi2k: Der Code funktioniert nicht, die Einrückung ist falsch, `client´ und `GPIO` wird nirgends definiert. Wenn Du `reset` und `tare` aufrufst, dann wird sich die Waage wohl auch reseten.

`sys.exit` sollte in einem normalen Programm eigentlich nicht vorkommen. Statt irgendwas in einem except-Block aufzuräumen, sollte das im finally-Block geschehen, und zwar außerhalb der while-Schleife.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nochmal den wirklich grauenvollen Code angeschaut - es gibt eine Eigenschaft 'OFFSET' die beim initialen tare() ermittelt wird. Alles andere ist dann dazu relativ. Diesen Wert kannst du speichern, und nach dem Neustart wieder setzen. Allerdings solltest du schon einen Tarier-Modus vorsehen, auf Dauer kann sich Drift einschleichen.
Antworten