Vyzkoušel jsem tři senzory různých technologií
1) Platina - PT1000 (MAX31865)
2) Infra (MLX90614)
3) K článek (MAX6675)
1) Deska od Adafruit, s zesilovačem MAX31865, připojení SPI, čidlo PT1000
Deska podpotuje 2,3,nebo 4 drát senzory. Desky pro PT100 a PT1000 se liší jen velikostí referenčního rezistoru, 430, resp 4K3, 0805, tolerance 0.1%
MAX 31865 je v ESPhome přímo podporován. Výborný návod na propojení: https://cdn-learn.adafruit.com/download ... lifier.pdf
Pozor past: CS pin senzorové desky nepřipojovat na pin CS (GPIO15, D8) u ESP8266. Senzor ten pin drží pull-upem a ESP pak nenabootuje...
2) infračidlo MLX90614, opět modul od Adafruit, připojení I2C
knihovna pro MLX90614, jedna z mnoha dostupných na Internetu - https://github.com/exxamalte/esphome-cu ... r/mlx90614
využívá interně originální adafruit arduino knihovnu, nemá implementováno nastavení emisivity měřeného předmětu, které senzor umí.
Instalace jednoduchá, vytvořit pod esphome složku a nakopírovat jeden soubor. V tomto souboru se také nechá změnit "update_interval", mám vyzkoušeno že funguje změna z 15000ms na 3000ms
Senzor poskytuje dva údaje o teplotě - okolí čidla a teplotu předmětu kam se dívá
3) K článek (MAX6675)
K je nejběžnější druh termočlánkového čidla, používají to různé teploměry do trouby apod.
MAX6675 je ESPhome přímo podporován
Funkční kód k senzorům, PWM výstup je použit na ovládání SSR relé spínající topnou desku.
Kód: Vybrat vše
substitutions:
jmeno: hotplate1
esphome:
name: $jmeno
platform: ESP8266
board: esp12e
includes:
- "custom/mlx90614_sensor.h"
libraries:
- SPI
- Wire
- adafruit/Adafruit BusIO @ 1.9.6
- "Adafruit MLX90614 Library"
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
password: !secret ota
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
power_save_mode: none
domain: .lan
#use_address: rele.local
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Rele Fallback Hotspot"
password: "LXxB6NZwbrFC"
captive_portal:
output:
- platform: esp8266_pwm
pin: GPIO16 #D0
frequency: 1000 Hz
id: pwm_output
i2c:
scl: GPIO5 #D1
sda: GPIO4 #D2
# scan: true
frequency: 50kHz
spi:
miso_pin: GPIO12 #D6
mosi_pin: GPIO13 #D7
clk_pin: GPIO14 #D5
sensor:
- platform: max31865
name: "$jmeno PT1000 Teplota"
cs_pin: GPIO2 # nesmí to být GPIO15: nebo ESP nenabootuje, adafruit modul ho drží pull-upem GPIO15 #D8
reference_resistance: 4300 Ω
rtd_nominal_resistance: 1000 Ω
mains_filter: 50 Hz
rtd_wires: 3
update_interval: 3s
- platform: custom
lambda: |-
auto mlx90614_sensor = new MLX90614Sensor();
App.register_component(mlx90614_sensor);
return {mlx90614_sensor->ambient_temperature_sensor, mlx90614_sensor->object_temperature_sensor};
sensors:
- name: "$jmeno MLX Ambient Teplota"
unit_of_measurement: °C
accuracy_decimals: 1
- name: "$jmeno MLX Object Teplota"
unit_of_measurement: °C
accuracy_decimals: 1
- platform: max6675
name: "$jmeno K článek Teplota"
cs_pin: GPIO15
update_interval: 3s
fan:
- platform: speed
output: pwm_output
name: "$jmeno HotPlate 450W"
Kód: Vybrat vše
[20:52:11][D][max6675:046]: 'hotplate1 K článek Teplota': Got temperature=24.2°C
[20:52:11][D][sensor:125]: 'hotplate1 K článek Teplota': Sending state 24.25000 °C with 1 decimals of accuracy
[20:52:14][D][mlx90614:039]: Ambient temperature measured: 20.790003
[20:52:14][D][sensor:125]: 'hotplate1 MLX Ambient Teplota': Sending state 20.79000 °C with 1 decimals of accuracy
[20:52:14][D][mlx90614:054]: Object temperature measured: 20.429987
[20:52:14][D][sensor:125]: 'hotplate1 MLX Object Teplota': Sending state 20.42999 °C with 1 decimals of accuracy
[20:52:14][D][sensor:125]: 'hotplate1 PT1000 Teplota': Sending state 22.63174 °C with 2 decimals of accuracy
[20:52:14][D][max6675:046]: 'hotplate1 K článek Teplota': Got temperature=24.0°C
[20:52:14][D][sensor:125]: 'hotplate1 K článek Teplota': Sending state 24.00000 °C with 1 decimals of accuracy
[20:52:16][D][mlx90614:039]: Ambient temperature measured: 20.830011
[20:52:16][D][sensor:125]: 'hotplate1 MLX Ambient Teplota': Sending state 20.83001 °C with 1 decimals of accuracy
[20:52:16][D][mlx90614:054]: Object temperature measured: 20.429987
[20:52:16][D][sensor:125]: 'hotplate1 MLX Object Teplota': Sending state 20.42999 °C with 1 decimals of accuracy
[20:52:16][D][sensor:125]: 'hotplate1 PT1000 Teplota': Sending state 22.59808 °C with 2 decimals of accuracy
[20:52:17][D][max6675:046]: 'hotplate1 K článek Teplota': Got temperature=24.0°C
[20:52:17][D][sensor:125]: 'hotplate1 K článek Teplota': Sending state 24.00000 °C with 1 decimals of accuracy
[20:52:19][D][mlx90614:039]: Ambient temperature measured: 20.770014
[20:52:19][D][sensor:125]: 'hotplate1 MLX Ambient Teplota': Sending state 20.77001 °C with 1 decimals of accuracy
[20:52:19][D][mlx90614:054]: Object temperature measured: 20.230005
[20:52:19][D][sensor:125]: 'hotplate1 MLX Object Teplota': Sending state 20.23001 °C with 1 decimals of accuracy
[20:52:19][D][sensor:125]: 'hotplate1 PT1000 Teplota': Sending state 22.63174 °C with 2 decimals of accuracy
[20:52:20][D][max6675:046]: 'hotplate1 K článek Teplota': Got temperature=23.8°C
[20:52:20][D][sensor:125]: 'hotplate1 K článek Teplota': Sending state 23.75000 °C with 1 decimals of accuracy
[20:52:22][D][mlx90614:039]: Ambient temperature measured: 20.790003
[20:52:22][D][sensor:125]: 'hotplate1 MLX Ambient Teplota': Sending state 20.79000 °C with 1 decimals of accuracy
[20:52:22][D][mlx90614:054]: Object temperature measured: 20.309992
[20:52:22][D][sensor:125]: 'hotplate1 MLX Object Teplota': Sending state 20.30999 °C with 1 decimals of accuracy
[20:52:22][D][sensor:125]: 'hotplate1 PT1000 Teplota': Sending state 22.59808 °C with 2 decimals of accuracy
[20:52:23][D][max6675:046]: 'hotplate1 K článek Teplota': Got temperature=24.2°C
[20:52:23][D][sensor:125]: 'hotplate1 K článek Teplota': Sending state 24.25000 °C with 1 decimals of accuracy