Wiuempe
(Wiuempe)
15 Lipiec 2023 20:08
1
Cześć, chciałbym podłączyć sterowanie moim rekuperatorem który ma 4 porty rs485: 12v A B gnd, dokumentacje wrzucam jako zdjęcie bo że strony producenta zniknęła, a PDF nie można dodać.
Chciałbym to podpiąć do esp32 przy pomocy rs485 to ttl, ale niepokoi mnie to 12v. Czy powinienem się obawiać że podpięcie takiego modułu pod ten port w rekuperatorze może spalić moduł lub esp32? Jeśli tak, to jak obniżyć to napięcie? Powinienem skorzystać z jakiegoś modułu z konwerterem logicznym?
RobinI30
(RobinI30)
15 Lipiec 2023 20:17
2
Jeśli podłączysz tylko zaciski A,B a ESP zasilisz osobnym zasilaczem (o odpowiednim napięciu) to nic się nie stanie.
Gdybyś chciał zasilić z 12V ze złącza to musisz je dostosować do wartości znamionowej modułu ESP.
Nie … konwersji napięć na trasmisji AB nie trzeba wykonywać. RS485 to standard i co się nie podłączy to zawsze pasuje,
Problem jest z napięciem zasilania.
Wiuempe
(Wiuempe)
15 Lipiec 2023 20:32
3
To super wiadomość dla mnie, ESP zasilam z 5v z ładowarki, nie wiedziałem że można podłączyć tylko A i B. Dziękuję.
RobinI30
(RobinI30)
15 Lipiec 2023 20:38
4
Mógłbyś to nawet zasilić z tych 12V podają na pin modułu Vin …wszystko z zależy jaki masz moduł, a dokładnie jaki jest tam stabilizator. Przy 12V może się grzać.
Wiuempe:
PDF nie można dodać.
Ograniczenie forum, ale spakuj zipem i powinno wejść (skoro nie ma na stronie producenta, to tym bardziej warto wrzucić - może komuś innemu się przyda).
ESP nie ma portów RS485, więc musisz użyć konwertera (edit: przeoczyłem, oczywiście go masz).
Wiuempe
(Wiuempe)
24 Lipiec 2023 19:53
6
Udało mi się dobrać do tego modbusa, poniżej kod esphome, wersja beta. Jednak esp32 po wpięciu modułu modbus stało się niestabilne, potrafi się zawiesić, a następnie na portach GPIO w które wpięte są czujniki DHT11 mam błedy. Nie pomaga odpięcie zasilania od esp32 i podpięcie ponownie, muszę odpiąc kable od DHT11 i podiąć ponownie, następnie raz jeszcze wgrać esphome (lub wystarczy reset zasilania, nie wiem). Moduł którego uzywam to: Konwerter RS485 - UART TTL MAX485 - Sklep msalamon.pl . Czy możecie mi polecić jakieś inne moduły, z jakimś lepszym filtrowaniem czy coś, nie znam się.
uart:
id: mod_bus
tx_pin: 17
rx_pin: 18
baud_rate: 4800
stop_bits: 1
debug:
modbus:
flow_control_pin: 4
id: modbus1
modbus_controller:
- id: rekuperator
## the Modbus device addr
address: 0x1
modbus_id: modbus1
# setup_priority: -10
binary_sensor:
- platform: modbus_controller
modbus_controller_id: rekuperator
address: 18
name: "Fire"
register_type: holding
bitmask: 0x1
- platform: modbus_controller
modbus_controller_id: rekuperator
address: 18
name: "Bypass On"
register_type: holding
bitmask: 0x2
- platform: modbus_controller
modbus_controller_id: rekuperator
address: 18
name: "Bypass Off"
register_type: holding
bitmask: 0x4
- platform: modbus_controller
modbus_controller_id: rekuperator
address: 18
name: "Defrosting"
register_type: holding
bitmask: 0x8
sensor:
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Bypass opening temperature X"
unit_of_measurement: "°C"
register_type: holding
address: 02
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Bypass opening temperature range Y"
unit_of_measurement: "°C"
register_type: holding
address: 03
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Defrosting interval time"
register_type: holding
address: 04
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Defrosting enter temperature"
register_type: holding
unit_of_measurement: "°C"
address: 05
filters:
- lambda: |-
return x - 40;
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Defrost duration time"
register_type: holding
address: 06
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "CO2 setting value"
register_type: holding
address: 07
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Ventilator IP address"
register_type: holding
address: 08
# - platform: modbus_controller
# modbus_controller_id: rekuperator
# name: "ERV ON/OFF"
# register_type: holding
# address: 09
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Supply fan speed"
register_type: holding
address: 10
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Exhaust fan speed"
register_type: holding
address: 11
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Room temperature"
accuracy_decimals: 2
unit_of_measurement: "°C"
register_type: holding
address: 12
filters:
- lambda: |-
return x - 40;
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Outdoor temperature"
accuracy_decimals: 2
unit_of_measurement: "°C"
register_type: holding
address: 13
filters:
- lambda: |-
return x - 40;
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Supply air temperature"
accuracy_decimals: 2
unit_of_measurement: "°C"
register_type: holding
address: 14
filters:
- lambda: |-
return x - 40;
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Defrosting temperature"
accuracy_decimals: 2
unit_of_measurement: "°C"
register_type: holding
address: 15
filters:
- lambda: |-
return x - 40;
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "External ON/OFF signal to ventilator"
register_type: holding
address: 16
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "CO2 ON/OFF signal"
register_type: holding
address: 17
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Electrical heater stage"
register_type: holding
address: 19
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Error symbol"
register_type: holding
address: 20
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "ERV models selection"
register_type: holding
address: 21
### it seems to hangs modbus
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Defrosting models"
register_type: holding
address: 22
force_new_range: true
### it seems to hangs modbus
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Multifunction Setting"
register_type: holding
address: 24
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Filter alarm timer"
register_type: holding
address: 25
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Heater on/off temperature setting"
register_type: holding
address: 27
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "CO2 value"
register_type: holding
address: 768
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Fan running time record"
register_type: holding
address: 769
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Indoor humidity"
register_type: holding
address: 770
switch:
- platform: modbus_controller
modbus_controller_id: rekuperator
address: 18
use_write_multiple: true
name: "Bypass On"
register_type: holding
bitmask: 0x2
- platform: modbus_controller
modbus_controller_id: rekuperator
address: 18
use_write_multiple: true
name: "Bypass Off"
register_type: holding
bitmask: 0x4
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "ERV ON/OFF"
register_type: holding
address: 09
bitmask: 1
number:
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Supply fan speed"
address: 10
value_type: U_WORD
step: 10
min_value: 0
max_value: 100
unit_of_measurement: "%"
lambda: |
uint16_t local_var = x;
switch (local_var) {
case 0: return 0;
case 2: return 10;
case 3: return 20;
case 5: return 30;
case 8: return 40;
case 9: return 50;
case 10: return 60;
case 11: return 70;
case 12: return 80;
case 13: return 90;
case 14: return 100;
}
write_lambda: |
uint16_t local_var = x;
switch (local_var) {
case 0: return 0;
case 10: return 2;
case 20: return 3;
case 30: return 5;
case 40: return 8;
case 50: return 9;
case 60: return 10;
case 70: return 11;
case 80: return 12;
case 90: return 13;
case 100: return 14;
}
- platform: modbus_controller
modbus_controller_id: rekuperator
name: "Exhaust fan speed"
address: 11
value_type: U_WORD
step: 10
min_value: 0
max_value: 100
unit_of_measurement: "%"
lambda: |
uint16_t local_var = x;
switch (local_var) {
case 0: return 0;
case 2: return 10;
case 3: return 20;
case 5: return 30;
case 8: return 40;
case 9: return 50;
case 10: return 60;
case 11: return 70;
case 12: return 80;
case 13: return 90;
case 14: return 100;
}
write_lambda: |
uint16_t local_var = x;
switch (local_var) {
case 0: return 0;
case 10: return 2;
case 20: return 3;
case 30: return 5;
case 40: return 8;
case 50: return 9;
case 60: return 10;
case 70: return 11;
case 80: return 12;
case 90: return 13;
case 100: return 14;
}
W archiwum instrukcje które są już niedostępne w internecie.
Archive.zip (5,0 MB)
Sprawdź czy konwerter poziomów logicznych między ESP (3.3V) a tym konwerterem TTL (5V) pomoże.
Wiuempe
(Wiuempe)
25 Lipiec 2023 06:43
8
Zapomniałem dodać że moduł modbus wpiąłem na 3v3, więc taki konwerter logiczny działał by tylko jako separator, prawda?
Tak, jakkolwiek nie wiem czy ten konwerter na RS485 nie wymaga zasilania 5V (a podejrzewam, że tak), natomiast przyczyną problemów może być przeciążenie stabilizatora 3,3V.
podlak
(podlak)
15 Lipiec 2024 12:09
10
Cześć @Wiuempe , czy udało Ci się może wbić stabilnie w RS485 tego rekuperatora? Jeśli tak, podzielilbys się schematem i konfiguracja?