383 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Цифровой термометр на термопаре схема. Измерение температуры с помощью термопары и микроконтроллера AVR

Термометр на Attiny85 и термопаре

В этой статье приводится схема термометра на термопаре, способном измерять температуры до +1350°C, собранном на ATtiny85 и OLED-дисплее. В проекте используется АЦП ATtiny85’s с функцией усиления на 20 для измерения напряжения на термопаре, а также внутренний датчик температуры для измерения температуры окружающей среды (отображается в нижней сроке дисплея). Точность измерений -6 ) = 1.31°C

  • Макс. значение= 1024 x 1.31 = 1341°C.
  • Используя оверсемплинг можно добитсья разрешения менее 1°C, что более чем достаточно для многих задач.

    ATtiny85 — один из немногих контроллеров AVR, имеющих усилитель на входах АЦП; также его имеют ATtiny861, ATtiny167 и ATmega1284P.

    Несмотря на то, что K-термопары могут измерять температуры до -200°C, для простоты проекта в программе реализовано измерение температур больше комнатной.

    Получение температуры

    Как преобразовать напряжение на термопаре в температуру?

    Простейший способ — это принять, что отношение напряжения к температуре имеет линейную зависимость в 41мкВ/°C. Для узких температурных диапазонов это достаточное приближение; однако, на больших диапазонах отклонение от линейности уже заметно.

    Для максимальной точности можно вычислчть полином 9го прядка, используя специальные коэффициенты для К-термопары. Однако для данного проекта это не актуально.

    Подход, который здесь использован — это кусочно-линейная модель, аппроксимирующая стандартную кривую отклика серией прямых сегментов. Я искал температуру для серии фиксированных точек, соответствующих показаниям АЦП, кратным 128, используя онлайн-калькулятор температуры термопары:

    Затем они были закодированы в виде следующего массива констант, в десятых долях градуса, для линейной интерполяции температуры:

    Принцип работы термопары

    Термопара представляет собой два провода, изготовленных из различных металлов. Эти два провода скреплены или сварены вместе и образуют спай. Когда на этот спай оказывают воздействие изменения температуры, то термопара реагирует на них генерируя напряжение, пропорциональное по величине изменениям температуры.

    Если термопара подсоединена к электрической цепи, то величина генерируемого напряжения будет отображаться на шкале измерительного прибора. Затем показания прибора могут быть преобразованы в температурные показания с помощью таблицы. На некоторых приборах шкала откалибрована непосредственно в градусах.

    Спаи термопары

    В конструкции большинства термопар предусмотрен только один спай. Однако, когда термопара подсоединяется к электрической цепи, то в точках ее подсоединения может образовываться еще один спай. Холодный спай представляет собой дополнительный спай, который образуется, когда термопара подсоединяется к цепи. Этот спай называется свободным (холодным) спаем термопары. Другой спай — это рабочий (горячий) спай. В цепи находится измерительный прибор, который измеряет разницу величин напряжения на двух спаях.

    Два спая соединены таким образом, что их напряжение противодействует друг другу. Таким образом, на обоих спаях генерируется одна и та же величина напряжения и показания прибора будут равны нулю. Так как существует прямо пропорциональная зависимость между температурой и величиной напряжения, генерируемой спаем термопары, то два спая будут генерировать одни и те же величины напряжения, когда температура на них будет одинаковой.

    Когда спай термопары нагревается, величина напряжения повышается прямо пропорционально. Поток электронов от нагретого спая протекает через другой спай, через измерительный прибор и возвращается обратно на горячий спай. Прибор показывает разницу напряжения между двумя спаями. Разность напряжения между двумя спаями. Разность напряжения, показываемая прибором, преобразуется в температурные показания либо с помощью таблицы, либо прямо отображается на шкале, которая откалибрована в градусах.

    Холодный спай термопары

    Холодный спай часто представляет собой точку, где свободные концы проводов термопары подсоединяются к измерительному прибору.

    В силу того, что измерительный прибор в цепи термопары в действительности измеряет разность напряжения между двумя спаями, то напряжение холодного спая должно поддерживаться на неизменном уровне, насколько это возможно. Поддерживая напряжение на холодном спае на неизменном уровне мы тем самым гарантируем, что отклонение в показаниях измерительного прибора свидетельствует о изменении температуры на рабочем спае.

    Если температура вокруг холодного спая меняется, то величина напряжения на холодном спае также изменится. В результате изменится напряжение на холодном спае. И как следствие разница в напряжении на двух спаях тоже изменится, что в конечном итоге приведет к неточным показаниям температуры.

    Для того, чтобы сохранить температуру на холодном спае на неизменном уровне во многих термопарах используются компенсирующие резисторы. Резистор находится в том же месте, что и холодный спай, так что температура воздействует на спай и резистор одновременно. Второй способ коррекци вычислений — измерение температуры холдного спая и внесение поправок в вычисление температуры горячего спая. К счастью в ATtiny85 есть встроенный температурный датчик, так что данный термометр использует его для вычисления температуры холодного спая.

    Рабочий спай термопары (горячий)

    Рабочий спай — это спай, который подвержен воздействию технологического процесса, чья температура измеряется. Ввиду того, что напряжение, генерируемое термопарой прямо пропорционально ее температуре, то при нагревании рабочего спая, он генерирует больше напряжения, а при охлаждении — меньше.

    Когда термопара подключается к электрической цепи, то она не будет работать нормально пока не будет соблюдена полярность при подключении. Плюсовые провода должны быть соединены вместе и подсоединены к плюсовому выводу цепи, а минусовые к минусовому. Если провода перепутать, то рабочий спай и холодный спай не будут в противофазе и показания температуры будут неточными. Одним из способов определения полярности проводов термопары -это определение по цвету изоляции на проводах. Помните, что минусовой провод во всех термопарах — красный.

    Читать еще:  Блок питания. Как сделать импульсный блок питания своими руками? Импульсный блок питания на 30 вольт своими руками

    Схема термометра на термопаре

    Вот схема термометра на Attiny85, термопере и OLED дисплее:

    Для индикациия выбран I2C 128×32 OLED-дисплей. Резистор 33kΩ и конденсатор 0.1 µF обеспечивают сброс дисплея при подаче питания, хотя они могут и не понадобиться.

    Использована термопара K-типа.

    Программа

    Как для измерения внутренней температуры, так и для измерения дифференциального напряжения аналого-цифровые преобразования выполняются в спящем режиме, как это рекомендовано даташитом для минимизации шума от процессора и периферийных устройств.

    Измерение внутренней температуры

    Процедура настройки АЦП для измерения внутренней температуры заключается в следующем:

    Процедура ReadInternal() выполняет чтение; она просто переводит процессор в спящий режим. АЦП генерирует прерывание для пробуждения процессора после завершения преобразования, после чего программа считывает и возвращает значение регистра АЦП:

    Измерение напряжения термопары

    Аналогичная процедура настраивает АЦП для измерения термопары:

    Процедура ReadThermocouple () фактически производит чтение:

    Преобразование термоэлектрического напряжения в температуру

    Значение АЦП из ReadThermocouple () преобразуется в температуру с помощью кусочно-линейной интерполяции, как описано в разделе Получение температуры выше. Для большей точности используется сумма четырех последовательных показаний АЦП; процедура Convert () принимает это значение и использует значения в массиве Temperature[] для преобразования его в температуру, в градусах::

    Если параметр для Convert() является точным кратным n от 512, то температур равнаs Temperature[n]/10. В противном случае температура интерполируется между Temperature[n] и Temperature[n+1].

    Отображение информации

    Наконец, главная функция в loop () считывает внутреннюю температуру и температуру термопары каждую секунду и отображает показания на дисплее. Для каждого измерения берется среднее из 16 последовательных показаний, чтобы уменьшить шум:

    Повышение точности

    Есть два фактора, которые влияют на точность термометра, и вы можете откалибровать каждый из них, чтобы улучшить точность.

    Внутренний датчик температуры

    Если внутренний датчик неисправен, все показания будут искажены этой ошибкой. Поэтому рекомендуется калибровать датчик при комнатной температуре по отношению к известному (поверенному) термометру следующим образом:

    • Проверьте показания внутренней температуры в нижней строке дисплея.
    • Установите постоянное внутреннее смещение в программе на требуемое значение, чтобы оно было равно измеренной температуре окружающей среды.

    Смещение АЦП

    При отсутствии входного сигнала на дифференциальном входе x20 обычно имеется небольшое смещение, которое добавляется к каждому показанию. Чтобы измерить его:

    • Отключите термопару и поставьте перемычку между двумя дифференциальными входами, PB3 и PB4, чтобы получить нулевое значение на входе.
    • Обратите внимание на разницу между показаниями термопары и внутренней температурой.
    • Установите константу ADCOffset в программе на требуемую поправку, чтобы сделать эту разницу нулевой.

    Тестирование

    Обратите внимание, что перед использованием термометра термопары в точных задачах вы должны протестировать его при известных температурах. Этот термометр проверялся с помощью промышленного термометра в кипящей воде при 100°C и в оливковым масле при 220°C, и показания были в пределах 5°C в каждом случае.

    Для измерения температуры твердого объекта можно прикрепить термопару к объекту с помощью полиамидной ленты.

    Компиляция программы

    Компилировалась программа с помощью Spence Konde’s ATTiny Core. Нужно выбрать контроллер ATtiny25/45/85 в разделе ATTinyCore меню Board. Затем проверьте, что следующие параметры установлены данным образом (игнорируйте другие параметры):

    Chip: «ATtiny85»
    Clock: «1 MHz (internal)»
    B.O.D: «B.O.D. Disabled»
    Timer 1 Clock: «CPU»

    Это настройки фьюхов по умолчанию для нового ATtiny85, но если вы ранее использовали ATtiny85 с другими настройками, выберите Burn Bootloader, чтобы установить фьюзы соответствующим образом.

    Затем загрузите программу с помощью ISP (внутрисистемное Программирование);

    Цифровой термометр на термопаре схема. Измерение температуры с помощью термопары и микроконтроллера AVR

    Терморегулятор на термопаре К-типа

    Автор: DrCaH4ec, drcah4ec@meta.ua
    Опубликовано 20.07.2017
    Создано при помощи КотоРед.

    Всем доброго времени суток!

    Представляю вашему вниманию разработанную мной схему терморегулятора на термопаре К-типа.

    «Мозгом» данного устройства является микроконтроллер Atmega8 (я использовал корпус TQFP32). Данные выводятся на семисегментный трехразрядный индикатор с общим катодом(цвет свечения на ваш вкус). Ток на катоды индикатора идет через транзисторы(я использовал MMBT3904, но так же подойдут КТ315 или любые другие маломощные биполярные транзисторы обратной проводимости).

    Прибор питается от напряжения 5В которое обеспечивает стабилизатор напряжения 7805, нужно взять в корпусе ТО220 и рекомендуется установить на радиатор.

    Диоды для диодного моста я взял 1N4007, но также можно использовать любые другие выпрямительные диоды или же готовый диодный мост. Управление осуществляется кнопками S1(Т-), S2(Т+). Сигнал с термопары усиляется операционным усилителем LM358. В устройстве реализована компенсация холодного спая термопары и калибровка 0 операционного усилителя. Термопару можно использовать от мультиметра, но лучше взять ее в защитном кожухе так как ее спокойно можно будет погружать в те вещества, которые вы будете плавить.

    Резисторы любой мощности.

    «Экзотические» номиналы резисторов в блоке усиления можно получить следующим образом:

    Диод D5 обязательно должен быть прикреплен как можно ближе к месту крепления контактов термопары к плате и он должен быть 1N4148 или отечественный аналог КД522.

    Управление нагрузкой осуществляется симистором. Гальваническая развязка обеспечена за счет использования оптопары. Симистор обязательно нужно установить на радиатор. Если у вас отсутствует воздушное охлаждение, он должен быть достаточно большим, при наличии принудительного охлаждения хватит даже радиатора из компьютерного блока питания.

    Максимальная нагрузка которую можно подключать к устройству ограничивается только симистором, который вы поставите. Силовые провода желательно использовать потолще ввиду того, что по ним будет идти большой ток.

    Светодиод LED1 индицирует идет ли нагрев.

    Минимальная температура которую можно установить – 50 о С; максимальная – 800 о С.

    Принцип работы устройства очень простой. Если текущее значение температуры нагревателя измеренное прибором меньше установленного, то на порте B2 микроконтроллера появляется логическая единица, симистор открывается и ток на ТЭН проходит. Иначе, если текущее значение температуры нагревателя измеренное прибором больше или равно установленному, то на порте B2 микроконтроллера появляется логический ноль, симистор закрывается и ток на ТЭН не проходит.

    Правильно собранное устройство нуждается только в калибровке.

    Корпус было решено использовать от компьютерного блока питания.

    Один из сетевых проводов и выход симистора выведены сзади корпуса наружу и через мощный клемник к ним подключается ТЭН. Также на задней части корпуса выходят провода термопары. Так как провода термопары в моем случае экранированные, на экране находится минус.

    Читать еще:  Цифровой измеритель ёмкости. Цифровой измеритель ESR (ЭПС) и ёмкости на контроллере Самодельный прибор для измерения конденсаторов малой емкости

    Спереди для улучшения внешнего вида изготовил фальш-панель из куска ПВХ и оракала. Также здесь размещены индикатор, кнопки управления, светодиод индицирующий нагрев и выключатель устройства, который отключает только питание от платы и к силовой части отношения не имеет.

    Калибровка

    Включите устройство. Опустите термопару в талую воду со льдом и вращая переменный резистор P1 установите на индикаторе 0 о С, или же если у вас есть градусник, можете измерить им комнатную температуру и вращая переменный резистор Р1 установите на индикаторе такую же температуру, какую показал «эталонный» градусник. Затем закипятите воду, опустите термопару туда и вращая переменный резистор Р2 установите на индикаторе 100 о С. Можете произвести такую операцию несколько раз, пока прибор не покажет нужную температуру без подстройки. Можете так же поверить как он покажет температуру тела.

    Использование

    Сразу после включения на индикаторе появится надпись приветствия НІ(с англ. – привет).

    Затем устройство покажет установленную температуру (при первом включении там будет случайное число) и терморегулятор перейдет в рабочий режим. Где будет показывать текущую температуру, также светодиод будет индицировать идет ли нагрев (светодиод светит – идет, не светит – не идет).

    Для установки заданной температуры нагрева нужно зажать обе кнопки и держать до появления надписи «INS» (instalation).

    Затем на индикаторе ненадолго появится значение текущей установленной температуры и вы сможете кнопками установить нужную вам температуру. Когда вы это сделали, просто отпустите кнопки и ничего не делайте. Через некоторое время (примерно 5 сек.) на индикаторе появится надпись «SAV»(save). И устройство перейдет в рабочий режим.

    Что ж надеюсь, все вышесказанное было для вас полезным и это устройство у вас заработает сразу. Всего вам хорошего и удачи в работе.

    Урок 12. Измерение температуры при помощи AVR. Простой термометр на AVR.

    Продолжаем осваивать периферию, на очереди измерение температуры. Рассмотрим вариант измерения, при помощи датчика температуры DS18b20.

    Характеристики датчика: диапазон измерения от -55 до +125°С. Точность измерения ±0,5°С гарантируется в диапазоне от -10 до +85°С. Возможность измерения с разрешением 9, 10, 11 и 12 бит, т.е. с шагом 0,5; 0,25; 0,125; 0,0625°С. Для обмена информацией с AVR микроконтроллером используется 1-Wire протокол. Каждый датчик имеет свой уникальный адрес, поэтому имеется возможность посадить на шину сразу несколько датчиков.

    Для сборки схемы понадобится жк дисплей, датчик и резистор на 4,7кОм. Теперь перейдем непосредственно к прошивке.

    #include #include // 1 Wire Bus functions #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=2 #endasm #include #include // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 ;PORTD #endasm #include #include char lcd_buf[17]; void main(void) < float temper; lcd_init(16); w1_init(); ds18b20_init(0,-20,50,DS18B20_12BIT_RES); while(1) < temper=ds18b20_temperature(0); sprintf(lcd_buf,"t=%.1fxdfC",temper); lcd_clear(); lcd_puts(lcd_buf); delay_ms(1500); >; >

    Теперь обо всем по порядку:

    #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=2 #endasm

    Данный код означает, что датчик подключен к порту В, PB2 ножке

    Используется протокол 1wire, тип датчика ds18b20

    float temper; w1_init(); ds18b20_init(0,-20,50,DS18B20_12BIT_RES);

    Переменная temper (с плавающей точкой) используется для хранения температуры,
    w1_init(); — ищем датчик,
    ds18b20_init(0,-20,50,DS18B20_12BIT_RES); — настройка датчика: 0-номер датчика, -20 -нижний предел измерения, 50 — верхний предел измерения,
    DS18B20_12BIT_RES используется 12 битный режим(с шагом 0,0625°С). В принципе настройку можно не производить, по умолчанию выставлен 12 битный режим. Показано лишь для того, чтобы вы могли самостоятельно изменить режим измерения, если это понадобится.

    temper=ds18b20_temperature(0); sprintf(lcd_buf,»t=%.1fxdfC»,temper); lcd_clear(); lcd_puts(lcd_buf); delay_ms(1500);

    temper=ds18b20_temperature(0); — читаем значение температуры с датчика
    sprintf(lcd_buf,»t=%.1fxdfC»,temper); преобразовываем к понятному для lcd виду %.1f — вывод числа с плавающей точкой 1 знак после запятой, не забываем в свойствах проекта указать (s)printf features float.
    xdf — вывод на экран значка градуса.

    В результате должно получиться нечто похожее

    Отрицательной температуры поблизости не было :D, поэтому попробовал остудить бутылочкой соуса из холодильника, результат что то не сильно впечатлил.

    Зато от нагрева рукой, температура довольно быстро повысилась.

    Проект доступен тут
    Проект для DS18s20
    Проект для двух датчиков
    Проект для DS18b20 на семисегментниках
    Проект Алексея(Alyes)для Atmega16 и шести сегментов + бонус видео устройства

    244 комментария: Урок 12. Измерение температуры при помощи AVR. Простой термометр на AVR.

    Здравствуйте! На семисигментниках собрал термометр с отображением до десятых долей градуса.В протеусе все ОК.В железе при вкл на индикаторе отображается ересь-как будто два итображения чисел вместе накладываются Железо вроде ОК ( с программой на два знака(целые значения температуры) все норм работает!Программу тоже пошагово проверял все нормально. Может кто подскажет в чем дело-писал пропеты и посложнее и все получалось , а тут споткнулся…

    это нормально 🙂 попробуйте реже опрашивать для начала.

    Здравствуйте Уважаемый Admin! Подскажите пожалуйста как в Codevisionavr 2.05 сделать проект с двумя и более температурными датчиками DS18B20? В конце Вашей статьи есть Проект Алексея(Alyes), выполненный в CVAVR 2.05, но заставить работать его с двумя датчиками никак не могу добиться. Подскажите пожалуйста куда какие стоки нужно добавить?
    Спасибо.

    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    // 1 Wire Bus interface functions
    #include

    // DS1820 Temperature Sensor functions
    #include

    void main(void)
    <
    // Declare your local variables here
    float temper;
    unsigned int x;

    // 1 Wire Bus initialization
    // 1 Wire Data port: PORTD
    // 1 Wire Data bit: 7
    // Note: 1 Wire port settings must be specified in the
    // Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
    w1_init();
    ds18b20_init(0,-20,50,DS18B20_12BIT_RES);

    // Global enable interrupts
    #asm(«sei»)

    while (1)
    <
    temper=ds18b20_temperature(0);
    if (temper>1000)
    <
    temper=4096.0-temper;
    minus=1;
    >

    x=temper*10;
    nom4=x%10;//разборка целого числа на отдельный сегмент…
    x=x/10;
    nom3=x%10;
    nom2=x/10;
    nom5=10;
    nom6=11;
    if(minus==0)
    <
    nom1=12;
    >
    else
    <
    nom1=13;
    >
    >
    >

    посмотрите про статическую и динамическую индикацию, тут легкого пути нет.

    Цифровой термометр с термопарой

    В статье рассматривается простая схема цифрового термометра с модулем индикации, реализованном на микросхеме ТМ1637 и модулем преобразователя сигнала термопары в цифровой сигнал с использованием микросхемы МАХ6675. Внешний вид модулей на фото ниже.

    Читать еще:  Мобильные телефоны samsung. Смартфоны самсунг - каталог и цены

    Схема цифрового амперметра представлена на рисунке 1.

    Основой схемы является микроконтроллер PIC16F628A с залитой в него программой. Благодаря китайским партнерам схема, как можно заметить получилась весьма и весьма простой. Каждую секунду микроконтроллер считывает цифровой код реальной температуры по последовательному протоколу SPI. Программа считывания данных с микросхемы МАХ6675 микроконтроллером PIC на Ассемблере представлена в статье «Программа взаимодействия MAX6675 с микроконтроллером PIC».

    MAX6675 Datasheet PDF

    Далее из шестнадцати принятых бит программа выделяет нужные десять, преобразует числовое значение температуры в двоичном коде в двоично-десятичный код. Затем через табличные данные идет преобразование в семисегментный код, который передается в модуль индикации ТМ1637. Программа взаимодействия PIC контроллера с микросхемой ТМ1637 была рассмотрена в ранее опубликованной статье «Модуль TM1637 с PIC контроллером».

    TM1637 Datasheet PDF

    Вся схема питается стабилизированным микросхемой DA1 напряжением пять вольт. Трехвыводные однокристальные стабилизаторы с фиксированным напряжением пять бывают с разным максимальным входным напряжением, так что обратите на это внимание. Ток потребления термометра находится в пределах 15 миллиампер. Это вместе с током потребления индицирующего светодиода в модуле индикации ТМ1637. Этот светодиод находится на обратной стороне платы относительно индикатора. Для экономии энергии его можно исключить из схемы. При таком токе нагрузки в качестве микросхемы стабилизатора напряжения подойдет практически трехвыводной стабилизатор. Возможно, например, применение микросхемы LM78L05 в корпусе ТО-92. Ток нагрузки микросхемы – 100мА, а входное напряжение – 35 вольт.

    LM78L05 Datasheet PDF

    В случае применения радиоэлементов в корпусах SMD в качестве DA1можно применить стабилизатор из серии AMS1117. Максимальное входное напряжение этого стабилизатора ограничено величиной восемнадцать вольт.

    AMS1117 Datasheet PDF

    Все микросхемы устройства работают в импульсном режиме и паразитные пульсации питающего напряжения неизбежны, поэтому в целях улучшения фильтрации питающего напряжения и стабильности работы схемы, а также ее безотказной работы, в качестве конденсатора С1 стоит применить танталовый конденсатор. А конденсатор С2 при монтаже разместить непосредственно между выводами питания микроконтроллера.

    Не думаю, что данная термопара рассчитана на измерение температуры +1023˚С (b’11 1111 1111’), хотя исходя из данных в документации, микросхема МАХ6675 имеет десяти разрядный АЦП. Я разогревал термопару газовой горелкой до +600˚С. Температура кипящей воды, измеренная данным термометром, составляла +102˚С. Я, думаю, для выпечки пирогов такой точности температуры вполне достаточно.

    Успехов и удачи. К.В.Ю.

    Термопара. Термометр сделаем сами

    • Цена: $1.22 термопара + $11 остальное
    • Перейти в магазин

    1.0мм, похоже М6 x 1,0 мм. Под ключ на 10

    Это все хорошо, дальше что делать? Нужно преобразовать сигнал термопары (термоэдс) в цифровой или аналоговый сигнал, чтоб читать ардуиной. В этом нам поможет MAX6675. Это преобразователь сигнала термопары K-типа в цифру, имеет SPI интерфейс, что нас устраивает.
    А вот и наш герой — MAX6675ISA ($4.20)

    Стоил $4.10, но того лота больше нет (продавец тот же).

    Подключать будем к ардуине, можно взять простенькую Arduino Pro Mini ($5.25, можно найти дешевле, здесь Вы видите именно эту)

    Данные будем писать на карту памяти (и заодно слать в порт) с помощью SD Card Module $1.25.

    Интерфейс, тоже, кстати, SPI. Только не все карточки его поддерживают. Не завелось — попробуйте сначала другую.
    В теории все линии SPI устройств (MOSI или SI, MISO или SO, SCLK или SCK), кроме CS (CS или SS — выбор микросхемы), можно подключить к одним контактам ардуины, но тогда MAX6675 работает неадекватно. Поэтому я все разнес по разным пинам.
    В основу скетча лег пример по работе с картами памяти с хабра.
    Библиотека и скетч для MAX6675 тут. Схема подключения MAX6675:

    Плата делалась ЛУТом на гетинаксе ($4.39 10 шт., тратим одну):


    Устройство на раз, поэтому сделано не на текстолите и с возможностью легкого извлечения всех компонентов. Качество гетинакса хорошее, тонер держится мертво, обрабатывается легко.
    Плата разводилась в Sprint-Layout. Скачать .lay6.


    В сборе:

    В работе:

    На термопаре относительно много металла, поэтому она «заторможена». Кроме того пришлось значительно погрузить ее в лед, иначе до 0 не остывала

    Подключение к ПК необязательно, достаточно подать 5V питания на ардуину. Устройство пишет данные на карточку в CSV и шлет в порт, поэтому можно мониторить состояние в реальном времени.

    С 23C до 0C термопара остыла за 50 секунд. Обратно нагрелась за 6 минут.
    Собственно, вот эти строки:
    1;22.75
    48;0.00
    410;22.25
    Из них понятен формат записи — время в секундах от старта; температура.
    Сам файл TEMP.CSV
    Да, температура отображается с шагом 0,25. Меня это устраивает.

    Если добавить модуль реального времени, устройство станет на порядок круче. Всего $1.79:

    Модуль не сильно точный, но для наших целей хватит. Еще можно сделать автономное питание на каком-нибудь UP конвертере. Вот, $1.65:

    Еще стоит убрать перезапись файла… Много чего можно сделать. Я просто оставлю все исходники здесь

    /*
    Схема подключения
    * SD:
    ** MOSI — pin 11
    ** MISO — pin 12
    ** CLK — pin 13
    ** CS — pin 10

    * MAX6675:
    ** MISO — pin 8;
    ** SCK — pin 7;
    ** CS — pin 9;

    Основано на коде David A. Mellis, Tom Igoe, Gleb Devyatkin
    habrahabr.ru/post/115176/
    */

    int units = 1; // Units to readout temp (0 = F, 1 = C)
    float error = 0.0; // Temperature compensation error
    float temp_out = 0.0; // Temperature output varible

    void setup()
    <
    Serial.begin(9600);
    Serial.print(«Initializing SD card. »);

    pinMode(10, OUTPUT);
    if (!SD.begin(10)) <
    Serial.println(«initialization failed!»);
    return;
    >
    Serial.println(«initialization done.»);

    // Проверяем, существует ли на карте файл data.csv, если существует, то удаляем его.
    if(SD.exists(«temp.csv»)) <
    SD.remove(«temp.csv»);
    >
    // открываем файл. заметьте, что только один файл может быть открыт за раз,
    // поэтому вы должны закрыть этот, чтобы открыть другой.
    myFile = SD.open(«temp.csv», FILE_WRITE); // открыть на запись

    // если файл нормально открылся, запишем в него:
    if (myFile) <
    Serial.print(«Writing to temp.csv. »);
    // закрываем файл:
    myFile.close();
    Serial.println(«done.»);
    >
    else <
    // а если он не открылся, то печатаем сообщение об ошибке:
    Serial.println(«error opening temp.csv»);
    >

    temp_out = temp0.read_temp(5); // Read the temp 5 times and return the average value to the var

    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector