Jump to content

Banner.jpg.b89429c566825f6ab32bcafbada449c9.jpg

Arduheater - Intelligent heat controller


jbrazio

Recommended Posts

For the past couple of months I've been working on a project which I named Arduheater.

Arduheater is a full open source intelligent heat strip controller for astronomy usage.

Source code is available at: https://github.com/jbrazio/arduheater

The main design goals were:

Remotely controllable

This was a very important part of the design, most heat controllers, specially the DIY ones, rely on the PWM signal for each channel being manually adjusted by means of a potentiometer. This either requires the user to be near the device tweeking it or to set it to a temperature that may be higher than the one really needed thus completely trashing efficiency. Arduheater uses a serial connection so you can use any USB-Serial-TTL dongle to adjust it's settings either you're 2 or 2000 meters away.

Efficient energy usage

Manual adjusted heater will either require the user to be tweeking it or they will wast more energy than necessary due to the general tendency to use a higher that required setpoint, this is valid for any PWM or bang-bang style controllers. Arduheater uses a temperature sensor (DHT22) to measure basic environmental properties such as temperature and humidity, knowing them both makes the calculation of the dew point[1] possible. Arduheater also has a temperature sensor (NTC) for each heating strip, allowing the micro-controller to have a rough estimation of the temperature the equipment is at; it will be a rough estimation because we are really interested on the lenses surface temperature but we are actually measuring the heat strip temperature, to mitigate this, Arduheater allows the user to set specific offsets per heating strip.

Arduheater uses a PID controller[2] to efficiently manage the energy so only the required amount of energy to maintain a temperature setpoint is delivered to the heating strip. This is possible due the usage of a PWM signal while driving the outputs; the delta between the environmental dew point (plus offset, i.e. setpoint) and the heating strip temperature will make the micro-controller output a PID-calculated PWM signal until this delta reaches zero. In practical terms if a 12V heating strip full on consumes 12W of power (1A) it may be possible for it to use only 1W or even less to keep the equipment above dewpoint and the power usage will be automatically updated during the night as conditions vary, so the system will be always using the least amount of power to keep the dew away.

Builder friendly

Using off-the-shelf components such as the Arduino Nano and easily available parts Arduheater is aimed to be build by anyone with a soldering iron and some patience, no degree in electronics required.

Allow up to four independent heat outputs

Each of the four outputs have independent controls such as offset, min and max output power and of course the three main properties of the PID controller (Kp, Ki and Kd).

 

Here are some shots of the bench prototype using a power resistor as the heating element and it's serial configuration interface:

01.JPG.414a90c02fc9d14db92505e141435f77.JPG 02.thumb.JPG.323dc7ea71938a0a3154040871a0a4e4.JPG 03.thumb.JPG.447c14058958c62d39a0c070f07e8f00.JPG 04.thumb.JPG.37a742dc8579bc4b504793f7ea4f03e9.JPG

 

The "field" prototype on it's box:

05.thumb.JPG.3de0c05975e96f88ad27800a6c8886cf.JPG

 

The heating strips (more build info will be provided further ahead):

06.thumb.JPG.48060ca02e20d14677742a560859758d.JPG 07.thumb.JPG.d4ed9335506d546a5af52ff7dad6c235.JPG

 

And of course all of this would not be possible without the usage of the force. ;-)

09.thumb.JPG.f9e15836a952c7c1f485376fcdb38034.JPG

 

I hope someone may find this project useful.

I'll keep this thread updated as soon as I'm able to release the source code, schematics and build instructions.

 

[1] Dew point is that dreadful threshold at which water condensation starts to happen on the lenses/equipment.

[2] A proportional–integral–derivative controller (PID controller) is a control loop feedback mechanism (controller) commonly used in industrial control systems.

Link to comment
Share on other sites

  • Replies 27
  • Created
  • Last Reply
  • 1 month later...

Oh, what a great thread.  Why are there only three posts?

Beautifully written up and beautifully illustrated.  I have an Arduino setup with Guiding, Focus and Exposure control, which I will document (soon) following the standards set out in this post. 

In fact I have bought the Humidity Detector/Thermometer for Arduino and not yet used it.  This thread has inspired me just to get on and do it.

JBrazio thanks very much.

Abraços,

Steve.

Link to comment
Share on other sites

  • 3 months later...
  • 3 weeks later...
  • 1 month later...
  • 2 months later...

Hi @acarrier, the problem is that the ASCOM standard (AFAIK) does not foreseen a standalone heating controller as a device type. I'm currently developing a cross-platform standalone application which will allow you to control all the parameters of the device.

Link to comment
Share on other sites

  • 2 months later...

Let me give you an update on this project, I know last post has been long ago but it has come a long way since.
 
All code was refactored from scratch and is now much more stable, the new development branch was not yet merged into master because there a couple of features still missing but everyone is encouraged to update the firmware to the latest release.
 
We now have a nice GUI, as of today Windows only. The source code can be downloaded from the dedicated Github repository, pre-built binaries will be available upon the first tagged release. Until then you may compile it from source using the Visual Studio Express C#.
 
The GUI shows you one big graph with the environmental data such as temperature, humidity and dew point.
Each output has its own dedicated graph showing heatstrip temperature and setpoint.
 
2CYKUIwl.jpg

The power transistors are gone, we are now rocking FETS which makes the overall thermal footprint lower and higher energy efficiency. As you can also see I've ordered commercial grade PCB which makes the build process a breeze. On the picture is missing the Arduino Nano but it is still a key component on the system.

PdVWGpDl.jpg

A nice 3D printed box prototype is also under development, the following pictures are from the latest iteration.
As of today there aren't yet stl files available but stay tuned, I just want to field-trip validate some small adjustments I've made before releasing them.

kvHiB33l.jpg6zzsLY7l.jpgpvnMRU6l.jpg

As usual I'm open to any (good or bad) feedback.
Cheers.

Link to comment
Share on other sites

Comments :-

1. You could have used Wifi and perhaps UDP to send/recv signals from the Nano (in picture) or used one of the many stand alone ESP modules - no need for Serial Dongle and no wires ? other than power.

2. Instead of VS C# you could have chosen something like Python which runs on Linux,Windows etc

3. As you say the DHT22 in the strip is picking up on the strips Temp/Humidity but making this a separate module using again a small ESP wifi module to transmit data might allow the collection of data nearer to the lens(mine is in the dew shield) - using the sleep mode in MCU enables min power usage ( 5v 1.0a lasts up to 2 weeks)

4. For more simplicity putting a stepper(or stepper POT) on a LED controller, to turn the knob,  gives faster and simpler build time - But I do prefer and like your board version and I will be watching to see if you sell the finished board.

5. The set up could also be used (especially if you adopt a more modular set up - e.g. separate DHT22 ) on existing dew heaters as most use 12v sources and can , i think, be driven by PWM signals.

Brilliant keep it up especially if you can produce the electronic:thumbsup:

Link to comment
Share on other sites

Hi @stash_old, thanks for the feedback.

If you look closely to the PCB, on the top right corner (which I've highlighted in red below) you'll see the footprint of an ESP01 and it's glue-logic circuitry. There are two main reasons why I'm focusing first on wired connection, 1) Field usage - People may prefer the simplicity of not carry around wireless routers or save theirs phones battery 2) Standards compliance - Every piece of equipment currently used by amateur astronomers relies in old school serial connection, people may gravitate towards it specially in mission-critical situation such as remote observatories.

uvSJAzHm.jpg

Some slight confusion about how temperatures are being measured. The environmental probe is a DHT22, this device is located on the main box, then each heatstrip has its own thermistors for temperature measurement. I really like your idea of cutting cables down to a bare minimum, but on the heatstrips I don't think it will work because we always have to feed in the 12V power to the heating element.


Adapting existing heating elements is indeed a good idea which didn't occur to me before , maybe even having a different box type using RCA connectors instead of the GX12 ones so people have minimal effort to adapt their setup to a better controller. Something to go into my TODO list for sure. ?
 

32 minutes ago, stash_old said:

For more simplicity putting a stepper(or stepper POT) on a LED controller, to turn the knob,  gives faster and simpler build time

Could you please rephrase your suggestion ? I'm not understanding exactly what you meant.

Link to comment
Share on other sites

7 hours ago, jbrazio said:

Could you please rephrase your suggestion ? I'm not understanding exactly what you meant.

Ok - Led controller (PWM controlled by POT)  https://www.ebay.co.uk/itm/DC-12V-8A-Adjustable-Dimmer-Switch-Control-PWM-Controller-Single-Color-LED-Strip-/292476813364?_trksid=p2349526.m4383.l4275.c10 take off the knob and replace with direct connected small stepper using flexi coupler https://www.ebay.co.uk/itm/Flexible-shaft-coupling-joint-Stepper-Motor-Coupler-Connector-VARIOUS-SIZES/262814471837?hash=item3d30f6969d:m:m_rgCSj1UoLQ4-CN4oOLdIg . You can drive the stepper with existing focusing Arduino/Windows hardware/software AKA Robert Brown excellent Focuser Pro this provides the stepper limits (min and max). The unit has 12v input/output (8amp) drives most heater bands - this is how I stared but then wrote my own Python interface using UDP including MQTT to catch temp/humidity data from any number of DHT22 devices .  

You can of course , if using Roberts Software, use his Ascom focuser interface to drive the heater stepper above (it works I tried it) as both are just positional stepper devices. I have tried this successfully via APT and BYEOS but then it does inhibit a remote Ascom focuser connection.

You don't need wireless routers as ESP devices can be both client and/or server(AP mode) or if you are brave Mesh mode.

8 hours ago, jbrazio said:

don't think it will work because we always have to feed in the 12V power to the heating element

Yes that's the last hurdle which isn't really feasible(simply) - so I was just referring to the comms/data lines

 

8 hours ago, jbrazio said:

Every piece of equipment currently used by amateur astronomers relies in old school serial connection

 

True (not every peice!)  but then read the problems people are having with ,for example, Windows 10 drivers supporting some of these devices(e.g. Prolific). Even so you can still use these devices wirelessly using "virtual com ports"  ?  Plus Sky Watcher ,for example, are now moving away from "serial/tty" mount connections with inbuilt  Wifi in mounts or there Wifi Adapter - both of these provide the "Router/AP/Server mode" . As you can see from the pictures below I used Serial to control my Dew heater but monitored the DHT22 via UDP (not just my scope/obsys ? )

 

As I say love the board as this would enable a number of dew heaters to be controlled (Scope,Guide etc) in a small box and really,IMHO, the "shop" ones are over priced .

As I say keep up the good work ?

dewheater01.png

dewheater02.png

Link to comment
Share on other sites

  • 3 months later...

I'm working on something quite similar :)

Only one output at the moment, I'm also using a bme280 instead of the DHT22, and an OLED display with buttons as UI insted of Serial.

 

How did you fine tune/calibrate the sensors (NTC in particular)? I'm getting values I'm not really sure I could consider reliable... :(

 

Link to comment
Share on other sites

There is no "factory" tune for the temp probes (either the DHT or the NTC) instead I allow the user on the GUI to define offsets for them, so if you find that a particular sensor is out by 1ºC you just set it's offset and you're good to go.

What is currently missing on the system is EEPROM support so all the parameters are kept.

Link to comment
Share on other sites

I'm looking at this as something of a beginner to see whether I will give it a go, so apologies if I'm asking something obvious...

Is there a particular spec of NTC that is suitable for this? (would a 'NTC Thermistor 10k MF52-103' be suitable)?  Also, I know the NTCs are mounted with the dewstrip, but is this to take the temperature of the heated strip, or the ambient temperature around the dewstrip?

Thanks

Link to comment
Share on other sites

2 hours ago, jbrazio said:

There is no "factory" tune for the temp probes (either the DHT or the NTC) instead I allow the user on the GUI to define offsets for them, so if you find that a particular sensor is out by 1ºC you just set it's offset and you're good to go.

What is currently missing on the system is EEPROM support so all the parameters are kept.

The NTC shouldn't, but they should provide you the beta value which is used for calculating the temperature.

I don't know about both DHT or my BME, but the libraries I'm using give out temperatures, not raw values, that's what I was referring to.

4 minutes ago, adyj1 said:

I'm looking at this as something of a beginner to see whether I will give it a go, so apologies if I'm asking something obvious...

Is there a particular spec of NTC that is suitable for this? (would a 'NTC Thermistor 10k MF52-103' be suitable)?  Also, I know the NTCs are mounted with the dewstrip, but is this to take the temperature of the heated strip, or the ambient temperature around the dewstrip?

Thanks

The 10k NTC should be good. Just try to find the beta value from the specs, otherwise calibration might be messy!

Link to comment
Share on other sites

You're right, I was not thinking about the specs of the sensor but rather some "calibration value".. which in fact are the same thing. ?

The values I use by default are pretty generic ones for the 10k NTC. The NTC resistance (THERMISTOR_NOMINAL_VAL) is 10000 Ohms (10k) at 25.0 ºC ambient temperature (THERMISTOR_NOMINAL_TEMP).

#define THERMISTOR_NOMINAL_TEMP      25.0F
#define THERMISTOR_BCOEFFICIENT    3950.0F
#define THERMISTOR_NOMINAL_VAL    10000.0F

I'm not familiar with the BME but the DHT sensor sends out a 40 bits stream of data with encodes directly the temperature and humidity values [plus a checksum], you just have to convert them into floats, there is no "tuning parameter(s)". But usually the error on these sensors are rather linear for a deterministic temperature range, if you need increased accuracy you may build a lookup table of offsets vs temp range. I believe for the application we are using it here one overall offset is more than sufficient.

@adyj1 The NTC you provided is more than suitable. If you have a look at the datasheet you'll find the B coefficient value of 3470 or 3380 depending on the part number.

http://www.eaa.net.au/PDF/Hitech/MF52type.pdf

Link to comment
Share on other sites

On 04/09/2018 at 16:20, adyj1 said:

I'm looking at this as something of a beginner to see whether I will give it a go, so apologies if I'm asking something obvious...

Is there a particular spec of NTC that is suitable for this? (would a 'NTC Thermistor 10k MF52-103' be suitable)?  Also, I know the NTCs are mounted with the dewstrip, but is this to take the temperature of the heated strip, or the ambient temperature around the dewstrip?

Thanks

I've got the BOM on order, and have been playing with an Arduino in preparation for making a start on this, so there may be an increase in the number of questions on this thread...

@jbraziocan I just ask again about the location of the NTC on the dewstrip - is it to take the temperature at the strip (i.e. the hottest bit under any thermal insulation) or does it need to be more exposed to the temperatures around the strip to give an idea of how warm the air is getting?

Thanks

Ady

Link to comment
Share on other sites

7 minutes ago, adyj1 said:

I've got the BOM on order, and have been playing with an Arduino in preparation for making a start on this, so there may be an increase in the number of questions on this thread...

@jbraziocan I just ask again about the location of the NTC on the dewstrip - is it to take the temperature at the strip (i.e. the hottest bit under any thermal insulation) or does it need to be more exposed to the temperatures around the strip to give an idea of how warm the air is getting?

Thanks

Ady

Typical - *after* I post this I find the Cloudy Nights thread where this is discussed in more detail... I think I know what to do now ?

https://www.cloudynights.com/topic/586600-arduheater-open-source-intelligent-heat-strip-controller-dew-buster/

Thanks

Ady

Link to comment
Share on other sites

No worries, I tend sometimes to take a while to respond because I receive no notifications from this forum (?), I'm also available @jbrazio.

I never really shown my custom take on dew strips.. so here it go, the BOM for it is:

  1. 3D printed template
  2. Kanthal Resistance Wire 24AWG
  3. Kapton tape
  4. GX12-4 male & female connectors
  5. Wire & heat shrink tubing

a4eYGJh.jpg

ap3i6uU.jpg

6FlaTaa.jpg

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. By using this site, you agree to our Terms of Use.