sylvain.fish.free.fr thermo couple shield index

5
V\OYDLQILVKIUHHIUWKHUPRBFRXSOHBVKLHOGLQGH[KWPO KWWSV\OYDLQILVKIUHHIUWKHUPRBFRXSOHBVKLHOGLQGH[KWPO $5'8,12 6+,(/' )25 7:2 7+(502&283/(6 7KH VKLHOG XVH WZR LQH[SHQVLYH /7 SUHFLVLRQ 23$ LQVWHDG RI PRUH SUHFLVH EXW DOVR H[SHQVLYH VSHFLDOLVHG FLUFXLW 7KH SULFH IRU WKLV LV WKDW \RX KDYH WR PDNH \RXU RZQ FDOLEUDWLRQ , PDGH WKLV VKLHOG IRU XVH ZLWK D PLQL RZHQ WR UHFRUG DQG FRQWURO WHPSHUDWXUH WR PDNH UHIORZ VROGHULQJ RI &06 7KH FRQWURO SDUW DQG VRIWZDUH ZLOO EH DYDLODEOH VRRQ 6FKHPDWLF ' LV IRU RXWSXW WR RSWRWULDF IRU RZHQ UHJXODWLRQ DV H[HPSOH %HFDUHIXOO LQGXFWLYH FKDUJHV UHOD\ QHHG IUHH ZKHHOLQJ GLRGH WKHUH LV QR RQH KHUH 7HPSHUDWXUH PHVXUHPHQW 7KH FROG MXQFWLRQ FRPSHQVDWLRQ LV UHDOLVHG E\ WKH 17& 7+ $PELDQW WHPSHUDWXUH LV PHVXUHG RQ $ 7KH UHVSRQVH FXUYH RI WKH 17& LV FDOLEUDWHG E\ VRIWZDUH 7KHUPRFRXSOHV JLYHV WRR ZHDN WHQVLRQ IRU GLUHFW PHVXUHPHQW RQ $70(*$ $'& /7 SURYLGHV DPSOLILFDWLRQ EHIRUH FRQYHUVLRQ 7KH VRIWZDUH LV DOVR XVHG WR OLQHDUL]H WKHUPRFRXSOH UHVSRQVH

Upload: fabiano-bertuche

Post on 16-Feb-2016

4 views

Category:

Documents


0 download

DESCRIPTION

thermocopula

TRANSCRIPT

Page 1: Sylvain.fish.Free.fr Thermo Couple Shield Index

16/11/2015 sylvain.fish.free.fr/thermo_couple_shield/index.html

http://sylvain.fish.free.fr/thermo_couple_shield/index.html 1/5

ARDUINO SHIELD FOR TWO THERMOCOUPLES

The shield use two inexpensive LT1006 precision OPA instead of more precise but also expensive specialised circuit.The price for this is that you have to make your own calibration.I made this shield for use with a mini owen to record and control temperature to make reflow soldering of CMS.The control part and software will be available soon.

Schematic

D2 is for output, to optotriac for owen regulation as exemple. Becarefull : inductive charges (relay) need free wheeling diode, there is no onehere.

Temperature mesurement :

The cold junction compensation is realised by the NTC TH1. Ambiant temperature is mesured on A0. The response curve of the NTC is calibrated by software.Thermocouples gives too weak tension for direct mesurement on ATMEGA ADC. LT 1006 provides amplification before conversion.The software is also used to linearize thermocouple response.

Page 2: Sylvain.fish.Free.fr Thermo Couple Shield Index

16/11/2015 sylvain.fish.free.fr/thermo_couple_shield/index.html

http://sylvain.fish.free.fr/thermo_couple_shield/index.html 2/5

Inputs / Outputs :

I make this shield to control a mini owen to make reflow soldering of surface mounted devices.

D2 is for output, to optotriac as exemple. Becarefull : inductive charges (relay) need free wheeling diode, there is no one here.D3 is for an optional imput, depending of software.D4 is for a buzzer.D5 for what you want

GAIN

The gain of the OPA have to be choosed depending of the expected temperature range and the thermocouple type.Thermocouple tables can be found here : http://srdata.nist.gov/its90/main/

ex for K type : with gain = (220+1)/1 = 221. Uth max = 5V / 221 = 22,6 mv Max temperature range beetwen 500 and 600 °C . (approx 546 °C, according NIST table).

Temp (°C) Uth (mV) Gain100 4.1 1220200 8.14 614300 12.21 409400 16.4 304500 20.22 242600 24.9 200700 29.13 171

Bill Of Material

A0 0,1' connector A1 0,1' connector A2 0,1' connector ARD_5V1 0,1' connector ARD_GND1 0,1' connector D2 0,1' connector D3 0,1' connector D4 0,1' connector D5 0,1' connector P1 4 mm female plug P2 4 mm female plug P3 Two port bord connector P7 4 mm female plug P8 4 mm female plug

IC1 LT1006 IC2 LT1006 D1 LED R1 10 k R2 (see GAIN chapter) R3 (see GAIN chapter) R4 (see GAIN chapter) R5 (see GAIN chapter) R6 220 SW1 Push button TH1 10 K TNC resistor X1 BUZZER

BOARD

The board is single face, with two strap wires.

Page 3: Sylvain.fish.Free.fr Thermo Couple Shield Index

16/11/2015 sylvain.fish.free.fr/thermo_couple_shield/index.html

http://sylvain.fish.free.fr/thermo_couple_shield/index.html 3/5

The PDF for copper sidekicad files for board and schematic

IMPORTANT TIPS : DO NOT mount the TNC on the board before calibration. For calibration the best is to put the TNC in water with areference thermometer. If it's on the board it wont be easy. Instead you'd better to sold two wires from the TNC to the board, or mount it with his long legs.After calibration you can mount the TNC on the board.

SOFTWARE

Software is minimum : Voltage from TNC and OPA are read and converted in temperature. Output is sent on serial port for reading on serialmonitor.Use serial monitor of arduino or any equivalent to read or record outputsThe conversion is done with piecewise linear interpolation. The interpolation is calculated with two table : one for the TNC and one for the TC.

#define TEMP 1#define CAN 0#define N_CTN 4 // number of points in TNC calibration table #define N_TC 12 // number of points in thermocouple calibration table // Table calibration for THERMISTORfloat calib_CTN [N_CTN][2] = {{340,15},{395,19},{405,20},{470,30} // put here calibration points : first the value read on arduino ADC, second the value read on your reference thermoemter.};// Table calibration for THERMO COUPLEfloat calib_TC [N_TC][2] = {{0,0}, // first point : at 0°C the TC give no voltage{25,10},{135,40},{305,86},{444, 125},{580,160},{616,170},{655,180},{709,195},{734,201},{841,231},{888,261}};

void setup() { // initialize serial communication at 9600 bits per second:

Serial.begin(9600); pinMode(2,OUTPUT); pinMode(4,OUTPUT) ;

Page 4: Sylvain.fish.Free.fr Thermo Couple Shield Index

16/11/2015 sylvain.fish.free.fr/thermo_couple_shield/index.html

http://sylvain.fish.free.fr/thermo_couple_shield/index.html 4/5

pinMode(3,INPUT) ; digitalWrite(3, HIGH) ;}

// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int Can_comp = analogRead(A0); int Can_TC = analogRead(A1); float T_ctn = converti(Can_comp , calib_CTN, N_CTN); float T_Thcp = converti(Can_TC, calib_TC, N_TC) ;

// print out the value you read: Serial.print("CTN ADC out ="); Serial.print(Can_comp); Serial.print("\tT ref ="); Serial.print(T_ctn); Serial.print("\tTcoup ADC out ="); Serial.print(Can_TC); Serial.print("\tTemp TC ="); Serial.print(T_Thcp); Serial.print("\t"); Serial.println(T_Thcp + T_ctn,2); // Temperature from Thermo couple is // added to cold junction temperature for compensation

delay(100); // delay for stability }

float Int_lin(float x, // input : abcisse where the fonction is to be interpolated float X1, float Y1 , // Coordinates of lower interpolation point float X2, float Y2 // Coordinates of upper interpolation point ){ // linear interpolation : x beetween X1 and X2 // return interpolated value of y = f(x) float a , b ; a = (Y1 - Y2) / (X1 - X2) ; b = Y1 - a*X1 ; return a*x + b ;}

float converti(float X , // value read on ADC to convert in °C float calib[][2], // Calibration table to use --> not the same for TCN en thermo couple int N ){ int i ; if (X < calib [0][CAN]){ // Entry outside calibration table (lower) --> extrapolation // with the two first points of table return Int_lin(X, calib [0][CAN], calib [0][TEMP] , calib [1][CAN], calib [1][TEMP]) ; } if (X > calib [N-1][CAN]){ // Entry outside calibration table (higher) --> extrapolation // with the two last points of table

return Int_lin(X, calib [N-1][CAN], calib [N-1][TEMP] , calib [N][CAN], calib [N][TEMP]) ; } for (i=0 ; i < N ; i++){ if (X < calib [i][CAN]){ return Int_lin(X, calib [i-1][CAN], calib [i-1][TEMP] , calib [i][CAN], calib [i][TEMP]) ; } }}

CALIBRATION

As is, the software cant make mesure : The user had to calibrate is shield and to fill tables before.tables here are just for exemple and works with my thermocouples, my NTC and the gain of my amplifiers. Components Tolerances doesn't allowyou to use those tables as is .For calibration you need a multimeter with thermocouple fonction.

COLD JUNCTION / TNC

First you need to calibrate the cold junction compensation. Put the TNC in hot water (45°C as exemple) together with a reference thermometer. Read and note the output of TNC ADC (A0) in parallel withreading from your thermometer. Let the temperature fall and note ADC output and temperature every 10 degres. 10 degres is for exemple : theinterpolation function dont need regular intervals. You can use mesure randomly spreaded in the mesure range.Put the TNC in cold water (0 °C or 10 °C) and note together ADC output and thermometer. Let the temperature rise and note several reading.Prepare the calibration table : intervals dont need to be regular but you need to order ADC reading from smallest to bigest.Writte the table in the program upload it in the Arduino and check on the temperature range.

Page 5: Sylvain.fish.Free.fr Thermo Couple Shield Index

16/11/2015 sylvain.fish.free.fr/thermo_couple_shield/index.html

http://sylvain.fish.free.fr/thermo_couple_shield/index.html 5/5

The software can make mesure outside of the range of the table : in those case mesurements are EXTRAPOLATED from the most extreme pointof table.

THERMOCOUPLE

Mesure and note room temperaturePlug thermocouple to the shield AND to your multimeter or electronic thermometer : yes, plug the TC to the shield (P2 and P1) and INPARALLEL on your electronic thermometer. Of course you could use two thermocouples (on on the shield and one for the termometer), but it would be harder to be sure have the sametemperature on both termocouple. Put the thermocouple in a hot area (owen) an rise temperature. Note ADC output from the Arduino andtemperature from your thermometer. Your thermometer has a built in cold junction compensation. So you need to minore the temperature of the the value of the room temperature. Prepare the calibration table and upload the program.

How many point do you need

it's depend of the precision you need. Thermocouples are not so far from linear sensors. So one point for each 100°C could be enough. Thermistor(TCN) are not so linear 5 to 6 points could be necessary, depending of mesure range.