Skip to content

Commit 9b2fe13

Browse files
committed
+ added offset for temperature (constant)
+ added demo4 + updated demo3
1 parent 2c2316f commit 9b2fe13

File tree

4 files changed

+132
-11
lines changed

4 files changed

+132
-11
lines changed

libraries/MAX31855/MAX31855.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
//
22
// FILE: MAX31855.cpp
33
// AUTHOR: Rob Tillaart
4-
// VERSION: 0.1.01
4+
// VERSION: 0.1.02
55
// PURPOSE: MAX31855 - Thermocouple
66
// DATE: 2014-01-01
77
// URL:
88
//
9+
// HISTORY:
10+
// 0.1.02 added offset
11+
// 0.1.01 refactored speed/performance
12+
// 0.1.00 initial version.
13+
//
914
// Released to the public domain
1015
//
1116

@@ -16,6 +21,7 @@ MAX31855::MAX31855(uint8_t sclk, uint8_t cs, uint8_t miso)
1621
_sclk = sclk;
1722
_cs = cs;
1823
_miso = miso;
24+
_offset = 0;
1925
}
2026

2127
void MAX31855::begin()
@@ -53,6 +59,7 @@ uint8_t MAX31855::read()
5359
// process temperature bit 18-31
5460
_temperature = (value & 0x1FFF) * 0.25;
5561
if (value & 0x2000) _temperature *= -1;
62+
if (_offset != 0) _temperature += _offset;
5663

5764
return _status;
5865
}
@@ -67,8 +74,10 @@ uint32_t MAX31855::_read(void)
6774
{
6875
value <<= 1;
6976
digitalWrite(_sclk, LOW);
77+
// delayMicroseconds(1); // DUE
7078
if ( digitalRead(_miso) ) value += 1;
7179
digitalWrite(_sclk, HIGH);
80+
// delayMicroseconds(1); // DUE
7281
}
7382

7483
digitalWrite(_cs, HIGH);

libraries/MAX31855/MAX31855.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//
44
// FILE: MAX31855.h
55
// AUTHOR: Rob Tillaart
6-
// VERSION: 0.1.01
6+
// VERSION: 0.1.02
77
// PURPOSE: MAX31855 - Thermocouple
88
// DATE: 2014-01-01
99
// URL:
@@ -17,7 +17,7 @@
1717
#include "Arduino.h"
1818
#endif
1919

20-
#define MAX31855_VERSION "0.1.01"
20+
#define MAX31855_VERSION "0.1.02"
2121

2222
#define STATUS_OK 0x00
2323
#define STATUS_OPEN_CIRCUIT 0x01
@@ -32,14 +32,19 @@ class MAX31855
3232
uint8_t read();
3333
float getInternal(void) { return _internal; };
3434
// Celsius
35-
float getTemperature(void) { return _temperature; } ;
36-
uint8_t getStatus(void) {return _status; } ;
35+
float getTemperature(void) { return _temperature; };
36+
uint8_t getStatus(void) {return _status; };
37+
38+
void setOffset(float t) { _offset = t; };
39+
float getOffset(float t) { return _offset; };
40+
3741

3842
private:
3943
uint32_t _read();
4044
float _internal;
4145
float _temperature;
4246
uint8_t _status;
47+
float _offset;
4348

4449
uint8_t _sclk;
4550
uint8_t _miso;

libraries/MAX31855/examples/max31855_demo3/max31855_demo3.ino

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// FILE: max31855_demo2.ino
2+
// FILE: max31855_demo3.ino
33
// AUTHOR: Rob Tillaart
44
// VERSION: 0.1.01
55
// PURPOSE: thermocouple lib demo application
@@ -20,16 +20,16 @@ MAX31855 tc(clPin, csPin, doPin);
2020
void setup()
2121
{
2222
Serial.begin(115200);
23-
Serial.print("Start max31855_demo: ");
23+
Serial.print("Start max31855_demo3: ");
2424
Serial.println(MAX31855_VERSION);
2525
Serial.println();
2626

2727
tc.begin();
2828

2929
uint32_t start = micros();
30-
tc.read();
30+
for (int i=0; i< 10; i++) tc.read();
3131
uint32_t stop = micros();
32-
Serial.print("read:\t");
32+
Serial.print("10x read:\t");
3333
Serial.println(stop - start);
3434

3535
start = micros();
@@ -39,19 +39,46 @@ void setup()
3939
Serial.println(stop - start);
4040

4141
start = micros();
42-
tc.getInternal();
42+
float t2 = tc.getInternal();
4343
stop = micros();
4444
Serial.print("getInternal:\t");
4545
Serial.println(stop - start);
4646

47-
Serial.println(t1,2);
47+
Serial.println();
48+
Serial.println(t1, 2);
49+
Serial.println(t2, 2);
50+
Serial.println();
4851
}
4952

5053
void loop()
5154
{
55+
// this loop returns multiples of about 73mSec (counter multiples of ~143)
56+
// so the # measurements per second is about 14?
57+
uint32_t counter = 0;
58+
float t1 = tc.getTemperature();
59+
float t2 = t1;
60+
61+
uint32_t start = micros();
62+
while (t2 == t1)
63+
{
64+
tc.read();
65+
t1 = tc.getTemperature();
66+
counter++;
67+
}
68+
uint32_t stop = micros();
69+
70+
Serial.print("change:\t");
71+
Serial.println(stop - start);
72+
Serial.print("counter:\t");
73+
Serial.println(counter);
74+
Serial.println(t2, 2);
75+
Serial.println(t1, 2);
76+
Serial.println();
5277
}
5378

5479

5580

5681

5782

83+
84+
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
//
2+
// FILE: max31855_demo4.ino
3+
// AUTHOR: Rob Tillaart
4+
// VERSION: 0.1.00
5+
// PURPOSE: thermocouple lib demo application
6+
// DATE: 2014-01-02
7+
// URL:
8+
//
9+
// Released to the public domain
10+
//
11+
12+
#include "MAX31855.h"
13+
14+
const int doPin = 7;
15+
const int csPin = 6;
16+
const int clPin = 5;
17+
18+
MAX31855 tc(clPin, csPin, doPin);
19+
20+
void setup()
21+
{
22+
Serial.begin(115200);
23+
Serial.print("Start max31855_demo4: ");
24+
Serial.println(MAX31855_VERSION);
25+
Serial.println();
26+
27+
tc.begin();
28+
29+
uint32_t start = micros();
30+
for (int i=0; i< 10; i++) tc.read();
31+
uint32_t stop = micros();
32+
Serial.print("10x read:\t");
33+
Serial.println(stop - start);
34+
35+
36+
start = micros();
37+
float t1 = tc.getTemperature();
38+
stop = micros();
39+
Serial.print("getTemperature:\t");
40+
Serial.println(stop - start);
41+
Serial.println(t1, 2);
42+
Serial.println();
43+
44+
45+
start = micros();
46+
tc.setOffset(2.0);
47+
stop = micros();
48+
Serial.print("setOffset:\t");
49+
Serial.println(stop - start);
50+
51+
tc.read();
52+
start = micros();
53+
t1 = tc.getTemperature();
54+
stop = micros();
55+
Serial.print("getTemperature:\t");
56+
Serial.println(stop - start);
57+
Serial.println(t1, 2);
58+
Serial.println();
59+
60+
61+
start = micros();
62+
float t2 = tc.getInternal();
63+
stop = micros();
64+
Serial.print("getInternal:\t");
65+
Serial.println(stop - start);
66+
Serial.println(t2, 4);
67+
Serial.println();
68+
}
69+
70+
void loop()
71+
{
72+
}
73+
74+
75+
76+
77+
78+
79+
80+

0 commit comments

Comments
 (0)