This new project is a redesign and combination of my first cooling mod with manual temperature setting and the most recent mod which has automatic setpoint presets. The reason for combining the two is to add a bit more flexibility and still retain the convenience of presetting. If you want to cool below -5C or maintain setpoint for example at 12C, you will have to explicitly set the setpoint temperature. Various presets can be programmed, dependent on climate.
The proposed unit is100 x 35mm and as low profile as possible - no bigger than a medium size TV remote, but I hope to trim it down a bit, once I'm finished with component layout.
The control face comprises an 1 inch OLED and 3 push buttons. Logic is provided by an Atmel Mega32U4 IC which is a component of a Teensy 2.0. I had considered creating the same circuit on the board, but it's just as easy to flush fit the Teensy with very little increase in footprint, and heaps more convenient.
The size of the unit allows for mounting on the side of a heatsink, bottom of the camera or used as a hand paddle with rearranging of input and outputs.
Inputs are ambient air temperature, which is built into the unit, and cold finger temperature. 12V supplies the 7805's for the logic, sensor heater and dew heater/s. The system monitors the supply voltage to the Teensy to provide real time correction to temperature readings and PWM adjustment to the enhanced logic level mosfet - IRFS7430-7PPbf - for current control of the TEC device.
Some components are through hole and the remainder 1206 SMD. The board will be double sided, but there is a lot of routing to be done by hand.
Control is simple enough - at power up press the lower button for automatic preset, which is dependent on ambient air temperature - the system presets setpoint within the conservative operating range of the TEC (which needs to be programmed). The advantage of a separate air temperature sensor is to allow resetting on the fly, if need be. On occasions, the preset might be 0C, and shortly before imaging the air temperature drops to allow a preset of -5C, with a single button push.
Manual control is pushbutton as well. Push both upper buttons to reset ambient and cold finger temperature (this can be done by reference to coldfinger temperature only). Push the left button to reduce setpoint in 3C increments and read out the setting on the OLED. For 1C increments, fine control, press the right hand button. The 3 and 1 thing could easily be 2 and 1 or 5 and 1.
I'm yet to decide whether to fit a low side switch to the TEC supply and turn it on once setpoint is set or just disable the PWM with analogWrite(pwm, 0); which is what I do now. Currently, manual setting of the setpoint is done with the cooling active. I don't think that's such a big deal. Auto setpoint uses the analogWrite code to disable PWM while the button is pressed. Do I need to explicitly turn cooling off while setting setpoint?
The OLED prints out ambient air temperature, setpoint/target and cold finger temperature.
There are some decisions pending, but this is the basic framework.
The Eagle circuit is a plate of spaghetti and perhaps it would be wise to draw each sub-circuit first. Time, I guess.
There is a way to handle switching the TEC during manual temperature setting, with software. So, rather than use a hardware switch, I will use the MOSFET and delay cooling a few seconds with each button push. If your not pushing buttons then you must be cooling - if the thing has power. Otherwise, off is off at the power point.
For the Arduino people, I'm pretty sure MSTimer2 will do it, counting the seconds between button pushes, without using delay. A bit like the ubiquitous LED blink sketch.
EDIT: Using a single LED as an on temperature indicator and reset indication for manual setting and dispensing with the OLED would trim this down to a very small unit. The OLED is a bit of a gimmick. Electronic indicating and alerting systems is for aeroplanes and people who are unsure of what a blinking red light means?
Thanks Peter. I have had a lot of help from the guys on the ATM forum. In fact, without their generous assistance I wouldn't be doing this. Hope it worksFound a number of errors already - getting there.
OLED turned up today. Miracle of miracles, I managed to write the code with only a small font adjustment and cursor position - - this is very exciting...
The numbers are obviously erroneous because its not connected to any sensors.
Bread board testing last night - it works. A few refinements to the code. Manual maximum temperature selection is hard coded to 15C. Seems pointless cooling and providing selections that in practice would never be used.
Retained the LED for indications, just in case the OLED packs in.
A few tweaks to the board and it will be ready to go. All up, smaller than the breadboard in the previous post, it should fit nicely out of the way.