Note

Programovatelný vařič

Idea

Pro eloxování by bylo vhodné mít zařízení, které by umožňovalo dosažení a udržení kapaliny v požadované teplotě.

První nápad spočíval v úpravě plotýnkového vařiče a jeho spínání pomocí stykačů ovládaných esp32 na základě teplot zjištěných z DS18B20.

V zásobách jsem nalezl dvě desky Original Prusa HeatBed Mk42 s NTC 100k termistorem.

The Mk42 heat bed is rated at 12V and has a nominal resistance of 1 Ohm. The copper tracks of the heated bed are the resistor. Put 12V though and it will draw 12 Amps and generate 144W of heat
https://forum.prusa3d.com/forum/original-prusa-i3-mk3s-mk3-improvements-archive/heating-bed-with-24-volts/

Deska si vezme 12A a vygeneruje 144W tepla

The amount of energy needed to raise the temperature of 1 g of water by 1 degree Celcius or (1 Kelvin) equals 1 calorie. And 1 calorie equals 4,184 Joule. So if you want to raise the temperature of 1 litre of water (1 litre = 1000g for water) by 80 degrees Celcius, your calculation should look like this: 1000g*4,184J/(g°C)80°C= 334 720 Joules
1 kWh = 3 600 000 Joules, because 1 watt of power during 1 second equals 1 Joule. So 3600 seconds in 1 hour multiplied with a power of 1000 Watt equals 3 600 000 Joules.
334 720 / 3 600 000 = 0,093 kWh of energy to heat 1 kg of water from 20 °C tot 100 °C
If you want to deliver 0,093 kWh in 1 minute instead of 1 hour, the required power output during that minute would be 0,093*60 = 5,58 kW or 5580 Watt.
https://www.quora.com/How-many-watts-do-you-need-to-boil-water

Zdá se, že za hodinu bychom mohli na desce uvařit litr vody, tedy pro udržení teploty kolem 90°C nebo 50°C bychom měli mít dostatek výkonu. Problematické by mohlo být rozprostřední výkonu do celé plochy desky, zatímco ohřívaná kapalina bude v menší nádobě.

Pro spínání desky jsem v zásobách nalezl modul HW-700, který by měl být schopen spínat až 25A.

Mělo by tedy stačit na esp32 postavit PID regulátor, propojit vstup do HW-700, připojit termistor na desce a připojit DS18B20 pro měření teploty kapaliny.

U neagresivních kapalin může měření probíhat ponořením do kapaliny, u agresivních kapalin budeme měřit přiložením na nádobu.

Asi nejjednodušší je použí a nakonfigurovat ESPHome, který již obsahuje modul PID Climate, včetně autotune parametrů.

PID regulátor bych napojl na čidlo teploty kapaliny a termistor na desce bych nechal pouze pro účely horního limitu teploty ohřevu desky.

V ESPHome tedy budeme mít dva sensory (NTC Sensor a Dallas Temperature Sensor), jeden PID regulátor (PID Climate) a jeden výstup (GPIO Switch).

Termistor se připojuje přes odpor, který slouží jako dělič napětí. https://learn.adafruit.com/thermistor/using-a-thermistor#self-heating-3-22. Jeho 3.3V výstup připojíme na GPIO a budeme ho spínat jen na dobu měření, abychom předešli jeho samovolnému ohřevu

DS18B20 se připojuje přes odpor 4.7kOhm.

Materiál

  • deska HeatBed MK42 + NTC 100k termistor
  • modul HW-700
  • modul ESP32
  • čidlo s DS18B20 na kabelu
  • odpor 4.7kOhm pro DS18B20
  • odpor 100kOhm pro termistor
  • zdroj 12V asi 16A
  • step-down 12V -> 3.3V pro ESP32

Konfigurace

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
dallas:
  - pin: 23
sensor:
  - platform: dallas
    id: liquid_temperature
    # address: 0x1c0000031edd2a28
    name: "Liquid Temperature"
  - platform: ntc
    id: heatbed_ntc
    name: "heatbed Temperature"
    sensor: heatbed_resistance_sensor
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 100kOhm
      #- 10.0kOhm -> 25°C
      #- 27.219kOhm -> 0°C
      #- 14.674kOhm -> 15°C
  - platform: resistance
    id: heatbed_resistance_sensor
    sensor: heatbed_sensor
    configuration: DOWNSTREAM
    resistor: 100kOhm
    name: Resistance Sensor
  - platform: adc
    id: heatbed_sensor
    pin: A0
    update_interval: never
switch:
  - platform: gpio
    pin: D0
    id: heatbed_ntc_vcc
  - platform: gpio
    id: heatbed_switch
    pin:
      number: 25
      # default off
      inverted: true
interval:
  - interval: 60s
    then:
      - switch.turn_on: heatbed_ntc_vcc
      - component.update: heatbed_sensor
      - switch.turn_off: heatbed_ntc_vcc
climate:
  - platform: pid
    name: "PID Climate Controller"
    sensor: temperature_sensor
    default_target_temperature: 21°C
    heat_output: heater
    control_parameters:
      kp: 0.49460
      ki: 0.00487
      kd: 12.56301
      output_averaging_samples: 5
      derivative_averaging_samples: 5
    deadband_parameters:
      threshold_high: 2.5°C
      threshold_low: -2.5°C
Tento příspěvek je licencován pod CC BY 4.0 autorem.