lab_devices:climat_chamber
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
lab_devices:climat_chamber [2020/09/26 18:41] – himuser | lab_devices:climat_chamber [2022/01/14 18:44] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
=== English Version below. === | === English Version below. === | ||
- | Dieser Eintrag beschäftigt sich mit der automatisierten Steuerung der Klimakammer " | + | Dieser Eintrag beschäftigt sich mit der automatisierten Steuerung der Klimakammer " |
- | === 0.1) Softwareseitige Schritte === | + | == Die Vorgehensweise für die Datenaufnahme von kommerziellen Pt100-Sensoren verläuft analog zur folgenden Anleitung == |
- | | + | === 0.1.) Softwareseitige Schritte === |
- | | + | < |
- | | + | sudo apt install update |
- | | + | sudo apt install software-properties-common |
- | | + | sudo add-apt-repository ppa: |
- | | + | sudo apt install python3.8 |
- | | + | sudo apt install python3-pip |
- | | + | pip3 install wheel |
- | | + | pip3 install setuptools |
- | | + | pip3 install twine |
- | | + | cd ~ |
- | | + | cd <path to calibration/ |
- | | + | python3 setup.py bdist_wheel |
- | | + | pip3 install <path to .whl file> |
- | === 0.2) Hardwareseitige Schritte === | + | cd ~ |
- | - Die flachen und Referenzsensoren zeichnen sich durch mehrere Merkmale aus, die **ALLE** bekannt sein müssen, aber leicht herauszufinden sind: | + | sudo chmod 666 / |
+ | </ | ||
+ | === 0.2.) Hardwareseitige Schritte === | ||
+ | - Die flachen | ||
- die ID, die an jedem Kabel gekennzeichnet ist | - die ID, die an jedem Kabel gekennzeichnet ist | ||
- | - die Position, | + | - die Position, |
- | - Das Koordinatensystem kann man sich legen wie man will, bis jetzt war es immer in Einheiten von Millimetern. Steht man vor dem Submodul ist der Koordinatenursprung an der hinteren unteren rechten Ecke der Alveole. Es handelt sich um ein linkshändigen Koordinatensystem. Die Positionen kann man sich weiter unten am Foto klar machen. | + | - Das Koordinatensystem kann man sich legen wie man will, bis jetzt war es immer in Einheiten von Millimetern. Steht man vor dem Submodul ist der Koordinatenursprung an der hinteren unteren rechten Ecke der Alveole. Es handelt sich um ein linkshändigen Koordinatensystem. |
- der Channel, an dem der Sensor angeschlossen ist | - der Channel, an dem der Sensor angeschlossen ist | ||
- die Kassette, auf der sich der Channel befindet | - die Kassette, auf der sich der Channel befindet | ||
Line 27: | Line 30: | ||
- Am Terminal der Klimakammer wird " | - Am Terminal der Klimakammer wird " | ||
- Am Terminal der Klimakammer wird das Prüfgut auf den Sensor gestellt, der mit einem blau/gelben Kabel einsam mit der Kammer verbunden ist. Es gibt drei Wahlmöglichkeiten für das Prüfgut. Dass man das korrekte Prüfgut eingestellt hat, kann man überprüfen, | - Am Terminal der Klimakammer wird das Prüfgut auf den Sensor gestellt, der mit einem blau/gelben Kabel einsam mit der Kammer verbunden ist. Es gibt drei Wahlmöglichkeiten für das Prüfgut. Dass man das korrekte Prüfgut eingestellt hat, kann man überprüfen, | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 1.) Datenaufnahme | ||
+ | nachdem alle Merkmale notiert worden sind, kann der Datenaufnahmealgorithmus beginnen. In einem Python3 wird nach der Installation das Paket folgendermaßen importiert. | ||
+ | >from calibration.Datenaufnahme import * | ||
+ | Danach müssen von verschiedenen Klassen Instanzen erstellt werden: | ||
+ | * Sensor | ||
+ | * Plateau | ||
+ | * Submodule | ||
+ | * Run | ||
+ | |||
+ | * Sensor() bekommt folgende Parameter übergeben: | ||
+ | - die *eindeutige* ID, die auf dem Kabel zu finden ist | ||
+ | - ' | ||
+ | - die Zahl 1 oder 2 für AGILENT oder KEYSIGHT | ||
+ | - die Kassette: [1,2] | ||
+ | - den Channel: [1, | ||
+ | - die Position in form einer Liste, z.B: [256, | ||
+ | * Plateau() bekommt folgende Parameter übergeben: | ||
+ | - einen String, der eindeutig und in aufsteigender Reihenfolge vorkommen solle, z.B: " | ||
+ | - die Temperatur in °C als float oder int | ||
+ | - die Zeit in Sekunden, die für das Erreichen der Temperatur aufgewendet werden soll als float oder int, | ||
+ | * Submodule() bekommt folgende Parameter übergeben: | ||
+ | - einen String, der eindeutig das Submodul beschreibt | ||
+ | - eine Liste der Sensor-Instanzen (Referenzsensoren) die zum Submodul gehören | ||
+ | - eine Liste der Sensor-Instanzen (flache Sensoren) die zum Submodul gehören | ||
+ | |||
+ | * Run() bekommt folgende Parameter übergeben: | ||
+ | - eine natürliche Zahl, mit der die Verzeichnisse für die Datenaufnahme erstellt werden | ||
+ | - eine liste, die **ALLE** Sensor-Instanzen enthält | ||
+ | - eine liste, die **ALLE** Plateau-Instanzen enthält, in der **gewünschten** Reihenfolge der Temperaturanfahrten | ||
+ | - eine liste, die **ALLE** Submodule-Instanzen enthält | ||
+ | |||
+ | All diese Klassen besitzen zudem den Parameter ' | ||
+ | Die Datenaufnahme wird gestartet, indem von der Instanz von Run() die Methode run(sudo = True) aufgerufen wird. | ||
+ | |||
+ | === Beispielhafter Code: === | ||
+ | <code python> | ||
+ | from calibration.Datenaufnahme import * | ||
+ | S001 = Sensor(" | ||
+ | S002 = Sensor(" | ||
+ | S003 = Sensor(" | ||
+ | S004 = Sensor(" | ||
+ | S005 = Sensor(" | ||
+ | S006 = Sensor(" | ||
+ | S007 = Sensor(" | ||
+ | S008 = Sensor(" | ||
+ | S009 = Sensor(" | ||
+ | S010 = Sensor(" | ||
+ | P001 = Sensor(" | ||
+ | P002 = Sensor(" | ||
+ | P003 = Sensor(" | ||
+ | P004 = Sensor(" | ||
+ | |||
+ | S011 = Sensor(" | ||
+ | S012 = Sensor(" | ||
+ | S013 = Sensor(" | ||
+ | S014 = Sensor(" | ||
+ | S015 = Sensor(" | ||
+ | S016 = Sensor(" | ||
+ | S017 = Sensor(" | ||
+ | S018 = Sensor(" | ||
+ | S019 = Sensor(" | ||
+ | S020 = Sensor(" | ||
+ | P005 = Sensor(" | ||
+ | P006 = Sensor(" | ||
+ | P007 = Sensor(" | ||
+ | P008 = Sensor(" | ||
+ | |||
+ | S021 = Sensor(" | ||
+ | S022 = Sensor(" | ||
+ | S023 = Sensor(" | ||
+ | S024 = Sensor(" | ||
+ | S025 = Sensor(" | ||
+ | S026 = Sensor(" | ||
+ | S027 = Sensor(" | ||
+ | S028 = Sensor(" | ||
+ | S029 = Sensor(" | ||
+ | S030 = Sensor(" | ||
+ | P009 = Sensor(" | ||
+ | P010 = Sensor(" | ||
+ | P011 = Sensor(" | ||
+ | P012 = Sensor(" | ||
+ | |||
+ | |||
+ | sentinelsS1 = [S001, S002, S003, S004, S005, S006, S007, S008, S009, S010] | ||
+ | flatsS1 = [P001, P002, P003, P004] | ||
+ | |||
+ | sentinelsS2 = [S011, S012, S013, S014, S015, S016, S017, S018, S019, S020] | ||
+ | flatsS2 = [P001, P002, P003, P004] | ||
+ | |||
+ | sentinelsS3 = [S021, S022, S023, S024, S025, S026, S027, S028, S029, S030] | ||
+ | flatsS3 = [P001, P002, P003, P004] | ||
+ | |||
+ | |||
+ | pl_stay = 4.5*3600 | ||
+ | PL_01 = Plateau(" | ||
+ | PL_02 = Plateau(" | ||
+ | PL_03 = Plateau(" | ||
+ | PL_04 = Plateau(" | ||
+ | PL_05 = Plateau(" | ||
+ | PL_06 = Plateau(" | ||
+ | PL_07 = Plateau(" | ||
+ | PL_08 = Plateau(" | ||
+ | PL_09 = Plateau(" | ||
+ | PL_10 = Plateau(" | ||
+ | PL_11 = Plateau(" | ||
+ | |||
+ | |||
+ | plateaulist = [PL_01, PL_02, PL_03, PL_04, PL_05, | ||
+ | | ||
+ | |||
+ | sensorlist = [*sentinelsS1, | ||
+ | *sentinelsS2, | ||
+ | *sentinelsS3, | ||
+ | |||
+ | submodulelist = [ | ||
+ | Submodule(' | ||
+ | Submodule(' | ||
+ | Submodule(' | ||
+ | ] | ||
+ | |||
+ | |||
+ | R = Run(125, sensorlist=sensorlist, | ||
+ | information=' | ||
+ | R.run(sudo=True) | ||
+ | </ | ||
+ | |||
+ | Nachdem das Skript startet, werden laufend die Widerstände der übergebenen Temperatursensoren aufgezeichnet und in entsprechende Dateien geschrieben. | ||
+ | |||
+ |
lab_devices/climat_chamber.1601145661.txt.gz · Last modified: (external edit)