Как полюбить mbed, а потом дважды облажаться
Эта статья заканчивает цикл публикаций о разработке измерительного устройства в онлайн IDE mbed от компании ARM.
Собственно, рассказ о разработке софта для микроконтроллеров и об использованных аппаратных блоках уже завершен, целых пять статей получилось. Но я люблю цельные истории, поэтому расскажу и о том, как при попытке заключить разработанную систему в корпус всё было испорчено. Дважды.
Предыдущие статьи:
Ну ладно, не то чтобы всё совсем испорчено, но ошибки случились довольно забавные.
Мы не разрабатываем электронику, мы поставляем электронные компоненты. Устройство было задумано и реализовано исключительно для демонстрации работы двух аппаратных блоков — красивого емкостного TFT-дисплея от Riverdi и датчика относительной влажности серии HYT от IST-AG.
То есть в планах никогда не было ни выпускать что-то похожее серийно, ни даже делать второй такой же девайс. Поэтому, а ещё потому что устройство должно легко разбираться на части, в корпус мы заключаем не специально сделанную компактную печатную плату, а просто несколько отладок от производителя — с неиспользуемыми аппаратными блоками, соединениями из макетных проводов и остальным безобразием.
После консультаций с коллегами, которые занимаются поставками и доработкой корпусов для РЭА, было решено взять заднюю часть и ножку от стандартного корпуса OKW, а переднюю стенку напечатать своими силами. Кроме неё на 3D-принтере печатались «внутренние» детали — небольшая камера для установки датчика HY-271 и детали для крепления плат внутри корпуса.
При создании модели для печати использовались программы SolidWorks и Polygon. Принтер использует самую популярную на сегодня технологию — послойное наплавление (Fusing Deposition Modeling, FDM).
Печать — совсем не мой профиль, поэтому скажу только общие слова.
Суть технологии послойного наплавления отражена в её названии. После создания трехмерной модели детали и загрузки этой модели на принтер начинается послойное нанесение горячего пластика, который застывает сразу после нанесения очередного слоя. В отличии от других технологий 3D-печати, в FDM подвижным элементом является экструдер — сопло, на котором пластик плавится и выдавливается на модель.
Недостатками этой технологии печати являются термоусадка и низкое разрешение печати. Термоусадка может повлиять (и влияет) на размеры конечного изделия, а низкое разрешение печати влечет слоистость поверхности, которую заметно невооруженным глазом. Однако эти недостатки с лихвой компенсируется низкой ценой оборудования и материалов для послойной печати, именно поэтому в последние годы мы и слышим о 3D-печати из каждого утюга.
Послойная печать отлично подходит для создания штучных изделий и прототипов для серийного производства. В моём случае качества печати было достаточно для деталей, которые помещаются внутрь корпуса, а вот поверхность передней крышки корпуса пришлось дорабатывать — шлифовать, полировать, допиливатьи даже немножно греть паяльным феном. За пару часов удалось сделать слои пластика на поверхности крышки почти незаметными.
Перейдем к сборке. Напомню, что в проекте используется датчик HYT-271 — модель датчика относительной влажности, выполненная без защитного металлического корпуса. Датчик решено было поместить в небольшую камеру без передней стенки, а эту камеру крепить к передней крышке корпуса, где для контакта датчика с окружающей средой предусмотрены довольно большие отверстия.
Отладочная плата с микроконтроллером EFM32 на борту и плата-переходник для подключения дисплея крепятся на напечатанной пластине. На этой пластине также предусмотрены отверстия для крепления к передней крышке корпуса.
На переднюю крышку устанавливается TFT-дисплей. Дисплей RVT43ULFNWC0x предназначен для монтажа в отверстие — он оснащен декоративной рамкой, которая с обратной стороны имеет клейкую полоску и закрывает края отверстия.
Выглядит всё вполне прилично, однако точность собранного устройства оказалась значительно ниже чем точность того же девайса в разобранном состоянии.
Конечно, с самого начала было понятно, что на работу датчика температуры и относительной влажности, который находится внутри корпуса (хоть и в отдельной камере), будет влиять окружающая его электроника. Однако вносимая погрешность должна была быть небольшой, а мы вообще-то ничего и не измеряем. Устройство просто демонстрирует работу компонентов, чтобы было что повертеть в руках пока рассказываешь о дисплее или датчике. Короче говоря, с самого начала решено было не заморачиваться и не выносить датчик на расстояние от других компонентов.
Но ошибка даже не в этом.
Камера, в которой находится датчик, крепится к передней стенке корпуса. Там же, на передней стенке, примерно на сантиметр выше, располагается сенсорный TFT-дисплей. На задней стороне дисплея находятся система управления дисплеем — графический контроллер FT801 и схема управления матрицей дисплея.
После нескольких часов работы TFT-модуль нагревается неравномерно, причем больше всего тепла идет от схемы управления матрицей. Уже угадали где оказалась камера с датчиком?
Когда устройство было вновь разобрано, ошибка в измерении температуры, конечно, уменьшилась. Однако датчик всё равно привирал — точность измерений не соответствовала точности, которую датчик показывал до установки в корпус.
Загадка разрешилась просто. Датчик относительной влажности имеет чувствительный элемент, емкость которого изменяется пропорционально относительной влажности среды. Чувствительный элемент построен на базе чувствительного к влажности полимера, а этот полимер подвержен воздействию различных газов. Это беда всех емкостных датчиков влажности. Влияние некоторых газов на датчики серии HYT лечится прогреванием (около 140 °С в течении 2-3 минут), влияние других газов необратимо.
В любом случае, моей ошибкой было то что датчик был установлен в корпус сразу после печати. Глупо вышло — корпус, в конце концов, ещё пах пластмассой! В итоге полимер «надышался» парами пластика и его выходная характеристика благополучно съехала.
Вот такая история. Ошибки учтены и исправлены, но об этом не интересно ни читать, ни писать.
» Видео, демонстрирующее работу устройства можно посмотреть на youtube.
» Исходный код программы для микроконтроллера доступен на developer.mbed.com.
» Ссылки на статьи с описанием всего процесса разработки ПО приведены в начале этой статьи.
В заключении традиционно благодарю читателя за внимание и напоминаю, что вопросы по применению продукции, о которой мы пишем на хабре, можно также задавать на email, указанный в моем профиле.
P.S. Да, корпусами для РЭА мы тоже занимаемся.
Собственно, рассказ о разработке софта для микроконтроллеров и об использованных аппаратных блоках уже завершен, целых пять статей получилось. Но я люблю цельные истории, поэтому расскажу и о том, как при попытке заключить разработанную систему в корпус всё было испорчено. Дважды.
Предыдущие статьи:
- [Часть 1] Обзор использованных программных и аппаратных решений.
- [Часть 2] Начало работы с графическим контроллером FT800. Использование готовых mbed-библиотек для периферийных устройств.
- [Часть 3] Подключение датчика HYT-271. Создание и публикация в mbed собственной библиотеки для периферийных устройств.
- [Часть 4] Разработка приложения: Структура программы, работа с сенсорным экраном.
- [Часть 5] Разработка приложения: Вывод изображений на дисплей, проблемы русификации.
Ну ладно, не то чтобы всё совсем испорчено, но ошибки случились довольно забавные.
1. Как всё задумывалось
Мы не разрабатываем электронику, мы поставляем электронные компоненты. Устройство было задумано и реализовано исключительно для демонстрации работы двух аппаратных блоков — красивого емкостного TFT-дисплея от Riverdi и датчика относительной влажности серии HYT от IST-AG.
То есть в планах никогда не было ни выпускать что-то похожее серийно, ни даже делать второй такой же девайс. Поэтому, а ещё потому что устройство должно легко разбираться на части, в корпус мы заключаем не специально сделанную компактную печатную плату, а просто несколько отладок от производителя — с неиспользуемыми аппаратными блоками, соединениями из макетных проводов и остальным безобразием.
После консультаций с коллегами, которые занимаются поставками и доработкой корпусов для РЭА, было решено взять заднюю часть и ножку от стандартного корпуса OKW, а переднюю стенку напечатать своими силами. Кроме неё на 3D-принтере печатались «внутренние» детали — небольшая камера для установки датчика HY-271 и детали для крепления плат внутри корпуса.
При создании модели для печати использовались программы SolidWorks и Polygon. Принтер использует самую популярную на сегодня технологию — послойное наплавление (Fusing Deposition Modeling, FDM).
Печать — совсем не мой профиль, поэтому скажу только общие слова.
Суть технологии послойного наплавления отражена в её названии. После создания трехмерной модели детали и загрузки этой модели на принтер начинается послойное нанесение горячего пластика, который застывает сразу после нанесения очередного слоя. В отличии от других технологий 3D-печати, в FDM подвижным элементом является экструдер — сопло, на котором пластик плавится и выдавливается на модель.
Недостатками этой технологии печати являются термоусадка и низкое разрешение печати. Термоусадка может повлиять (и влияет) на размеры конечного изделия, а низкое разрешение печати влечет слоистость поверхности, которую заметно невооруженным глазом. Однако эти недостатки с лихвой компенсируется низкой ценой оборудования и материалов для послойной печати, именно поэтому в последние годы мы и слышим о 3D-печати из каждого утюга.
Послойная печать отлично подходит для создания штучных изделий и прототипов для серийного производства. В моём случае качества печати было достаточно для деталей, которые помещаются внутрь корпуса, а вот поверхность передней крышки корпуса пришлось дорабатывать — шлифовать, полировать, допиливать
Перейдем к сборке. Напомню, что в проекте используется датчик HYT-271 — модель датчика относительной влажности, выполненная без защитного металлического корпуса. Датчик решено было поместить в небольшую камеру без передней стенки, а эту камеру крепить к передней крышке корпуса, где для контакта датчика с окружающей средой предусмотрены довольно большие отверстия.
Отладочная плата с микроконтроллером EFM32 на борту и плата-переходник для подключения дисплея крепятся на напечатанной пластине. На этой пластине также предусмотрены отверстия для крепления к передней крышке корпуса.
На переднюю крышку устанавливается TFT-дисплей. Дисплей RVT43ULFNWC0x предназначен для монтажа в отверстие — он оснащен декоративной рамкой, которая с обратной стороны имеет клейкую полоску и закрывает края отверстия.
2. Как всё получилось
Выглядит всё вполне прилично, однако точность собранного устройства оказалась значительно ниже чем точность того же девайса в разобранном состоянии.
Ошибка #1
Конечно, с самого начала было понятно, что на работу датчика температуры и относительной влажности, который находится внутри корпуса (хоть и в отдельной камере), будет влиять окружающая его электроника. Однако вносимая погрешность должна была быть небольшой, а мы вообще-то ничего и не измеряем. Устройство просто демонстрирует работу компонентов, чтобы было что повертеть в руках пока рассказываешь о дисплее или датчике. Короче говоря, с самого начала решено было не заморачиваться и не выносить датчик на расстояние от других компонентов.
Но ошибка даже не в этом.
Камера, в которой находится датчик, крепится к передней стенке корпуса. Там же, на передней стенке, примерно на сантиметр выше, располагается сенсорный TFT-дисплей. На задней стороне дисплея находятся система управления дисплеем — графический контроллер FT801 и схема управления матрицей дисплея.
После нескольких часов работы TFT-модуль нагревается неравномерно, причем больше всего тепла идет от схемы управления матрицей. Уже угадали где оказалась камера с датчиком?
Ошибка #2
Когда устройство было вновь разобрано, ошибка в измерении температуры, конечно, уменьшилась. Однако датчик всё равно привирал — точность измерений не соответствовала точности, которую датчик показывал до установки в корпус.
Загадка разрешилась просто. Датчик относительной влажности имеет чувствительный элемент, емкость которого изменяется пропорционально относительной влажности среды. Чувствительный элемент построен на базе чувствительного к влажности полимера, а этот полимер подвержен воздействию различных газов. Это беда всех емкостных датчиков влажности. Влияние некоторых газов на датчики серии HYT лечится прогреванием (около 140 °С в течении 2-3 минут), влияние других газов необратимо.
В любом случае, моей ошибкой было то что датчик был установлен в корпус сразу после печати. Глупо вышло — корпус, в конце концов, ещё пах пластмассой! В итоге полимер «надышался» парами пластика и его выходная характеристика благополучно съехала.
Вот такая история. Ошибки учтены и исправлены, но об этом не интересно ни читать, ни писать.
» Видео, демонстрирующее работу устройства можно посмотреть на youtube.
» Исходный код программы для микроконтроллера доступен на developer.mbed.com.
» Ссылки на статьи с описанием всего процесса разработки ПО приведены в начале этой статьи.
Заключение
В заключении традиционно благодарю читателя за внимание и напоминаю, что вопросы по применению продукции, о которой мы пишем на хабре, можно также задавать на email, указанный в моем профиле.
P.S. Да, корпусами для РЭА мы тоже занимаемся.