Микросхема MAX6675 измеряет температуру от 0 до 1024 градуса с разрешением 0.25 градуса. На борту внутренняя компенсация холодного спая для термопары К-типа и SPI интерфейсом. В продаже есть вот таким набором. Протокол считывания предельно прост: Прижимаем ножку CS к земле на SCK подаем тактовый сигнал и по спадающему фронту с ножки SO забираем наши биты. (см. диаграмму).
После получения 15 бит извлекаем температуру, данные находятся в битах 3 - 14. Второй бит можно применять для контроля термопары, если бит равен 1 то термопара отключена или оборвана.
Формат данных
Привожу небольшой пример работы с микросхемой, в среде Bascom AVR.
'------------------------------------------------ Конфигурация портов ------------------------------------------------
MAX6675_miso Alias Portd.5 : Config MAX6675_miso = input ' чтение данных MAX6675_sck Alias Portd.6 : Config MAX6675_sck = Output ' стробирование MAX6675_cs Alias Portd.7 : Config MAX6675_cs = Output ' выбор=0 MAX6675_data Alias Pind.5
'------------------------------------------------------------------------------------------------------------------------------
' Declare Sub MAX6657_get_T( температура) ' Если Err = 1 - обрыв термопары
Declare Sub MAX6657_get_T(t_data as single )
'------------------------------------------------------------------------------------------------------------------------------ Dim TData as single
Do
Call MAX6657_get_T( TData ) If Err=1 then Print "Термопара отсутствует" else Print "Температура = " ; TData End if Wait 1
Loop End
'------------------------------------------------------------------------------------------------------------------------------ Sub MAX6657_get_T(t_data as single ) Local temp_data as word Temp_data = 0
MAX6675_cs = 0 Shiftin MAX6675_data , MAX6675_sck , temp_data , 1 , 16 , 10 MAX6675_cs = 1
if temp_data.2 = 1 then err = 1 else err = 0 shift temp_data , right , 3 t_data = temp_data * 0.25 End sub |
|