Создать систему на основе efm8 для мониторинга и анализа измерений термопар

Создать систему на основе efm8 для мониторинга и анализа измерений термопар
Создать систему на основе efm8 для мониторинга и анализа измерений термопар
Anonim

Создание системы на основе EFM8 для мониторинга и анализа измерений термопар

Благодаря этому интерфейсу с микроконтроллером и ПК вы можете удобно контролировать температуру и визуализировать, как изменяется температура во времени.

Требуемое оборудование / программное обеспечение

  • Плата оценки SLFK2000A EFM8
  • Интегрированная среда разработки Simplicity Studio
  • Scilab
  • Модуль термопары PmodTC1 (входит в комплект термопары типа K)
  • 5 проводов перемычки для подключения к розетке

Статьи, которые предоставляют вспомогательную информацию

  • Если вы новичок в микроконтроллере EFM8 или в среде разработки Silicon Labs, посмотрите на серии EFM8 от Silicon Laboratories и / или на введение в разработку проекта с помощью микроконтроллера EFM8
  • В этой статье представлен Scilab
  • В двух предыдущих статьях представлена информация о включении USB-связи в проект EFM8: общение с микроконтроллером EFM8 через USB и EFM8. Синтезатор звука: воспроизведение мелодий через USB

Профилирование тостерной печи

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

Однако одной из трудностей с подходом к тостерной печи является контроль температуры. Во-первых, нет гарантии, что настройка температуры в духовке достаточно точна (в конце концов, она предназначена для приготовления пищи, а не для сборки печатных плат). Во-вторых, оптимальная пайка оплавлением - это не только одна температура. Рассмотрим следующее:

Image
Image

Это температурный профиль, рекомендованный для свинцовой паяльной пасты фирмы Kester. Возможно, верно, что специалистам по сборке не нужно подчеркивать жесткую приверженность температурным профилям, но ваши шансы на последовательный успех, безусловно, увеличиваются пропорционально тому, насколько хорошо вы можете реплицировать рекомендованный профиль. Кроме того, запись ваших температурных изменений, даже если вы не пытаетесь точно настроить производительность духовки, может помочь вам определить потенциальные проблемы. Например, ChipQuick рекомендует более высокую максимальную температуру (235 ° C против 225 ° C) для своего свинцового продукта, а свинцовая паста ChipQuick требует значительно более высокой пиковой температуры и модифицированного профиля. Таким образом, если вы заметили, что один тип пасты работает лучше другого, ваши данные о температуре могут помочь вам разобраться в проблеме.

Быстрый просмотр термопар

Термопара состоит из двух разнородных металлов (или полупроводников). Эти металлы образуются в соединение на чувствительном к температуре конце.

Image
Image

Из-за явления, известного как эффект Зеебека, градиент температуры между двумя отдельными частями термопары будет генерировать напряжение, которое можно измерить и использовать для расчета температуры на стыке термопары.

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

PmodTC1

В этом проекте мы будем собирать данные из нашей термопары с помощью модуля PmodTC1, что является не более чем пробойной панелью для MAX31855 «термокомпенсационного термопар-компенсатора с холодным соединением». Как следует из названия, эта ИС взаимодействует непосредственно с термопарой и выводит измеренную температуру как двоичное число.

Image
Image
Image
Image
Image
Image

Если вам интересно, что такое компенсация холодного спая, помните, что термопара фактически указывает разность температур между ее соединением и некоторой другой точкой вдоль проводов термопары. Таким образом, чтобы определить абсолютную температуру на стыке, MAX31855 измеряет собственную температуру кристалла и вносит это в свои расчеты. Этот подход предполагает, что температура кристалла IC очень похожа на температуру «холодного спая» термопары, т. Е. Соединение, где измерено индуцированное напряжение. Это безопасное предположение, если ИС не рассеивает достаточную мощность, чтобы значительно увеличить собственную температуру.

MAX31855 использует стандартную шину SPI (последовательный периферийный интерфейс) для передачи данных о температуре на внешний контроллер. Необходимые интерфейсные сигналы, наряду с мощностью и землей, выводятся на 0, 1-дюймовый однострочный заголовок модуля PmodTC1.

Image
Image

PmodTC1 обеспечивает точность ± 2 ° C с разрешением 0, 25 ° C, а с включенной термопарой типа K он может измерять температуры от -73 ° C до 482 ° C. Подробнее о том, как интерпретировать 14-битные температурные данные, см. В разделе «Прошивка» ниже.

Порт ввода-вывода

Вот диаграмма ввода-вывода портов из конфигурационного оборудования Simplicity Studio:

Image
Image

Единственными необходимыми штырьками являются сигналы SPI: SCK (последовательные часы), MISO (ведущий в подчиненном режиме) и NSS (выбор подчиненного устройства). MOSI (master off slave in) автоматически маршрутизируется на порт, когда мы включаем периферийное устройство SPI в перекладину, но мы не используем его в этом проекте, потому что нам не нужно отправлять какие-либо данные в MAX31855. SCK и NSS настроены как выходы, а MISO - вход. Обратите внимание, что от P0.0 до P0.5 пропускается перекладиной так, что сигналы SPI направляются к соответствующим контактам на заголовке расширения платы EFM8:

Image
Image

Периферийные устройства и прерывания

Конфигурация SPI выглядит следующим образом:

Image
Image
Image
Image

Как указано в конфигурации FIFO, прерывание SPIF (т. Е. Конечное байтовое) отключается и прерывание запроса чтения FIFO включено. Это означает, что процедура обслуживания прерываний SPI не будет вызываться до тех пор, пока в буфере FIFO SPI не будет достаточно байтов. Поле «RX FIFO Threshold» установлено на «больше одного», что означает, что прерывание будет срабатывать, когда у нас есть два полученных байта в FIFO. Вся эта конфигурация предназначена для обеспечения совместимости SPI EFM8 с протоколом интерфейса в техническом паспорте MAX31855 (в этом проекте нам нужны только первые 14 бит этой 32-битной передачи):

Image
Image

Важно: по какой-либо причине (предположительно ошибка) Simplicity Studio не включает настройки SPI FIFO в исходный файл InitDevice.c. Следовательно, необходимо «вручную» настроить два регистра SPI; это выполняется с помощью следующего кода:


//call hardware initialization routine enter_DefaultMode_from_RESET(); SFRPAGE = SPI0_PAGE; //disable the normal (end-of-byte) SPI interrupt SPI0FCN1 &= ~SPI0FCN1_SPIFEN__BMASK; //enable the receive FIFO interrupt SPI0FCN0 |= SPI0FCN0_RFRQE__BMASK; //set FIFO interrupt to fire when we have more than one byte SPI0FCN0 |= SPI0FCN0_RXTH__ONE; //set slave select logic high (it is an active-low signal) SPI0CN0 |= NSS_BIT;

Scilab

Мы будем использовать следующий графический интерфейс пользователя Scilab для сбора и регистрации данных о температуре:

Image
Image

Скачать код

Этот графический интерфейс был разработан с помощью инструментария GUI Builder, который вы можете загрузить через диспетчер модуля ATOMS Scilab:

Image
Image

После того, как вы нажмете «Начать сбор данных о температуре», графический интерфейс неоднократно посылает запросы температуры, пока вы не нажмете «Stop Data Data Collection»; интервал между запросами определяется номером в соответствующем поле ввода (ниже окна графика). Самое последнее измерение температуры отображается в текстовом поле рядом с переключателями Цельсия и Фаренгейта, и в окне графика отображается история температуры.

Прошивка

Общая функциональность такова: EFM8 сидит в ожидании команды «запросить данные о температуре» с ПК. Когда команда получена, EFM8 передает два фиктивных байта SPI, тем самым генерируя 16 тактовых циклов, необходимых для чтения в данных температуры от MAX31855. Когда два байта загружены в FIFO приема SPI, генерируется прерывание. В этот момент EFM8 переупаковывает 14-битные данные температуры в формат, который будет легко обрабатывать в Scilab. На первый взгляд двоичные данные, поступающие с MAX31855, кажутся немного загадочными, поэтому давайте рассмотрим более подробно.

Image
Image

То, что мы имеем здесь, - это 14-битное число с двумя номерами. Верхние 12 бит можно интерпретировать как нормальное подписанное 12-битное число, которое непосредственно соответствует температуре в градусах Цельсия. (Обратите внимание, что в настоящее время скрипт Scilab предназначен для обработки только положительных чисел.) Два младших бита учитывают разрешение 0, 25 ° C MAX31855: двоичный «00» для этих двух бит соответствует нулю в десятичной части температуры; «01» соответствует 0, 25; «10» соответствует 0, 50; и «11» соответствует 0, 75. Кроме того, не забывайте, что шина SPI EFM8 работает в единицах байтов, а не в битах. Два байта, которые мы читаем из SPI FIFO, образуют 16-битное число; верхние 14 бит - это данные температуры, а нижние два бита могут игнорироваться. Следующий код показывает, как мы преобразуем эти данные в трехбайтовое сообщение, которое будет отправлено в Scilab:


SI_INTERRUPT (SPI0_ISR, SPI0_IRQn) { unsigned int RawTempData; //clear interrupt flag SPI0FCN1 &= ~SPI0FCN1_RFRQ__BMASK; RawTempData = SPI0DAT; RawTempData = (RawTempData <> 12); TempDataTx(1) = LOWBYTE(RawTempData >> 4); switch((RawTempData & (BIT3|BIT2)) >> 2) { case 0: TempDataTx(2) = 0; break; case 1: TempDataTx(2) = 25; break; case 2: TempDataTx(2) = 50; break; case 3: TempDataTx(2) = 75; break; } TEMP_DATA_READY = TRUE; }

Скачать код

Image
Image

Мы получаем старший байт, сдвигая 16-битное число 12 бит вправо, и получаем младший байт, сдвигая 4 бита вправо. Затем мы преобразуем оставшиеся два бита в целое число, представляющее десятичную часть, и Scilab просто делит это целое число на 100 и добавляет результат к не десятичной части.

Система в действии

Первый график - это просто измерение температуры воздуха в помещении. Обратите внимание на незначительные вариации.

Image
Image

На этом рисунке показан температурный профиль для печи стандартного размера, установленной до 350 ° F:

Image
Image

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

Даже если вы не готовы к переплавке тостерной печи, эта система может по-прежнему быть полезной для контроля и точной настройки температуры при пайке с помощью пневматического пистолета. Это видео (работает с нормальной скоростью 8x) показывает изменения температуры, записанные в то время, когда термопару, заклиненную между штырьком IC и поверхностью печатной платы, нагревают паяльником горячего воздуха, установленным в середине его температурного диапазона; пушка горячего воздуха удаляется примерно через 130 секунд.

Попробуйте этот проект сами! Получить спецификацию.