Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
HX711&matplotlib problems
#1
Hi!
I'm making a project in python on rpi 3b+ for a machine I've build in my laboratory and have some problems with the code. :cry:
The aim is to collect data from hx711 wich is connected to load cell in a csv file and to show real time plot on rpi screen.
I'm going to connect 4 hx711 to save and plot data from 4 load cells.
Now i'm trying to make work only 1 cell.
Here is the code:

import sys
import csv
import time
from datetime import datetime 
import RPi.GPIO as GPIO
from hx711 import HX711
import matplotlib.pyplot as plt
csvfile = datetime.now().strftime('Base-%Y-%m-%d-%H-%M.csv')
fieldnames = ["time1","force1"]
with open(csvfile, "a")as output:
            writer = csv.DictWriter(output, fieldnames=fieldnames)
            writer.writeheader()
# choose pins on rpi (BCM5 and BCM6)
hx = HX711(dout=5, pd_sck=6)

# HOW TO CALCULATE THE REFFERENCE UNIT
#########################################
# To set the reference unit to 1.
# Call get_weight before and after putting 1000g weight on your sensor.
# Divide difference with grams (1000g) and use it as refference unit.

hx.setReferenceUnit(1)

hx.reset()
hx.tare()
fig = plt.figure()
ax = fig.add_subplot(111)
fig.show()
i = 0
x, y = [], []
while True:

    try:
        force1 = "{0: 4.1f}".format(hx.getWeight())     
        time1 = datetime.now().strftime('%H:%M:%S.%f')
        print(force1, time1)
        x.append(i)
        ax.plot(x, force1, color='b')
        fig.canvas.draw()
        ax.set_xlim(left=max(0, i-10), right=i+10)
        ax.set_ylim([-100,100])
        i += 1
        data = [force1, time1]
        with open(csvfile, "a")as output:
            writer = csv.DictWriter(output, fieldnames=fieldnames)
            info = {
            "time1": time1,
            "force1": force1
            }
            writer.writerow(info)
            writer = csv.writer(output, delimiter=",", lineterminator = '\n')  
        time.sleep(0.01) # update script every 60 seconds

    except (KeyboardInterrupt, SystemExit):
        GPIO.cleanup()
        sys.exit()
here is a problem that it plots a straght line wich only goes up, but
print(force1, time1)
prints right values of force1
as examples i took this code to check cpu that works perfectly:
import time
import matplotlib.pyplot as plt
import psutil
fig = plt.figure()
ax = fig.add_subplot(111)
fig.show()
i = 0
x, y = [], []
while True:
    x.append(i)
    y.append(psutil.cpu_percent())
    ax.plot(x, y, color='b')
    fig.canvas.draw()
    ax.set_xlim(left=max(0, i-10), right=i+10)
    ax.set_ylim([-100,100])
    print(psutil.cpu_percent())
    time.sleep(0.1)
    i += 1
plt.close()
Could you please help me to solve the problem?
I'm a scientist and more mechanic than a programmer.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Matplotlib: How do I convert Dates from Excel to use in Matplotlib JaneTan 1 3,215 Mar-11-2021, 10:52 AM
Last Post: buran
  Normalizing a value from HX711 duckredbeard 4 2,351 Sep-10-2020, 12:00 AM
Last Post: deanhystad
  Issue with HX711 reading duckredbeard 0 2,179 Aug-28-2020, 10:00 AM
Last Post: duckredbeard
  Guizero HX711 Load Cell and python3 stdout? Tesla 1 3,727 Jan-16-2019, 01:15 PM
Last Post: Larz60+

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020