I got all the hardware working and wrote a simple temperature control program. Nothing fancy.
The code drives the TEC with different power output levels depending on how far the real temperature is from the set temperature.
I don’t have yet a mechanism of setting the target temperature but this is just to prove that the system works.
Since the major hardware is in place and the cooler is basically functional I will settle for now for a fixed, preprogrammed target temperature.
The ICSP connector for the 16F819 is accessible and I will play with the code to get more features.
I’m forced to take a break from the project but I will get back to it when time permits.
For now 62⁰F should be fine on most of the wines I drink so I’ll make it default.
Anyway it has been a fun weekend project and what makes it special is the fact that I did not have to order any parts. Recycling old junk makes me feel really good.
For all interested below is the simple control code, not fully tested since I just finished it last night. There are few things in the code that are not fully implemented (serial output will be used for a LCD display, hysteresis, id (to diferenciate between the two chambers). These variables will be used for future development when time comes.

Code:
@__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

start_ch        con     126
end_sym         con     251
samples         con     39 
divider         con     20
hysteresis      con     2
min_pwm         con     30
max_pwm         con     50

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=62
        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
        If act_temp <= set_temp then 
        pwm_pars = 0
        else
        pwm_pars = min_pwm+(act_temp - set_temp)
        if pwm_pars>max_pwm then pwm_pars=max_pwm
        endif
        gosub set_pwm_pars
        val_1=act_temp
        val_2=pwm_pars
        val_3=set_temp
        Return

Main:
        gosub read_act_temp
        gosub send_out
        pause 1500 
        goto Main    
end
Regards,

Nick