Forum: Mikrocontroller und Digitale Elektronik uC Modul Empfehlung, Tipps für den Aufbau einer Schaltung


von Sven (elitron)


Lesenswert?

Hi.

Ich suche für folgendes Projekt eine Empfehlung für ein uC Modul mit 
niedriger Einstiegshürde:

1 Analogeingang für einen NTC 10 kOhm zur Temperaturmessung. Alternativ 
digitaler Temperatursensor wie z.B. DS18C20

1 weiterer Analogeingang zur Auswertung eines Potis.

2 Digitaleingänge für Temperatur-Vorgabe. Beide Eingänge auf LOW 
bedeutet Wert vom Analogeingang nehmen. Beide Eingänge High bedeutet: 
Wert vom Poti nehmen. Und die beiden anderen Möglichkeiten rufen 2 
Festwerte auf.

1 PWM Ausgang, der über einen Optokoppler und RC Filter das Zielgerät 
steuert. Das Zielgerät hat einen Pullup nach 3,3 V und geht dort auf 
einen Analogeingang am dortigen Controller.

Programmierung vorzugsweise über LAN oder WLAN möglich. Das kann aber 
auch über einen ISP oder RS232 Adapter erfolgen, der im LAN oder WLAN 
eingebunden ist.

Das Zielgerät setzt eine Spannung von 0 .. 3,3 V in Temperaturen von -62 
bis + 62 Grad mit einer Auflösung von 0,5 Grad um (Display-Anzeige am 
Gerät), wobei alles unter -60 und +60 als Kabelbruch oder Kurzschluss 
interpretiert wird und eine Fehlermeldung erzeugt.
Der Temperaturverlauf ist nicht komplett linear, sondern an einen NTC 
Widerstand mit 10 kOhm angepasst. (Vor allem oben und unten sind die 
Spannungswerte für die jeweiligen Temperaturen weiter auseinander bzw 
näher zusammen)

Ich habe dann ein geeignetes 10 Gang Poti statt dem NTC angeschlossen 
und bin den Bereich langsam durch gefahren, und habe dann eine Liste 
geschrieben, wo die Spannungswerte und die Temperaturen notiert sind.

Die Schaltung mit dem Optokoppler und dem Filter existiert und 
funktioniert schon. Die Frequenz und genaue Flankenzeiten sind 
unkritisch. Am Ende des Tages zählt die Spannung, die sich am Zielgerät 
am Contollereingang einstellt. Und  dort wird dann mehrfach gemessen und 
über einige Sekunden gemittelt.
Es ist so unkritisch, dass man sogar noch per Hand mit einem Taster 
gültige Temperaturwerte "reintasten" kann und es nicht auf Störung geht. 
(Wenn man ca 50/50 mit der Hand reintastet kommt man im Bereich von ca 
-7 bis +8 Grad raus)

Praktisch funktioniert es sogar schon mit der jetzigen Lösung per SPS. 
Damit kann ich, weil ich nur mit 1 Hz und 100ms Auflösung im 
Impuls-Pausenverhältnis takte, nicht jede Temperatur anfahren.
Im oberen Temperaturbereich um +20 Grad schaffe ich noch 2 Grad 
Auflösung. Im unteren Bereich bei -15 Grad geht es noch mit ca 5 Grad 
Genauigkeit. Momentan hab ich es dann also auf feste Werte im Bereich 
von -20 bis +25 Grad im 5 Grad Raster beschränkt.
Allerdings lese ich den originalen Temperatursensor gar nicht mehr aus, 
sondern regele ausschließlich über die SPS.

Ich würde daher nun gerne auf einen kleinen Mikrocontroller umsteigen.
Ich nehme auch gerne Tipps, wie ihr sowas aufbauen würdet.

Grüße und einen schönen Sonntag

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Arduino Nano (die Version mit ATmega328), und die Arduino IDE.

Oder wenn unbedingt WLAN dabei sein soll, dann ein ESP32 Modul, 
ebenfalls mit der Arduomo IDE programmiert.

Aber den damit verbundenen Overhead würde ich mir ohne guten Grund nicht 
antun. Das sieht in den Youtube Videos immer ganz einfach aus, aber die 
Praxis ist für Anfänger anders (wie früher schon bei Kochshows). Ein 
ESP32 hat 100 mal mehr Fallstricke, als ein Arduino Nano.

: Bearbeitet durch User
von Sven (elitron)


Lesenswert?

Ja, ESP32 ist eigentlich ein nettes Teil, aber stelle ich mir auch 
kompliziert vor.
Am liebsten wär mir tatsächlich sowas einfaches wie die "Basic 
Briefmarke" falls ihr die noch kennt. Das gabs in meiner Jugend bei 
Conrad.

Die Programmiersprache sollte auf jeden Fall einfach sein. Vielleicht 
auf dem Niveau von PHP.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Sven schrieb:
> Ich habe dann ein geeignetes 10 Gang Poti statt dem NTC angeschlossen
> und bin den Bereich langsam durch gefahren, und habe dann eine Liste
> geschrieben, wo die Spannungswerte und die Temperaturen notiert sind

Das klappt nur (so genau, 13mV pro halbes GradC), wenn die 
Temperaturmessung unabhängig von der 3.3V Spannung im Gerat ist.

Ansonsten wirkt sich die nicht unbedingt referenzstabile Schwankung der 
internen 3.3V (z.B. abhängig von der Belastung durch die Anzahl der 
leuchtenden Segmente im Display von 3.0V bis 3.4V) auf den per Spannung 
von aussen vorgegebene Solltemperatur aus.

Insofern kann schon dein Ansatz "Spannung bestimmt Solltemperatur" 
unzureichend sein.


Wer WLAN will nimmt einen ESP32.

von Nemopuk (nemopuk)


Lesenswert?

Sven schrieb:
> Die Programmiersprache sollte auf jeden Fall einfach sein. Vielleicht
> auf dem Niveau von PHP.

Im Mikrocontroller Umfeld ist C oder C++ gesetzt. Arduino hat sich die 
einfachen Teile davon heraus gepickt und daraus ein Gesamtkonzept 
erstellt. Damit fängst du einfach an und hast bei Bedarf einen 
fließenden Übergang zur professionellen Programmierung.

Es gab zeitweise viele Alternativen zu C/C++, die sind aber alle nach 
wenigen Jahren eingeschlafen. Ich erwarte in naher Zukunft keine 
Änderung der Situation.

von Jens M. (schuchkleisser)


Lesenswert?

Seh ich das richtig, das man mit den 4 Möglichkeiten der Digitaleingänge 
einfach nur via 4 Reedrelais
- den originalen Sensor
- ein Poti
- eine feste PWM
- eine andere feste PWM
aussuchen will?

Als beinah völlig programmierfreie Lösung:
- die beiden PWMs sind Ausgänge eines Tasmotabetriebenen Dimmers
- die 4 Relais via Tasmota schalten, das geht mit lokalen Tastern dann 
sowhl via Netz als auch vor Ort.
Genau genommen reicht sogar ein PWM-Ausgang, den man einfach auf andere 
Werte stellen kann. Geht auch mit 2 Tastern, also 1x "PWMx" und "PWM 
aktiv" und 1x "PWMy" und "PWM aktiv".

Braucht ein ESP-Modul nach Lust und Laune (Wemos D1 Mini z.B., oder 
NodeMCU) plus ein bissel Hardware drumrum.

von Mario M. (thelonging)


Lesenswert?

Klingt nach einer Aufgabe für einen ESP (8266 oder 32) mit Tasmota, 
ESPHome oder ähnlich.

von Nemopuk (nemopuk)


Lesenswert?

Jens M. schrieb:
> Seh ich das richtig, das man mit den 4 Möglichkeiten der Digitaleingänge
> einfach nur ... aussuchen will?

Ich verstehe die Frage nicht.

Die meisten I/O Pins der gängigen Mikrocontroller können wahlweise als 
digitaler Eingang oder digitaler Ausgang verwendet werden. Darüber 
hinaus haben viele Pins extra Funktionen, wie analoge Eingabe, analoge 
Ausgabe, PWM Ausgabe, Zeitmessung (per Timer-Hardware), diverse serielle 
Kommunikation, und so weiter. Ein Blick ins Datenblatt ist dazu 
angebracht (die Arduino Doku sagt dir nicht oder nur unvollständig, was 
der konkrete Mikrocontroller kann).

Jens M. schrieb:
> Braucht ein ESP-Modul nach Lust und Laune (Wemos D1 Mini z.B., oder
> NodeMCU) plus ein bissel Hardware drumrum.

Ich verstehe den Satz nicht. Ist das eine Frage oder eine Aussage? Die 
Module sind alle nur minimal bestückt. Für eine konkrete Anwendung muss 
man immer etwas drumherum bauen. Dazu bieten sich zum Experimentieren 
Steckbretter an, für den finalen Einzelaufbau Lochraster-Platinen. 
Mehrere gleiche Platinen (ab 5 Stk) lässt man sich z.B. von JLCPCB 
herstellen.

Innerhalb eines Themas darfst du nur einen Account benutzen.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Nemopuk schrieb:
> Darüber hinaus haben viele Pins [...] analoge Ausgabe,

Die ESP32 die ich kenne haben nur zwei Kanäle.

von Nemopuk (nemopuk)


Lesenswert?

Alexander schrieb:
>> Darüber hinaus haben viele Pins [...] analoge Ausgabe,
>
> Die ESP32 die ich kenne haben nur zwei Kanäle.

Das war ja nur ein Beispiel für die möglichen extra Funktionen. Ist 
deutsch für die Menschen so schwer geworden?

von Loco M. (loco)


Lesenswert?

Nemopuk schrieb:
> Innerhalb eines Themas darfst du nur einen Account benutzen.

Da bist du wohl auf den Holzweg abgebogen. Der TO und Jens haben mit 
Sicherheit nichts miteinander zu tun. Jens hat nur eine mögliche Lösung 
mit ESP32 und Reed-Relais vorgeschlagen, wobei er in meinen Augen die 
Vorgaben des TO sehr frei interpretiert hat.

von Alexander (alecxs)


Lesenswert?

Für jemanden ohne weitere ESP32 Kenntnisse liest es sich auf deutsch als 
wenn beliebige GPIO als DAC konfiguriert werden könnten.

von Jens M. (schuchkleisser)


Lesenswert?

Nemopuk schrieb:
> Ich verstehe die Frage nicht.

Das ist auc nicht schlimm.
Sie ist an den OP gerichtet und dient der Klärung, ob er tatsächlich 
Signale entgegennehmen und in Temperaturen umrechnen möchte, um dann aus 
diesen Temperaturen wieder PWM zu berechnen, die an die andere Steuerung 
abgegeben werden sollen.
Oder ob es auch der einfache Weg tut, einfach das Signal des NTC und des 
Potis simpel durchzuleiten und für die beiden Festwerte PWM statt Grad 
anzugeben.
Letzteres würde die Software wesentlich vereinfachen, und da scheint es 
ja Defizite zu geben.
Zudem bräuchte man dann nur 3 IOs (für die 3 Relais, die den Ausgang auf 
NTC, Poti oder PWM-Signal schalten) und ein PWM-Signal, das kann man 
dann z.B. mit einem Tasmota-ESP-Modul lösen, und die Programmierung ist 
einfach.
Ein Arduino (Nano, Promini oder Digispark) hätte weit ausreichende 
Hardware, aber die Software ist weit hinter dem Horizont, ein ESP kann 
das geforderte WLAN, ist aber noch weiter weg.

Nemopuk schrieb:
> Ist das eine Frage oder eine Aussage?

Is'n Punkt dran, ne? Also wohl "Aussage".

Nemopuk schrieb:
> Für eine konkrete Anwendung muss
> man immer etwas drumherum bauen.

Im Falle eines Wemos D1 Mini ist das überschaubar: 3 Transistoren, 3 
Widerstände, 3 Relais, 3 Dioden. Müsste man aber eh.
Außer, man vereinfacht das ganze noch weiter:
- Drehschalter, der NTC, Poti und PWM wählt
- PWM-Generatormodul nach Wahl
- gern auch zwei davon.
Das könnte man fliegend an eine Frontplatte heißklebern.
Vorteil: simpel. Nachteil: kein WLAN

Loco M. schrieb:
> Jens hat nur eine mögliche Lösung
> mit ESP32 und Reed-Relais vorgeschlagen, wobei er in meinen Augen die
> Vorgaben des TO sehr frei interpretiert hat.

Ich habe überlegt, was er will und eine Lösung vorgebracht, die einfach 
zu bauen ist.
Wenn Schaltung und Programmierung öfter gemacht würden, würde sich die 
Frage im OP so nicht stellen.
Natürlich kann man eine beliebig komplizierte Maschine bauen, mit 
eigenem ESP-Modul auf einem bei JLC gefertigten eigenen Layout, am 
besten noch mit Schaltreglern, und das dann mit dem SDK Bare Metal 
programmieren.
Ich bin mir sehr sicher, das es nicht viele hier gibt die das könnten, 
und OP ist definitiv keiner davon.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Alexander schrieb:
> Für jemanden ohne weitere ESP32 Kenntnisse liest es sich auf
> deutsch als
> wenn beliebige GPIO als DAC konfiguriert werden könnten.

Warum liest er nicht die Doku?
https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/dac.html
Zu fein dafür?

von Sven (elitron)


Lesenswert?

Hi.
Poti und original NTC könnten tatsächlich per Mini Relais direkt 
durchgeschaltet werden. Beim NTC wäre es Interessant, das Relais so zu 
verschalten, dass sich eine Fail Safe Lösung ergibt. (Relais abgefallen 
- > NTC direkt auf Anlage durch geschaltet) Wenn das Relais angezogen 
ist, wird der NTC auf den uC geschaltet um ihn dort auszuwerten und den 
berechneten Offset hinzuzufügen und die gefälschte Temperatur an die 
Anlage zu schicken.

von Sven (elitron)


Lesenswert?

Die 2 zusätzlichen Festwerte (20 und 0 Grad) könnte ich natürlich 
einfach über 2 Potis machen. Auch ein Offset, z.B. positiv und negativ, 
könnte ich mit Potis machen, die dem NTC parallel oder in Reihe 
geschaltet werden.
Der Offset ist dann aber dann nur so ungefähr, weil die Kennlinie des 
NTC nicht linear ist und die Ohm pro Grad variieren.
Ich würde es dann auf 10 Grad auslegen und mit dem Offset auf 20 oder 0 
Grad ziehen.

Lieber wäre es mir, wenn ich im uC über eine Lookup Tabelle einen 
richtigen, linearen Offset, z.B. +5 Grad und -5 Grad, bezogen auf die 
tatsächliche Außentemperatur, hinbekommen würde.
Und es wäre Toll, wenn ich den Festwert bzw. Offset auch noch von der 
Ferne her anpassen könnte. Im einfachsten Fall z.B. durch zusätzliche 
Eingänge, wo ich dann über meine SPS einfach die gewünschten 
Temperaturwerte in einen "Zähler" "eintakte" oder linear über 0-10V 
vorgebe. Dann muss ich nicht mehr über einen Digitalausgang der SPS ein 
Low-Speed PWM machen und in der SPS auch nicht mehr versuchen eine NTC 
Kennlinie nachzubilden.

Praktisch geht es um folgendes:
Ich habe eine Heizungstherme. Da gibts nur Nachtabsenkung und 
Normalbetrieb, was über eine Zeitschaltuhr und 2 Temperatureinstellungen 
ganz rudimentär  eingestellt werden kann. Zusätzlich gibt es noch 
Sparmodus und Partymodus wo man nochmal 2 Temperaturen fest hinterlegen 
kann die dann für 24 Stunden aufrecht erhalten werden solange aktiviert.

Allerdings kann man das alles nicht von außen her aufrufen. Die einzige 
Möglichkeit, die Therme zu beeinflussen ohne dran rumzulöten (und Taster 
per Reedrelais zu brücken), ist über den Temperatursensor für die 
Außentemperatur. Die Therme regelt die Vorlauftemperatur in Abhängigkeit 
von der Außentemperatur und der Solltemperatur und der Heizkurve.
Oder man kauft für sehr teures Geld die originale 0-10 V Schnittstelle 
(Es gibt Händler, die haben selbst die abgekündigten Steuerplatinen 
immer noch am Lager, lassen sie sich aber richtig vergolden) und kann 
dann die Vorlauftemperatur direkt und linear extern steuern.

Aber selbst mit der SPS alleine und ein paar Widerständen und einem 
Kondensator und "low Speed PWM" habe ich schon recht brauchbare 
Ergebnisse, um extern "Sparmodus" und "angehobenen Betrieb" nachzubilden 
und dann z.B. eine dynamische An/Abwesenheitsschaltung per Präsenzmelder 
zu machen, eine bessere Zeitschaltung mit mehr Möglichkeiten zur 
Temperaturbeeinflussung oder per Handy aus der Ferne die Temperatur zu 
beeinflussen.

: Bearbeitet durch User
von Mairian (marianp)


Lesenswert?

Schau dir mal die Systeme von Mikroe an, die haben Platinen und 
passenden Basic, Pascal und C Programmierumgebungen.
Alles out of the Box, arbeite ich schon ewig mit (Hauptsächlich mit der 
PAscal version)
https://www.mikroe.com/
Inkl fertiger Treiber für DS und Analagoe temperatursensoren, Displays 
etc ohne Gefrickel


Ansonsten natürlich auch Arduino mit AVR

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Sven schrieb:
> Die Therme regelt die Vorlauftemperatur in Abhängigkeit von der
> Außentemperatur

Was glaubt du, was passiert, wenn die Therme eine höhere 
Aussentemperatur vorgespielt bekommt und die Vorlauftemperatur so weit 
absenkt, dass die Zimmertemperatur nicht gehalten werden kann. Dann 
regeln alle Thermostatventile voll auf und nur das Zimmer was am 
nächsten dran ist bekommt noch Heizleistung ab,,die anderen bleiben 
ungeheizt.

Warum wird eigentlich überall aus Geiz nur gepfuscht in Deutschland ?

von Cartman E. (cartmaneric)


Lesenswert?

Die typischen Thermen haben einen Steuereingang, der mit einer Spannung
gesteuert wird. Die "Programme" die die Steuergeräte senden, sind nur
Spannungen die auf diesen Eingang gelegt werden.
Schau bei deinem Hersteller doch einmal, ob es ein externes
Steuergerät gibt, falls es bei dir nur direkt an der Therme
einstellbar ist.

Mit einem Controller, und einem DA-Wandler kann man dann selbst
programmieren was man will. Mit einem Relais kann man das auch
recht "Fqil-Safe" machen. Fällt die eigene Steuerung aus, fällt
das Relais ab, und legt die originale Steuerbox auf die Therme.

Dann muss man auch nicht am Aussentemperatursensor herummurksen.

von Sven (elitron)


Lesenswert?

So, ich hab mal meine Notizen abgetippt:

Heizleistung:

Bei 21° schaltet sich die Therme komplett aus, da Soll-Temp größer 
gleich AT

Der wirksame PWM Bereich wurde durch 2 Widerstände am OK begrenzt (4,7K 
Serie/ 100K Parallel)
Tiefpass 4,7k und 47uF am Ausgang der Schaltung

Der Rest des möglichen, aber per PWM nicht ansteuerbaren Bereichs wurde 
mit 100K Poti aufgenommen (Ende -28°)
Unter -15° keine Steigerung der VL-Temp mehr.

PWM%  Temp Anzeige  VL °C  Klemmen-Spannung

x  62°       0,1V      Fehlermeldung
x  60°      0,14V
x  54°      0,2V
x  45°      0,3V
x  37°      0,4V
x  31°      0,5V
x  26°      0,6V
x  22°      0,7V

0%  21°  (OFF)
5%  20°    23°  0,768V
10%  19°
15%  18°
20%  17°
25%  16°
30%  15°      0,896V
35%  14°
40%  13°
44%  12°
48%  11°
50%  10°    40°  1,065V
53%  9°
56%  8°
59%  7°
61%  6°      1,191V
64%  5°
67%  4°
70%  3°
73%  2°
76%  1°
78%  0°    53°  1,421V
80%  -1°
82%  -2°
84%  -3°
86%  -4°
88%  -5°      1,618V
90%  -6°
92%  -7°
94%  -8°
96%  -9°
97%  -10°    65°  1,824V
98%  -11°
99%  -12°
100%  -15°     70°  2,084V

x  -20°      2,2V
X  -23°      2,3V
X  -25°      2,4V
X  -28°      2,5V
X  -62°      3,28V (offene Klemme)  Fehlermeldung


@Cartman
Ja es gibt eine Zusatzplatine, die Eingänge 0-10V bereit stellt. Einer 
davon regelt direkt die Vorlauftemperatur. Dann kann man die Therme 
komplett über eine externe, eigene Steuerung steuern. Zum Beispiel über 
eine kompatible Wärmepumpe, die dann die Heizkurve und den Wärmebedarf 
berechnet und die Therme entsprechend ansteuert. Kostet aber mehrere 100 
Euro. Es gibt die noch bei diversen eBay Shops. Über meinen 
Heizungsbauer ist das angeblich nicht mehr lieferbar sondern nur eine 
neue Therme.

@Michael B
Die Gastherme ist dank der hohen Gaspreise bei uns nur noch 
Zusatzheizung und Zwischenlösung. In der Übergangszeit machen wir das 
Meißte mit der Klimaanlage und im tiefen Winter bollert der Holzofen 
fast 24/7 durch. Das Bad wird bedarfsweise mit einem E-Schnellheizer auf 
24° hoch gejagt, sonst sind es da auch nur noch max 21 Grad per Therme.


Momentan wird alles über eine Siemens Logo SPS realisiert, Optokoppler 
LED mit Vorwiderstand direkt an einem Transistor-Digitalausgang.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.