Problema al conectar CI MAX31855 y Data logging shield

Saludos…veran hace unos dias estoy con un proyecto el cual requiere guardar datos de temperatura a partir de un termopar tipo k en una memoria SD, para este caso estoy usando el integrado max31855k para la lectura del termopar y el Data logging shield para guardar los datos en la memoria SD ambos usan la interfaz SPI.
Al parecer el Data logging funciona correctamente, y el MAX31855 tambien funciona relativamente bien conectandolo si el data logging. El problema que tengo es que no logro que el max31855 funcione correctamente en conjunto con el Data Logging.

Adjunto el codigo que realice, el resultado que obtengo y el diagrama de conexion.

#include <SPI.h>
#include <SD.h>
#include <Adafruit_MAX31855.h>
#define CS  10//pin para seleccionar memoria SD
Adafruit_MAX31855 thermo1(13,2,12);
double data_tx,thermoErrorCodes;
File dataFile;
char aux;
void setup() {
  Serial.begin(115200);//Inicializamos puerto Serial PC
  if(!SD.begin(CS)){//Verificamos si existe Tarjeta SD  
    Serial.println("Tarjeta no presente o mal conectado");
    while(true);  
  }
Serial.println("Tarjeta SD OK");
 delay(500); 
}

void loop() {
  if(Serial.available()>0){
    aux=Serial.read();
    while(aux=='1'){
      if(Serial.available()>0){
        aux=Serial.read();
      }else{
        data_tx= thermo1.readCelsius();
        if(isnan(data_tx)){
          thermoErrorCodes = thermo1.readError();    
        }
        else{
          Serial.println(data_tx);
          dataFile = SD.open("lectura.txt", FILE_WRITE);
          if(dataFile){
            dataFile.println(data_tx);//guardamos el dato en la memoria
            dataFile.close();//cerramos cesion con la memoria 
          }
          delay(1000);              
        }
      }
    }
  }
}

Cualquier tipo de ayuda es bienvenido, gracias de antemano.

Bueno si debo entender que sin uno de los dos elementos SPI el otro funciona tienes un problema de Chip select.

No conozco el esquema del MAX pero debes hacer esta prueba.
Cada vez que un dispositivo SPI es seleccionado, eso se hace en LOW, en el caso de la SD con pin 4 (supongo que ese sera el que esta por default) y el MAX con pin 2.
verifica que ocurre pero seguramente la operación es tan rápida que no podras verlo con un multimetro.

Ya que la libreria del MAX debidamente inicializa el pin _CS elegido en tu caso el 2 según esto

void Adafruit_MAX31855::begin(void) {
  //define pin modes
  pinMode(cs, OUTPUT);
  digitalWrite(cs, HIGH);

lo que resta es que tu placa MAX31855 no tenga una R pull-up que garantice el estado inhibitorio al no seleccionar el dispositivo.
Descuento que eso si esa en la SD.

verifica si hay una R de 4k7 a 10k entre el pin CS del modulo MAX31855 y 5V

Saludos surbyte, primeramente gracias por responder. Te comento que no puse una R de 4k7 o 10k entre el CS del MAX y 5V directamente. Al principio crei que el problema era que tanto el max y el arduino no trabajaban con los mismos niveles logicos de voltaje. Asi que decidi usar el 74HC125 para hacer el cambio de nivel segun el siguiente post http://forum.arduino.cc/index.php?topic=178915.0 pero tampoco me funciono, ya que me daba el mismo resultado. Asi que probare conectar una R de 10k, dejando de lado el 74HC125.

El MAX estoy seguro que soporta tensiones hasta 5.5V asi que olvidalo. MAXIM es un serio fabricante.
El valor de ese Resistor no estoy muy seguro. Busca uno que haga trabajar al conjunto.

Si tienes osciloscopio mira el nivel presente en los CS de la SD y del MAX

Te comento que yo estoy usando la version smd del max31855 y segun el datasheet https://datasheets.maximintegrated.com/en/ds/MAX31855.pdf la tension recomendada es de 3.3V. Aunque por el momento no cuento con un osciloscopio, usando un multimetro he podido notar un aumento de tension en Vcc del max, sube de 3.3V a 4.1 aproximadamente cada segundo y nuevamente baja a 3.3V.

Bueno entonces deberías usar level shifters.

Dos opciones

Esto con el 74HC245

Esto con el CD4050

cd4050b.png

Gracias por las recomendaciones surbyte, te cuento que al final define nuevos pines SCK y MISO para los max y ahora me funcionan muy bien.
El cambio lo realice en la siguiente linea:

Adafruit_MAX31855 thermo1(5,2,6);

Era otra opcion. Pero si usas dispositivos rápidos, recuerda lo dicho.
Y tampoco necesitaste adaptadores de nivel por lo visto.

si al final no tube que usar adaptadores logicos, simplemente alimentar el max31855 con 3.3V, aunque sigo sin entender por que es que el data logging shield no dejaba que otros usaran el bus SPI?

Porque no debe tener resistencia Pull up en el CS.