Měření vyšších teplot kam už si termistory většinou netroufnou.

www
Odpovědět
kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Měření vyšších teplot kam už si termistory většinou netroufnou.

Příspěvek od kiklhorn »

Občas je třeba měřit i vyšší teploty (plotýnka apod.)
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.
knihovnaMLX.jpg
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"
Log:

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
Všechny tři senzory na jedné ESP8266mini
Přílohy
hotplate-3.JPG
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Re: Měření vyšších teplot kam už si termistory většinou netroufnou.

Příspěvek od kiklhorn »

Jen poznámka - Zkouším to přenést na ESP32 a

Kód: Vybrat vše

  - 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
způsobuje nějaký problém, PWM pak není funkční.
Na ESP8266 problém není.
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

Odpovědět

Zpět na „ESPHome“