Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
temp_fans.cpp@1:1faa8c2f5507, 2021-03-17 (annotated)
- Committer:
- khaiminhvn
- Date:
- Wed Mar 17 14:20:14 2021 +0000
- Revision:
- 1:1faa8c2f5507
- Parent:
- 0:c8b4d53dbed4
- Child:
- 2:1158cc58bf61
Edited to be implemented into the main code
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| tsmith10 | 0:c8b4d53dbed4 | 1 | #include "mbed.h" |
| tsmith10 | 0:c8b4d53dbed4 | 2 | #include "temp_fans.h" |
| khaiminhvn | 1:1faa8c2f5507 | 3 | #include "Defs_Sett.h" |
| khaiminhvn | 1:1faa8c2f5507 | 4 | #include "PinAssignment.h" |
| tsmith10 | 0:c8b4d53dbed4 | 5 | |
| tsmith10 | 0:c8b4d53dbed4 | 6 | |
| khaiminhvn | 1:1faa8c2f5507 | 7 | temp_fans::temp_fans():LM35(PIN_LM35),fan(PIN_FAN){ |
| khaiminhvn | 1:1faa8c2f5507 | 8 | flag = 0; |
| khaiminhvn | 1:1faa8c2f5507 | 9 | } |
| khaiminhvn | 1:1faa8c2f5507 | 10 | |
| khaiminhvn | 1:1faa8c2f5507 | 11 | float checkTemp(); |
| tsmith10 | 0:c8b4d53dbed4 | 12 | |
| khaiminhvn | 1:1faa8c2f5507 | 13 | void temp_fans::checkTemp(int* mode) { |
| khaiminhvn | 1:1faa8c2f5507 | 14 | float temp, duty_cycle; |
| khaiminhvn | 1:1faa8c2f5507 | 15 | fan.period_us(TEMP_PERIOD); // 40 micro second period (25KHz) for fan PWM |
| khaiminhvn | 1:1faa8c2f5507 | 16 | |
| khaiminhvn | 1:1faa8c2f5507 | 17 | temp = getTemp(); |
| tsmith10 | 0:c8b4d53dbed4 | 18 | |
| khaiminhvn | 1:1faa8c2f5507 | 19 | float m = 1/(TEMP_HIGH-TEMP_LOW); |
| khaiminhvn | 1:1faa8c2f5507 | 20 | duty_cycle = (temp<TEMP_LOW) ? 0: (temp>TEMP_HIGH) ? 1: m*temp+(-TEMP_LOW/(TEMP_HIGH-TEMP_LOW)); |
| khaiminhvn | 1:1faa8c2f5507 | 21 | if(*mode == OP_NORMAL || *mode == OP_WIND || *mode == OP_OVERHEAT) |
| khaiminhvn | 1:1faa8c2f5507 | 22 | *mode = (temp >= TEMP_HIGH) ? OP_OVERHEAT : *mode; |
| khaiminhvn | 1:1faa8c2f5507 | 23 | else |
| khaiminhvn | 1:1faa8c2f5507 | 24 | *mode = (temp >= TEMP_HIGH) ? OP_OVERHEAT_MAN : *mode; |
| khaiminhvn | 1:1faa8c2f5507 | 25 | *mode = (*mode == OP_OVERHEAT && temp <= (TEMP_HIGH - TEMP_HYST))? OP_NORMAL: *mode; |
| tsmith10 | 0:c8b4d53dbed4 | 26 | |
| khaiminhvn | 1:1faa8c2f5507 | 27 | fan.write(duty_cycle); // Duty cycle (relative to period) |
| khaiminhvn | 1:1faa8c2f5507 | 28 | } |
| khaiminhvn | 1:1faa8c2f5507 | 29 | |
| khaiminhvn | 1:1faa8c2f5507 | 30 | float temp_fans::getTemp(){ |
| khaiminhvn | 1:1faa8c2f5507 | 31 | float temp = 0; |
| khaiminhvn | 1:1faa8c2f5507 | 32 | |
| khaiminhvn | 1:1faa8c2f5507 | 33 | for(int i=0; i<TEMP_AVG; i++) { |
| khaiminhvn | 1:1faa8c2f5507 | 34 | temp += LM35.read(); |
| khaiminhvn | 1:1faa8c2f5507 | 35 | wait_us(TEMP_DELAY); |
| tsmith10 | 0:c8b4d53dbed4 | 36 | } |
| tsmith10 | 0:c8b4d53dbed4 | 37 | |
| khaiminhvn | 1:1faa8c2f5507 | 38 | temp=(temp/TEMP_AVG*VCC)*100; //Average & factor for analog to temperature conversion |
| tsmith10 | 0:c8b4d53dbed4 | 39 | |
| khaiminhvn | 1:1faa8c2f5507 | 40 | return temp; |
| khaiminhvn | 1:1faa8c2f5507 | 41 | } |
| tsmith10 | 0:c8b4d53dbed4 | 42 | |
| tsmith10 | 0:c8b4d53dbed4 | 43 | |
| tsmith10 | 0:c8b4d53dbed4 | 44 |
