こて先温度計 Sodering Iron Tips Thermometer
Dependencies: AQM0802 MAX31855 mbed
main.cpp@0:441d8f05d7de, 2015-07-20 (annotated)
- Committer:
- takafuminaka
- Date:
- Mon Jul 20 13:40:05 2015 +0000
- Revision:
- 0:441d8f05d7de
???????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takafuminaka | 0:441d8f05d7de | 1 | //********************** |
takafuminaka | 0:441d8f05d7de | 2 | // こて先温度計:Soldering Iron Tips Thermometer with MAX31855K |
takafuminaka | 0:441d8f05d7de | 3 | // |
takafuminaka | 0:441d8f05d7de | 4 | // こて先温度計シールド:Thermocouple Shield for Soldering Iron |
takafuminaka | 0:441d8f05d7de | 5 | // https://www.switch-science.com/catalog/2322/ |
takafuminaka | 0:441d8f05d7de | 6 | // 3.3V用にSJ1, SJ2をショートして使用しています |
takafuminaka | 0:441d8f05d7de | 7 | // It is the shield with MAX31855K and K-type thermocouple. |
takafuminaka | 0:441d8f05d7de | 8 | // |
takafuminaka | 0:441d8f05d7de | 9 | // Universal Embedded Board for LPC11U68 by HAPI-TechSolution |
takafuminaka | 0:441d8f05d7de | 10 | // https://www.switch-science.com/catalog/2316/ |
takafuminaka | 0:441d8f05d7de | 11 | // |
takafuminaka | 0:441d8f05d7de | 12 | // I2C接続の小型LCD搭載ボード(3.3V版): 8x2 LCD display |
takafuminaka | 0:441d8f05d7de | 13 | // https://www.switch-science.com/catalog/1405/ |
takafuminaka | 0:441d8f05d7de | 14 | // 8x2 LCD with AQM0802 controller |
takafuminaka | 0:441d8f05d7de | 15 | // |
takafuminaka | 0:441d8f05d7de | 16 | //********************** |
takafuminaka | 0:441d8f05d7de | 17 | #include "mbed.h" |
takafuminaka | 0:441d8f05d7de | 18 | #include "AQM0802.h" |
takafuminaka | 0:441d8f05d7de | 19 | #include "max31855.h" |
takafuminaka | 0:441d8f05d7de | 20 | |
takafuminaka | 0:441d8f05d7de | 21 | #define NEED_CONSOLE_OUTPUT 0 |
takafuminaka | 0:441d8f05d7de | 22 | #define NEED_LCD_OUTPUT 1 |
takafuminaka | 0:441d8f05d7de | 23 | |
takafuminaka | 0:441d8f05d7de | 24 | #if NEED_CONSOLE_OUTPUT |
takafuminaka | 0:441d8f05d7de | 25 | Serial pc(USBTX, USBRX); |
takafuminaka | 0:441d8f05d7de | 26 | #define PC(...) { pc.printf(__VA_ARGS__); } |
takafuminaka | 0:441d8f05d7de | 27 | #else |
takafuminaka | 0:441d8f05d7de | 28 | #define PC(...) /* nothing */ |
takafuminaka | 0:441d8f05d7de | 29 | #endif /* #if NEED_CONSOLE_OUTPUT */ |
takafuminaka | 0:441d8f05d7de | 30 | |
takafuminaka | 0:441d8f05d7de | 31 | I2C i2c(SDA, SCL); |
takafuminaka | 0:441d8f05d7de | 32 | SPI spi(P0_9, P0_8, P1_29); |
takafuminaka | 0:441d8f05d7de | 33 | max31855 max1(spi, P0_2); |
takafuminaka | 0:441d8f05d7de | 34 | |
takafuminaka | 0:441d8f05d7de | 35 | #if NEED_LCD_OUTPUT |
takafuminaka | 0:441d8f05d7de | 36 | AQM0802 lcd(i2c); |
takafuminaka | 0:441d8f05d7de | 37 | #endif |
takafuminaka | 0:441d8f05d7de | 38 | |
takafuminaka | 0:441d8f05d7de | 39 | int main() |
takafuminaka | 0:441d8f05d7de | 40 | { |
takafuminaka | 0:441d8f05d7de | 41 | char msg1[10],msg2[10]; |
takafuminaka | 0:441d8f05d7de | 42 | float fvalue; |
takafuminaka | 0:441d8f05d7de | 43 | float chiptemp; |
takafuminaka | 0:441d8f05d7de | 44 | int faultCode; |
takafuminaka | 0:441d8f05d7de | 45 | |
takafuminaka | 0:441d8f05d7de | 46 | //Initialise chip (starts internal timer) |
takafuminaka | 0:441d8f05d7de | 47 | max1.initialise(); |
takafuminaka | 0:441d8f05d7de | 48 | wait(2); |
takafuminaka | 0:441d8f05d7de | 49 | |
takafuminaka | 0:441d8f05d7de | 50 | sprintf(msg1,"Temp"); |
takafuminaka | 0:441d8f05d7de | 51 | fvalue = max1.read_temp(); |
takafuminaka | 0:441d8f05d7de | 52 | wait_ms(500); |
takafuminaka | 0:441d8f05d7de | 53 | |
takafuminaka | 0:441d8f05d7de | 54 | while(1){ |
takafuminaka | 0:441d8f05d7de | 55 | fvalue = max1.read_temp(); |
takafuminaka | 0:441d8f05d7de | 56 | PC("%d\n",fvalue); |
takafuminaka | 0:441d8f05d7de | 57 | |
takafuminaka | 0:441d8f05d7de | 58 | if (fvalue > 2000.){ |
takafuminaka | 0:441d8f05d7de | 59 | faultCode = fvalue - 2000; |
takafuminaka | 0:441d8f05d7de | 60 | if((faultCode & 4 ) != 0){ |
takafuminaka | 0:441d8f05d7de | 61 | sprintf(msg2,"Short Vc"); |
takafuminaka | 0:441d8f05d7de | 62 | PC("ERROR: Short to VCC"); |
takafuminaka | 0:441d8f05d7de | 63 | }else if((faultCode & 2 ) != 0){ |
takafuminaka | 0:441d8f05d7de | 64 | sprintf(msg2,"Short G "); |
takafuminaka | 0:441d8f05d7de | 65 | PC("ERROR: Short to GND"); |
takafuminaka | 0:441d8f05d7de | 66 | }else if((faultCode & 1 ) != 0){ |
takafuminaka | 0:441d8f05d7de | 67 | PC("ERROR: Open Circuit"); |
takafuminaka | 0:441d8f05d7de | 68 | sprintf(msg2,"Open "); |
takafuminaka | 0:441d8f05d7de | 69 | } |
takafuminaka | 0:441d8f05d7de | 70 | } else { |
takafuminaka | 0:441d8f05d7de | 71 | sprintf(msg2,"%6.2f%cC",fvalue,0xf2); |
takafuminaka | 0:441d8f05d7de | 72 | } |
takafuminaka | 0:441d8f05d7de | 73 | |
takafuminaka | 0:441d8f05d7de | 74 | chiptemp = max1.chipTemp * 0.25; |
takafuminaka | 0:441d8f05d7de | 75 | // sprintf(msg1,"%6.2f%cC",chiptemp,0xf2); |
takafuminaka | 0:441d8f05d7de | 76 | |
takafuminaka | 0:441d8f05d7de | 77 | PC("%7.2f : %7.2f\n",fvalue, chiptemp); |
takafuminaka | 0:441d8f05d7de | 78 | |
takafuminaka | 0:441d8f05d7de | 79 | #if NEED_LCD_OUTPUT |
takafuminaka | 0:441d8f05d7de | 80 | lcd.locate(0,0); |
takafuminaka | 0:441d8f05d7de | 81 | lcd.print(msg1); |
takafuminaka | 0:441d8f05d7de | 82 | lcd.locate(0,1); |
takafuminaka | 0:441d8f05d7de | 83 | lcd.print(msg2); |
takafuminaka | 0:441d8f05d7de | 84 | |
takafuminaka | 0:441d8f05d7de | 85 | #endif |
takafuminaka | 0:441d8f05d7de | 86 | wait_ms(500); |
takafuminaka | 0:441d8f05d7de | 87 | } |
takafuminaka | 0:441d8f05d7de | 88 | |
takafuminaka | 0:441d8f05d7de | 89 | } |