Mudanças entre as edições de "Sensores"
Linha 14: | Linha 14: | ||
===NodeMCU DEDVKIT V1.0 e sensor de temperatura MAX31856=== | ===NodeMCU DEDVKIT V1.0 e sensor de temperatura MAX31856=== | ||
− | + | ||
− | ::* | + | ::*Usando software SPI faça as seguintes ligações entre o nanoshield MAX31856 e a placa NodeMCU |
+ | |||
<center> | <center> | ||
[[Arquivo:NodeMCUesp8266_MAX31856_bb.png | 800 px]] | [[Arquivo:NodeMCUesp8266_MAX31856_bb.png | 800 px]] | ||
</center> | </center> | ||
+ | |||
+ | ::*Observe no código como declarar o sensor usando software SPI. | ||
+ | <syntaxhighlight lang=c> | ||
+ | Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10,4,5,16);; | ||
+ | </syntaxhighlight> | ||
blábléblíblóblú | blábléblíblóblú | ||
Linha 26: | Linha 32: | ||
− | ::* | + | ::*Usando hardware SPI faça as seguintes ligações entre o nanoshield MAX31856 e a placa NodeMCU |
<center> | <center> | ||
[[Arquivo:NodeMCUesp8266_MAX31856_hardwareSPI_bb.png | 800 px]] | [[Arquivo:NodeMCUesp8266_MAX31856_hardwareSPI_bb.png | 800 px]] | ||
</center> | </center> | ||
− | ::*Observe no código | + | ::*Observe no código como declarar o sensor usando hardware SPI. |
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
+ | Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(15); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 38: | Linha 45: | ||
;Aeiou | ;Aeiou | ||
− | *Implementação | + | *Implementação |
--> | --> | ||
+ | |||
{{collapse bottom}} | {{collapse bottom}} | ||
+ | ;Código | ||
Código para teste do sensor de temperatura MAX-31856 usando a placa NodeMCU DEVKIT V1.0 com chip esp8266-12E | Código para teste do sensor de temperatura MAX-31856 usando a placa NodeMCU DEVKIT V1.0 com chip esp8266-12E | ||
Edição das 15h52min de 3 de maio de 2020
Sensor de temperatura MAX31856
O sensor Nanoshield MAX31856 suporta sensores dos tipos K, J, N, R, S, T, E e B. Com esse Nanoshield Termopar você consegue medir temperaturas por meio de um sensor de termopar, de uma forma prática e simples. Ele é implementado com o CI MAX31856, fabricado pela Maxim Semiconductor, que contém todo o circuito necessário para realizar esse tipo de medição: sensor interno de temperatura, amplificador e conversor analógico-digital. Dessa forma, a leitura já é dada diretamente em graus Celsius e pode ser lida pelo microcontolador atrávés de uma interface SPI. Termopares são sensores utilizados principalmente quando se necessita de uma ampla faixa de medidas, e em temperaturas ou ambientes não suportados por outros tipos de sensores, como termistores ou sensores semicondutores. Como aplicações típicas, podemos citar medições em fornos, turbinas, motores e processos industriais como siderurgia, usinagem, etc.
Para saber mais sobre o sensor MAX31856, consulte sua documentação no link: Adafruit Universal Thermocouple Amplifier MAX31856 Breakout.
- Para usar o sensor com a placa Arduino Uno siga o tutorial nesse link: Arduino e Max31856.
- Para usar o sensor com a placa NodeMCU DEVKIT V1.0 siga os passos descritos na próxima seção.
NodeMCU DEDVKIT V1.0 e sensor de temperatura MAX31856
- Usando software SPI faça as seguintes ligações entre o nanoshield MAX31856 e a placa NodeMCU
- Observe no código como declarar o sensor usando software SPI.
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10,4,5,16);;
blábléblíblóblú caixa
- Execute
- Usando hardware SPI faça as seguintes ligações entre o nanoshield MAX31856 e a placa NodeMCU
- Observe no código como declarar o sensor usando hardware SPI.
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(15);
|}
- Código
Código para teste do sensor de temperatura MAX-31856 usando a placa NodeMCU DEVKIT V1.0 com chip esp8266-12E
#include <Adafruit_MAX31856.h>
// Adaptado de https://github.com/adafruit/Adafruit_MAX31856/blob/master/examples/max31856/max31856.ino
//----------------------------------
// Use software SPI: CS, DI, DO, CLK
// Arduino Uno:
//Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10, 11, 12, 13);
//NODEMCU 1.0 ESP8266-12E:
// MAX-31856 / NODEMCU
// CS / GPIO 10 - SD3
// SDI / GPIO 4 - D2
// SDO / GPIO 5 - D1
// SCK / GPIO 16 - D0
//Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10,4,5,16);
//----------------------------------
// Use hardware SPI, just pass in the CS pin
// Arduino Uno:
//Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10);
//NODEMCU 1.0 ESP8266-12E:
// MAX-31856 / NODEMCU
// CS / GPIO 15 - D8
// SDI / GPIO 13 - D7
// SDO / GPIO 12 - D6
// SCK / GPIO 14 - D5
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(15);
//----------------------------------
void setup() {
Serial.begin(115200);
Serial.println("MAX31856 thermocouple test");
maxthermo.begin();
maxthermo.setThermocoupleType(MAX31856_TCTYPE_K);
Serial.print("Thermocouple type: ");
switch (maxthermo.getThermocoupleType() ) {
case MAX31856_TCTYPE_B: Serial.println("B Type"); break;
case MAX31856_TCTYPE_E: Serial.println("E Type"); break;
case MAX31856_TCTYPE_J: Serial.println("J Type"); break;
case MAX31856_TCTYPE_K: Serial.println("K Type"); break;
case MAX31856_TCTYPE_N: Serial.println("N Type"); break;
case MAX31856_TCTYPE_R: Serial.println("R Type"); break;
case MAX31856_TCTYPE_S: Serial.println("S Type"); break;
case MAX31856_TCTYPE_T: Serial.println("T Type"); break;
case MAX31856_VMODE_G8: Serial.println("Voltage x8 Gain mode"); break;
case MAX31856_VMODE_G32: Serial.println("Voltage x8 Gain mode"); break;
default: Serial.println("Unknown"); break;
}
}
void loop() {
Serial.print("Cold Junction Temp: ");
Serial.println(maxthermo.readCJTemperature());
Serial.print("Thermocouple Temp: ");
Serial.println(maxthermo.readThermocoupleTemperature());
// Check and print any faults
uint8_t fault = maxthermo.readFault();
if (fault) {
if (fault & MAX31856_FAULT_CJRANGE) Serial.println("Cold Junction Range Fault");
if (fault & MAX31856_FAULT_TCRANGE) Serial.println("Thermocouple Range Fault");
if (fault & MAX31856_FAULT_CJHIGH) Serial.println("Cold Junction High Fault");
if (fault & MAX31856_FAULT_CJLOW) Serial.println("Cold Junction Low Fault");
if (fault & MAX31856_FAULT_TCHIGH) Serial.println("Thermocouple High Fault");
if (fault & MAX31856_FAULT_TCLOW) Serial.println("Thermocouple Low Fault");
if (fault & MAX31856_FAULT_OVUV) Serial.println("Over/Under Voltage Fault");
if (fault & MAX31856_FAULT_OPEN) Serial.println("Thermocouple Open Fault");
}
delay(1000);
}