Forum: Haus & Smart Home CAN in analog umwandeln


von Werner (werner_miene)


Lesenswert?

Hallo, ich habe hier eine Heizungssteuerung UVR1611 der "Technische 
Alternative". Diese hat zwar Analog-Ausgäne, aber die sind alle schon 
benutzt. Ich bräuchte aber zwei weitere 0 - 10 Volt Analog-Ausgänge.
Diese Steuerung hat zusätzlich einen Anschluss für einen CAN-Bus. Doch 
wie bekomme ich die digitalen Daten im CAN-Bus in ein analoges 0 - 10 
Volt Signal?

Wenn ich im Internet nach solchen Lösungen suche, sind das alles Geräte, 
die im Minimum mehrere 100 € kosten. Das ist mir für zwei analoge Werte 
viel zu viel.

Gibt es eine einfache Lösung, eventuell mit einen Raspberry oder Arduino 
oder ... was auch immer irgendeinem Mikrocontroller.

Die Anforderung: Daten aus einem CAN-Bus in 0 - 10 Volt umrechnen.


Ich würde mich sehr freuen, wenn jemand hier eine Idee dafür hätte. 
Schon mal vielen Dank.

von Alexander (alecxs)


Lesenswert?

Ja

von Edwin S. (etaut)


Lesenswert?

Wie wäre es mit dem Erweiterungsmodul vom Hersteller:
https://www.ta.co.at/erweiterungsmodule/ao4-dl
46€ohne Mwst

von Rolf (rolf22)


Lesenswert?

Der Arduino UNO R4 Minima hat einen CAN-Controller und einen D/A-Wandler 
auf dem Board. Mit Software geht dann alles

Allerdings läuft das Board nur mit 5 V, um auf eine 10-V-Analogspannung 
zu kommen, muss noch etwas dahinter. Ein Opamp, denke ich.

Da du aber 2 Analogausgänge brauchst, wird es schwieriger. Ginge es mit 
Software, die beide Signale abwechselnd ausgibt (plus 1 Bit zum 
Umschalten oder Melden)? Oder müssen die ständig anliegen?

von Werner (werner_miene)


Lesenswert?

Hey Alexander, danke für deine superschnelle Antwort.
Das hört sich doch schon mal sehr ermutigend an.

... und wie sieht so eine Lösung aus? Also was muss ich tun, damit das 
klappt?



An Edwin S.
Danke Edwin, ja das Teil ist super, es funktioniert aber leider nur mit 
UVR16x2, UVR610, CAN-I/O45 und nicht mit einer UVR1611 - jedenfalls 
soweit ich das verstehe.



An Rolf
Auf die 0 - 10 Volt bin ich nicht angewiesen. Ich muss eh dann 
beispielsweise 6,48 Volt in 64,8 °C umrechen, da es sich um 
Temperaturwerte handelt. Ich kann dann auch 3,24 Volt in 64,8 °C 
umrechnen.
Aber ich könnte mir doch einfach zwei solcher "Arduino UNO R4 Minima" 
besorgen, bei 18€ pro Stück, wäre das OK. Könnte das klappen?

Natürlich würde es auch gehen zwischen den beiden Werten hin und her zu 
schalten. Ist eben dann kompliziert - aber ich brauche nicht beide Werte 
permanent.

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Rolf schrieb:
> Der Arduino UNO R4 Minima hat einen CAN-Controller

Aber keinen CAN-Transceiver, den muss man extern nachrüsten.

Das OLIMEXINO-STM32F3 hat sowohl den CAN-Controller also auch den 
CAN-Transceiver sowie zwei DAC-Kanäle integriert.

von Alexander (alecxs)


Lesenswert?

Du hast doch die Lösung schon genannt. Nimm irgendeinen Mikrocontroller. 
Wenn Du schon einen Arduino hast, nimm den. Analogausgänge lassen sich 
emulieren mit PWM Signalen, für anspruchsvolle Ausgaben mit Delta-Sigma 
Modulation. Die Arduino Libraries funktionieren auch mit 
preisgünstigeren Mikrocontrollern. Ich verwende Fernost ESP32 mit 
Stückpreis unter 3 Eur. Je nach Anforderung gibt es kleine fertige 
Pegelwandler (wahlweise als Optokoppler) Platinen für 1 €. Oder du 
nimmst Transistoren.

http://www.elektronik-kompendium.de/sites/praxis/bausatz_pegelwandler-mit-transistoren.htm

Der schwierige Teil ist nicht die Signalausgabe sondern das lesen des 
CAN Eingangssignals. Dazu fehlen sämtliche Informationen, daher nur ein 
prinzipielles "Ja" - ich gehe davon aus zur "Heizungssteuerung UVR1611" 
lassen sich Informationen über CAN Protokoll und Bitfelder finden.

Beitrag "UVR1611 mit µC steuern"

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?

Werner schrieb:
> An Rolf
> Auf die 0 - 10 Volt bin ich nicht angewiesen. Ich muss eh dann
> beispielsweise 6,48 Volt in 64,8 °C umrechen, da es sich um
> Temperaturwerte handelt. Ich kann dann auch 3,24 Volt in 64,8 °C
> umrechnen.

Wo rechnest du denn die Spannungen wieder in Werte um? Womöglich macht 
es ja Sinn, dort einen CAN-Empfänger zu realisieren, und sich die 
Digital-Analog-Digital-Wandlung zu sparen ...

LG, Sebastian

von Achim M. (minifloat)


Lesenswert?

Werner schrieb:
> Aber ich könnte mir doch einfach zwei solcher "Arduino UNO R4 Minima"
> besorgen, bei 18€ pro Stück, wäre das OK. Könnte das klappen?

Du könntest zusätzlich auch PWM-Ausgänge nutzen und z.B. mit 
RC-Glied(ern) als Tiefpassfilter glätten. Dann noch Operationsverstärker 
als Impedanzwandler/Leitungstreiber hinten dran oder gleich das Filter 
mit Opamp bauen.

mfg mf

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Muss es den CAN sein? Frag mal den Harald P. (haraldp) ob er die 
Dokumente zu den CAN id und msg Bitfelder noch hat. Ansonsten würde ich 
auf den DL-Bus gehen.

Beitrag "Re: UVR 1611 (TA), Auswertung DL, Mega88, WinAVR"

Ansonsten für Raspberry Pi gibt's fertig. Mit etwas Mühe kann man da 
sicherlich die Bitfelder aus dem Code herauslesen, ist leider alles hart 
codiert :(

https://github.com/staircaseblog/UVR_CAN

von Falk B. (falk)


Lesenswert?

Werner schrieb:
> Hallo, ich habe hier eine Heizungssteuerung UVR1611 der "Technische
> Alternative". Diese hat zwar Analog-Ausgäne, aber die sind alle schon
> benutzt. Ich bräuchte aber zwei weitere 0 - 10 Volt Analog-Ausgänge.
> Diese Steuerung hat zusätzlich einen Anschluss für einen CAN-Bus. Doch
> wie bekomme ich die digitalen Daten im CAN-Bus in ein analoges 0 - 10
> Volt Signal?

Beitrag "Re: PWM Signal ( 5V, Pulslänge 1-2ms) für Servomotor in 0-10v umsetzen"

Ok, da feht noch CAN, dazu braucht es einen CAN-Tranceiver und 
Controller ala MCP2515. Kann man basteln, kostet halt Zeit.

https://www.mikrocontroller.net/articles/CAN#MCP2515

http://www.kreatives-chaos.com/artikel/can-testboard

Man muss halt was möglichst Fertiges in Hard- und Software finden. Die 
CAN-Geschichte oben hab ich vor Jahren schon mal erfolgreich auf nem AVR 
laufen gehabt.

von Werner (werner_miene)


Lesenswert?

Hallo Niklas G.,

also das mit dem >>OLIMEXINO-STM32F3<< hört sich doch gut an. Das würde 
ich gerne weiterverfolgen. Hast du das schon mal gemacht? Ich glaube die 
größte Schwierigkeit ist dann den OLIMEXINO-STM32F3 so zu konfigurieren, 
dass er die Daten aus dem CAN-Bus richtig interpretiert.


Hallo Alexander,

ich glaube du machst dir da ganz falsche Vorstellungen. ich habe keinen 
Mikrocontroller, keinen Arduino und noch nie etwas mit einem 
Mikrocontroller gemacht. Emulieren mit PWM Signalen, Delta-Sigma 
Modulation ... ich weiß von all dem nicht, was das ist. Ich bin zwar 
Mathematiker und sogar Physiker, aber eben Naturwissenschaftler und kein 
Elektronik-Techniker.

>>ich gehe davon aus zur "Heizungssteuerung UVR1611"
lassen sich Informationen über CAN Protokoll und Bitfelder finden<< tja, 
das kann sich durchaus als schwierig erweisen. Mal sehen.



Sebastian W.

ich habe eine "Smart Home Zentrale CCU3" und als Schnittstelle eine 
"Homematic IP Multi IO Modulplatine" und die hat für analoge Daten eben 
0-10 Volt-Eingänge. Bei homematic IP gibt es zwar einen Anschluss an 
einen digitalen Daten-Bus (Wired Smart Home Access Point HmIPW-DRAP), 
aber dieses Gerät ist teuer und eigentlich auch nicht für meine Zwecke 
gemacht und insofern scheint es mir nicht passend.


Achim M.

ohje ... keine Ahnung, wie sowas geht? Aber wenn's 0-10 Volt-Ausgäne 
gibt und mein I/O-Modul 0-10 Volt-Eingänge hat, dann scheint mir das 
passend.


Nochmal Alexander,

es muss kein CAN sein, Hauptsache ich bekomme irgendwie zwei vorhandene 
Temperaturwerte von der UVR1611 in meine CCU3.
DL-Bus wäre auch möglich, einen solchen Ausgang hat die UVR1611. Die 
Multi IO Modulplatine hat für analoge Daten allerdings nur einen 0-10 
Volt-Eingang.


Falk B.,

>>Man muss halt was möglichst Fertiges in Hard- und Software finden.<<
Genau.
Ich glaube ich würde mal den >>OLIMEXINO-STM32F3<< probieren.
Wenn ich den konfigurieren kann und noch heraus bekomme, wie die UVR1611 
ihre Daten in den CAN-Bus gibt, dann wäre das vielleicht ein 
erfolgversprechender Ansatz.



Weiß jemand was zu den beiden Fragen:
1) Welche Struktur haben die Daten, die die UVR1611 in den CAN-Bus gibt?
2) Wie kann man die OLIMEXINO-STM32F3 richtig konfigurieren.

Der 0-10 Volt-Ausgang der OLIMEXINO-STM32F3 scheint mir unkritisch. 6,47 
Volt bedeuten letztendlich, wenn alles richtig läuft, eben 64,7 °C.



Soweit erstmal vielen Dank allen Antwortern. Das war alles schon mal 
hilfreich für mich.

Schöne Grüße von Werner

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Werner schrieb:
> ich habe keinen
> Mikrocontroller, keinen Arduino und noch nie etwas mit einem
> Mikrocontroller gemacht.

Auch wenn du es nicht hören willst, vergiß das selber basteln.

Kauf eine passende Erweiterung, und fertig.

Oliver
P.S. hier gibts trotzdem was zum Thema
Beitrag "UVR 1611 (TA), Auswertung DL, Mega88, WinAVR"

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Werner schrieb:
> Hast du das schon mal gemacht?

Was, einen STM32F3 programmiert? Ja.

Werner schrieb:
> Ich glaube die
> größte Schwierigkeit ist dann den OLIMEXINO-STM32F3 so zu konfigurieren,
> dass er die Daten aus dem CAN-Bus richtig interpretiert.

Geht, CAN ist nicht so kompliziert wie man denkt. Das meiste macht die 
Hardware automatisch. Man muss halt das Datenformat auf dem Bus kennen.

Werner schrieb:
> ich habe keinen
> Mikrocontroller, keinen Arduino und noch nie etwas mit einem
> Mikrocontroller gemacht

Werner schrieb:
> 2) Wie kann man die OLIMEXINO-STM32F3 richtig konfigurieren.

Das Olimexino ist ein Mikrocontroller-Board. Da musst du schon 
programmieren für können. Das ist nicht einfach nur "konfigurieren".

Werner schrieb:
> Der 0-10 Volt-Ausgang der OLIMEXINO-STM32F3 scheint mir unkritisch.

Der STM32F3 kann nur 0-3.3V ausgeben

von Alexander (alecxs)


Lesenswert?

Niklas G. schrieb:
> Man muss halt das Datenformat auf dem Bus kennen.

Für den DL Bus alles da und fertige Lösung vorhanden.

von Alexander (alecxs)


Lesenswert?

Mir ist noch nicht klar wie Du zwei Werte übermitteln willst wenn die 
Homematic IP Multi IO Modulplatine nur einen Eingang hat.

Unabhängig vom Mikrocontroller könnte die Analogfraktion aber mal einen 
Tiefpassfilter für dich skizzieren, der die gewünschte 0-10 Volt Ausgabe 
glättet. Nur für den Fall dass die Homematic IP Multi IO Modulplatine 
kein PWM mag.

von Werner (werner_miene)


Lesenswert?

Oliver S.

Ich habe deinen Rat befolgt. Es hätte mich zwar interessiert mal was mit 
einem Mikro-Controler zu machen, aber letztendlich war mir alles zu 
ungewiss und zu kompliziert.

Ich habe über Kleinanzeigen das hier

https://www.ta.co.at/fileadmin/Downloads/Betriebsanleitungen/00_Auslauftypen/CAN-IO/Manual_CAN-IO_A2.08.pdf

gebraucht gekauft und es scheint den Zweck den ich will zu erfüllen. 
Aber auch hier ist die Konfiguration trickreich.



Niklas G.

Du schreibst: >>Da musst du schon programmieren für können.<<
Programmieren kann ich, aber bis das alles drumrum klappt bei einem 
neuen Gerät, das ist meist aufwändig.

>>Der STM32F3 kann nur 0-3.3V ausgeben<<
Das ist natürlich auch nicht so praktisch - da leidet wahrscheinlich die 
Genauigkeit bei der Übertragung der analogen Daten.





Alexander,

du schreibst
>>Mir ist noch nicht klar wie Du zwei Werte übermitteln willst wenn die
Homematic IP Multi IO Modulplatine nur einen Eingang hat.<<
Da habe ich mich falsch ausgedrückt, dieses IO Modul hat noch ZWEI freie 
Analog-Eingänge.





OK, somit verabschiede ich mich aus diesem Thema und danke alle, die 
hier Vorschläge gemacht und Lösungsmöglichkeiten angeboten haben. 
Letztendlich war's mir zu kompliziert.

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.