Forum: Analoge Elektronik und Schaltungstechnik Triactreiber MOC3061 mit Arduino / Raspberry ansteuern


von Hans Westermann (Gast)


Lesenswert?

Hallo Forumsexperten,

ich habe eine Heizkammer, deren Heizung über einen Triac mit 
vorgesteuertem Triactreiber MOC3061 betrieben wird. Das gleiche gilt für 
drei AC-Ventile.

Der onboard µC ist defekt. Ich würde das System gerne wieder zum Laufen 
bringen. Mein Ansatz wäre jetzt, dass ich die Signalpins des 
Triac-Treibers vom µC kappe und über bspw. einen Arduino oder Raspberry 
ansteuere, Heizung mit einem PID Regler und die Ventile sind nur an/aus.

Das Datenblatt zum MOC3061 gibt es hier: 
https://www.jameco.com/Jameco/Products/ProdDS/133874.pdf

Ich würde also versuchen Pin 1 und 2 (Kathode, Anode) anzusteuern und 
den Rest der Triac-Schaltung unverändert zu lassen.
An einem Vergleichsgerät habe ich mit einem Multimeter 2,5 VAC zwichen 
Pin 1 und 2 am Treiber für die Heizung gemessen. Habe leider kein 
Oszilloskop bzw. Frequenzmessgerät zur Hand. Auf DC hat das Multimeter 
nichts angezeigt.


Meine Frage wäre, kann der Ansatz grundsätzlich funktionieren und 
bekomme ich ein brauchbares Ansteuersignal direkt aus dem Arduino / 
Raspberry heraus?

Ich werde hierzu auch mal ein Bild vom jetzigen Steuerungsboard machen 
und hochladen, damit die ganze Triacschaltung zu sehen ist.

Falls Ihr aber sagt, dass dieser Ansatz unrealistisch ist, hättet ihr 
einen anderen Lösungsweg? Ich habe mal provisorisch die Heizung mit 
einem SSR-Relais und einem PID-Regler angesteuert, das klappt.
Aber da die verbaute Leistungselektronik an sich noch funktioniert, 
würde ich diese lieber weiterverwenden.

Vielen Dank für alle Tips und Hinweise!

Viele Grüße
Hans

von Harald W. (wilhelms)


Lesenswert?

Hans Westermann schrieb:

> Meine Frage wäre, kann der Ansatz grundsätzlich funktionieren und
> bekomme ich ein brauchbares Ansteuersignal direkt aus dem Arduino /
> Raspberry heraus?

Da Deine Steuerung durch einen µC vorher funktioniert hat, warum
sollte sie jetzt plötzlich nicht mehr funktionieren?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Grundsätzlich steuert man den MOC3061 genauso an wie eine (rote/IR) LED. 
Da er auch einen Nulldurchgangsdetektor hat, ist er zum Dimmen nicht 
geeignet, so das man auch auf die Phasenlage des Netzes keine Rücksicht 
nehmen muss.
Also wie eine LED mit Vorwiderstand betreiben. Am Arduino o.ä. bewährt 
sich da ein 220 Ohm Vorwiderstand. Muss halt 15mA durch die LED 
schicken.
Das wird ein Problem bei den schwachen Ausgängen des RPi, der a) nur 
3,3V Logik hat und b) normalerweise die 15mA nur schlecht schafft.
Der MOC3063 wäre mit 5mA zufrieden, aber der ist ja leider nicht 
verbaut.

: Bearbeitet durch User
von Hans Westermann (Gast)


Lesenswert?

Hi, super vielen Dank schon mal für die Antworten.
Das hört sich doch eigentlich machbar an.

Aber was mich noch etwas irritiert ist, dass ich ja Wechselspannung an 
Pin 1 und 2 (vermutlich) gemessen habe. Da kann ich doch dann nicht mit 
Gleichspannung vom Arduino drauf gehen, oder ist das bei dem Treiber 
egal?

Die angesprochene LED-Schaltung bekommt ja auch "nur" Gleichspannung von 
bspw. Arduino.

Also die Temperatur der Kammer war ja einstellbar, also müsste da eine 
Regelung dahinter stecken.
@Matthias S. also wenn der Treiber keine Dimmfunktion hat, müsste die 
Regelung wie mit einem SSR (an/aus Zeiten) funktionieren, oder liege ich 
da jetzt falsch?



Also wenn ich den MOC 3061 ansteuern will, könnte ich das mit einer 
zwischengeschalteten Transistorschaltung tun, dann würde es mit Arduino 
und Raspberry und den digitalen Ausgängen und Gleichspannung 
funktionieren?

Zumindest sollte ich so die Ventile ja ansteuern können.

Aber kann ich so die Heizung regeln?
(Bin vom Hintergrund Maschinenbauer, bitte nicht steinigen wenn ich was 
offensichtliches übersehe...)

Viele Grüße
Hans

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hans Westermann schrieb:
> also wenn der Treiber keine Dimmfunktion hat, müsste die
> Regelung wie mit einem SSR (an/aus Zeiten) funktionieren, oder liege ich
> da jetzt falsch?

Nö, da liegst du richtig. Das kann nur eine Wellenpaketsteuerung sein, 
wenn da was gesteuert werden muss.

Hans Westermann schrieb:
> Also wenn ich den MOC 3061 ansteuern will, könnte ich das mit einer
> zwischengeschalteten Transistorschaltung tun, dann würde es mit Arduino
> und Raspberry und den digitalen Ausgängen und Gleichspannung
> funktionieren?

Wie o.a., kann der Arduino den MOC3061 sicher ansteuern, ohne das es 
einer Stromverstärkung bedarf. Der RPi allerdings ist leistungsschwach 
und muss mittels Treiber aufgebohrt werden, damit er sicher die 15mA 
liefern kann.
Dazu kann man z.B. einen ULN2803 benutzen oder auch einen 
mittelkräftigen HC-TTL Baustein.

Hans Westermann schrieb:
> Zumindest sollte ich so die Ventile ja ansteuern können.

Wenn du einen ULN2803 benutzt, der ja 8 Kanäle hat, kannst du damit 
sowohl den MOC als auch Relais ansteuern. Sollte es evtl. sogar auf 
Fertigplatinen geben. Das wäre dann ein Treiber, der sowohl vom Arduino 
als auch vom RPi angesteuert werden kann, ohne Änderungen auf der MC 
Seite vorzunehmen.

von Hans Westermann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Matthias,

also so in etwa wie in dem angehängten Schaltplan.

Merci

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hans Westermann schrieb:
> also so in etwa wie in dem angehängten Schaltplan

Ja. Damit steuerst du den MOC korrekt an. Poste doch mal, was für ein 
Typ der originale MC auf der Steuerung war.

von Hans Westermann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

also hier mal ein Foto von dem Board mit µC und meinem geplanten 
workaround um  das Gerät mit einem Arduino zu betreiben.

Es gibt meiner Meinung nach zwei Möglichkeiten zur Ansteuerung.
1. ich nuzte den verbauten Vorwiderstand (sieht nach 100 Ohm aus). 
Allerdings ist mir das mit L gekennzeichnete Bauteil unklar. Ist das 
eine LED? Eine Spule scheint es mir nicht zu sein. Der Pin 2 des 
Treibers geht direkt auf den "hinteren" Pin des Bauteils. Das könnte 
doch der zusammengeschlossene Ground sein.

2. ich gehe mit einem eigenen Vorwiderstand direkt auf den Pin 1 des 
Treibers.

Sollte ich davor die ursprüngliche Steuerleitung zum µC trennen, bevor 
ich die externe Steuerleitung vom Arduino verbinde?

Gruß
Hans

von Hans Westermann (Gast)


Lesenswert?

...habe gerade mal mit der Taschenlampe geleuchtet, es ist ein ARM.

von Hans Westermann (Gast)


Lesenswert?

Also erster proof of concept hat geklappt. Ich habe einfach ein 
Labornetzteil auf 1,2 V eingestellt und bin auf die Pins der Treiber. 
Dann erfolgt das Schalten.

Meine Frage wäre jetzt nur noch, würdet ihr die bestehende Verbindung 
zum µC irgendwie physisch trennen? oder einfach mit der neuen Steuerung 
drauf?

von Harald W. (wilhelms)


Lesenswert?

Hans Westermann schrieb:

> Also erster proof of concept hat geklappt. Ich habe einfach ein
> Labornetzteil auf 1,2 V eingestellt und bin auf die Pins der Treiber.
> Dann erfolgt das Schalten.

Hoffentlich strombegrenzt, sonst hat der MOC den ersten Knacks weg.

> Meine Frage wäre jetzt nur noch, würdet ihr die bestehende Verbindung
> zum µC irgendwie physisch trennen? oder einfach mit der neuen Steuerung
> drauf?

Wieso? Du hast doch eine galvanische Trennung durch den MOC.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Harald W. schrieb:
> Wieso? Du hast doch eine galvanische Trennung durch den MOC.

Ich denke, der TE möchte gerne anstelle des STM32F103 den Arduino 
einsetzen. Also ja, dann sollte der STM32 auf jeden Fall gekappt werden, 
damit er a) nicht dazwischenfunkt und b) nicht rückwärts über die GPIO 
Pins Strom zieht. Man kann da Pin für Pin vorgehen, immer wenn der 
Arduino die Kontrolle über einen Optokoppler übernimmt, den 
entsprechenden Pin des STM32 hochbiegen oder per Cutter abtrennen.
Notizen dazu schaden sicher nicht, denn dann besteht immer noch die 
Chance, später mal wieder einen STM32 zu verwenden.

von Stefan F. (Gast)


Lesenswert?

Ich glaube du stellst dir das ein bisschen zu einfach vor. Die Eingänge 
der Optokoppler sind auf (und wegen) der Platine nicht völlig 
unabhängig.

Vermutlich hängen sie alle direkt oder indirekt an einer gemeinsamen 
Stromversorgung.

Es könnte z.B. sein, dass alle Anoden miteinander verbunden sind. Oder 
alle Kathoden. Oder indirekt, durch einen Widerstand oder die SMD Dioden 
daneben.

Ich würde hier erstmal dazu raten, einen Schaltplan von deren 
Eingangsbeschaltung aufzunehmen. Dann sehen wir weiter.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefanus F. schrieb:
> Es könnte z.B. sein, dass alle Anoden miteinander verbunden sind.

Das sind sie, nämlich über die 200 Ohm Widerstände, wie man auf dem 
Platinenausschnitt sieht. Man verbindet also den Arduino vorzugsweise 
auf der Seite der 'L' Drosseln und zieht sie mit dem Arduino gegen 
Masse, um den Optokoppler zu schalten. Im gleichen Arbeitsschritt trennt 
man die Leitung zum STM32 ab.
Das könnte leicht dadurch erfolgen, das man 'L' entfernt und auf der OK 
Seite den Arduino anschliesst. Vorwiderstand und Versorgung bleiben dann 
erhalten.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Matthias, genau darauf wollte ich hinaus.

Wenn der "originale" Mikrocontroller nicht mehr laufen muss, könntest du 
seinen Reset Eingang fest mit GND verbinden. Dann sind alle seine I/O 
Pins inaktiv, so dass du keine Leiterbahn auftrennen musst und keine 
Bauteile entfernen musst.

Eventuell sind die Pins am STM32 nicht alle 5V tolerant. Um da Probleme 
zu vermeiden, würde ich die I/O Pins des AVR im Open-Drain Modus 
benutzen. Das geht so:

Initialisierung: Das jeweilige Bit in PORTx und DDRx auf 0 setzen.
LED einschalten: Das Bit in DDRx auf High setzen.
LED ausschalten: Das Bit in DDRx auf Low setzen.

von Hans (Gast)


Lesenswert?

Hallo, vielen Dank für die zahlreichen Tips!
lso könnte ich doch die Pins 1&2 des Treibers trennen und mit meinem 
Arduino verbinden. Dann bräuchte ich aber dann noch einen 200Ohm 
Widerstand.

Das wäre doch machbar und sicher, falls sich beim stm32 noch was rührt.

Wie programmiert/flashed man den diesen stm32? Der hat ja keinen USB 
Ausgang? Gibt's da zart bootloader Kabel?

von Stefan F. (Gast)


Lesenswert?

Hans schrieb:
> Wie programmiert/flashed man den diesen stm32?

http://stefanfrings.de/stm32/stm32f1.html#proginterfaces

> Der hat ja keinen USB Ausgang?

Doch hat er. Aber programmieren über USB geht nur bei wenigen Modellen 
in dieser Serie. Und dazu müsste man natürlich eine USB Buchse 
angeschlossen haben.

von MOCTICTACK (Gast)


Lesenswert?

Matthias S. schrieb:
> Das wird ein Problem bei den schwachen Ausgängen des RPi, der a) nur
> 3,3V Logik hat und b) normalerweise die 15mA nur schlecht schafft.

Klar geht das! Einfach einen UNI-Transistor in die LED-Leitung einfügen 
und schon funktionierts. Auch wenn der RPi nur 3,3V-Logik hat-na und? 
Einen Vorwiderstand zur Basis des genannten UNI-NPN-Transistor 1 K und 
die Diodenleitung bekommt bei 5 V Versorgung 330 Ohm. Das reicht aus, um 
den MOC zu steuern! Und das mit den mA als treibertrom hat sich schon 
mal je nach Transistor auf > als mA vervielfacht... Gewusst wie! Wo ist 
jetzt das Problem?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

MOCTICTACK schrieb:
> Gewusst wie! Wo ist
> jetzt das Problem?

Es hat niemand bezweifelt, das der RPi mit einer externen Endstufe einen 
Optokoppler antreiben kann.
Es ging immer darum (einfach mal lesen), ob es auch ohne Endstufe geht 
und da ist die Antwort Nein. Der RPi kann nicht direkt den OK treiben, 
der ATMega aber schon.
Als universelle Endstufe habe ich oben den ULN2803 vorgeschlagen, der 
sowohl vom RPi als auch vom AVR benutzt werden könnte.

Hans schrieb:
> lso könnte ich doch die Pins 1&2 des Treibers trennen und mit meinem
> Arduino verbinden. Dann bräuchte ich aber dann noch einen 200Ohm
> Widerstand.

Nö, den Widerstand brauchst du nicht, weil er ja schon bei jedem Koppler 
auf der Platine ist und diese dann auf die gemeinsame + Schiene gehen. 
Der Punkt, um den AVR anzuschliessen ist am 'L' Bauteil.
Lowpegel aktiviert dann den MOC Koppler.

Stefanus F. schrieb:
> Dann sind alle seine I/O
> Pins inaktiv, so dass du keine Leiterbahn auftrennen musst und keine
> Bauteile entfernen musst.

Das klappt dann, wenn am STM32 die Pins auch noch heile sind. Wenn da 
eine Schutzdiode durchgeschlagen ist, muss der Pin abgetrennt werden.
Ob die ST-Link Pins zugänglich sind, um den STM32 neu zu programmieren, 
könnte man ja mal mit Datenblatt prüfen.

Jedes billige Discovery Board von ST hat übrigens einen ST-Link 
Programmer an Bord, der auch alleine benutzt werden kann. Kostet also 
fast gar nix.

Mir persönlich machen die Dingerchen auch Spass beim programmieren, ich 
bleibe dabei aber im Moment bei SPL und schlage mich nicht mit CubeMX 
rum.

von Stefan F. (Gast)


Lesenswert?

Matthias S. schrieb:
> Wenn da eine Schutzdiode durchgeschlagen ist, #
> muss der Pin abgetrennt werden.

Wenn das Wörtchen "wenn" nicht wäre ...


Warum sollten dort Schutzdioden durchgeschlagen sein? Das halte ich für 
extremst unwahrscheinlich.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefanus F. schrieb:
> Warum sollten dort Schutzdioden durchgeschlagen sein? Das halte ich für
> extremst unwahrscheinlich.

Irgendwas am STM32 ist halt defekt. Was es genau ist, wissen wir nicht. 
Es kann sein, das er ein Stückchen seines Flash verloren hat, es kann 
der ganze Chip wg. Bursts auf der Betriebsspannung kaputt sein oder es 
können eben auch Pins durchgeschlagen sein.
Und weder du noch ich wissen, wie die Jungs die Eingänge oder Ausgänge 
am MC geschützt haben.

von Stefan F. (Gast)


Lesenswert?

Mag alles sein, aber ich halte es momentan für nicht angemessen, alle 
möglichen Defekte herauf zu beschwören und die Schaltung darauf 
auszulegen. Im Zweifelsfall kann man einzelne Pins immer noch freilegen, 
wenn es nötig wird.

von Hans Westermann (Gast)


Lesenswert?

Hallo,

nochmal zur Absicherung: Ich würde jetzt mal den im Bild zu sehenden 
Anschluss durchführen.

Rein vor dem Hintergrund der praktischen Umsetzung, ich muss ja dort 
irgendwie meine Schaltleitung vom Arduino fest bekommen, dass die nicht 
gleich bei der kleinsten Erschütterung, bspw. wenn ich das Gerät mal 
transportiere, abgeht.

Würdet ihr aus eurer Erfahrung sagen, dass ein angelöteter Draht auf 
dieser kleinen Lötstelle (ist ja nur an der Oberfläche) hält?
Oder sollte ich vor dem Hintergrund der Betriebsfestigkeit, doch lieber 
an die Pins des Treibers anlöten (mit entsprechendem Vorswiderstand und 
schrumpfschrauchversiegelt versteht sich).

von Hans Westermann (Gast)


Angehängte Dateien:

Lesenswert?

... hier noch das Anschlussbild.

von Stefan F. (Gast)


Lesenswert?

Hans Westermann schrieb:
> Würdet ihr aus eurer Erfahrung sagen, dass ein angelöteter Draht auf
> dieser kleinen Lötstelle (ist ja nur an der Oberfläche) hält?

Lötstellen sind spröde. Seit Bleifrei gelötet wird, ganz besonders.

Du musst die Drähte ankleben, so dass im Bereich der Lötstelle keine 
Bewegung stattfindet. In Unterhaltungselektronik wird das üblicherweise 
auch so gemacht.

von Stefan F. (Gast)


Lesenswert?

Hans Westermann schrieb:
> ... hier noch das Anschlussbild.

Nein, nicht "GND von vom Arduino", sondern "I/O Pin vom Arduino".

Und vergesse nicht, den STM32 entweder durch Dauer-Reset still zu legen 
oder abzutrennen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die Drossel 'L' ist spassig, aber nicht unbedingt nötig. Du kannst also 
den I/O Pin vom Arduino auch direkt an Pin 2 der MOC3061 löten und ihn 
so ein wenig besser festlegen. Ein extra Vorwiderstand ist nicht nötig, 
weil die auf der Platine ja schon da sind, nur eben auf Pin 1 des MOC. 
Das ist aber gehupft wie gesprungen, Hauptsache ist, das er im LED Kreis 
ist.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Matthias S. schrieb:
> Die Drossel 'L' ist spassig, aber nicht unbedingt nötig.

Das ist eine LED, die (mit Vorwiderstand) parallel zum Optokoppler 
liegt.

> Du kannst also den I/O Pin vom Arduino auch direkt an Pin 2 der
> MOC3061 löten und ihn so ein wenig besser festlegen.

Das wird nichts ändern, diese LED leuchtet dann trotzdem mit.

von Hans Westermann (Gast)


Angehängte Dateien:

Lesenswert?

HI,


ok, also gehe ich direkt vom I/O Pin des Arduino auf den Pin 2 des 
Optokoppler.

Aber bräuchte ich nicht dann am Pin 1 noch Ground vom Arduino?

Pin 1 = Anode, Pin 2 = Kathode (siehe Bild)

Müsste nicht die +5 V vom Arduino an Pin1 anliegen, um durchzuschalten? 
War das nicht so, wenn ich positive Spannung an die Kathode anlege, dann 
sperrt die?

Oder verstehe ich gerade das Prinzip von dem Optokoppler nicht? Ist das 
dann invers, d.h. ich Schalte +5 V auf Pin2 und sperre damit und ohne 
+5V ist er immer offen?

Bin ehrlich gesagt etwas verwirrt gerade.

von Stefan F. (Gast)


Lesenswert?

Hans Westermann schrieb:
> Aber bräuchte ich nicht dann am Pin 1 noch Ground vom Arduino?
> Pin 1 = Anode,

Die Anode gehört an den Plus-Pol der Stromversorgung.

> Müsste nicht die +5 V vom Arduino an Pin1 anliegen, um durchzuschalten?

Ja doch.

> Bin ehrlich gesagt etwas verwirrt gerade.

Merkt man.

Was jedenfalls nicht geht, ist ein gemeinsamer GND Anschluss und dann 
die I/O Pins des Mikrocontrollers mit den Anoden zu verbinden, weil die 
nämlich alle miteinander verbunden sind.

Also brauchst du einen gemeinsamen + Pol und schließt die I/O Pin an die 
Kathoden an. Genau so, wie es auf dem Board bereits mit dem STM32 
gemacht wurde.

Wenn man genau hinschaut, ist es offensichtlich.

von Hans Westermann (Gast)


Lesenswert?

So dachte ich das auch. Also muss der I/O Pin vom Arduino doch an Pin 1 
und nicht an L oder Pin 2 (L geht ja an die Kathode = Pin 2, laut 
Schaltplan), korrekt?

Und dann muss der Pin 2 (Kathode) doch noch an Ground vom Arduino.

von Hans Westermann (Gast)


Lesenswert?

ahhhhh, ok. Also leg ich den konstanten +5V Ausgang vom Arduino parallel 
auf alle Anoden der Optokoppler die ich schalten will (Pin1).

Und meinen ausgewählten digitalen Ausgang vom Arduino auf die jeweiligen 
Kathoden.

"ziehe" ich dann beim Schalten mit dem Arduino die Kathode über den 
Arduino auf Ground und erreiche somit die benötigte Potenzialdifferenz 
an der Optokopplerdiode?

von Stefan F. (Gast)


Lesenswert?

Hans Westermann schrieb:
> So dachte ich das auch. Also muss der I/O Pin vom Arduino doch an Pin 1

Nein! Ist das denn so schwer?

Der I/O Pin macht an der Anode keinen Sinn, weil alle Anoden auf der 
Platine miteinander verbunden sind.

Stefanus F. schrieb:
> Ich würde hier erstmal dazu raten, einen Schaltplan von deren
> Eingangsbeschaltung aufzunehmen. Dann sehen wir weiter.

Aber nein, da wird lieber stundenlang herum gekaspert.

> ahhhhh, ok. Also leg ich den konstanten +5V Ausgang vom Arduino parallel
> auf alle Anoden der Optokoppler die ich schalten will (Pin1).

Eine reicht, die sind ja schon alle miteinander verbunden.

> "ziehe" ich dann beim Schalten mit dem Arduino die Kathode über den
> Arduino auf Ground und erreiche somit die benötigte Potenzialdifferenz
> an der Optokopplerdiode?

Nach diesem Plan legst du 5V an die Optokoppler. Du musst die Kathoden 
vom Rest der Platine (dem STM32F103) trennen. Wenn du das nicht machst, 
sind andere Maßnahmen nötig:

GND vom Arduino mit GND vom Board verbinden.
Das Board mit Spannung (3,3V?) versorgen.
Die Aufgänge des Arduinos im Open-Drain Modus programmieren, damit 
dieser keine 5V ausgibt und damit den STM32 überfordert.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefanus F. schrieb:
> GND vom Arduino mit GND vom Board verbinden.
> Das Board mit Spannung (3,3V?) versorgen.

Genau, warum sollte der Arduino nicht von der Platine gespeist werden? 
Das habe ich die ganze Zeit stillschweigend vorausgesetzt. Der läuft mit 
3,3V prima und man muss sich weder um die Speisung der Optokoppler noch 
um den STM32 Sorgen machen. Auch GND ist dann ganz einfach richtig 
verbunden.

von Stefan F. (Gast)


Lesenswert?

Matthias S. schrieb:
> Genau, warum sollte der Arduino nicht von der Platine gespeist werden?

Klingt sinnvoll.

Dann muss man allerdings die Dioden entfernen, welche die 5V vom USB 
Kabel an den Mikrocontroller durch reicht. Und man muss die Taktfrequenz 
senken. Das hatten wir ja schon weiter oben.

Da fällt mir gerade noch etwas ein: Wenn die GND Leitung dieser 
unbekannten Platine irgendwo geerdet ist oder sonstwie mit GND vom 
Computer verbunden ist, dann kann man nicht einfach 5V an die Anoden der 
Optokoppler legen, weil sonst die ganze Platine mit eben diesen 5V 
versorgt wird, wofür sie nicht ausgelegt wurde.

Und selbst wenn der AVR nur mit 3,3V versorgt würde (was die Sache 
sicher erheblich entschärft), müsste er immer noch das ganze große Board 
mit versorgen. Wie viel Strom mag das große Board wohl aufnehmen?

Vielleicht ist es doch besser, die Optokoppler komplett (also Anoden und 
Kathoden) von der alten Platine zu trennen. Dann hat man mit diesen 
Seiteneffekten keinen Stress.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefanus F. schrieb:
> müsste er immer noch das ganze große Board
> mit versorgen.

Nö, der Arduino wird vom Board versorgt, nicht umgekehrt. Das ganze 
Drumherum eines Arduino Boards ist allerdings wirklich unnötig. Da macht 
man sich eine kleine Platine (gerne auch Lochraster), auf die dann der 
Mega mit ein paar Stiftleisten oder so kommt. Den Arduino kann man immer 
noch als Programmieradapter nutzen.

: Bearbeitet durch User
von Hans (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

möchte kurz ein Update zum Umbau geben.
Also ich habe jetzt die Ansteuerungspins von der Grundplatine gelöst und 
steuere diese über einen Arduino an, siehe Bilder. Derzeit noch 
provisorisch angelötet, für den eigentlichen Einsatz kommt noch 
Schrumpfschlauch drüber.

Funktioniert alles ohne Probleme, Danke schon mal für die vielen Tips!

An dem Tiac ist eine Heizmatte angeschlossen. Ich würde jetzt gerne 
einen Temperaturregler aufbauen. Also eine einfache An/Aus Regelung
 habe ich schon implementiert, allerdings schwingt die immer 2 °C über 
den Sollwert, wenn sie den Sollwert von "oben" unterschreitet und dann 
nur kurz nachheizt.

Die Idee wäre jetzt, ob ich die Leistung der Heizung drosseln kann, 
bspw. wenn ich das Ansteuersignal mit einer Frequenz pulsen lasse, in 
Abhängikgeit der Nähe zum Sollwert. Allerdings weiss ich nicht, ob das 
dann dem Triac oder dem Optokoppler schadet und ob das grundsätzlich so 
geht. Vom Prinzip müsste das doch auch bei diesen PID-SSR Reglern sein?

Viele Grüße,
Hans

von öh... (Gast)


Lesenswert?

Hans schrieb:
> allerdings schwingt die immer 2 °C über
> den Sollwert,

Normalerweise sorgt man für eine Hysterese ... die
man dann halbwegs an den minimal möglichen Heizpuls
(dessen Umfang für diesen "Overshoot" sorgt) anpaßt.

Das bedeutet, daß z.B. erst bei 2°C Unterschreitung
der Solltemperator wieder geheizt wird, weil ja eh
nicht weniger als die Solltemperatur erreicht wird,
sobald die Heizung kurz einsetzt.


Ohne auch nur im Ansatz zu wissen, wie Du das
realisiert hast, kann ich kaum sagen, wie Du zu
Deiner Hysterese kommst (ob in Software durch
setzen eines geringeren Wertes zum "EIN" als zum
"AUS", oder anders).

von Hans (Gast)


Lesenswert?

Hallo,

also ich will die Temperatur so genau als möglich halten. Daher will ich 
eigentlich weg von der Hytereseschaltung und hin zu einem (PID)-Regler.

Derzeit ist es so realisiert:

In meinem geschlossenen Topf, dessen Luft ich auf 40 °C erwärmen und 
konstant regeln will, steckt ein PT1000. Der liefert mir über einen 
Signalwandler die Ist-Temperatur zurück.

In meinem Script frage ich alle 500 ms die Temperatur ab und wenn diese 
unter 40 ° C ist, wird geheizt (100 %), sonst aus. Die Heizung steuere 
ich mit der oben beschriebenen Triac-Schaltung an.  Die resultierende 
Hysterese von ca. 2 °C ist mir aber zu viel.

Es gibt ja im Online Handel diese PID-Regler-sets (PID Regler, 
Temperaturfühler, SSR-Relais). Die machen doch auch keine 
Hystereseschaltung, sondern werden irgendwie die Leistung über die 
Ein/Aus-Schaltdauer einstellen. Sowas würde ich gerne auch aufbauen mit 
der PID-Bibliothek. Nur weiss ich nicht,
1. ob ich das mit der hier vorliegenden Triac-Schaltung machen kann und
2. ob diese Ansteuerung mit dem Arduino geht.

Mein Ansatz wäre jetzt, ich nehme bspw. die pwm vom Arduino und nehme 
die Frequenz als Stellgröße vom PID-controller.

Merci

von Hans (Gast)


Lesenswert?

Hallo,

habe gerade nochmal recherchiert und beim Arduino pwm Beispiel wird 
damit eine LED gedimmt.

Da mein Triactreiber "ähnlich" einer LED funktioniert, müsste das doch 
klappen.
Ich versuch das jetzt mal...

von Stefan F. (Gast)


Lesenswert?

Hans schrieb:
> habe gerade nochmal recherchiert und beim Arduino pwm Beispiel wird
> damit eine LED gedimmt.
>
> Da mein Triactreiber "ähnlich" einer LED funktioniert, müsste das doch
> klappen.

Nein. Denn ein Triac, der einmal eingeschaltet ist, bleibt solange 
eingeschaltet, bis der Laststrom Null erreicht (was bei Wechselstrom 
100x pro Sekunde passiert). Die LED geht hingegen sofort aus.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefanus F. schrieb:
> Nein.

Ist so nicht richtig. Denn man kann ja die PWM viel langsamer machen 
(also z.b. mit 20ms Periode) und dann klappt das auch wieder mit der 
PWM. Viele Leute nennen das dann Wellenpaketsteuerung, ist aber das 
gleiche. Ich takte in so einem Fall den PWM Timer mit 50 oder 100Hz aus 
dem Netz und habe damit 5s oder 2,5s Periodendauer einer PWM mit 8-bit 
Timer. Für meine Herdplatten oder eine andere träge Heizung ist das 
genau richtig.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Die normale PWM Frequenz von Arduino liegt allerdings bei 500Hz

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.