Qwiic Thermocouple Amplifier - MCP9600 (PCC Connector) with Arduino Due and Arduino MKR WIFI 1010

Hello,

Summary

Example 1 from the MCP9600 library works on my Arduino Due, but not with the MKR WIFI 1010.

And yes, I made sure to change the board selection for both hahaha.

Please let me know any troubleshooting advice you have to offer.

My Problem

I am using a SparkFun Qwiic Thermocouple Amplifier - MCP9600 (PCC Connector), and I am having trouble getting it to work with my Arduino MKR WIFI 1010. However, I was able to get it functioning properly with my Arduino Due. When I use the MKR board, nothing prints to the Serial monitor.

My equipment:

  • SparkFun Qwiic Thermocouple Amplifier - MCP9600 (PCC Connector)

  • Thermocouple Type-K - Stainless Steel

  • Arduino Due

  • Arduino MKR WIFI 1010

  • Female to male jumper cables

  • Macbook Pro, 13", early 2015 - macOS Mojave version 10.14.6 (The most up to date version before 32 bit programs were no longer supported)

My Testing

Downloaded library:

I downloaded the sparkfun library for interfacing with the MCP9600 from the tutorial page - SparkFun_MCP9600_Arduino_Library. https://learn.sparkfun.com/tutorials/sp … gnEALw_wcB

Ran Example 1: Basic Readings

The MCP9600 red LED comes on, but the MKR gave no response on the serial line.

Tested MKR for Hardware and Connection Issues

I tested another script which would print values read from a potentiometer, showing that the device is working with and writing to the serial monitor. I have attached an image from the serial monitor for this output. I believe this rules out hardware and connection issues on the MKR.

The script is here below:

int analogPin = A1; // potentiometer wiper (middle terminal) connected to analog pin 3
                    // outside leads to ground and +5V
int val = 0;  // variable to store the value read

void setup() {
  Serial.begin(115200);           //  setup serial
}

void loop() {
  val = analogRead(analogPin);  // read the input pin
  Serial.println(val);          // debug value
  delay(100);
}


Ran Example 1: Basic Readings on Arduino Due

I then tested the thermocouple arrangement with my Arduino Due. The script worked as expected. Below you will find the example code. I have attached a picture of my serial monitor readout.

/*
  Temperature Measurements with the MCP9600 Thermocouple Amplifier
  By: Fischer Moseley
  SparkFun Electronics
  Date: July 8, 2019
  License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware License).

  This example outputs the ambient and thermocouple temperatures from the MCP9600 sensor.

  Hardware Connections:
  Attach the Qwiic Shield to your Arduino/Photon/ESP32 or other
  Plug the sensor onto the shield
  Serial.print it out at 115200 baud to serial monitor.
*/

#include <SparkFun_MCP9600.h>
MCP9600 tempSensor;

void setup(){
    Serial.begin(115200);
    Wire.begin();
    Wire.setClock(100000);
    tempSensor.begin();       // Uses the default address (0x60) for SparkFun Thermocouple Amplifier
    //tempSensor.begin(0x66); // Default address (0x66) for SparkX Thermocouple Amplifier

    //check if the sensor is connected
    if(tempSensor.isConnected()){
        Serial.println("Device will acknowledge!");
    }
    else {
        Serial.println("Device did not acknowledge! Freezing.");
        while(1); //hang forever
    }

    //check if the Device ID is correct
    if(tempSensor.checkDeviceID()){
        Serial.println("Device ID is correct!");        
    }
    else {
        Serial.println("Device ID is not correct! Freezing.");
        while(1);
    }
}

void loop(){ //print the thermocouple, ambient and delta temperatures every 200ms if available
    if(tempSensor.available()){
        Serial.print("Thermocouple: ");
        Serial.print(tempSensor.getThermocoupleTemp());
        Serial.print(" °C   Ambient: ");
        Serial.print(tempSensor.getAmbientTemp());
        Serial.print(" °C   Temperature Delta: ");
        Serial.print(tempSensor.getTempDelta());
        Serial.print(" °C");
        Serial.println();
        delay(200); //don't hammer too hard on the I2C bus
    }
}