Hola muy buenos días a todos, actualmente estoy desarrollando un banco de pruebas de intercambiadores de calor en el cual debo de medir la temperatura en distintas etapas. Para ello he implementado el módulo max6675 , la duda que me genera es en cuanto al funcionamiento de dichos módulos ya que los 5 deben de funcionar mientras se cumple el ciclo de funcionamiento. Por lo que he visto aquí en el foro el código que implementan es para el funcionamiento de uno mientras los demás sensores están apagados.. También tengo la inquietud en cuanto al nombramiento de los pines en el Arduino ya que entiendo que en el código se debe de nombrar cada módulo Max pero ya después del primer módulo para los demás módulos solo se utilizaría un pin en el Arduino verdad?
No están apagados estan inhabilitados porque la Interfaz SPI (como cualquier interfaz) solo puede leer 1 a la vez, pero es tan rápida que ni cuenta te darás.
Todas los max comparten pines salvo el CS Chip Select. Para ello destinas un pin del arduino que cuando se pone en LOW habilita el dispositivo, lo interrogas y obtienes su lectura. Luego repites con el siguiente.
Lo mejor es crear un arreglo o array de sensores y lo metes en un loop y los interrogas a todos cada X tiempo.

Ese esquema es para uno, cuando son varios solo cambia el CS o pin que lo habilita e LOW.
Aca tienes un ejemplo con dos
En este ejemplo el OP propone esto
int thermoDO = 12;
int thermoCLK = 13;
int thermoCS1 = 5;
int thermoCS2 = 6;
int thermoCS2 = 7;
MAX6675 thermocouple2 (thermoCLK, thermoCS3, thermoDO);
MAX6675 thermocouple1(thermoCLK, thermoCS1, thermoDO);
MAX6675 thermocouple (thermoCLK, thermoCS2, thermoDO);
Yo propongo que uses esto
#include "MAX6675.h" // https://github.com/RobTillaart/MAX6675
const int ThermoCouplesNum = 3; // amplia a tus 5 sensores
MAX6675 ThermoCouples[ThermoCouplesNum] =
{
MAX6675(3, &SPI), // HW SPI
MAX6675(4, &SPI), // HW SPI
MAX6675(5, 6, 7) // SW SPI
};
uint32_t start, stop;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("MAX6675_LIB_VERSION: ");
Serial.println(MAX6675_LIB_VERSION);
Serial.println();
delay(250);
SPI.begin();
for (int i = 0; i < ThermoCouplesNum; i++)
{
ThermoCouples[i].begin();
ThermoCouples[i].setSPIspeed(4000000);
}
}
void loop()
{
delay(100);
for (int THCnumber = 0; THCnumber < ThermoCouplesNum; THCnumber++)
{
start = micros();
int status = ThermoCouples[THCnumber].read();
stop = micros();
float temp = ThermoCouples[THCnumber].getTemperature();
Serial.print(millis());
Serial.print("\tID: ");
Serial.print(THCnumber);
Serial.print("\tstatus: ");
Serial.print(status);
Serial.print("\ttemp: ");
Serial.print(temp);
Serial.print("\tus: ");
Serial.println(stop - start);
delay(1000); // time to flush all Serial stuff
}
Serial.println();
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.