SkillAgentSearch skills...

HeatPumpController

The Valden Heat Pump controller is a platform to precisely control heat pumps

Install / Use

/learn @openhp/HeatPumpController

README

Valden Heat Pump Controller v1.x

<b>The Valden Heat Pump controller is an open source platform to precisely control heat pumps. This controller can be used for the automation of newly built Heat Pumps (HPs), as a repair controller for old systems or as control system for performing experiments on refrigeration equipment.</b> <br><br>

Specs

  • 12V 0.5A DC power supply,
  • 230V output,
  • 4 16A relays: Compressor, Hot Circulating Pump (CP) or Air Fan, Cold CP or Air Fan, Crankcase Heater,
  • 2 inputs: Hot and cold side refrigerant over/under pressure NC sensors,
  • up to 12 temperature (T) sensors, -55..+125 °C range,
  • Electronic Expansion Valve (EEV) supported, 6 pin EEV connection: 4 * coils + 2 * 12V,
  • automatically turns on/of system when heating required,
  • automatic power saving mode,
  • built-in protections: cold start, overheat, short-term power loss, power overload, ground loop freeze, compressor protection against liquid and other,
  • LED indication,
  • control via remote display or local Serial (UART 5V). <br><br> <img src="./m_controller_and_display.jpg" width="800"><br><br>

Refrigeration schemes supported

  • Heat Pump (HP) with Electronic Expansion Valve (EEV),
  • HP with capillary tube or TXV,
  • EEV-only controller.<br><br>

Installations supported

  • Indoor: a house or technical building with an almost stable temperature,
  • Outdoor: harsh climatic conditions taken into account. Outdoor HP installations tested down to a minus 32 °C.<br><br>

Changelog and history

  • 2018: PCB prototype, first real installation,
  • 2019: 2-layer PCB, through-hole components, integrated buttons and display (public access),
  • 2019: controller redesigned taking into account development and operating experience, 2-layer PCB, SMD,
  • 2019-2021: installations, development, tests, revisions, redesigns (limited access),
  • 06 Feb 2021: product is technically completed and ready for public access. Documentation and release stage,
  • 31 Aug 2021: public access granted.<br><br>

Get your own PCB copy. Assembly.

  • download PCB Gerber file here or get your own copy there,
  • order electronic components, see BOM (Bill Of Materials) appendix,
  • solder electronic components, assembly instructions here<br><br>. <img src="./m_c_assembly_completed.jpg" width="500"><br><br>

Firmware upload

This process is the same as for other Arduinos:

  • connect USB-> UART converter,
  • start Arduino IDE,
  • download and open the firmware file,
  • select board and MCU in the Tools menu (hint: we are using "mini" board with 328p MCU),
  • press the "Upload" button in the interface and "Reset" on the Arduino.

For arduinos with an old bootloader you need to update it. (Tools-> Burn Bootloader).<br> For successful compilation, you must have "SoftwareSerial", "OneWire" and "DallasTemperature" libraries installed (see Tools -> Manage Libraries).<br> For the first time it's enough to upload firmware without any tuning. Think of it as of a commercial closed-source controller, where you cannot fine-tune internal options. And any other manual configuration do not required too, just upload firmware. You will see an error LED indication and hear a beep, since no sensors connected to your controller. Follow the next steps.<br> <img src="./m_add_IDE.png" height="300"><br><br>

Self-tests

QA tests are available to test the assembled board.<br> Self-test helps you check relays, indicators, speaker and temperature sensors.<br> To run a self-tests:

  • uncomment this 3 defines in source code header,
//#define SELFTEST_RELAYS_LEDS_SPEAKER    //speaker and relays QA test, uncomment to enable
//#define SELFTEST_EEV                    //EEV QA test, uncomment to enable
//#define SELFTEST_T_SENSORS              //temperature sensors QA test, uncomment to enable
  • upload firmware,
  • connect 12V power supply,
  • disconnect +5V wire from USB-UART converter.<br>

To check EEV connection, you can use a stepper motor. If you are testing a real EEV, it will be closed after the first "beep" and partially opened after the second "beep". If it's not, check if stepper or EEV center pin(s) connected to +12V and try to swap coil-end pins (EEV1..EEV4).<br> <img src="./m_c_selftest_EEV.jpg" width="500"><br> To check temperature sensors connectors crimp one array of sensors. Plug it to all sensor connectors one-by-one and check results in a serial console.<br> <img src="./m_c_selftest_t_sensors.jpg" width="500"><br> <img src="./m_c_selftest_t_readings.png"><br> After tests completed, comment 3 self-test defines.<br> Choose your installation scheme and uncomment one of those options:

#define SETPOINT_THI 	//"warm floor" scheme: "hot in" (Thi) temperature used as setpoint
//#define SETPOINT_TS1 	//"swimming pool" or "water tank heater" scheme: "sensor 1" (Ts1) is used as setpoint and located somewhere in a water tank

Re-upload firmware. Your controller is ready for the first start (after wiring). Probably you'll never need to change other options.<br><br>

Wiring (permanent controller installation).

Here are no instructions for choosing the right placement for permanent installation of the controller. It depends. You're building your system, and you know much better "where" and "how".<br> Assuming you have installed your controller to the permanent place, the next step is wiring.<br><br> Wiring is very simple, despite a lot of terminals.<br> Phases (1st wire in electrical cables):

  • connect the "power inlet" wire to one of the "phase" terminals,
  • connect the "Compressor" relay output to the Compressor input,
  • connect the "Hot CP" relay output to the Hot Circulation Pump input (or to the fan power input of the indoor unit if you are using an air system),
  • connect the "Cold CP" relay output to the Cold Circulation Pump input (or to the fan power input of the outdoor unit),
  • when using a compressor heater: connect the "Crankcase heater" relay output to the heater cable (highly recommended for outdoor installation and year-round use),
  • connect all the second wires of power cords to the "neutral" terminals on the board.<br> <img src="./m_c_wiring_power.jpg" width="600"><br>

12V Power Supply:

  • connect the second "phase" and one of "neutral" terminals to the AC input of the 12V power supply,
  • connect 12V power supply output to GND and 12V<br> <img src="./m_c_wiring_12v.jpg" width="600"><br>

Crimp and plug low-voltage connectors:

  • crimp SCT013 sensor wires (the only one low-voltage device in this circuit with interchangeable wires), connect and install it on the inlet phase wire,<br> <img src="./m_c_wiring_current_sensor.jpg" width="600"><br>
  • crimp RS485 to the Remote Display, using a wire of desired length (note that A is connected to A, B to B and GND to GND),
  • crimp 12V and GND secondary terminals to the remote display,<br> <img src="./m_c_wiring_display.jpg" width="600"><br>
  • connect EEV to EEV terminal,<br> <img src="./m_c_wiring_EEV.jpg" width="600"><br>
  • install all T sensors on pipes, insulate tubes,
  • crimp T sensors arrays, you can crimp all four GND wires at every array to one GND connector pin or make 1-to-4 connection somewhere closer to sensors location (same for +5V wires),
  • insert T sensors arrays to appropriate terminals (if you do not need to control over all temperatures, disable and do not install unnecessary sensors),<br> <img src="./m_c_wiring_t_sensors.jpg" width="600"><br>
  • crimp and plug pressure sensors outputs: crimp 1st wires together to 12V (right output of the terminal), 2nd cold side wire to the Pco (left), 2nd hot side wire to the Phi (middle); use the dummy if no pressure sensors used in your system. <img src="./m_c_wiring_pressure.jpg" width="600"><br> <img src="./m_c_wiring_pressure_dummy.jpg" width="600"><br>

You may prefer to solder the wires over using terminals and crimping connectors. But in this case, it will be difficult to disassemble the system if you want to change something. The choice is yours.<br><br> And one more: remember! 230V inside! Do not turn on the phase without need.<br> Have you ever received 230V with your own hands? If yes - you know. If no - do not try.<br> Also remember about animals and children during the installation at a permanent place.<br><br>

Control and usage: serial console

This is a first interface to Heat Pump controller you'll see after uploading firmware (Tools->Serial Monitor).<br> The console itself is simple to use, several commands are available. Type in command, press "Send". Help and hotkeys:<br> console help screenshot<br> Every 30 sec. (HUMAN_AUTOINFO option) you'll see stats. For example, after a startup of your compressor, you'll see something like this:<br> console statistics screenshot<br> At this example, "hot in" ~30 °C, compressor ~80 °C and so on. Heat Pump (HP, compressor) ON, Hot water pump ON, Cold water pump ON. Power consumption 980 watts. Abbreviations: refer to Appendix A below.<br> Also, you'll see diagnostic messages in your serial console.<br> Do not connect +5V wire from USB-UART converter, if you are using a serial console.<br><br>

Control and usage: Remote Control Display

This is a way for the end user to control Heat Pump.<br> <img src="./m_display_main.jpg" width="300"><br><br> End user does not want to know much about refrigerants, evaporation, discharge temperatures and so on, so this display designed as simple as it was possible. See Remote Display page for details. And yes, this display is open product too, with available Gerber, PCB and source code.<br><br>

Control and usage: [Service Display](https://github.com/openhp/ServiceDispl

Related Skills

View on GitHub
GitHub Stars154
CategoryDevelopment
Updated18h ago
Forks25

Languages

C++

Security Score

100/100

Audited on Apr 5, 2026

No findings