IDS2 mit Arduino steuern

Alles zum Thema Brauanlagen-Selbstbau. Für Steuerung und Automatisierung bitte das Unterforum "Automatisierung" nehmen.
Antworten
noeden
Neuling
Neuling
Beiträge: 4
Registriert: Donnerstag 8. April 2021, 09:28
Wohnort: Bonn

IDS2 mit Arduino steuern

#1

Beitrag von noeden »

Guten Morgen,

erstmal vielen Dank für dieses unglaubliche Forum. Ich bin neu in der Brauszene und werde nächsten Monat das erste mal brauen. Auf der Suche nach einer externen Induktionskochplatte für unsere erste Brauung, bin ich auf dieses Forum gestoßen. Ich interessiere mich schon länger dafür, eine Induktionskochplatte mit einem PID zu versehen, auch für andere Anwendungsgebiete in der Küche wie zum Beispiel das Frittieren. Dementsprechend bin ich total euphorisch, bin aber nicht nur im Brauen total unbedarft, sondern auch was Mikrocontroller angeht. Ich habe hier schon folgende Threads studiert, bin aber etwas überfordert:

CraftBeerPi Plugin für Induktionskochfeld via Serielle Schnittstelle
MQTTDevice Version 2 & Platine
Temperaturregelung für die IDS2 ohne CBPi

Mein Wunschzielzustand ist folgender:

Ich habe eine wasserdichte "Box", die ich an das IDS2 stöpseln kann. Darin befindet sich ein Arduino, der zwei Betriebsmodi hat.

- Heizstufe
- Ziel-Temperatur

Beide können sowohl direkt an der Box, als auch über MQTT ausgewählt und gesteuert werden. An dieser Box ist eine wasserdichte Sonde, welche bis zu 300 Grad Celsius abkann. Per MQTT wird die aktuelle Temperatur veröffentlicht. Im Modus Zieltemperatur wird sie zusätlich in einem Autotune PID verwendet, um die Heizstufe zu steuern. Sie soll einen Luftdrucksensor haben, um die Siedetemperatur bestimmen zu können.

Im Gegensatz zu Matschies Lösung soll die PID-Implementierung bei mir auf dem Arduino passieren.
Im Gegensatz zu JackFrosts Implementierung soll meine keine Rezepte unterstützen und auf einem Arduino basieren.

Dazu habe ich jetzt ein paar offene Fragen. Ich bin nicht Lesefaul, bin also auch für Links sehr dankbar.

Hat mittlerweile jemand eine Bezugsquelle für die Kabel zwischen Induktionsplatte und Steuerungsbox gefunden, bei der man nicht 100 Stück abnehmen muss? Alternative ist, wenn ich das richtig verstanden habe, dass das aktuelle Kabel entweder in der Platte oder in dem Steuerelement entfernt wird. Kann man da vielleicht eine Steckverbindung zwischenpacken, sodass man zwischen Arduino und originärem Steuerelement wechseln kann?

So wie ich das verstanden habe, ist für mich eine gute Ausgangslage das MQTTDevice von Innuendo, allerdings hat er eine eigene Platine, richtig? Wenn ich das mit einem Arduino umsetzen möchte, sollte ich also lieber auf dem von Matschie basieren? Dort habe ich als letzte Version diese im Anhang gefunden, ist das echt die Letzte? https://hobbybrauer.de/forum/viewtopic. ... 79#p294779

Bei der Auswahl von dem Temperatursensor/Fühler bin ich total überfordert. Wie suche ich danach? Bei Mouser ist das total schwierig. Ich habe unter anderem den hier gefunden: https://de.farnell.com/ist-innovative-s ... dp/2191843. Da kann man aber keinen Fühler anschließen, oder?

Zu guter letzt: Wo bestelle ich meine Teile am Besten, wenn ich sie schnell haben möchte? Habt ihr da Tips? Hab viel von mouser.de gelesen.

Vielen Dank schonmal, tut mir Leid, wenn ich mich dumm anstelle.
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: IDS2 mit Arduino steuern

#2

Beitrag von JackFrost »

Hi,

bei deinem Vorhaben eine Steuerung für eine IDS2 auf eine Arduino it AVR Kern zu portieren , musst du einige Dinge beachten :

Der AVR hat nur 8 Bit und läuft mit maximal 20 MHz. Der ESP8266 aus dem MQTT-Device hat 80 MHz und 32 bit. Der SAMC21 von meinem Projekt hat 48 MHz und 32 bit.

Für einen einfacher Vergleich ob die Zeitspanne für etwas abgelaufen ist, mit einem 32bit Integer braucht der AVR 14 Takte. Die beiden anderen vermutlich 2 Takte. Abzüglich der Waitstates durch den Flash sind beide CPUs also 8 - 10 schneller bei allen Berechnungen.

Bei Fließkomma ( float und double ) wird sich das sehr bemerkbar machen. Daher muss dein Code dann sehr schnell sein und keine unnötigen warte Passagen haben. Für das Protokoll zur IDS2 darfst also kein Delay machen. Ich ein etwaiger DS18B20 sofern du evtl. einen für eine Ausgleichstemperatur brauchts, darfst du nicht mit delay abfragen, das muss dann schon eher über ein paar Bauteile und die UART Schnittstelle laufen und dann per Interrupt.

Display sollte was monochromes sein, das nur 1 bit/Pixel braucht. alles andere braucht zu viel Zeit. Mein Display kann mit 3 Bit Farbe angesteuert werden, damit passen 2 Pixel ein ein Byte. Der AVR hat leider keinen DMA Modus daher kannst du nichts anderes machen während das Display beschrieben wird.

Ich hab einen PT100 bei dem ich mit der kubischen Formel die Temperatur berechne, das braucht ca. 300 µs. Bei einem AVR wären das dann schon 3 ms. klingt nicht viel, muss aber zwischen den Daten für die IDS2 rechnen, und darauf achten, das sich keine Variable während der Berechnung ändert. Eine 8 bit CPU braucht 4 zugriffe für eine 32 bit Variable. Daher muss alles gesperrt werden was auf die Variable schreiben kann während die Variable verarbeitet wird. Sonst könnten sich die letzten 8 bit ändern während die ersten 24 noch der alte Inhalt sind. Stichwort ist hier atomarer Zugriff.

Schau das du so viel wie möglich mit Festkomma rechnest, das braucht weniger CPU Zeit. Float braucht lange auf CPUs ohne FPU.

Bei dem Sensor, nimm was fertiges das schon in einer Hülse verbaut ist, du wirst nicht Glücklich selber einen Sensor in eine Hülse zu verbauen, so das er schnell ist und die Eigenerwärmung klein ist.
Bei Thermoelementen darfst du die Kabel nur mit den originalen Materialen verlängern, da diese ja nur die Temperaturdifferenz zwischen der heißen und der Ausgleichsseite messen. Der Fühler auf der Ausgleichsseite muss dann entsprechend mit gemessen werden.
Thermoelemente sind empfindlich für Störeinstrahlungen. So ein Element hat eine Thermospannung von 39 µV/K.
Bis 300°C wird es aber schwer ein passenden Sensor zu finden.
Sensorshop24 hat eine gute Auswahl an Fühlern die schon in Hülsen sind. Bei 300 °C sind die Kabel auch nicht unwichtig und billig.

Wenn du MQTT willst brauchst du eh einen ESPxx der die WLAN Verbindung macht. Wenn der an den Arduino angeschlossen wird, dann brauchst du ein gutes Protokoll, das nicht zu lange ist.

Das MQTT Device auf einen "Arduino" zu portieren wird nicht leicht.
Wenn du eh MQTT nutzen willst brauchst du ja noch einen Broker und wenn das ein Raspi sein wird, kannst du dir das MQTT-Device mit CBPI ja mal überlegen und dann nebenbei an deinem Projekt arbeiten und wenn nötig dann auf deine Lösung wechseln.

Ich bestelle bei Mouser, aber ich löte mir die Sachen auch selber und brauche einen Händler der fast alles auf Lager hat. Conrad hat nicht mehr so viel und der Reichelt hat leider auch nicht das was ich meistens brauche.

Das Kabel für die Platte bekommt man nur extra wenn man eine Ersatzsteuerung kauft. Das gibt es leider so nicht.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
Benutzeravatar
Braufex
Posting Freak
Posting Freak
Beiträge: 2500
Registriert: Montag 6. August 2018, 22:22
Wohnort: Kreis Augsburg

Re: IDS2 mit Arduino steuern

#3

Beitrag von Braufex »

noeden hat geschrieben: Donnerstag 8. April 2021, 09:54 Hat mittlerweile jemand eine Bezugsquelle für die Kabel zwischen Induktionsplatte und Steuerungsbox gefunden, bei der man nicht 100 Stück abnehmen muss? Alternative ist, wenn ich das richtig verstanden habe, dass das aktuelle Kabel entweder in der Platte oder in dem Steuerelement entfernt wird.
JackFrost hat geschrieben: Donnerstag 8. April 2021, 21:50 Das Kabel für die Platte bekommt man nur extra wenn man eine Ersatzsteuerung kauft. Das gibt es leider so nicht.
Ersatzsteuerung für die IDS2 incl. Versand und MwSt ca. 36 €
Hab ich wegen einer defekten Steuerung gebraucht (Glasbruch).
Falls Du dazu Infos brauchst, melde Dich.

Gruß Erwin
nPlusEins
Posting Senior
Posting Senior
Beiträge: 334
Registriert: Sonntag 7. Februar 2016, 17:03
Wohnort: Karlsruhe

Re: IDS2 mit Arduino steuern

#4

Beitrag von nPlusEins »

Die Stecker gibts doch bei Aliexpress oder sind das nicht die richtigen?
https://www.aliexpress.com/item/32850880629.html

Von Arduino würd ich auch eher abraten - auch wenn es Leistungsmäßig schon reicht. Es laufen auch viel komplexere Dinge ordentlich damit.
Heutzutage lieber auf ESP8266 / ESP32 setzen. z.B. mit der Platine von von JackFrost oder was eigenes auf Lochraster aufbauen + Gehäuse aus dem 3D Drucker.
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: IDS2 mit Arduino steuern

#5

Beitrag von JackFrost »

Die Pins der IDS2 sind leider anders angeordnet als bei den M12 Steckern. Die haben da scheinbar eine Sonderlösung.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
noeden
Neuling
Neuling
Beiträge: 4
Registriert: Donnerstag 8. April 2021, 09:28
Wohnort: Bonn

Re: IDS2 mit Arduino steuern

#6

Beitrag von noeden »

nPlusEins hat geschrieben: Donnerstag 8. April 2021, 22:47 Die Stecker gibts doch bei Aliexpress oder sind das nicht die richtigen?
https://www.aliexpress.com/item/32850880629.html

Von Arduino würd ich auch eher abraten - auch wenn es Leistungsmäßig schon reicht. Es laufen auch viel komplexere Dinge ordentlich damit.
Heutzutage lieber auf ESP8266 / ESP32 setzen. z.B. mit der Platine von von JackFrost oder was eigenes auf Lochraster aufbauen + Gehäuse aus dem 3D Drucker.
@JackFrost: Vielen vielen Dank, dass Du mir das hier so vorkaust. Da ich schon Software-Entwickler bin, der halt nie was mit Elektrotechnik zu tun hatte, verstehe ich total deine Kritik und die Herausforderungen, die du mir schilderst, hatte aber nichtmal auf die Taktfrequenz geachtet. Vielleicht schaue ich mir doch mal andere Mikroprozessoren an und klemme mir die erstmal über ein Steckbrett zusammen. Charmant an dem Arduino finde ich die unglaublich geringe Einstiegshürde für Noobs wie mich.

Bei der Thermometerfrage habe ich gestern große Fortschritte gemacht. Ich habe eine PT1000 mit drei Adern im Blick. Mein größtes Problem war es am Anfang tatsächlich zu raffen, dass die Sensoren entweder blank verkauft werden oder in verschiedenen Hülsen etc. auch die grundsätzliche Unterscheidung zwischen analog und digital.

Das PT1000 Vergleiche ich heute noch mit K-Type Thermocouples. Bei letzteren hatte ich gelesen, dass sie tückisch seien, zumindest, wenn man die Schaltung selbst bauen wollte. Vorteil sehe ich dort die ganzen Sonden, die alle schon einen Stecker haben. Den Punkt mit der Verlängerung verstehe ich natürlich, sehe ich jetzt aber nicht als Hindernis, aber natürlich mega wichtig zu beachten.
nPlusEins
Posting Senior
Posting Senior
Beiträge: 334
Registriert: Sonntag 7. Februar 2016, 17:03
Wohnort: Karlsruhe

Re: IDS2 mit Arduino steuern

#7

Beitrag von nPlusEins »

Die Einstiegshürde mit dem ESP8622 / ESP32 muss nicht unbedingt größer sein als mit einem klassischen Atmel 8bit Arduino. Im Grunde sind das alles Mikrocontroller, nur ESP8622 / ESP32 ist viel leistungsfähiger. Du hast hier Wlan (und Bluetooth) direkt an Board, was gerade für so eine Steuerung in Zukunft vielleicht praktisch ist.

Eigentlich fast alles was mit dem Arduino geht kann man auch mit anderen uC genauso einfach machen. Mehre Mikrocontroller kann man verbinden, aber das erhöht die Komplexität gewaltig und ergibt in dem Fall auch kein Sinn.

Es gibt natürlich unterscheide im Detail aber für die meisten Projekte sind die nicht relevant. Größter Unterschied ist 3.3v statt 5v Logik Level. Auf vielen ESP Boards läuft bei Bedarf auch der Arduino Core und man kann diese auch aus der Arduino IDE programmieren wenn man will.

Wenn du schon Erfahrung in der Software Entwicklung hast solltest du aber lieber mal in Richtung PlatformIO statt Arduino IDE schauen. Da gibts auch massig Tutorials. Du könntest auch erstmal mit Arduino + PlatformIO starten und wenn du damit vertraut bist kannst du das ganz leicht auf ein ESP-Board übertragen.
Zuletzt geändert von nPlusEins am Freitag 9. April 2021, 15:10, insgesamt 1-mal geändert.
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: IDS2 mit Arduino steuern

#8

Beitrag von JackFrost »

Es gibt einen Arduino mit einem ATSAMD21 drauf, das ist auch eine 32 Bit Cortex M0 CPU.
Der hat aber nur 3,3V. Da muss man bisserl aufpassen.

Wegen dem Drucksensor und dem wasserdichten Gehäuse, es kann sein, das der gemessen Druck dann nicht mehr der atmosphärische ist.
Wenn das Gehäuse also wasserdicht sein soll, sollte der Sensor draußen sein.

Ich würde eher einen Pt100 nehmen, der ist störsicherer. Ich hab den in Vierleiter, der Preis zum Dreileiter war nur minimal.
Der MAX31865 gibt es auch bei ebay als Breakout. Aber die haben für den Referenzwiderstand einen Standardwiderstand mit 5% Toleranz.
Ich hab da einen mit 0,1% genommen. Ich hab mit dem IC, dem Referenzwiderstand von 400R und einem Vierleiter Pt100 mit Eis in der Thermoskanne einen Fehler von 0,2K gehabt, ohne das ich was korrigiert hatte. Bei siedendem Wasser hatte ich 0,6 K

Bei einem PT1000 musst du dir die Formel R->T selber herleiten, für einen PT100 kannst du folgendes verwenden :
void calc_temperature(float ratio,uint16_t reference_value,float *temperature, uint8_t calculation )
{
switch(calculation)
{
case fast_mode:
{
ratio /=32;
*temperature = ratio - 256;
}
break;
case linear_mode:
{
ratio = ratio / 32767 * reference_value;
*temperature =((ratio / 100) - 1) / 0.00385f - 0.19f;
}
break;
case quadratic_mode:
{
ratio = ratio / 32767 * reference_value;
*temperature = -244.83f + 2.3419f * ratio + 0.0010664f * ratio * ratio;
}
break;
case cubic_mode:
{
ratio = ratio / 32767 * reference_value;
*temperature =(float)(-247.29 + (double)ratio * ( 2.3992 + (double)ratio * (0.00063962 + 1.0241E-6 * (double)ratio)));
}
break;
default:
{
ratio = ratio / 32767 * reference_value;
*temperature =((ratio / 100) - 1) * 0.00385f - 0.19f;
}
break;
}

}
Gilt nur für den MAX31865 und Fastmode geht nur wenn der Referenzwiderstand 400R ist. Ich nutze die Cubic- Das ganze geht dann noch in einen gleitenden Mittelwert mit 12 Werten ein. Durch die 15 Hz Samplefrequenz hab ich den neuen Wert in weniger als 1s.

Bei dem Thermoelementen musst die Ausgleichstemperatur messen und dein Ergebnis ist nur so genau wie dieser Wert. Und bis zu diesem Punkt darfst du bei Typ K nur Ni und NiCr Leitungen verwenden, sonnst mist du nicht am Ausgleichspunkt.
Auf Einstrahlung achten, hier gab es schon mal einen der hatte 7K Delta wenn das Kabel zu nah an der Induktionsplatte war.

Ich hab WLAN und Steuerung getrennt, denn wenn es im ESP mal eine Sicherheitslücke geben sollte, kann ich den einfach austauschen, Die Daten gehen binär per UART hin und her. Mit den Steuerzeichen STX und ETX und 0x10 als Maskierung. Die Doku in der Steuerung von mir hat 0,5 kB das auf ASCII aufblasen würde die Zeit für das Senden nur deutlich verlängern und der Aufwand ist höher. Da in den Daten eine CRC32 drinnen ist kann auch geprüft werden ob alles richtig angekommen ist. Zur Not geht das dann auch per DMA dann hat die CPU keine Arbeit.

Auch 1-Wire hab ich über ein Puffer-IC an den UART gehängt, damit kann ich dann, sofern es nötig ist per DMA machen. Und ich muss mich nicht mit dem Timing rumschlagen. Es wird auch kein Timer unnötig verwendet.

Entprellung ist wichtig, Der Code von Peter Dannegger ist da super und schnell.
Müsste für eine Cortex M0 portiert werden. Ich hab da in dem Timer auch noch den Drehencoder mit drinnen.
Für die Kommunikation von und zur IDS2 hab ich je einen Timer. Der Timer für das Empfangen kann direkt Pulslänge und Frequenz messen, damit ist die Dekodierung sehr einfach. Ich meine der SAMD21 sollte das auch können. Wie das mit dem Arduinoframework geht müsstest du schauen, ich schreib im Atmel Studio direkt auf der Hardware. Ich nutze nur die CMSIS Headerdateien.
void TC0_Handler()
{
static bool wait_for_preamble = true;
static uint16_t pulse = 0;
static uint16_t period = 0;
if (TC0->COUNT16.INTFLAG.bit.OVF) {
TC0->COUNT16.INTFLAG.bit.OVF = 1;
Error |= 0x80;
}
if (TC0->COUNT16.INTFLAG.bit.MC0) {

//The interrupt flag is cleared by reading CC
Error &= ~0x80;
pulse = TC0->COUNT16.CC[1].bit.CC;
period = TC0->COUNT16.CC[0].bit.CC;
if(wait_for_preamble)
{
if(period >= 0x3CD0 && period <= 0x4A54) // Detect preamble
{
wait_for_preamble = false;
if(data_IDS_a)
{
data_IDS[0] = 0;
}
else
{
data_IDS[1] = 0;
}
}
}
else
{
if(period <0x2000) // Data
{
if(data_IDS_a)
{
if(period >= 0x500 && period <= 0xB00)
{
data_IDS[0] <<= 1;
}
if(period >= 0x14a0 && period <= 0x1B75)
{
data_IDS[0] <<= 1;
data_IDS[0] |= 1;
}
}
else
{
if(period >= 0x500 && period <= 0xB00)
{
data_IDS[1] <<= 1;

}
if(period >= 0x14a0 && period <= 0x1B75)
{
data_IDS[1] <<= 1;
data_IDS[1] |= 1;
}
}
}
if(period >= 0x6030 && period <= 0x84D0) // End of Frame
{
wait_for_preamble = true;
data_IDS_ready = true;
data_IDS_a ^= 1; // Toggle Data destination
}
}
//if(debug_LED)
//PORT->Group[1].OUTTGL.reg = LED_BLUE;
//else
//PORT->Group[1].OUTCLR.reg = LED_BLUE;
//Error = Error_FF;
}

}
Die Magic Numbers muss noch durch Defines ersetzen, damit man in einem Jahr noch weis was gemeint ist. Läuft in einem IRQ mit niedriger Prioritöt ab.

Der ATMEGA hat leider keine Abstufung der IRQs. Mit AVR Kern kann das erst das ATxMEGA. Den gibt es aber nicht als Arduino.
Beim ESP hab ich keine Ahnung, da ich hier nur ein paar einfache Sachen gemacht habe. Bin eher Fit auf Atxmega und ein paar ARMs. Vorallem kann ich da direkt auf der Hardware debuggen.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
nPlusEins
Posting Senior
Posting Senior
Beiträge: 334
Registriert: Sonntag 7. Februar 2016, 17:03
Wohnort: Karlsruhe

Re: IDS2 mit Arduino steuern

#9

Beitrag von nPlusEins »

JackFrost hat geschrieben: Freitag 9. April 2021, 05:18 Die Pins der IDS2 sind leider anders angeordnet als bei den M12 Steckern. Die haben da scheinbar eine Sonderlösung.

Gruß JackFrost
Stimmt leider, entspricht keinem Standard für M12 Steckverbinder.
War nicht einfach, aber ich glaube ich hab den Hersteller der Stecker gefunden. Stamm wohl von Jianhong365 / Kenhon Technology aus Shenzen:

http://www.jianhong365.com/Products/six ... ngmuc.html
https://www.waterproofplugs.com/oem-ip6 ... -products/

Leider nirgendwo im freien Verkauf. Da müsste man wohl eine größere Menge abnehmen.
noeden
Neuling
Neuling
Beiträge: 4
Registriert: Donnerstag 8. April 2021, 09:28
Wohnort: Bonn

Re: IDS2 mit Arduino steuern

#10

Beitrag von noeden »

@ nPlusEins: Ich habe mich dank dir dazu entschieden es doch mit einem ESP8622 (bzw dem Nachfolger) und ESP32 zu machen. (Ich habe die hier bestellt, ich hoffe ich habe dank lauter Bäumen jetzt nicht das falsche gekauft https://www.amazon.de/gp/product/B074RG ... UTF8&psc=1)

@JackFrost: Vielen Dank, ich hatte schon einen PT1000 im Warenkorb, mit dem sollte das doch genauso funktionieren, oder (so lange man den richtigen MAX31865 auswählt)? Im Sensorshop habe ich mir jetzt zwei recht teure ausgesucht, welche auch IP68 erfüllen und die Temperaturen aushalten. Diese würde ich dann in 4-Leiter mit 2m Kabellänge und wasserdichter PFA-Ummantelung kaufen. Da die Versandkosten nochmal reinhauen, will ich sicher gehen, ob das so klar geht. Wäre nett, wenn Du einmal drauf schauen könntest.

https://www.sensorshop24.de/kabelfuehle ... nsprechend
https://www.sensorshop24.de/kabelfuehle ... messer-5mm

Da frage ich mich jetzt also noch:

- schnellansprechend oder nicht?
- PT100 oder PT1000?
- Welchen Nachteil hätten 1/3 DIN? Die sind genauso teuer wie Klasse A.

Wenn die bestellt sind, suche ich mir den passenden MAX31865. Da stelle ich mich aber schon wieder blöd an.

Zu dem hier finde ich keine Specs: https://www.amazon.de/HUABAN-MAX31865-P ... 224&sr=8-6

Der hier hat schonmal eine 0,1% Toleranz, allerdings einen Widerstand von 4300 Ohm. Aber das macht nichts, oder? Dann muss ich nur den Paramter für calc_temperature anpassen.
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: IDS2 mit Arduino steuern

#11

Beitrag von JackFrost »

noeden hat geschrieben: Samstag 10. April 2021, 13:38 @ nPlusEins: Ich habe mich dank dir dazu entschieden es doch mit einem ESP8622 (bzw dem Nachfolger) und ESP32 zu machen. (Ich habe die hier bestellt, ich hoffe ich habe dank lauter Bäumen jetzt nicht das falsche gekauft https://www.amazon.de/gp/product/B074RG ... UTF8&psc=1)

@JackFrost: Vielen Dank, ich hatte schon einen PT1000 im Warenkorb, mit dem sollte das doch genauso funktionieren, oder (so lange man den richtigen MAX31865 auswählt)? Im Sensorshop habe ich mir jetzt zwei recht teure ausgesucht, welche auch IP68 erfüllen und die Temperaturen aushalten. Diese würde ich dann in 4-Leiter mit 2m Kabellänge und wasserdichter PFA-Ummantelung kaufen. Da die Versandkosten nochmal reinhauen, will ich sicher gehen, ob das so klar geht. Wäre nett, wenn Du einmal drauf schauen könntest.

https://www.sensorshop24.de/kabelfuehle ... nsprechend
https://www.sensorshop24.de/kabelfuehle ... messer-5mm

Da frage ich mich jetzt also noch:

- schnellansprechend oder nicht?
- PT100 oder PT1000?
- Welchen Nachteil hätten 1/3 DIN? Die sind genauso teuer wie Klasse A.
1/3 DIN ist genauer als Klasse A, daher würde ich den 1/3DIN nehmen. 1/10 DIN ist wiederum ungenauer.

PT100 ist normal für den Temperaturbereich den du willst besser.

Da du den Fühler in eine Thermohülste steckst, wird der schnellansprechenden mehr Luft haben -> das ansprechen wird schlechter und auch die Eigenerwärmung spielt hier eine größere Rolle.

Optimal ist ein Fühler der direkt im Medium ist. Ich hab den als Pt100 mit 1/3DIn Vierleiter. In den Videos von mir kannst du sehen wie schnell der anspricht.
noeden hat geschrieben: Samstag 10. April 2021, 13:38 Wenn die bestellt sind, suche ich mir den passenden MAX31865. Da stelle ich mich aber schon wieder blöd an.

Zu dem hier finde ich keine Specs: https://www.amazon.de/HUABAN-MAX31865-P ... 224&sr=8-6

Der hier hat schonmal eine 0,1% Toleranz, allerdings einen Widerstand von 4300 Ohm. Aber das macht nichts, oder? Dann muss ich nur den Paramter für calc_temperature anpassen.
Bei dem zweiten hast du keinen Link eingefügt. Der erste hat einen 431 -> 430r aus der E24 Reihe vermutlich 5% Toleranz. 4k3 ist für einen Pt100 total ungeeignet. Damit hast du nur noch 1/10 des Messtroms und damit nur noch 1/10 des Bereichs des ICs. Die 4k3 sind für einen Pt1000. Ich hab einen 400R für ~1 € verbaut.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: IDS2 mit Arduino steuern

#12

Beitrag von JackFrost »

Wobei 1/3 DIN nur bis 250 °C in der Toleranz spezifiziert ist.

A ist von der Toleranz bis 600 °c spezifiziert, hat aber eine größere Toleranz.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
noeden
Neuling
Neuling
Beiträge: 4
Registriert: Donnerstag 8. April 2021, 09:28
Wohnort: Bonn

Re: IDS2 mit Arduino steuern

#13

Beitrag von noeden »

Alles klar, vielen Dank. Habe einen PT100 bestellt mit 1/3 DIN, über 250C ist eh nur zur Sicherheit. Hier der Link, den ich vegessen hatte.

https://eckstein-shop.de/Adafruit-PT100 ... r-MAX31865

allerdings jetzt für den PT100. Der hat 430 O. kostet aber mehr als 1 Euro :D.
Bale_96
Posting Junior
Posting Junior
Beiträge: 14
Registriert: Dienstag 6. Oktober 2020, 17:53

Re: IDS2 mit Arduino steuern

#14

Beitrag von Bale_96 »

Wenn du nicht so affin bist mit Micro Controllern und du bereits den ESP gekauft hast könntest du ihn mit microPy flashen und python bzw dessen fertige sensor module nutzen um schnell zum gewünschten Ergebnis kommen. Bevor du dir das alles selber machst kannst du es so auf eine höhere Abstraktionsebene heben und du musst dich nicht mit den ganzen DMAs, Buffern, Bit-shifting auseinander setzen. Ich würde da den Keep it simple and stupid (KISS) Approach wählen, vor allem weil das Medium relativ träge ist und daher die Geschwindigkeit absolut keine prio hat. Und MQTT ist zwar ein IoT Standard, aber der ESP ist mächtig genug um ihn über REST mit Wlan zu steuern, dann kann man sich auch eine schöne Webapp basteln die das alles visualisiert für den extra WOW Effekt.
Benutzeravatar
matschie
Posting Freak
Posting Freak
Beiträge: 673
Registriert: Samstag 17. März 2018, 17:26

Re: IDS2 mit Arduino steuern

#15

Beitrag von matschie »

Ein Arduino ist definitiv zu langsam. Der Nano, den ich am Anfang eingesetzt habe, funktioniert solange er NUR die IDS ansteuert. Seriell rein -> IDS raus. Mehr geht nicht.

Daher haben wir dann ja irgendwann auf das MQTTDevice gewechselt. Daher gibt es auch keinen neueren Code als in dem von dir verlinkten Beitrag. Der D1 Mini kann wesentlich mehr. Allerdings ist in der aktuellsten Version der Speicher von dem Ding auch schon ziemlich voll, weshalb leider keine zusätzlichen (wesentlichen) Funktionen mehr implementiert werden können.

Ich würde mir an deiner Stelle den Code des MQTTDevice2 schnappen und damit ein neues Projekt aufbauen. Die verschiedenen Aufgaben haben wir im Code ganz gut getrennt, sodass ein "zerlegen" in die für dich relevanten Funktionen möglich sein sollte. Eine eigene Platine braucht man dafür übrigens nicht, die ist nur nice to have.

Ggf. kannst du gegenüber unserer Version z.B. auch die Anzahl möglicher Sensoren und Aktoren reduzieren und dadurch Platz für die neuen Funktionen (PT100; PID Regelung) freigeben.

Allerdings ein Hinweis: Wenn du vorhast, die Weboberfläche zur Eingabe der Sollwerte etc. zu nutzen, sei dir gesagt dass die auf dem D1 Mini recht träge ist, das kann schonmal frustrierend sein. Daher nutze ich nach wie vor lieber einen RPI für das UI und die Berechnungen und der D1 ist ein reines "MQTTDevice", das nur Befehle empfängt und ausführt. Die Definition der Sensoren und Aktoren macht man so selten, da ist das mit dem langsamen Webinterface nicht so störend.
Immer eine Handbreit Bier unterm.. äh, ne das ging anders.

Allzeit Gut Sud!
Matthias
Antworten