Adafruit MAX31855 With MATLab

For other supported Arduino products from Adafruit: Shields, accessories, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
jsph.gomez89
 
Posts: 1
Joined: Wed Feb 27, 2013 3:39 pm

Adafruit MAX31855 With MATLab

Post by jsph.gomez89 »

Hello everyone,

I am fairly new to Arduino and MATLab, so I apologize in advance if the answer seem trivial.
I am currently doing a project that is to build a PID controller which is to use a Thermocouple as a feedback to the controler (Arduino) to control temperature of the system.

I picked up the MAX31855 breakout board and the Type-K Thermocouple and was successful in having it work with my Arduino with the MAX31855 giving readings within 1 degree C on the serial monitor of the Arduino. My big issue right now is now having to use MATLAB to plot this data in a live data plot. But under further research, I need to create an library within MATLab to us the scrips given within the tutorial of the thermocouple. Because it is a Digital output i am not sure where to even start with this kind of work. Like I said I am fairly new to the world of Arduino, MATLab,and coding.

Thank you in advance!!

User avatar
Bedmonds91
 
Posts: 2
Joined: Tue Jun 21, 2016 1:04 pm

Re: Adafruit MAX31855 With MATLab

Post by Bedmonds91 »

I would really like to know if this problem has been solved. Matlab's support package for Arduino has a specific way to communicate with SPI devices where you have to write in order to read. The MAX31855 thermocouple amplifier is read-only so it matlab won't let me read values.

User avatar
Bedmonds91
 
Posts: 2
Joined: Tue Jun 21, 2016 1:04 pm

Re: Adafruit MAX31855 With MATLab

Post by Bedmonds91 »

So I know this is a reply to a fairly old post, but after searching the entire web I didn't find an answer to this problem, which was how to read the Max31855 from a matlab script. I provided the Matlab code I used in order to plot the temperature in real time.

%Thermocouple Data
a=arduino('COM10','Due','Libraries','SPI');
dev = spidev(a,'D10'); %Chip select pin D10, MISO is ICSP-1, SCK is ICSP-3, MOSI(not used)
t=0;
temp=0;
time=0;
for i=1:1000
dataIn = [1 1]; %write 2 pieces of info in order to receive 2 pieces of info
dataOut = writeRead(therm,dataIn,'uint16'); %uint16 is the largest integer you can use with this function therefore you need 2
bytepack=uint32(dataOut(1)); %since there are two separate pieces you need to combine them to a 32-bit integer
bytepack=bitshift(bytepack,16); %data(1) is the 1st half and is converted to uint32 and the data is shifted to the correct side.
z = bitor(bytepack,uint32(dataOut(2))); %data(2) is the 2nd half and bitor() is used to place this into the correct side of uint32
z = dec2bin(z,32); %create a 32-bit binary number
centigrade=bin2dec(z(2:14))*0.25; %from the MAX31855 datasheet, bits 18-31 is the temperature in celcius. These number are referenced backwards in matlab.
% I left out the 1st bit because it was the signed integer, which I didn't need.
% Multiplied by 0.25 since the datasheet says the LSB is 0.25°C.
%Check the adafruit Max31855 library for an in-depth look at processing these bits.
temp = [temp, centigrade];
t=t+1;
time = [time, t];
plot(time,temp);
drawnow;
end

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: Adafruit MAX31855 With MATLab

Post by adafruit_support_mike »

I'm afraid we don't have any in-house experience connecting sensors to Matlab.

The only suggestion I could give you is to put a microcontroller between Matlab and the sensor. The microcontroller can talk to the sensor, and then translate the information to an interface that's easier for Matlab to use.

Locked
Please be positive and constructive with your questions and comments.

Return to “Other Arduino products from Adafruit”