Übersicht über verbaute Aktorik und Sensorik in Tabellenform

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen

Florian Todenhagen, 14.02.2023

In der labortechnischen Maschine soll ein Drucksensor verbaut werden, welche den Leitungsdruck erfasst. Dieser muss auch in die Betriebssoftware implementiert werden.

Florian Todenhagen, 08.01.2023

Es wurden Festdrosseln in der labortechnischen Espressomaschine durch zwei elektronische Dosierventile [AVS-Römer, Seite 257] und eine manuelle Drosseln [AVS-Römer, Seite 119] mit Schrittmotor (SM149-25T-43) ersetzt. Diese werden über die hinzugefügte Schrittmotorplatine angesteuert. elektronische Dosierventile:

Pumpen-Bypass - Motor 4
Mischer/Kaltwasserstrang - Motor 6

man. Drossel mit Schrittmotor
Brühgruppe - Motor 5

Jan Budnick, 07.06.2022

Die Belegung der Sensoren kann sich noch ändern, eine geplante Änderung ist das Anschließen eines dritten Drucksensors, der z.B. hinter der Pumpe Montiert werden kann. Da keine weiteren Plätze für die Spannungsmessung mehr frei sind muss hierfür der Anschluss des Leitwertsensor verwendet werden.

Budnick Jan, 03.04.2022

Magnetventile

Ventilbezeichnung MCP Pin
Y01 1
Y02 15
Y03 14
Y04 0
Y05 9
Y06 13
Y07 12
Y08 11
Y09 8
Y10 10

Die Magnetventile werden über einen MCP23017-Expander Baustein betrieben. Dafür muss zuerst die I2C Kommunikation aufgebaut werden. Danach werden die Pins als Output definiert und 0 gesetzt.

from machine import Pin
from machine import SoftI2C
import mcp23017
i2c_exp = SoftI2C(scl = Pin("PB6"), sda = Pin("PB7"), freq=400000)
gpio_exp = mcp23017.MCP23017(i2c_exp, 0x20)
gpio_exp.porta.mode = 0b00000000
gpio_exp.portb.mode = 0b00000000
gpio_exp.porta.gpio = 0b00000000
gpio_exp.portb.gpio = 0b00000000

Mit gpio_exp.pin(8, value = 1) kann der externe Pin (8) 1/High gesetzt werden. mit value=0 wird er wieder 0/Low gesetzt. Die erste Zahl wiederum gibt den anzusteuernden Pin-Bereich von 0 bis 15 an.

Pumpe und Dosierventil

Pumpe und Dosierventil werden über einen externen DAC gesteuert, dessen Werte können zwischen 0-4095 eingestellt werden. Dies entspricht etwa 0 bis 10 V. Wird ein Sollwert von x mV angegeben, kann dieser nach der Formel y=x*4096/10000 in einen DAC Wert umgewandelt werden. Es ist zu beachten, dass das Dosierventil Steuerspannungen von 0 bis 10 V annimmt, die Pumpe jedoch nur von 0 bis 5 V. Dieser DAC-Baustein trägt den Namen MCP4725 und wird Folgendermaßen initialisiert und angesprochen:

from machine import Pin
from machine import SoftI2C
import mcp4725
i2c_dac = SoftI2C(scl = Pin("PB10"), sda = Pin("PB9"), freq=400000)
 dosierventil = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[1])
dosierventil.write(0)
pumpe = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[0])
pumpe.write(0)

Über pumpe.write(y) bzw dosierventil.write(y) kann die Ausgangspannung am DAC eingestellt werden.

Boilerheizspirale

Die Boilerheizspirale wird über ein externes XSSR gesteuert, welches wiederum von einem PWM-Signal nach folgendem Schema angesteuert wird:

from machine import Pin
from pyb import Timer
timer1 = Timer(1, freq = 8)
PWM_Boiler = timer1.channel(4, mode = Timer.PWM, pin = Pin("PA11"))
PWM_Boiler.pulse_width_percent(0)

Über PWM_Boiler.pulse_width_percent(z) kann der Dutyclyce in z % gesteuert werden.

Sensoren

Text der Überschrift
Sensorpinbelegung Sensor Pin
T_Boiler PA7
T_Eingang PA4
Leitwert PC2
P_Boiler_Alt PB1
T_Mischer PA5
T_Wasserwendel PA0
P_Bruehgruppe PC3

Für die Sensoren gibt es Drei verschiedene Vorgehensweisen:

1. Kurzschlussdetektion: Der Füllstandssensor funktioniert mit Kurzschlussdetektion, er kann also nur die Werte 0 und 1 annehmen

from machine import Pin
Fuell_1 = Pin("PB15",Pin.IN, Pin.PULL_UP)

2. Interrupt: Das Flowmeter sendet pro mL 39,9 Signale diese lösen dann mit folgendem Code Interrupts aus, welche in flow1_callback verabeitet werden:

from machine import Pin
FLOW1=Pin("PA12",Pin.IN)
FLOW1.irq(trigger=Pin.IRQ_FALLING, handler=flow1_callback)

3. Die meisten Sensoren werden über ADC-Pins ausgelesen, welche ihre Signale von Messkarten erhalten, dabei wird nach folgendem Schema vorgegangen:

from machine import Pin
from pyb import ADC
T_Boiler = ADC("PA7")

Dabei gibt T_Boiler.read den ADC-Wert wieder, welcher in einen folgendermaßen in einen Spannungswert (in mV) verwandelt werden kann. mV=T_Boiler.read()*3300/4096 Zusätzlich zur T_Wasserwendel muss angemerkt werden, dass dies die Temperatur an verschiedenen Stellen sein kann. In der Labortechnischen Espressomaschine ist damit zz. stattdessen die Wassertemperatur kurz vor der Brühgruppe gemeint.

Budnick Jan 14.03.2022

Ziel ist es eine Übersicht zu erstellen, die für das Programmieren notwendig ist. Dies beinhaltet Sensoren, Aktoren und wie man sie anspricht