TEC controller


Closed Thread
Results 1 to 19 of 19

Thread: TEC controller

Hybrid View

  1. #1
    Join Date
    May 2013
    Location
    australia
    Posts
    2,631


    Did you find this post helpful? Yes | No

    Default Re: TEC controller

    according to this a pid style of control may extend the life of your peltier device, thermal cycling is detrimental

    https://thermal.ferrotec.com/technol.../thermalref10/
    Warning I'm not a teacher

  2. #2
    Join Date
    Oct 2012
    Posts
    82


    Did you find this post helpful? Yes | No

    Default Re: TEC controller

    Hi Richard,

    Thank you for the link. I’ve been reading a lot about TEC controllers lately but did not find this one.
    I know my goal might be too ambitious but so far the results are encouraging.
    All I did so far is trying to create a poor man’s PID system at its simplest form.
    Based on the temperature difference (act_temp – set_temp) I change the output level of my PWM.
    It might be a little abrupt in the beginning but after the temperature stabilizes there will be only small steps in the voltage output (about 0.15V per step). That puts me lower than maximum admitted ripple for the TEC (5 – 10%) and it is only an occasional change not continuous like a non-filtered AC to DC voltage.
    If I can find the right range (more testing is needed and unfortunately I must travel a lot for the next few weeks) I might not have to turn the TEC OFF at all and only lower the output voltage to maintain the temperature, which in turn keeps the TEC happy.
    Since I’m having the fans paralleled with the TEC I must keep this min_pwm adove a certain value. Some brushless fan manufacturers recommend 5V as minimum running voltage and 7V as minimum starting voltage. That is the reason why I’m starting the system with a kick.
    Not sure if this is the best approach reason for which I’m posting here.

    Thank you for the input. I hope others will be interested in this project and bring new ideas to the table.

    Nick

  3. #3
    Join Date
    Sep 2009
    Posts
    755


    Did you find this post helpful? Yes | No

    Default Re: TEC controller

    Why not add another sensor on hot side of TEC to control fans independently from TEC?

  4. #4
    Join Date
    Oct 2012
    Posts
    82


    Did you find this post helpful? Yes | No

    Default Re: TEC controller

    Hi Pedja089,

    This might be one of the improvements that I thought about too, in case this first minimal approach will not work.
    I’m also planning on adding a temperature sensor / thermostat on the cold side (if my testing finds it necessary) to prevent freezing of the TEC. I have some trusty DS1821 that can be programmed for different trigger temperatures.
    I wanted to start simple which is the reason why I’m using the same output for fans and TEC for now.
    The nice part is that the cooler is back together, I have access to all wiring and I can do all the work /changes externally.

    Thank you for interest and support.

    Nick

  5. #5
    Join Date
    Oct 2012
    Posts
    82


    Did you find this post helpful? Yes | No

    Default Re: TEC controller

    This is the latest addition to the TEC controller: One pot on ADC1 sets the temperature.
    I’ve done it such way so with a linear pot the target temperature can be set between 40 and 65 degrees F.

    Code:
    'Last release 9_16_16 Implements pot for setting set_temp
    @__config_device_pic16f819
    @__config_wdt_off
    @__config_hs_osc
    @__config_pwrt_on
    @__config_mclr_off
    @__config_lvp_off
    @__config_protect_on
    
    DEFINE OSC 8        
    
    DEFINE DEBUG_REG PORTB
    DEFINE DEBUGIN_REG PORTB
    DEFINE DEBUG_BIT 6
    DEFINE DEBUGIN_BIT 7
    DEFINE DEBUG_MODE 1                
    DEFINE DEBUG_BAUD 38400
    
    DEFINE  ADC_BITS        8
    DEFINE  ADC_CLOCK       3
    DEFINE  ADC_SAMPLEUS    50
    ADCON1=%01001110  
    
    pwm_out         var     PORTB.2
    
    adval           var     word
    val_1           var     byte
    val_2           var     byte
    val_3           var     byte
    new             var     word
    act_temp        var     byte
    set_temp        var     byte
    new_temp        var     byte
    temp_index      var     byte
    i               var     word
    pwm_pars        var     word
    id              var     byte
    pwm_flag        var     bit
    
    start_ch        con     126
    end_sym         con     251
    samples         con     39 
    divider         con     20
    hysteresis      con     1
    min_pwm         con     30
    max_pwm         con     50
    full_pwm        con     40
    
    CCP1CON = %00001100     
    PR2 = 15            
    CCPR1L = 0         
    CCP1CON.5 = 0
    CCP1CON.4 =0
                                                                                                   
            High pwm_out
            Pause 500
            Low pwm_out
            T2CON.2 = 1
    '        set_temp=69
            id="1"
            pwm_flag=0
            goto main     
    
    send_out:
            debug start_ch,id,val_1,val_2,val_3,end_sym
            return 
    
    set_pwm_pars:
            CCPR1L = pwm_pars >> 2
            CCP1CON=$0C|((pwm_pars&$3)<<4) 
            return
    
    read_act_temp:
            new = 0
            For temp_index = 1 TO samples
            ADCIN 0,adval
            new = new + adval
            Next
            act_temp=new/divider
            return
    read_set_temp:
            new = 0
            For temp_index = 1 TO 9
            ADCIN 1,adval
            new = new + adval
            Next
            set_temp= 40 + new/100  'keeps set_temp between 40 and 65 deg. F
            return
    
    decide:
            If act_temp < (set_temp-hysteresis) then 
            pwm_pars =0
            pwm_flag=1
            endif
            If act_temp > set_temp and pwm_flag =0 then 
            pwm_pars = min_pwm+(act_temp - set_temp)
            goto jump
            endif  
            If act_temp > (set_temp + hysteresis) and pwm_flag =1 then
            pwm_pars = start_pwm
            pwm_flag=0
            endif
    jump:
            gosub set_pwm_pars
            val_1=act_temp
            val_2=pwm_pars
            val_3=set_temp
            Return
    Main:
            gosub read_act_temp
            gosub read_set_temp
            gosub decide
            gosub send_out
            pause 1500 
            goto Main    
    end
    I think that I will settle for that now. I will just test its performance for the next week or so and wrap the project up for this particular cooler.
    A friend of mine is offering me a huge 125 bottles cooler with refrigeration problems (old Freon compressor type). If this first attempt will prove successful I will spend more time saving the big cooler which is a lot nicer and a lot more expencie than this one.
    I manage to get 6 brand new TECs, more powerful than the other ones (7-8 Amps) and I will start experimenting with them and different setups.
    It might take a little time but I will keep you posted.

    Thank you everyone for the input.

    Nick

Similar Threads

  1. Repeater ID and controller
    By Macgman2000 in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 29th March 2012, 23:06
  2. SMS Controller
    By savnik in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 8th September 2006, 15:12
  3. temperature controller
    By PoTeToJB in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 24th April 2006, 20:01
  4. PID CONTROLLER help..
    By tkly36 in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 12th April 2006, 07:19

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts