Mudanças entre as edições de "Sensores"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Limpou toda a página)
Etiqueta: anulando
 
Linha 1: Linha 1:
  
 
==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: [https://adafruit.com/product/3263 Adafruit Universal Thermocouple Amplifier MAX31856 Breakout].
 
 
:* Para usar o sensor com a placa Arduino Uno siga o tutorial nesse link: [https://learn.adafruit.com/adafruit-max31856-thermocouple-amplifier/wiring-and-test Arduino e Max31856].
 
 
:* Para usar o sensor com a placa NodeMCU DEVKIT V1.0 siga os passos descritos na próxima seção.
 
 
===NodeMCU DEVKIT V1.0 e sensor de temperatura MAX31856===
 
 
====Software SPI====
 
 
::*Usando software SPI faça as seguintes ligações entre o nanoshield MAX31856 e a placa NodeMCU
 
 
<center>
 
[[Arquivo:NodeMCUesp8266_MAX31856_bb.png | 800 px]]
 
</center>
 
 
Abaixo a relação entre os pinos do sensor e da placa
 
MAX-31856 /  NODEMCU 1.0 ESP8266-12E
 
    CS    /  GPIO 10 - SD3
 
    SDI    /  GPIO 4  - D2
 
    SDO    /  GPIO 5  - D1
 
    SCK    /  GPIO 16 - D0
 
 
::*Observe no código como declarar o sensor usando software SPI.
 
<syntaxhighlight lang=c>
 
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10,4,5,16);;
 
</syntaxhighlight>
 
 
====Hardware SPI====
 
 
::*Usando hardware SPI faça as seguintes ligações entre o nanoshield MAX31856 e a placa NodeMCU
 
<center>
 
[[Arquivo:NodeMCUesp8266_MAX31856_hardwareSPI_bb.png | 800 px]]
 
</center>
 
 
Abaixo a relação entre os pinos do sensor e da placa
 
MAX-31856 /  NODEMCU 1.0 ESP8266-12E
 
    CS    /  GPIO 15 - D8
 
    SDI    /  GPIO 13 - D7
 
    SDO    /  GPIO 12 - D6
 
    SCK    /  GPIO 14 - D5
 
 
::*Observe no código como declarar o sensor usando hardware SPI.
 
<syntaxhighlight lang=c>
 
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(15);
 
</syntaxhighlight>
 
 
 
;Código
 
Código para teste do sensor de temperatura MAX-31856 usando a placa NodeMCU DEVKIT V1.0 com chip esp8266-12E
 
 
 
<syntaxhighlight lang=c>
 
#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);
 
}
 
</syntaxhighlight>
 

Edição atual tal como às 09h27min de 4 de maio de 2020