Benutzer-Werkzeuge

Webseiten-Werkzeuge


bewaesserungssteuerung

Anforderungen

  1. Einfach bedienbares Kontrollpanel im Heizungskeller
  2. Kontrollpanel ebenso über Rechner und Smartphone vom internen LAN/WLAN aus
  3. Manuelle Anforderung Kurzbewässerung am Ventil
  4. Keine Batterien im Aussenbereich
  5. Sicheres Schliessen aller Ventile bei Stomausfall
  6. Warnung, besser Schliessen der Ventile, bei Kabelbruch oder Kurzschluss
  7. Möglichst keine Dauerstromversorgung im Aussenbereich
  8. Bodenfeuchte- und Temperaturmessung von Ventilkästen aus an mehreren Stellen
  9. Eventuell Statuspanel (ohne Kontrolle) über Internet

Architektur

  1. Raspberry 4.B-1.1: PostgreSQL datenbank, MQTT, Node-red
  2. t4-gartenhub-can-mqtt: Teensy 4.0, W5500 Ethernet, TJA1050 CAN, MQTT boot client, CAN boot server, MQTT-CAN-bridge
  3. can-g1251: Atmega328PB, CAN boot loader

Hardware

Messungen am Gardena 9V-Ventil 1251-20
Präsenzmessung
  • Unbeschaltet: 0V - 88μs - 2.7V - 5.1ms - 0.1V
  • An 100kΩ: 0V - 30μs - 2.3V - 62μs - 2.25V - 0.76ms - 0.1V
  • Entspricht innen Vorwiderstand 3k3, 2.8nF, 560k
  • An 1251: 0V 7us 1.24V 20us -0.4V 25us 0V 11us -0.4V 25us 0V
Schaltvorgänge
  • https://help.gardena.com/hc/de/articles/115001177234-Welche-technischen-Daten-hat-dieses-9-V-Bew%C3%A4sserungsventil- : Die GARDENA Bewässerungsventile 9V verfügen über folgende Technik: Es handelt sich um bistabile Magnetventile. Spulenwiderstand: ca. 33 Ohm. Öffnungsimpuls: positiv, 9 V, + 300 mA, 250 ms. Schließimpuls: negativ, 9 V, - 50 mA, 62,5 ms.
  • Gemessen 33Ohm, 33mH.
  • Auf: 250ms (180us nach Präsenzmessung), -200mA (0V 0.5us -8.4V 20ms -7.1V 230ms -7.0V 1us +1.0V 2us 1.2V 1us +9.5V 16us +10.6V 1.17ms +10.3V 8.5ms +0.1V)
  • Zu: 66ms (180us nach Präsenzmessung), +60mA (0V 0.8us +8.1V 4.6ms +7.2V 15ms +1.8V 42.6ms +1.7V 0.6us -0.6V 4.7us -0.6V 1.6us -9.2V 0.2ms -9.6V 0.18ms -9.3V 38us -5.2V 15us -5.2V 2.4ms -0.1V)
  • Kanal 0: GND an Innenleiter Steuerung, Messung Spannung an Aussenleiter. Kanal 1: GND an Innenleiter Steuerung, Messung Stromstärke an Innenleiter Ventil nach 1Ω Messwiderstand
  • Weitere Betrachtungen:
    • Wird ein geschlossenes Ventil direkt mit 9V-Stromstoß (Labornetzteil, 1A begrenzt) angesteuert, so misst man in der Mitte des Audiokabels 8.3V und der Strom pegelt sich nach ca. 15.5ms bei 235mA und dann 240mA ein (in 2ms schnell auf 80mA, dann langsamer in 9ms auf 160mA, dann wieder schneller in 3.5ms auf 220mA, dann langsamer werdend in 1ms auf 235mA, und dann zum Endwert von 240mA entsprechend ca. 35 Ohm reeller Widerstand).
    • Wird ein bereits geöffnetes Ventil mit einem 9V-Stromstoß beschickt, so steigt der Strom leicht langsamer werdend in 5ms auf 150mA an und dann in weiteren 4.5ms auf 235mA, um dann ebenfalls bei 240mA auszupendeln.
    • Der Unterschied ergibt sich wohl durch die Bewegung des Stößels in der Magnetspule in ersten Fall, die einen Gegenstrom erzeugt, der den Anstieg der Stromstärke zunächst verlangsamt. Warum im zweiten Fall ebenfalls eine (geringere) kurzzeitige Verlangsamung der Stromanstiegs zu beobachten ist, ist mir zum jetzigen Zeitpunkt unklar.
    • Bei Verwendung einer H-Brücke SN754410 zur Erzeugung der Impulse, mit einem Widerstand von 120 Ohm sowie einer Diode 1N5819 in der Zuleitung zum Ventil ergibt sich eine maximale Endspannung von 5.7V bei einem Endstrom von 170mA, entsprechend dem reellen Widerstand der Magnetspule von 33 Ohm. Dabei dauert das Erreichen eines Stroms von 160mA 13.5ms bei vorab schon geöffnetem Ventil, und 24.5ms bei vorher geschlossenem Ventil (ebenfalls hierbei wieder mit zwischenzeitlicher Verlangsamung und dann wieder Beschleunigung des Stromanstiegs).
    • Dies bei einem temporären Aufbau mit Breadboards, bei der die 9V-Versorgungspannung bei der H-Brücke ohne Last bei 8.85 und 0.25V liegt und beim Schalten auf 8.45V/0.75V zusammenbricht. Die (bipolare) H-Brücke liefert dabei dann 7.6V/1.6V Schaltspannung an das Ventil, bei dem am Stecker dann (auf bedingt durch den eingeschleiften Messwiderstand von 1 Ohm) 7.5V/2.3V ankommen.
    • Bei direkter Versorgung der H-Brücke mit der 9V-Versorgunsspannung liefert sie 8.1V/0.9V beim Öffnen und 8.2V/0.8V beim Schließen des Ventils. Am Stecker des Ventils kommen dann 8.0V/1.7V (messwiderstand, Diode) bzw. 2.4V/0.8V (Messwiderstand, 120 Ohm Spannungsteiler) ankommen. Dabei fließen 190mA beim Öffnen und 52mA beim Schließen.
  • Alternativen:
    • SN754410 (3x verfügbar)
    • DRV8801
    • DRV8833
    • DRV8835 (1x verfügbar)
    • DRV8837/8838
    • MAX14870
    • A4990
    • BD65496MUV
    • VNH5019/5019A
    • MC33926
    • TB6612FNG
Prototyp 1,2: aus Modules
    • PD0 - RXD, PD1 - TXD, PD2-PD7 - D2-D7, PB0-PB5 - D8-D13, PC0-PC7 - A0-A7
  • MCP2515/TJA1050 CAN module
  • 2x DRV8833 H-bridge modules, C:/Users/Hobbyraum/Documents/Arduino/gardena_1251/drv8833.pptx
  • HC-SR04 ultrasonic distance module
  • I2C soil humidity sensor
  • RG rain gauge with reed contact (rep. 0.011„ per tick, Ambient Weather WS-1080 replacement, https://www.amazon.de/gp/product/B07KYSXCBZ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)
    • Measurement: 57.93cm² (52mm x 112mm mid of frame, -31mm² for four edges of ~6mm radius mid of frame),
    • 106g water @ 20° → 50 ticks, 105.8cm³/57.93cm² = 18.2634mm, 0.365mm/tick (~0.014“)
  • Gardena 1188-20 Bodenfeuchtesensor (1 Ohm wet, 10k dry)
  • [3x TTP223 capacitive touch switches TS1/TS2/TS3, CMOS output (VCC-1V, GND)]
  • 3x capacitive touch areas, CAP1203, SDA, SCL, VCC5V, GND
  • Connections:
    • VCC9V - 56k - A3 - 10k - GND
    • VCC9V - |>MBRS130LT3G - VIN - 2200uF/16V - GND
    • VIN,GND - TS295050 - VCS5V
    • Pro Mini RAW - VIN, Pro Mini GND - GND
    • D10 - CAN CS, D11 - CAN MOSI, D12 - CAN MISO, D13 - CAN SCLK, D2 - CAN INT, CAN VCC - VCS5V, CAN GND - GND
    • D4 - HB BI1, D5 - HB BI2, D6 - HB AI1, D7 - HB AI2, A1 - HB1 NSLP, A0 - HB2 NSLP, A2 - HB NFLT?, HB VIN - VIN, HB GND - A7 - 2.2Ω - GND, HB1 BO1 - >|1N5819,120Ω - V1I, HB1 BO2 - V1O, [HB1 AO1 - >|1N5819,120Ω - V2I, HB1 AO2 - V2O, HB2 BO1 - >|1N5819,120Ω - V3I, HB2 BO2 - V3O]
    • D8 - SR04 ECHO, D9 - SR09 TRIGGER, SR04 VCC - VCS5V, SR04 GND - GND
    • A4 - I2C SDA - 2k2Ω - VCC5V, A5 - I2C SCL - 2k2Ω - VCS5V, I2C VCC - VCS5V, I2C GND - GND
    • D3 - RG+ - 4k7Ω - VCS5V, RG- - GND
    • A6 - G1188+ - 200k - VCS5V, G1188- - GND
    • TS VCC - Pro Mini 5V, TS GND - GND, TS1 - 2k2 - A6, TS2 - 4k7 - A6, TS3 - 10k - A6
  • TODO:
    • Probe valve without disabling interrupts.
    • Manufacture own board.
    • Power loss valve shut capacitor and logic
    • Measure air temperature and correct speed of sound accordingly.
    • Build soil humidity sensor.
    • Replace 120Ω by 150Ω (with DRV8833 voltage is around 8.5V, and we want to restrict the demagnetisation current to about the specified 50mA).
    • Process CAN REBOOT request
    • Case
    • Process manual switches
    • Support Gardena soil humidity sensor (see valvecontrol02, 1Ohm wet, 10kOhm dry, requires analog input pin for presence detection)
    • Implement valve opening/closing plan
Prototyp 3: can_g1251_v01

Verbaut: can_g1251_v01_mod

Anschlüsse

valvecontrol1.png

Software

t4-gartenhub-can-mqtt
canboot

TODO:

  1. Anscheinend verhindert canboot nicht zuverlässig das Überschreiben seiner selbst. Siehe C:\Users\Hobbyraum\Documents\Atmel Studio\Atmega328P\valvebox-6406-m328pb-canboot-valvecontrol04.hex
valvecontrol

CAN Kommunikation

Heartbeat
Step From To Message
1 Client Hub HEARTBEAT(0x200|nr), len=8, data=uptime:32,interval:16,apimajor:8,apiminor:8
2 Hub Mqtt 'iot/heartbeat/' nr: '{"uptime":' uptime ',"interval":' interval ',"apiversion": apimajor '.' apiminor '}'
JSON
Step From To Message
1 Client Hub JSON(0x240|nr), len=8, data=json
n-1 Client Hub JSON(0x240|nr), len=8, data=json
n Client Hub JSON(0x240|nr), len=6, data=frames:16, crc:16, jsonlen:16
n+1 Hub Mqtt 'iot/status/' nr: json
Step From To Message
1 Mqtt Hub 'iot/set/' nr: json
2 Hub Client JSON(0x240|nr), len=8, data=json
n-1 Hub Client JSON(0x240|nr), len=8, data=json
n Hub Client JSON(0x240|nr), len=6, data=frames:16, crc:16, jsonlen:16

Note:

  1. Expect clients to have only a limited amount of memory at hand to process incoming JSON requests.
  2. Expect clients to implement only a limited form of JSON parsing, for instance only allowing integer numbers or strings as values.
  3. TODO: Are clients able to receive JSON data at high pace? Otherwise either the Hub should throttle or ACKs should be introduced.
  4. TODO: Include frames and jsonlen of last frame into crc.
Firmware
Step From To Message
A.1 Mqtt Hub 'iot/reboot/' nr: deviceno
A.2 Hub Client FIRMWARE_ACK(0x130|nr), len=4, data=kind(3):8,:8,deviceno:16
B.1 Client Hub FIRMWARE_ACK(0x130|nr), len=4-5, data=kind(2):8,:8,deviceno:16[,mcusr:8]
B.2 Hub Mqtt 'iot/boot/' nr: '{"id":' deviceno ', [',"mcusr":' mcusr] '}'
C.1 Mqtt Hub 'iot/firmware/' deviceno ('/flash'|'/eeprom'): hexfile
D.1 Hub Client FIRMWARE_CONTROL(0x100) len=5, data=version(0x10):8, 'E'|'F':8, deviceno:16, 'B':8
D.2 Client Hub FIRMWARE_ACK(0x130), len=1, data=ack(1)|nack(0):8
D.i Hub Client FIRMWARE_CONTROL(0x100) len=5, data=addr:32, 'A':8
D.i+1 Client Hub FIRMWARE_ACK(0x130), len=1, data=ack(1)|nack(0):8
D.j Hub Client FIRMWARE_DATA(0x110) len=1-8, data
D.j+1 Client Hub FIRMWARE_ACK(0x130), len=1, data=ack(1)|nack(0):8
D.n Hub Client FIRMWARE_CONTROL(0x100) len=5, data=frames:16, crc:16, 'E':8
D.n+1 Client Hub FIRMWARE_ACK(0x130), len=1, data=ack(1)|nack(0):8

Note:

  1. Clients booting for other reasons than being requested via A.2 would begin the sequence at step B.1.
  2. Some clients (T3/T4) implement firmware reception within the application. New firmware can be pushed to those clients at any time, in this case the process above starts directly at step C.1.
  3. New firmware can also be pushed to the MQTT/CAN hub itself. In this case no CAN communication takes place, and the process consists only of step C.1.
  4. TODO: Clean up the deviceno 16/32 bit mess. Also, the boot announcement from the client is without nr currently.

MQTT Hub Kommunikation

Step From To Message
1 Hub Mqtt 'iot/heartbeat/hub': '{"uptime":' uptime ',"interval":' interval '}'
Step From To Message
1 Hub Mqtt 'iot/status/hub': '{"id":' deviceno ', "hw":"TEENSY40", "type":"mqtthub", "sw": "' sw '"}'
bewaesserungssteuerung.txt · Zuletzt geändert: 2020/12/12 22:51 von sebastian

Seiten-Werkzeuge