peltier with 2 fans

Dependencies:   mbed TextLCD

Committer:
redplam
Date:
Tue Apr 08 03:55:31 2014 +0000
Revision:
0:f2647a96f764
Child:
1:3aec489c7366
peltier with 2 fans

Who changed what in which revision?

UserRevisionLine numberNew contents of line
redplam 0:f2647a96f764 1 #include "mbed.h"
redplam 0:f2647a96f764 2
redplam 0:f2647a96f764 3 PwmOut peltier_cold(PTA12);
redplam 0:f2647a96f764 4 PwmOut peltier_hot(PTA4);
redplam 0:f2647a96f764 5 DigitalOut en_drv1(PTC13);
redplam 0:f2647a96f764 6 DigitalOut en_drv2(PTC16);
redplam 0:f2647a96f764 7 DigitalOut fan_in_peltier(PTC11); // Peltier FAN inside the camber
redplam 0:f2647a96f764 8 DigitalOut fan_out_peltier(PTC10); // Peltier FAN outside of the chamber
redplam 0:f2647a96f764 9
redplam 0:f2647a96f764 10 unsigned int peltier_hot_pulsewidth;
redplam 0:f2647a96f764 11 unsigned int peltier_green_pulsewidth;
redplam 0:f2647a96f764 12 unsigned int peltier_cold_pulsewidth;
redplam 0:f2647a96f764 13 unsigned int peltier_period =1000;
redplam 0:f2647a96f764 14 unsigned int peltier_pulsewidth = 0;
redplam 0:f2647a96f764 15 unsigned int peltier_step = 10;
redplam 0:f2647a96f764 16
redplam 0:f2647a96f764 17 unsigned int pwm_cold_peltier(int brightness )
redplam 0:f2647a96f764 18 {
redplam 0:f2647a96f764 19 if (brightness==1) {
redplam 0:f2647a96f764 20 peltier_cold_pulsewidth=peltier_cold_pulsewidth+peltier_step;
redplam 0:f2647a96f764 21 peltier_cold.pulsewidth_us(peltier_cold_pulsewidth);
redplam 0:f2647a96f764 22 };
redplam 0:f2647a96f764 23 if (brightness==0) {
redplam 0:f2647a96f764 24 peltier_cold_pulsewidth=peltier_cold_pulsewidth-peltier_step;
redplam 0:f2647a96f764 25 peltier_cold.pulsewidth_us(peltier_cold_pulsewidth);
redplam 0:f2647a96f764 26 };
redplam 0:f2647a96f764 27 return peltier_cold_pulsewidth;
redplam 0:f2647a96f764 28 }
redplam 0:f2647a96f764 29 unsigned int pwm_hot_peltier(int brightness)
redplam 0:f2647a96f764 30 {
redplam 0:f2647a96f764 31 if (brightness==1) {
redplam 0:f2647a96f764 32 peltier_hot_pulsewidth=peltier_hot_pulsewidth+peltier_step;
redplam 0:f2647a96f764 33 peltier_hot.pulsewidth_us(peltier_hot_pulsewidth);
redplam 0:f2647a96f764 34 }
redplam 0:f2647a96f764 35 if (brightness==0) {
redplam 0:f2647a96f764 36 peltier_hot_pulsewidth=peltier_hot_pulsewidth-peltier_step;
redplam 0:f2647a96f764 37 peltier_hot.pulsewidth_us(peltier_hot_pulsewidth);
redplam 0:f2647a96f764 38 }
redplam 0:f2647a96f764 39 return peltier_hot_pulsewidth;
redplam 0:f2647a96f764 40 }
redplam 0:f2647a96f764 41 int main(void)
redplam 0:f2647a96f764 42 {
redplam 0:f2647a96f764 43 en_drv1=0;//disable
redplam 0:f2647a96f764 44 en_drv2=0;//disable
redplam 0:f2647a96f764 45 fan_in_peltier=1;//enable
redplam 0:f2647a96f764 46 fan_out_peltier=1;//enable
redplam 0:f2647a96f764 47
redplam 0:f2647a96f764 48
redplam 0:f2647a96f764 49
redplam 0:f2647a96f764 50 en_drv1=1;//enable
redplam 0:f2647a96f764 51 en_drv2=1;//enable
redplam 0:f2647a96f764 52 while(1) {
redplam 0:f2647a96f764 53 en_drv1=1;
redplam 0:f2647a96f764 54 en_drv2=1;
redplam 0:f2647a96f764 55
redplam 0:f2647a96f764 56
redplam 0:f2647a96f764 57 // for cold
redplam 0:f2647a96f764 58 // peltier_cold.period_us(peltier_period);
redplam 0:f2647a96f764 59 // peltier_cold_pulsewidth=500;
redplam 0:f2647a96f764 60 // pwm_cold_peltier(1);
redplam 0:f2647a96f764 61
redplam 0:f2647a96f764 62 peltier_hot.period_us(peltier_period);
redplam 0:f2647a96f764 63 peltier_hot_pulsewidth=500;//at 50%
redplam 0:f2647a96f764 64 pwm_hot_peltier(1);
redplam 0:f2647a96f764 65 wait(1.0);
redplam 0:f2647a96f764 66
redplam 0:f2647a96f764 67
redplam 0:f2647a96f764 68
redplam 0:f2647a96f764 69 /* peltier_cold.period_us(peltier_period);
redplam 0:f2647a96f764 70 peltier_cold_pulsewidth=peltier_pulsewidth;
redplam 0:f2647a96f764 71 for (int i=1; i<=100; i++) {
redplam 0:f2647a96f764 72 pwm_cold_peltier(1);
redplam 0:f2647a96f764 73 wait (0.1);
redplam 0:f2647a96f764 74 }
redplam 0:f2647a96f764 75 for (int i=1; i<=100; i++) {
redplam 0:f2647a96f764 76 pwm_cold_peltier(0);
redplam 0:f2647a96f764 77 wait (0.1);
redplam 0:f2647a96f764 78 }
redplam 0:f2647a96f764 79 peltier_cold_pulsewidth=10; // set to 0
redplam 0:f2647a96f764 80 pwm_cold_peltier(0); // set to 0
redplam 0:f2647a96f764 81
redplam 0:f2647a96f764 82 peltier_hot.period_us(peltier_period);
redplam 0:f2647a96f764 83 peltier_hot_pulsewidth=peltier_pulsewidth;
redplam 0:f2647a96f764 84 for (int i=1; i<=100; i++) {
redplam 0:f2647a96f764 85 pwm_hot_peltier(1);
redplam 0:f2647a96f764 86 wait (0.1);
redplam 0:f2647a96f764 87 }
redplam 0:f2647a96f764 88 for (int i=1; i<=100; i++) {
redplam 0:f2647a96f764 89 pwm_hot_peltier(0);
redplam 0:f2647a96f764 90 wait (0.1);
redplam 0:f2647a96f764 91 }
redplam 0:f2647a96f764 92 peltier_hot_pulsewidth=10; // set to 0
redplam 0:f2647a96f764 93 pwm_hot_peltier(0); // set to 0
redplam 0:f2647a96f764 94 */
redplam 0:f2647a96f764 95 }
redplam 0:f2647a96f764 96
redplam 0:f2647a96f764 97 }