pid controller and temperature plot in python

master
Eggert Jung 5 years ago
parent f6f1d09ab4
commit 3cb3e52790

@ -0,0 +1,61 @@
# python_live_plot.py
import time
from simple_pid import PID
from itertools import count
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import minimalmodbus
tempSens = minimalmodbus.Instrument('/dev/ttyUSB1', 1)
tempSens.serial.baudrate = 38400
OutputDriver = minimalmodbus.Instrument('/dev/ttyUSB1', 2)
OutputDriver.serial.baudrate = 38400
pid = PID(1, 0.01, 0, setpoint=60)
plt.style.use('fivethirtyeight')
x_values = []
y_values = []
index = count()
def animate(i):
try:
temp = tempSens.read_float(1)
y_values.append(temp)
x_values.append(next(index))
print(temp, end='\t')
control = pid(temp)
if(control>100):
control = 100;
control = (control/1000.0)
print(control, end='\t')
print(0.1-control)
if(control > 0):
OutputDriver.write_bit(0, 1, functioncode=15)
time.sleep(control)
if(control<0.1):
OutputDriver.write_bit(0, 0, functioncode=15)
time.sleep(0.1-control)
plt.cla()
plt.scatter(x_values, y_values)
except:
pass
ani = FuncAnimation(plt.gcf(), animate, 2000)
plt.tight_layout()
plt.show()
Loading…
Cancel
Save