FHEM Forum

FHEM => Sonstiges => Thema gestartet von: frankbatzen am 26 März 2015, 13:03:14

Titel: 10 Arduinos an 30m Leitung - Firmata?
Beitrag von: frankbatzen am 26 März 2015, 13:03:14
Hallo,

vorab Verzeihung für den langen Post, ich möchte nur versuchen von Anfang an eine möglichst umfassende Beschreibung zu liefern.

Ich verwende FHEM auf einem Rasbperry Pi (mit COC und Hmusb) bereits für unterschiedliche Systeme (Max! Heizungssteuerung, Buderus KM200 Heizkesselsteuerung, Comfoair Lüftungsanlage, Homematic).
Nun möchte ich 10 Lüftungsklappen im Keller mittels FHEM regeln - und zwar nicht nur auf/zu, sondern auch Zwischenpositionen anfahren können . Hierbei wären ca. 30m Leitungslänge nötig, um alle Lüftungsklappen an einem Strang an den Raspberry Pi anzubinden.

Zuerst wollte ich es mit Belimo-Stellantrieben umsetzen, die 0-10v als Stellsignal nehmen und auch 0-10v als Positionsfeedback ausgeben. Neben den Anschaffungskosten für die Stellantriebe scheint aber auch die Generierung und Verteilung der Steuerspannung ziemlich aufwändig.

Am liebsten würde ich daher folgendes machen:
1. Gleichstrommotor an jeder Lüftungsklappe (http://www.pollin.de/shop/dt/MjI1OTg2OTk-/Motoren/DC_Getriebemotoren/Gleichstrom_Getriebemotor_GMPD_404980_1_12_V_.html)
2. Arduino nano ( http://www.ebay.de/itm/Arduino-Nano-V3-kompatibles-Board-ATmega328P-16MHz-mit-CH340-USB-RS232-Chip-/291415212095?pt=LH_DefaultDomain_77&hash=item43d9b3403f ) mit
3. Relais-Shield ( http://www.ebay.de/itm/1-Kanal-Relais-Relay-Modul-Optocouple-5V-fur-PIC-AVR-DSP-ARM-MCU-Arduino-3279-/321643306558?pt=LH_DefaultDomain_77&hash=item4ae36f5e3e ) an jedem Motor, die 12V von einem gemeinsamen Netzteil auf den jeweiligen Motor schalten können. Die Drehrichtung müsste ich nicht wechseln, weil die Klappen frei rotieren können.
4. Drehwinkelsensor Melexis MLX90316 per SPI am Arduino um die Klappen auf Position regeln zu können.

Ich nehme an, dass auf dem Arduino ein Sketch laufen sollte, der das Regeln übernimmt, weil ich annehme, dass die Regelung über FHEM vielleicht zu langsam wäre (?). Also Relais solange durchschalten, bis eine bestimmte Position erreicht ist.

Jetzt stellt sich mir "nur" die Frage, wie man die 10 Arduinos in FHEM integriert bekommt, so dass von dort die Klappenpositionen eingestellt werden können. Firmata scheint mir da ein guter Ansatzpunkt zu sein, aber:

a. Wenn von Arduino und Firmata die Rede ist, geht es eigentlich immer darum, ein Firmata-Sketch auf einen Arduino laufen zu lassen, das NUR Firmata macht, also nicht gleichzeitig regeln könnte (StandardFirmata). Auf https://github.com/firmata/arduino ist zu lesen, dass es auch eine andere Verwendung gibt: "In one model, the author of the Arduino sketch uses the various methods provided by the Firmata library to selectively send and receive data between the Arduino device and the software running on the host computer. For example, a user can send analog data to the host using Firmata.sendAnalog(analogPin, analogRead(analogPin)) or send data packed in a string using Firmata.sendString(stringToSend)"
Meine Fragen hierzu:

b. FHEM ermöglicht die Firmata-Anbindung soweit ich es verstehe über USB oder Ethernet. Für meinen Anwendungsfall wäre es natürlich sehr viel günstiger in Bezug auf Anschaffungskosten und Energieverbrauch, wenn alle 10 Arduinos an einem Bus hängen könnten, wo sie über das Protokoll adressiert werden. Kann man statt des USB-Anschlusses eine serielle Verbindung wählen, die man per RS485 zu den Arduinos bringt? Geht Adressierung in so einem Multidrop-Bus mit Firmata?

Neben den Fragen interessiert mich auch, wie Ihr es umsetzen würdet, vielleicht bin ich ja ganz auf dem Holzweg.

Vielen Dank und Gruß
frankbatzen
Titel: Antw:10 Arduinos an 30m Leitung - Firmata?
Beitrag von: frankbatzen am 02 April 2015, 08:12:17
Hallo,

nachdem ich mich jetzt weiter wundgesucht habe, scheint mir eher Modbus über RS-485 die richtige Wahl zu sein. Hierfür gibt es ein fertiges FHEM-Modul und Arduino-Slave-Libraries. Ich habe jetzt erst mal die Hardware bestellt (In China, 4-6 Wochen Lieferzeit...) und werde dann berichten, wie es funktioniert. Falls es irgendwann mal jemanden interessiert  :)

Gruß
frankbatzen
Titel: Antw:10 Arduinos an 30m Leitung - Firmata?
Beitrag von: jensb am 02 April 2015, 09:56:26
RPi und Arduino haben beide eine I2C Schnittstelle. Die ist zwar eigentlich nur für kurze Entfernungen vorgesehen, aber es gibt viele Posts, die bestätigen, dass man damit auch sehr viel mehr schafft. Habe selbst einen I2C Lichtsensor an einem ca. 20 Meter langem CAT-5 Kabel angeschlossen (3 Adernpaare: 3.3V, SDA, SCL) und es funktioniert sehr zuverlässig inkl. Spannungsversorgung vom RPi. Eine eventuelle galvanische Trennung erfordert allerdings zusätzlichen Aufwand. Es wäre durchaus vorstellbar, die 10 Arduinos in einer Kette hinter den RPi zu hängen mit dem RPi als Busmaster.

Mit RS-485 hast du aber die bessere Wahl getroffen, das ist per Design deutlich robuster. Viel Erfolg!

jensb
Titel: Antw:10 Arduinos an 30m Leitung - Firmata?
Beitrag von: frankbatzen am 05 Mai 2015, 15:09:58
Hallo,

der Kommunikationsteil ist fertig:
http://forum.fhem.de/index.php/topic,25315.msg292115.html#msg292115

Die Motoren funktionieren gut mit den Klappen, nur die Anbringung an die Klappen ist etwas aufwändig.
Die Winkelsensoren sind auch eingebunden, jetzt brauche ich nur Zeit, die 10 Klappen mit allen Teilen zusammenzulöten. Dazu fehlen noch die Motortreiber, die noch auf dem Weg zu mir sind (habe mich gegen Relais und für echte Motorsteuerung entschieden. Ist nur unwesentlich teurer).

Werde weiter berichten.
Gruß
frank