Maintaining a proper wine temperature can help a $10 bottle of wine taste like a million bucks! A standard fridge will do good in pinch, but is too cold for long term storage.
Enter my custom wine fridge, maintaining temperature according to this guide I found online. Designed to keep wine at 55°F (12.78°C) until serving time, when the fridge will adjust to the proper temperature depending on the type of wine.
HardwareIn it's current implementation, a Peltier module is used to remove heat from the fridge, with a fan on the inside to circulate the air. A Particle relay board + Photon controls power to the Peltier and fans. The chilling system is turned on or off based on the read of a TMP36 temperature sensor. An independent temperature display reports the temperature in real time. As the display is Celsius only, all temperatures are reported as Celsius. The fridge is made of Foamular rigid insulation to keep the temperature stable. The Peltier can draw up to 75W from a 12V power supply, so the system is powered by a 110W supply to have plenty of room for the fans, relay board, Photon, and display.
ParticleReplace paneling with custom cut acrylic know I'm a huge fan of Particle products. Cost effective, WiFi, cloud service, what's not to love? For this project, I added their relay board to control the 12V devices without hassle.
The code is straightforward. The loop checks what mode the system is in assigns the setpoints appropriately. Every 30 seconds, the temperature is polled and they chiller is turned on or off to stay within the bounds.
The setpoints are managed in a pair of arrays for the lower and upper bounds. The index of the array corresponds to which wine for serving, or index 0 for storage.
/*
* Lower and upper temperature thresholds in Centigrade
* Per a lovely chart I found at
* http://www.kj.com/blog/wine-101-what-temperature-should-my-wine-be
* Index 0 = Storage (55F)
* Index 1 = Champagne, Sparkling
* Index 2 = Pinot Gris, Riesling, Sauv Blanc
* Index 3 = Chardonnay, Viognier, White Bordeaux
* Index 4 = Pinot Noir
* Index 5 = Cab Franc
* Index 6 = Syrah, Zinfandel, Merlot, Malbec, Cab Sauv
*/
// 0 1 2 3 4 5 6
const double LoThreshDegC[] = {11.8, 6.2, 7.2, 9, 12.8, 14.6, 15.6};
const double HiThreshDegC[] = {13.8, 8.2, 10, 11, 15.6, 16.6, 18.3};
All of the functions and many of the variables are exposed to the cloud for the app to grab.
I created a simple class to manage the chiller - turning the Peltier and circulation fan on/off and reading the current temperature.
UWP AppI created a Universal Windows Platform app for several reasons. I love Visual Studio and have been using it since 2008. I have two Windows computers and a Windows Phone, so why not write a single app to deploy to all of them? I'm also going to create a Raspberry Pi - Windows IoT project in the near future, so I figured this could be good practice.
And as it turns out, Particle has a Windows SDK to easily grab functions and variables from the cloud! Instead of developing my own protocol and writing up a bunch of code to handle requests, I can let Particle do the hard work for me.
The app has two pages, one for Particle setup and one for fridge control. On Particle setup page, the user can log in to their Particle account, select their device, and set the time zone. Once a valid user has been entered, the system will store the credentials (using Microsoft's credential vault framework for security), scan for devices containing the word "wine", connect and pull the variables from that device.
Once we've pulled all the info from the device, the user can select the running mode of the fridge, schedule when and for how long the wine should be served, and pick the type of wine being stored/served. Selections fire events to call the appropriate functions in the Particle cloud to update the device. The system is polled every minute to get the current time and temperature.
ConstructionThe fridge itself is completely custom and primarily made of Foamular and duct tape
The inner chamber is 6" x 6" x 15". It's a littler taller than I'd like, but I needed room for the circulation fan. But it means it holds two bottles pretty well. The electronics are sitting on top, in the space with the heatsink for the hot side of the Peltier. The Foamular is an inch thick, so the entire unit is about 8" x 8" x 20".
The paneling is currently some black card stock from Hobby Lobby, and the lid is some cardboard with a hole for the fan, hinged by duct tape. The door is sealed with some foam insulation tape, and held shut by some eye hooks. There are some metal bars creating a shelf for the circulation fan, as well as the heatsink on the cold side of the Peltier.
All photos are in the Github repo!
I ran into a handful of issues across this project, some hardware, some software
During initial testing of the Peltier and how low the temperature could get, I found just how important a proper seal is - it's pretty easy to lose some of that cold air and the system will max (min?) out. And without a fan on the inside to move the cold air, the temperature in the fridge didn't drop much (despite the Peltier covered in frost!)
Speaking of frost build up - too much and that ice will build up and push into and jam the circulation fan. I'm currently during off the Peltier with the rest of the system, so any frost build up will melt - which may also stop the fan. So I replaced the inner fan with a waterproof one to avoid that situation. I've still not decided if I want to keep the Peltier on with circulation off, or keep them both on and off together. I might look into some dehumidification pellets to prevent moisture build up on the cool heatsink.
RoadmapThere are a handful of modifications I'd like to make to the fridge.
- Clean up and document code
- Replace paneling with custom cut arcylic
- Develop Android/iOS apps
- Add physical buttons for system modes
- Send data to Ubidots, Azure, AWS, etc for analysis and trends
Comments