Opensource DIY clothes dryer

I have an old condenser style dryer and was thinking of replacing the control with something arduino based...

I could hack something just for myself and make a showoff on youtube and not share like many do, but why be an "arse"?

So I thought maybe there are others that want's to do the same and maybe even in the end do something like a kit for those not so comfortable with building boards?

Anyways my initial thoughts are:

Must be able to work with both a condenser and normal type dryer. The difference is that the normal type just dumps the heated air (big waste... imho) where the condenser re-circulate the heated air through a condenser unit --- Which more or less can be descriped as car radiator, that keeps the internal airflow seperate from the external --- and back to the clothes. Now a 2nd blow whell takes room air and blows more cool air through the condenser. This cools down the damp air on the other side and the water condenses and runs out a small tube or in a collector. (my machine is the later one)). Some say that they are damaging to the health but i would say that is only true if the condenser is coated with chemicals.

both types have a sensor that messures how much water is in the air so not that much trouble there, they also have a way to messure if the filter is full (dont know how.... airflow?). They also both have a single motor that turns both the drum and blow wheels. and they also have a heating element.

Now where i want to make the first improvement are control over the heating element. Must be PID control so that the heat can be controlled precise and without to much over or under shoot. Maybe do the same with the motor that turns the drum so that people are able to experiment with both heat level and run time. (my dishwasher has an eco program that runs a lower temp but the cycle are longer) this could maybe in the end be cheaper?

i have looked at this link: JOS – Open Source Menu Interface for Arduino/TFTLCD | The Custom Geek

so the framework is more or less done... its more or less the cycle itself that i need some help with.... dinner time here in denmark so will return later in the evening

my birthday is up so an arduino mega is on the wishlist, i know it might be overkill but it will be used as dev platform and smaller board picked in the end

to control the heating i came across this: http://www.over-engineered.com/projects/sous-vide-pid-controller/#more-69

not overly hard to use, at least not the hardware side, its more the software side that troubles my mind, what part of this code is needed to just control a heating element with a dallas chip? http://www.over-engineered.com/wp-content/uploads/TemperaturePID.pde

my "loose" idea is to make some preset cycles (target humidity, temp etc.) and put them in the menu sketch i linked just above... but... when i click a cycle the screen should not just simply say that is beeing done, but change to a screen that shows the target specs and what the current status are...

doooh.... forgot another thing... not a first on the list item but,

i want at some point add a strain gauge so that the controller can messure the whight of clothes so that the machine are not overloaded

and another nice to have could be able to messure how much power is beeing used here and now.. and how much total for the cycle... maybe have a total somewhere else... maybe a menu item that just shows how much in total... just thoughts thou... not important right now

and yes... i got a pm from a person offering services... the idea of this thread is create an controller that everyone can use and hack...

2nd idea is that if enough interest i could make a kit... but everything has to be opensource for everyone to copy... when i get to the hardware i will publish eagle files ( i use the free version so they will be limited in size and possible more than one board are needed)

What are your plans for controlling gas as the heat source?
I personnally have no plans to modify my gas heated dryer nor to get an electric heating element dryer.
I find what fits in the washer also fits in the dryer.

yeah, living here in europe (denmark in fact) i have totally forgotten about the gas driven ones, but now you mention i think that is a no-go for now (sure it's do able but require some more thinkering to keep it safe)

if your comment about what fits in the washer also fits in the dryer is meant like they are almost the same i would agree

the main idea for me at least was something that could allow me better control over the use of heat so that there was not so much over/under shoot of the heat and also allow me control over how the clothes are dryed, ie use lower heat but run longer would save some money since it does not require much to run the drum.. of course there is some croos point where higher heat would be a benefit

but once a dryer is done there is not far to control the washer, but maybe bigger savings can be done here..

and also at least in europe its common know that if you select a cycle that should run at 60 degree C it has been messured many times that the cycle runs much lower. not a big deal would many say but when it comes to killing bed bugs etc its important that you can trust the temp....

also with an arduino you can do a lot more like remote monitor and collect data on how much water etc has been spend... even automatic dispensing of soap and fabric softner

so i downloaded the code for the menu here... http://www.thecustomgeek.com/files/JOS_TFT_Touch_ALPHA_LS.pde

i gives a bunch of complie errors, i think because the code is not made for the newest version of the lib's but not sure where or what to correct

can somebidy point me in the right direction?

sketch_aug29a:47: error: 'TFTLCD' does not name a type
sketch_aug29a.cpp: In function 'void setup()':
sketch_aug29a:134: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void loop()':
sketch_aug29a:234: error: 'tft' was not declared in this scope
sketch_aug29a:240: error: 'tft' was not declared in this scope
sketch_aug29a:246: error: 'tft' was not declared in this scope
sketch_aug29a:252: error: 'tft' was not declared in this scope
sketch_aug29a:258: error: 'tft' was not declared in this scope
sketch_aug29a:271: error: 'tft' was not declared in this scope
sketch_aug29a:277: error: 'tft' was not declared in this scope
sketch_aug29a:283: error: 'tft' was not declared in this scope
sketch_aug29a:289: error: 'tft' was not declared in this scope
sketch_aug29a:295: error: 'tft' was not declared in this scope
sketch_aug29a:308: error: 'tft' was not declared in this scope
sketch_aug29a:314: error: 'tft' was not declared in this scope
sketch_aug29a:320: error: 'tft' was not declared in this scope
sketch_aug29a:326: error: 'tft' was not declared in this scope
sketch_aug29a:332: error: 'tft' was not declared in this scope
sketch_aug29a:345: error: 'tft' was not declared in this scope
sketch_aug29a:351: error: 'tft' was not declared in this scope
sketch_aug29a:357: error: 'tft' was not declared in this scope
sketch_aug29a:363: error: 'tft' was not declared in this scope
sketch_aug29a:369: error: 'tft' was not declared in this scope
sketch_aug29a:382: error: 'tft' was not declared in this scope
sketch_aug29a:388: error: 'tft' was not declared in this scope
sketch_aug29a:394: error: 'tft' was not declared in this scope
sketch_aug29a:400: error: 'tft' was not declared in this scope
sketch_aug29a:406: error: 'tft' was not declared in this scope
sketch_aug29a:419: error: 'tft' was not declared in this scope
sketch_aug29a:425: error: 'tft' was not declared in this scope
sketch_aug29a:431: error: 'tft' was not declared in this scope
sketch_aug29a:437: error: 'tft' was not declared in this scope
sketch_aug29a:443: error: 'tft' was not declared in this scope
sketch_aug29a:456: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void clearcenter()':
sketch_aug29a:565: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void clearsettings()':
sketch_aug29a:579: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void homescr()':
sketch_aug29a:585: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void menu1()':
sketch_aug29a:594: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void menu2()':
sketch_aug29a:603: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void menu3()':
sketch_aug29a:612: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void menu4()':
sketch_aug29a:621: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void menu5()':
sketch_aug29a:630: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void settingsscr()':
sketch_aug29a:639: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void showsleep()':
sketch_aug29a:800: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void blbar()':
sketch_aug29a:923: error: 'tft' was not declared in this scope
sketch_aug29a:926: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void ant()':
sketch_aug29a:931: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void boxes()':
sketch_aug29a:934: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void signal()':
sketch_aug29a:942: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void signalact()':
sketch_aug29a:962: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void drawhomeicon()':
sketch_aug29a:982: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void drawhomeiconred()':
sketch_aug29a:994: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void clearmessage()':
sketch_aug29a:1006: error: 'tft' was not declared in this scope
sketch_aug29a.cpp: In function 'void drawbatt()':
sketch_aug29a:1011: error: 'tft' was not declared in this scope
sketch_aug29a:1015: error: 'tft' was not declared in this scope
sketch_aug29a:1018: error: 'tft' was not declared in this scope

Do you have these 2 libraries in your library folder?

#include "TFTLCD.h"
#include "TouchScreen.h"

yep... or else it would have reported them missing :smiley:

the author have released a new version after i hit the bed...

now the error is reduced to: sketch_aug29a.cpp:10:3: error: #error "For use with the shield, make sure to #define USE_ADAFRUIT_SHIELD_PINOUT in the TFTLCD.h library file"

in his post here: JOS – Updated!!! | The Custom Geek he says to uncomment the line but the sketch says it should be defined... the sketch is here: JOS---TFT-Menu-System/JOS_Touch_15.ino at master · jersagfast/JOS---TFT-Menu-System · GitHub

but non the less its a lot closer, once i get it working my first step is to insert a wifi config screen XD

quick fix was to uncomment the line in Adafruit_TFTLCD.h and put a "1" at the end of the line

of course this might not be correct but at least it can compile

so i got the 2560 mega and a redfly (wifi) shield and so far managed to get a simple sketch going (look below)

i have an approx idea on how to sticth in my cycles (just a few) for the dryer, but would that be wrong if i later want to add a touch screen?

Allow me a couple of comments based on tearing about 10+ dryers down for work. These suggestions are by no means all-encompassing, and my primary concern would be safety. It goes without saying that modifying a 5kW device is something that should be done VERY carefully. Based on the usual 230V power supply in the US for electric dryers, that's about 25 amperes, I suggest having a fire extinguisher on hand and to have the whole assembly downstream from a manual disconnect switch that is rated for the current you're playing with (i.e. 20+ amps). Do NOT rely on the circuit breaker to protect you.

Unless you have the right background, I would hire an experienced Electrical Engineer (i.e. someone who has designed similar circuits) to guide with the design and a good electrician to implement it. Have them study the schematics that are enclosed with the dryer. They are usually hidden inside the dryer inside a plastic baggie. The manual may mention the location.

Study the main PCB also. The relays that are used there will be a good guide towards the MINIMUM relay capacity you'll have to consider for your board / control system. You may need some very fat traces to carry some of the high currents involved or (better yet) use relays that feature 0.25" quick connect terminals for the load switching (preferable, IMO).

As for modulating heat control, if you want to go down this path I'd suggest the use of a 40A SSR (Triac-based) with a big heat sink - see the spec sheets re: the heat sink needs as a function of current and perhaps mount the heat sink in the path of incoming air to help cool it or add a supplemental box fan to keep it cool. I have used the PID library hosted here for my reflow oven. Works great.

If your dryer has a separate motor for air flow and drum rotation, I would consider going with a dual-channel SSR, that allows you to modulate the air flow as well as the heater any way you like. I would not mess with the induction motor driving the drum. Keep that on a a simple relay, on/off.

I would also mount multiple DS18B20s around the dryer to shut it off if there is a problem (i.e. SSR heat sink, exit air temperature for the drum, air flow motor, housing around the heaters, etc.). I would also confirm air flow and stop the dryer if there is a problem. The induction motor that usually drives both the fan and the drum may have a centrifugal switch that you could use for that purpose.

Let me re-iterate: Unless you know what you're doing, do not attempt this project by yourself. The voltages and currents involved are sufficient to potentially cause significant physical damage, injury, or even death. Hire experienced help to review what you want to do before implementing it with experienced help. The cost of doing so will be significantly less than the potential trouble you can get yourself or your loved ones into.

I'm based in Europe and my dryer is a 1 phase unit so it takes no more than 2300Kw all included (also the rating of the fuse in breaker/fuse panel). Also here it's required to have a earth leakage relay, that if the current that goes in the relay does not match what goes out disconnects everything from the outside, it only allows 20 miliamps of leakage max. in practical terms it means that if current goes through me to ground the relay will cut. and all stuff like dryers and washers are required to be grounded. anyway i would never touch anything thats live if i can avoid it. and if needing to messure something good commons sense is half the safety

I do have the background, been working 1 year as an electrician and do have about 12 courses in electronics. The Schematics are not included... but that not what worries me, i can draw it in a few hours with the dryer taken apart and a multimeter.

For the high loads, in fact both the heating element and motor that rotates the drum its my plan to use solid state relays or triac's. I have in mind those kinds that have either screw terminals or spade connectors depinding on what is used in my unit. 40A seems a bit overkill compared to that my system is 10A max.. but maybe go for a 20A would be the choice. since my dryer is a condensing type it has 2 airways.. one internal and one that just takes room air and blows it through the condenser, the output from here is barely any hotter than what it takes in and seems a good place for airflow over the heatsink. i agree to not mess with drum rotation, makes no sense to alter it.

and the idea with multiple temp sensors is not bad either, at least i know there has to be a certain difference between room temp and the temp in the drum before the condenser operates, the higher difference the faster you are done but also you use more electricity. i know that my dryer has a resetable thermofuse if it gets to hot. i only need to figure how it detects a full filter.

my biggest problem is coding, no problem in finding code here and there for what i want, its more stitching it together that is the main issue.

Hmm.. thought i would do draft on inputs and outputs i plan to use

inputs:

room temp
triac temp
drum temp
humidity sensor - most of my "planned" cycles target a humidity set point and starts a cool down period after that.
water tank full - cant decide if i should just have a simple full or upgrade to a load sensor / strain gauge to tell how full
current sensor - nice to know how much electricity used both per cycle and in total.
airflow sensor - to detect if filter is full and if possible how full

outputs:

drum rotation
drum direction
heat
(airflow)

I would think the single most efficient control algorithm would be to use an internal humidity sensor to tell the controller that the cloths are dry enough now and to cut the heat source (gas or electric) and start the tumble cooling cycle. I believe that there are dryers that have that control option available all ready?

most work that way...

but what could improve is variable heat source where most dryers operate on a simple on/off and that will cause some overshoot which is a waste of energy.

adding an arduino also allows for custom cycles. one of my fav's will be a cycle that targets on humidity but use lower temps, this will of course result in a longer cycle but will save on the bill. of course you have to judge time used against heat used... why i included a current sensor so that electricity used can be messured...

again its mostly stitching code together that are my biggest issue in this project.

boelle:
most work that way...

but what could improve is variable heat source where most dryers operate on a simple on/off and that will cause some overshoot which is a waste of energy.

Why would overshoot/undershoot be a waste of energy. Is not all the heat energy generated directly going into the drying of the material? As long as you are not continuing to send heat into the material that is already 'dry enough' I don't see where the 'waste' is? Too much heat, time to 'dry enough' shortened, too little heat, time to 'dry enough' takes a little longer, no net change on total heating BTU consumed used to reach the it's 'dry enough' setpoint.

adding an arduino also allows for custom cycles. one of my fav's will be a cycle that targets on humidity but use lower temps, this will of course result in a longer cycle but will save on the bill. Why would this save energy consumed, it should take the same amount of total BTUs to remove xx amount of moisture from the material because it's a heat/time product equation? of course you have to judge time used against heat used... why i included a current sensor so that electricity used can be messured...

again its mostly stitching code together that are my biggest issue in this project.

boelle:
I'm based in Europe and my dryer is a 1 phase unit so it takes no more than 2300Kw all included (also the rating of the fuse in breaker/fuse panel).

I presume you meant 2300W, not kW. Otherwise, you'd likely have to open a new sub-station in your neighborhood.

I'm surprised that the circuits in the EU are limited to 10A for clothes dryers. In the US, we have to run a different kind of wiring (three or four conductor, heavy duty) to dryer outlets, whose plugs can make standard UK plugs blush with envy. I would not rely on a GFCI to protect you. At least for testing purposes I would have a manual fuse and a disconnect switch. But that's me.

boelle:
I do have the background, been working 1 year as an electrician and do have about 12 courses in electronics. The Schematics are not included... but that not what worries me, i can draw it in a few hours with the dryer taken apart and a multimeter.

Thanks for re-assuring me that you know what you're doing. Having taken a bunch of these (and many other) appliances apart, I suggest you find a copy of the schematics if you can. Perhaps the OEM can send you a copy. It will make your life a lot easier. Let me give you an example: I recently attached a SSR to a toaster oven circuit and had a diode interfere with it. The diode was not obvious because the OEM had included no diagram with the toaster oven.

boelle:
For the high loads, in fact both the heating element and motor that rotates the drum its my plan to use solid state relays or triac's. I have in mind those kinds that have either screw terminals or spade connectors depinding on what is used in my unit.

My suggestion would be to use a Triac with 0.25" quick connects. The friction fit is almost impervious to the inevitable vibrations of the dryer as it operates.

boelle:
40A seems a bit overkill compared to that my system is 10A max.. but maybe go for a 20A would be the choice. since my dryer is a condensing type it has 2 airways.. one internal and one that just takes room air and blows it through the condenser, the output from here is barely any hotter than what it takes in and seems a good place for airflow over the heatsink. i agree to not mess with drum rotation, makes no sense to alter it.

Seems reasonable. For the record, I meant not to alter the drum speed. I agree that changing the drum direction is unlikely to have any benefit either. Hard to do, unless you have the right motor in there to start with.

boelle:
and the idea with multiple temp sensors is not bad either, at least i know there has to be a certain difference between room temp and the temp in the drum before the condenser operates, the higher difference the faster you are done but also you use more electricity. i know that my dryer has a resetable thermofuse if it gets to hot. i only need to figure how it detects a full filter.

The thermofuse blows if the temperature near the coils gets too hot. That temperature is a function of air flow. Once the air flow is impeded by a clogged filter, the fuse will hence trip. Down by the actual blower motor (which typically sucks the air through the heater, followed by the drum before exhausting it) you should find at least one more thermal switch or sensor for the less expensive models. Once the exhaust air reaches a certain level, the dryer knows that the clothes are almost dry, runs a bit more, and shuts off.

More expensive dryers will attempt to divine clothing wetness through a variety of additional means.

retrolefty:
I would think the single most efficient control algorithm would be to use an internal humidity sensor to tell the controller that the cloths are dry enough now and to cut the heat source (gas or electric) and start the tumble cooling cycle. I believe that there are dryers that have that control option available all ready?

Every unit I saw did not measure humidity directly. Either capacitive sensors, temperature, etc. I presume fouling has to do with it. The nice aspect of the "bar" sensors typically found in the back wall of dryers is that they cannot foul easily. How accurate they are is another question. However, you can supplement that info with exit temperature info to hopefully not over- or under-dry too much.