How and why I built Liebert challenger A/C Controller
I am a full stack developer and infrastructure administrator for a major web hosting company. I specialize in microcontrollers, automation, and data science as well as front end interfaces.
The problem I wanted to solve
Although these air conditioners utilize teaming, they rarely play nice together when trying to keep a large space cool. Several of the units that were teamed together would frequently drop out and stop cooling forcing others to work harder.
What is Liebert challenger A/C Controller?
I built a system using Arduino and raspberry pi along with ~300 Dallas Semiconductors Ds18b20 temperature sensors to take more accurate readings of the ambient (return) air throughout the area, and supply averages based on unit location to each unit using raspberry pi's frequency generator function on it's GPIO. By providing more accurate readings of the return air, we are able to control the group of A/C units as a whole making them all work nicely together.
To accomplish this I used Arduino's utilizing the onewire library to read the temp sensors and supply the data via a telnet connection to a Linux server. The server cached the data using Memcache, which was then extracted by another server once a minute for display on both a heatmap style display as well as an API backend. The raspberry pi's then collected temperature averages from the API and converted them into a frequency that was fed back into the A/C unit's built-in temp sensor wiring.
The process of building Liebert challenger A/C Controller
This project started with circuit board and sensor design. Commercially available sensors and equipment proved to be too expensive to both deploy and maintain. We needed an easy to connect to and low profile and cost sensor to mount throughout our area as well as a connection back to our Arduino. We decided on cat5 cable for the connections as we had an abundance and the connectors are inexpensive, but also because of it's twisted pair and low latency and resistance. I designed an in-line style of sensor board that allowed for a long network string without many branches. I also then designed an Arduino "shield" to make the connection back also an easy one, and sent both designs to a PCB manufacturer. Unpon receiving my boards, I assembled the first 200 myself for testing. After verifying everything was okay, I ordered 2000 sensors to be printed, assembled, and tested.
Challenges I faced
During deploying the massive onewire network, I found that resistance and powering the network was a challenge. I was able to overcome the challenges using asynchronous programming to start temperature conversions earlier giving them more time, as well as some minor changes to the onewire library files, and dialing in the resistance.
I learned alot about project management. I also learned a good deal about large onewire networks, the protocol itself, and timing. Using the raspberry pi's frequency generator was also a fun learning experience.
Tips and advice
Plan ahead. Program asynchronously, but also work asynchronously to save yourself time. Don't rely on Arduino libraries to always be correct and work right out of the box. Test EVERY cat5 cable you terminate. One cross or short can cost you hours of time debugging in a 300 device network.
Final thoughts and next steps
Overall the project was a success and will be rolled out and used widely within our corporation. We are already seeing the savings on our electrical bills and equipment maintenance. To further this project now, I've begun reverse engineering some commercially available sensors we have used in the past to be compatible with this new system. This will offer further savings as well as performance improvements over the older slower commercially available product we were using.