Skip to content
Snippets Groups Projects
Commit b371712c authored by Lennard's avatar Lennard
Browse files

Various updates

parent 3068061a
No related branches found
Tags
No related merge requests found
...@@ -2,3 +2,5 @@ ...@@ -2,3 +2,5 @@
out/* out/*
CHANGELOG.md CHANGELOG.md
profiling.log profiling.log
logs/log
data/data
\ No newline at end of file
...@@ -3,7 +3,7 @@ DataLogger: ...@@ -3,7 +3,7 @@ DataLogger:
filename: data # filename for datalogs filename: data # filename for datalogs
levels: # log level for outputting to file and to stdout respectivly levels: # log level for outputting to file and to stdout respectivly
- INFO - INFO
- WARNING - INFO
InfoLogger: InfoLogger:
backupCount: 10 # number of logs to keep backupCount: 10 # number of logs to keep
...@@ -14,6 +14,6 @@ InfoLogger: ...@@ -14,6 +14,6 @@ InfoLogger:
- WARNING - WARNING
Data: Data:
factors: [1.74, 0, 0.9, -0.96] # factors for the 4 dms factors: [1.855, 0, 0.923, -1] # factors for the 4 dms
delta_time: 30 # time between logging data delta_time: 10 # time between logging data
smoothing: false # whether to smoothe the logged data smoothing: false # whether to smoothe the logged data
logs/log.1 0 → 100644
Source diff could not be displayed: it is too large. Options to address this: view the blob.
...@@ -143,7 +143,6 @@ def main(config: Any) -> None: ...@@ -143,7 +143,6 @@ def main(config: Any) -> None:
f"Factors: {', '.join(f'{factor:.3f}' for factor in factors[:4])}, Offset: {', '.join(f'{offset:.3f}' for offset in offsets[:4])}" f"Factors: {', '.join(f'{factor:.3f}' for factor in factors[:4])}, Offset: {', '.join(f'{offset:.3f}' for offset in offsets[:4])}"
) )
try:
with serial.Serial("/dev/ttyACM0", 9600, timeout=3) as con1, serial.Serial("/dev/ttyACM1", 9600, timeout=3) as con2: with serial.Serial("/dev/ttyACM0", 9600, timeout=3) as con1, serial.Serial("/dev/ttyACM1", 9600, timeout=3) as con2:
logger.warning("Connected to serial ports") logger.warning("Connected to serial ports")
last_write = time.time() last_write = time.time()
...@@ -188,9 +187,6 @@ def main(config: Any) -> None: ...@@ -188,9 +187,6 @@ def main(config: Any) -> None:
n = 0 n = 0
data = np.zeros((8,)) data = np.zeros((8,))
last_write = time.time() last_write = time.time()
except serial.serialutil.SerialException:
logger.exception("SerialException was caught, shutting down.")
sys.exit(15)
fh[0].doRollover() fh[0].doRollover()
......
...@@ -8,9 +8,9 @@ while pidof -x "python3 main.py">/dev/null; do ...@@ -8,9 +8,9 @@ while pidof -x "python3 main.py">/dev/null; do
done done
sleep 10 sleep 10
# scripts/./write.bash scripts/./write.bash
# sleep 10 sleep 10
# python3 measure.py # python3 measure.py
......
#include <HX711_ADC.h> #include <HX711_ADC.h>
// Ein Objekt mit dem Konstruktor aus der Bibliothek erstellen
HX711_ADC LoadCell(2, 3); HX711_ADC LoadCell(2, 3);
HX711_ADC LoadCell2(6, 7); HX711_ADC LoadCell2(6, 7);
HX711_ADC LoadCell3(8, 9); HX711_ADC LoadCell3(8, 9);
HX711_ADC LoadCell4(12, 13); HX711_ADC LoadCell4(12, 13);
// Globale Variablen intialisieren
static float Offset = 0; static float Offset = 0;
static float Offset2 = 0; static float Offset2 = 0;
...@@ -15,10 +15,10 @@ static float Offset4 = 0; ...@@ -15,10 +15,10 @@ static float Offset4 = 0;
int anzahl = 1000; int anzahl = 1000;
int caltime = 2; int caltime = 2;
float calFac = 2429; float calFac = 2500;
float calFac2 = 2406; float calFac2 = 2500;
float calFac3 = 2442; float calFac3 = 2500;
float calFac4 = 2454; float calFac4 = 2500;
long stabilisation = 2000; long stabilisation = 2000;
boolean t_are = true; boolean t_are = true;
float messwertges; float messwertges;
...@@ -42,28 +42,28 @@ void regelbetrieb(HX711_ADC zelle, HX711_ADC zelle2, HX711_ADC zelle3, HX711_ADC ...@@ -42,28 +42,28 @@ void regelbetrieb(HX711_ADC zelle, HX711_ADC zelle2, HX711_ADC zelle3, HX711_ADC
messwert4 = 0; messwert4 = 0;
for (int i = 1; i <= anzahl; i++) { for (int i = 1; i <= anzahl; i++) {
// Eingänge der Pins neu auslesen
zelle.update(); zelle.update();
zelle2.update(); zelle2.update();
zelle3.update(); zelle3.update();
zelle4.update(); zelle4.update();
// Messwert aufsummieren
messwert = messwert + (getDaten(Offset, zelle)); messwert = messwert + (getDaten(Offset, zelle));
messwert2 = messwert2 + (getDaten(Offset2, zelle2)); messwert2 = messwert2 + (getDaten(Offset2, zelle2));
messwert3 = messwert3 + (getDaten(Offset3, zelle3)); messwert3 = messwert3 + (getDaten(Offset3, zelle3));
messwert4 = messwert4 + (getDaten(Offset4, zelle4)); messwert4 = messwert4 + (getDaten(Offset4, zelle4));
// messwert=getDaten(Offset);
// Serial.println(messwert);
// 1 Millisekunden warten((1/1000) Sekunde)
delay(1); delay(1);
} }
// Berechne Mittelwert der letzten 1000 Messwerte aus der
// letzten Sekunde
messwert = messwert / anzahl; messwert = messwert / anzahl;
messwert2 = messwert2 / anzahl; messwert2 = messwert2 / anzahl;
...@@ -75,65 +75,65 @@ void regelbetrieb(HX711_ADC zelle, HX711_ADC zelle2, HX711_ADC zelle3, HX711_ADC ...@@ -75,65 +75,65 @@ void regelbetrieb(HX711_ADC zelle, HX711_ADC zelle2, HX711_ADC zelle3, HX711_ADC
messwert3 = messwert3 / calFac3; messwert3 = messwert3 / calFac3;
messwert4 = messwert4 / calFac4; messwert4 = messwert4 / calFac4;
// Methode für schreiben in Datenbank
// messwert=epsilonumgebung(messwert,messwertAlt);
// messwert2=epsilonumgebung(messwert2,messwertAlt2);
// messwert3=epsilonumgebung(messwert3,messwertAlt3);
// messwert4=epsilonumgebung(messwert4,messwertAlt4);
// Es fehlt noch die kalbrierte Umrechnung auf Mikrostrain.
// Serial.println("Die Daten betragen ");
// Serial.println(messwert,1);
// Serial.println(Offset,1);
// delay(1000);
} }
// Methode zum berechnen der Spannung
float getDaten(float offset, HX711_ADC zelle) { float getDaten(float offset, HX711_ADC zelle) {
float Offsetnew = offset; float Offsetnew = offset;
// Hilfsvariablen initialisieren
float data; float data;
// Methode getRareData() aus der Bibliothek abzüglich dem vorher
// gemessenen Offset-Wert
data = (float)zelle.getRareData() - Offsetnew; data = (float)zelle.getRareData() - Offsetnew;
// Gemessene Spannung als Rückgabewert
return data; return data;
} }
// Hier steht die Methode zum schreiben in eine Datenbank
void writeInData() { void writeInData() {
// Wenn eine serielle Verbindung verfügbar ist soll das Programm ausgefuehrt
// werden
if (Serial.available()) { if (Serial.available()) {
// Der Arduino wartet auf eine Anfrage vom Pi
Serial.read(); Serial.read();
// Damit der Pi die Gelegenheit bekommt sich auf das Einlesen der Messwerte
// vorzubereiten wird ein Delay von 10ms eingeführt
delay(10); delay(10);
Serial.println(1); Serial.println(1);
delay(10); delay(10);
// In diesem Testskript wird eine zufällige Zahl zwischen 0 und 100
// festgelegt
regelbetrieb(LoadCell, LoadCell2, LoadCell3, LoadCell4); regelbetrieb(LoadCell, LoadCell2, LoadCell3, LoadCell4);
// Die Zahl wird dann an den Pi übermittelt
// Serial.print("Zelle 1 ");
Serial.println(messwert); Serial.println(messwert);
delay(10); delay(10);
// Serial.print("Zelle 2 ");
Serial.println(messwert2); Serial.println(messwert2);
delay(10); delay(10);
// Serial.print("Zelle 3 ");
Serial.println(messwert3); Serial.println(messwert3);
delay(10); delay(10);
// Serial.print("Zelle 4 ");
Serial.println(messwert4); Serial.println(messwert4);
} }
} }
...@@ -144,12 +144,12 @@ float epsilonumgebung(float hierMesswert, float hierMesswertAlt) { ...@@ -144,12 +144,12 @@ float epsilonumgebung(float hierMesswert, float hierMesswertAlt) {
} }
return hierMesswert; return hierMesswert;
} }
// In der Setup steht die bestimmung des Nullpunkts
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
// Serial.println(Offset);
LoadCell.begin(); LoadCell.begin();
LoadCell2.begin(); LoadCell2.begin();
...@@ -166,7 +166,7 @@ void setup() { ...@@ -166,7 +166,7 @@ void setup() {
LoadCell3.update(); LoadCell3.update();
LoadCell4.update(); LoadCell4.update();
// Messwert aufsummieren
Offset = getDaten(0, LoadCell); Offset = getDaten(0, LoadCell);
Offset2 = getDaten(0, LoadCell2); Offset2 = getDaten(0, LoadCell2);
...@@ -174,23 +174,12 @@ void setup() { ...@@ -174,23 +174,12 @@ void setup() {
Offset4 = getDaten(0, LoadCell4); Offset4 = getDaten(0, LoadCell4);
delay(500); delay(500);
/*
//Eingänge der Pins neu auslesen
float Offsetsum;
caltime=caltime*1000;
for (int i=1; i<=caltime; i++){
delay(1);
}
Offset=Offsetsum/caltime;
*/
} }
// In der loop steht der Regelbetrieb der Waage
void loop() { void loop() {
writeInData(); writeInData();
} }
// mögliche Nachbesserungen
// millis() läuft nach 50 Tagen über und geht zurück auf 0
// millis(): https://www.arduino.cc/reference/de/language/functions/time/millis/
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment