Compare commits
33 Commits
b31b5cd6c4
...
feature_di
| Author | SHA1 | Date | |
|---|---|---|---|
| 5685eebe2c | |||
| f2ed9c9724 | |||
| db17fbc1d9 | |||
| 451cd9bc68 | |||
| f8d788d92e | |||
| b1ceb7c913 | |||
| ac2180b041 | |||
| 729bf18aec | |||
| 6013acc226 | |||
| 945e088667 | |||
| 8269b5112f | |||
| 582bdec6c5 | |||
| 74c7746142 | |||
| 1a1f228b69 | |||
| a099481b3e | |||
| ffce232d47 | |||
| 87d012086b | |||
| 7456e7f02a | |||
| 9dbe3e1f5d | |||
| c8d8118d98 | |||
| 4b093e86de | |||
| 083767f626 | |||
| b081c33748 | |||
| eae3d4bae1 | |||
| 5531952667 | |||
| 48d347fb06 | |||
| be2a4a8c24 | |||
| 8efc607e03 | |||
| 6e717027c6 | |||
| 8686a8ef19 | |||
| deb7f54bfb | |||
| 678357b838 | |||
| bcb45f3174 |
91
Beispiel Kennlinien/01_sinus.txt
Normal file
91
Beispiel Kennlinien/01_sinus.txt
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
0;10.0
|
||||||
|
1;10.7
|
||||||
|
2;11.4
|
||||||
|
3;12.0
|
||||||
|
4;12.6
|
||||||
|
5;13.2
|
||||||
|
6;13.7
|
||||||
|
7;14.1
|
||||||
|
8;14.5
|
||||||
|
9;14.8
|
||||||
|
10;14.9
|
||||||
|
11;15.0
|
||||||
|
12;15.0
|
||||||
|
13;14.9
|
||||||
|
14;14.6
|
||||||
|
15;14.3
|
||||||
|
16;13.9
|
||||||
|
17;13.5
|
||||||
|
18;12.9
|
||||||
|
19;12.3
|
||||||
|
20;11.7
|
||||||
|
21;11.0
|
||||||
|
22;10.3
|
||||||
|
23;9.7
|
||||||
|
24;9.0
|
||||||
|
25;8.3
|
||||||
|
26;7.7
|
||||||
|
27;7.1
|
||||||
|
28;6.5
|
||||||
|
29;6.1
|
||||||
|
30;5.7
|
||||||
|
31;5.4
|
||||||
|
32;5.1
|
||||||
|
33;5.0
|
||||||
|
34;5.0
|
||||||
|
35;5.1
|
||||||
|
36;5.2
|
||||||
|
37;5.5
|
||||||
|
38;5.9
|
||||||
|
39;6.3
|
||||||
|
40;6.8
|
||||||
|
41;7.4
|
||||||
|
42;8.0
|
||||||
|
43;8.6
|
||||||
|
44;9.3
|
||||||
|
45;10.0
|
||||||
|
46;10.7
|
||||||
|
47;11.4
|
||||||
|
48;12.0
|
||||||
|
49;12.6
|
||||||
|
50;13.2
|
||||||
|
51;13.7
|
||||||
|
52;14.1
|
||||||
|
53;14.5
|
||||||
|
54;14.8
|
||||||
|
55;14.9
|
||||||
|
56;15.0
|
||||||
|
57;15.0
|
||||||
|
58;14.9
|
||||||
|
59;14.6
|
||||||
|
60;14.3
|
||||||
|
61;13.9
|
||||||
|
62;13.5
|
||||||
|
63;12.9
|
||||||
|
64;12.3
|
||||||
|
65;11.7
|
||||||
|
66;11.0
|
||||||
|
67;10.3
|
||||||
|
68;9.7
|
||||||
|
69;9.0
|
||||||
|
70;8.3
|
||||||
|
71;7.7
|
||||||
|
72;7.1
|
||||||
|
73;6.5
|
||||||
|
74;6.1
|
||||||
|
75;5.7
|
||||||
|
76;5.4
|
||||||
|
77;5.1
|
||||||
|
78;5.0
|
||||||
|
79;5.0
|
||||||
|
80;5.1
|
||||||
|
81;5.2
|
||||||
|
82;5.5
|
||||||
|
83;5.9
|
||||||
|
84;6.3
|
||||||
|
85;6.8
|
||||||
|
86;7.4
|
||||||
|
87;8.0
|
||||||
|
88;8.6
|
||||||
|
89;9.3
|
||||||
|
90;10.0
|
||||||
30
Beispiel Kennlinien/02_sprungantworten.txt
Normal file
30
Beispiel Kennlinien/02_sprungantworten.txt
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
0;0
|
||||||
|
4.9;0
|
||||||
|
5;5
|
||||||
|
9.9;5
|
||||||
|
10;7
|
||||||
|
14.9;7
|
||||||
|
15;10
|
||||||
|
19.9;10
|
||||||
|
20;12
|
||||||
|
24.9;12
|
||||||
|
25;15
|
||||||
|
29.9;15
|
||||||
|
30;17
|
||||||
|
34.9;17
|
||||||
|
35;15
|
||||||
|
39.9;15
|
||||||
|
40;12
|
||||||
|
44.9;12
|
||||||
|
45;10
|
||||||
|
49.9;10
|
||||||
|
50;7
|
||||||
|
54.9;7
|
||||||
|
55;5
|
||||||
|
59.9;5
|
||||||
|
60;0
|
||||||
|
69.9;0
|
||||||
|
70;15
|
||||||
|
79.9;15
|
||||||
|
80;0
|
||||||
|
90;0
|
||||||
2
conf.txt
2
conf.txt
@@ -5,7 +5,7 @@
|
|||||||
}
|
}
|
||||||
227C-024-15 PID_Regler 2{
|
227C-024-15 PID_Regler 2{
|
||||||
Kp:0.11
|
Kp:0.11
|
||||||
Ki:0.08
|
Ki:0.09
|
||||||
Kd:0.00
|
Kd:0.00
|
||||||
}
|
}
|
||||||
227C-024-15 I-Regler{
|
227C-024-15 I-Regler{
|
||||||
|
|||||||
66
main.py
66
main.py
@@ -11,6 +11,7 @@ import threading
|
|||||||
import time
|
import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import csv
|
import csv
|
||||||
|
import os
|
||||||
|
|
||||||
class ArduinoGUI:
|
class ArduinoGUI:
|
||||||
def __init__(self, root):
|
def __init__(self, root):
|
||||||
@@ -19,6 +20,8 @@ class ArduinoGUI:
|
|||||||
self.root.title("PRG 342 GUI")
|
self.root.title("PRG 342 GUI")
|
||||||
self.root.attributes('-fullscreen', True) # Setzt das Fenster in den Vollbildmodus
|
self.root.attributes('-fullscreen', True) # Setzt das Fenster in den Vollbildmodus
|
||||||
|
|
||||||
|
self.ser = None
|
||||||
|
|
||||||
self.arduino = None
|
self.arduino = None
|
||||||
self.ports = list(serial.tools.list_ports.comports())
|
self.ports = list(serial.tools.list_ports.comports())
|
||||||
self.running = True
|
self.running = True
|
||||||
@@ -158,6 +161,8 @@ class ArduinoGUI:
|
|||||||
self.current_angle = 0
|
self.current_angle = 0
|
||||||
self.current_torque = 0
|
self.current_torque = 0
|
||||||
self.analogInput = 0
|
self.analogInput = 0
|
||||||
|
self.currentSetpoint = 0
|
||||||
|
self.currentOutput = 0
|
||||||
|
|
||||||
self.angle_label_var = customtkinter.StringVar()
|
self.angle_label_var = customtkinter.StringVar()
|
||||||
self.angle_label_var.set("Drehwinkel: 0")
|
self.angle_label_var.set("Drehwinkel: 0")
|
||||||
@@ -242,6 +247,38 @@ class ArduinoGUI:
|
|||||||
else:
|
else:
|
||||||
messagebox.showwarning("Warnung", "Bitte einen COM-Port auswählen")
|
messagebox.showwarning("Warnung", "Bitte einen COM-Port auswählen")
|
||||||
|
|
||||||
|
def connect_lsp(self):
|
||||||
|
try:
|
||||||
|
ports = serial.tools.list_ports.comports()
|
||||||
|
used_ports = [port.device for port in ports]
|
||||||
|
|
||||||
|
serPort = None
|
||||||
|
|
||||||
|
if os.name == 'nt':
|
||||||
|
for i in range(1, 257):
|
||||||
|
port = f'(COM{i}'
|
||||||
|
if (port not in used_ports) and (serPort == None):
|
||||||
|
serPort = port
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
for i in range(256):
|
||||||
|
port = f'/dev/ttyS{i}'
|
||||||
|
if (port not in used_ports) and (serPort == None):
|
||||||
|
serPort = port
|
||||||
|
pass
|
||||||
|
for i in range(256):
|
||||||
|
port = f'/dev/ttyUSB{i}'
|
||||||
|
if (port not in used_ports) and (serPort == None):
|
||||||
|
serPort = port
|
||||||
|
pass
|
||||||
|
|
||||||
|
if serPort != None:
|
||||||
|
self.ser = serial.Serial(serPort, 9600, timeout=1)
|
||||||
|
print(F"Slave Port bereit an {serPort}")
|
||||||
|
except Exception as e:
|
||||||
|
print(F"Fehler beim Öffnen des Slave Ports an {serPort}")
|
||||||
|
pass
|
||||||
|
|
||||||
def set_setpoint(self):
|
def set_setpoint(self):
|
||||||
if self.arduino:
|
if self.arduino:
|
||||||
try:
|
try:
|
||||||
@@ -400,7 +437,34 @@ class ArduinoGUI:
|
|||||||
|
|
||||||
self.csv_writer.writerow([formatted_time, formatted_angle, formatted_setpoint, formatted_torque, formatted_output])
|
self.csv_writer.writerow([formatted_time, formatted_angle, formatted_setpoint, formatted_torque, formatted_output])
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
|
||||||
|
if self.ser:
|
||||||
|
if self.ser.in_waiting:
|
||||||
|
try:
|
||||||
|
command = ""
|
||||||
|
while self.ser.in_waiting:
|
||||||
|
command += self.ser.read(1).decode(errors='ignore').strip()
|
||||||
|
if command[0] == 'a':
|
||||||
|
message = f"{self.current_angle};{self.current_torque};{self.analogInput};{self.currentSetpoint};{self.currentOutput}\n"
|
||||||
|
self.ser.write(message.encode())
|
||||||
|
if command[0] == 'w':
|
||||||
|
self.tare_angle()
|
||||||
|
if command[0] == 'u':
|
||||||
|
outCommand = F"command: {command}\n"
|
||||||
|
self.arduino.write(outCommand.encode())
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
self.ser.read()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
#self.ser.write(b'Hallo\n')
|
||||||
|
else :
|
||||||
|
try:
|
||||||
|
pass
|
||||||
|
self.connect_lsp()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
@@ -425,6 +489,8 @@ class ArduinoGUI:
|
|||||||
self.running = False
|
self.running = False
|
||||||
if self.arduino:
|
if self.arduino:
|
||||||
self.arduino.close()
|
self.arduino.close()
|
||||||
|
if self.ser:
|
||||||
|
self.ser.close()
|
||||||
self.root.quit()
|
self.root.quit()
|
||||||
self.root.destroy()
|
self.root.destroy()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user