библиотека для подключения модуля термопары к микроконтроллеру

Dependents:   NUCLEO_F410RB_MAX6675 PanelaSTM

Fork of max6675 by Jason Engelman

Committer:
zelmic
Date:
Mon Jun 11 06:48:27 2018 +0000
Revision:
4:f0cdf38c7cfc
Parent:
2:661ac326e3b3
ver 1.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tecnosys 2:661ac326e3b3 1
tecnosys 2:661ac326e3b3 2 #include <mbed.h>
tecnosys 2:661ac326e3b3 3 #include "max6675.h"
tecnosys 2:661ac326e3b3 4
tecnosys 2:661ac326e3b3 5 max6675::max6675(SPI& _spi, PinName _ncs) : spi(_spi), ncs(_ncs) {
tecnosys 2:661ac326e3b3 6
tecnosys 2:661ac326e3b3 7 }
tecnosys 2:661ac326e3b3 8
tecnosys 2:661ac326e3b3 9 float max6675::read_temp() {
tecnosys 2:661ac326e3b3 10 short value = 0;
tecnosys 2:661ac326e3b3 11 float temp = 0;
tecnosys 2:661ac326e3b3 12
tecnosys 2:661ac326e3b3 13 uint8_t highByte=0;
tecnosys 2:661ac326e3b3 14 uint8_t lowByte=0;
tecnosys 2:661ac326e3b3 15
zelmic 4:f0cdf38c7cfc 16 select(); //выбор чипа устанавливает CS в 0
zelmic 4:f0cdf38c7cfc 17 wait(.25); //Эта задержка нужна для обновления данных о температуре
tecnosys 2:661ac326e3b3 18
zelmic 4:f0cdf38c7cfc 19 highByte = spi.write(0); // отправляем два пустых
zelmic 4:f0cdf38c7cfc 20 lowByte = spi.write(0); // байта, при этом одновременно получаем два байта с данными
zelmic 4:f0cdf38c7cfc 21 deselect(); //устанавливаем CS в 1 (освобождаем SPI интерфейс) после того как считали температуру.
tecnosys 2:661ac326e3b3 22
tecnosys 2:661ac326e3b3 23
zelmic 4:f0cdf38c7cfc 24 if (lowByte & (1<<2)) { // проверяем третий бит, если равен 1, то термопара отключена
zelmic 4:f0cdf38c7cfc 25 return -1;
tecnosys 2:661ac326e3b3 26 } else {
zelmic 4:f0cdf38c7cfc 27 value = (highByte << 5 | lowByte>>3); // выделим из полученных данных инф. о температуре (с 3 по 14 бит)
tecnosys 2:661ac326e3b3 28 }
tecnosys 2:661ac326e3b3 29
zelmic 4:f0cdf38c7cfc 30 temp = (value*0.25); // умножаем значение на чтобы получить ˚C или
zelmic 4:f0cdf38c7cfc 31 // * (9.0/5.0)) + 32.0; // чтобы получить ˚F
tecnosys 2:661ac326e3b3 32
tecnosys 2:661ac326e3b3 33 return temp;
tecnosys 2:661ac326e3b3 34 }
tecnosys 2:661ac326e3b3 35
tecnosys 2:661ac326e3b3 36 void max6675::select() {
tecnosys 2:661ac326e3b3 37 ncs = 0;
tecnosys 2:661ac326e3b3 38 }
tecnosys 2:661ac326e3b3 39
tecnosys 2:661ac326e3b3 40 void max6675::deselect() {
tecnosys 2:661ac326e3b3 41 ncs = 1;
tecnosys 2:661ac326e3b3 42 }