" title="Написать письмо">Написать письмо
Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год.
Политика сайта: написать статью, а потом обновлять ее много лет.
Открыта карта ВТБ для материальной поддержки сайта: 4893470220568296.

Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
Ваш IP: 54.196.26.1
Вы подарите мне деньги на развитие этого сайта? Номер карты указан зеленым цветом.
 

Статистика

Пользователи : 1
Статьи : 1060
Просмотры материалов : 3658956
 
Первое знакомство с микроконтроллерами (16.07.2018). Печать E-mail
2018 - Июль
16.07.2018 21:56
Save & Share
Началось все с покупки набора "arduino": микроконтроллер, его программатор, все выводы - на одной плате; плюс куча обвеса в виде светодиодов, датчиков температуры, движения и т.д. Заинтересовало тем, что стоил он сущие копейки (400руб); и взят был чисто поиграться. Но игра, по ходу дела, превращается в серьезное дело. Фантазия при использовании МК - главная характеристика для увеличения сфер его применения.

В ВУЗе, к слову, часто преподают предметы вроде "сигнальные микропроцессоры"; но преподаватели допускают одну и ту же ошибку: прежде чем чему-то обучать, - нужно объяснить дословно, зачем это нужно. Вместо этого же идет демонстрация какой-то микросхемы, которая зажигает какие-то светодиоды; и делая лабораторную работу, тихо офигеваешь от того, какой фигней занимаешься, вместо того, чтобы (подставить нужное).

Микроконтроллер (МК), эта маленькая микросхема с 32 выводами, - полноценный миниатюрный компьютер, способный взаимодействовать с окружающей средой (разнообразные датчики, индикаторы, физические свойства электронных компонентов и т.д.). Он имеет свой процессор, ОЗУ, ПЗУ. В обычном ПК в роли ОС выступает Windows, Linux - с закрытым или сложным исходным кодом; в МК - ОС без интерфейса, стартующая при подаче питания. И эту ОС, фактически, создает сам пользователь: посредством программирования в среде Arduino, с минимальными требованиями к знанию языка. А раз сам создаешь оболочку для МК - можно заставить МК делать именно то, что нужно лично пользователю.

Примеры применения уже реализовали коллеги на работе (копеечные решения серьезных вопросов, до 1-2 тысяч рублей):
- климат-контроль в автомобиле: комплексная система управления вентиляторами в разных частях автомобиля. Имеются предпосылки к манипуляциям с мощностью кондиционера с помощью чего-то похожего;
- система датчиков проникновения в окна на даче: срабатывание звукового оповещения без работы от батареек;
- еще какая-то система управления в автомобиле, связанная с охлаждением двигателя;
- начало системы "умный дом": отключение освещения при отсутствии движения в доме, для забывчивых. Если покупные системы "умный дом" глючат на тему датчиков движения (например, когда душ в ванной сам выключается - и, крутя задом, пытаешься заставить его заработать) - то здесь все глюки исправляешь ты сам. А можешь вместо 1 датчика поставить и 3, с отслеживанием их работы; как только 1 из 3 сломался - издавать писк. В итоге не требуется вызов мастеров, замена оборудования и прочие прелести, связанные именно с неспособностью изменения этого оборудования;
- сам сейчас реализовал модернизированную микросхему 4060: двоичный генератор-счетчик-делитель аж с 20 выходами Q0...Q19; и это только начало.

С точки зрения электроники, МК диктует следующие преимущества:
- в МК имеются аналовые и цифровые входы/выходы. Один и тот же канал может переключаться: быть как входной или как выходной. МК ATmega328P имеет в своем составе 14 цифровых и 6 аналоговых каналов, ATmega8A-AU имеет суммарно 23 входа/выхода - какой нужно МК, такой и подобрать можно. С учетом того, что аналоговые каналы можно превращать в цифровые, - можно создавать свои микросхемы любой сложности. Особенно, если покупные микросхемы стоят дороже 75-120руб (об этом будет ниже). Часть цифровых каналов можно превращать в аналоговые выходы, они отмечены знаком "~";
- платы-переходники с корпуса TQFP32 на DIP32W существуют, и у них всегда контакты расположены в определенных позициях. Множество МК сделано именно в таком корпусе. Можно создать шаблон печатной платы для МК и использовать его в широком спектре задач - экономия времени при изготовлении печатных плат;
- можно размещать МК в панельки DIP32W как разъемное соединение, как было сделано с микросхемой 4067, - что позволяет заменять МК без пайки;
- наличие программатора в таких платах-переходниках позволяет изменять прошивку МК без разбора уже готового прибора - достаточно вывести разъем USB вне корпуса;
- существует протокол SPI, позволяющий осуществлять внутрисистемное программирование МК. Пока штука, сложная в понимании; но, по сути, - это возможность создания внешнего программатора и управления десятками МК через 1 разъем USB.

С точки зрения программирования, МК диктует следующие преимущества:
- личный контроль поведения МК;
- простой язык программирования (кастрированный C++) доступен лицам с начальными навыками программирования;
- программно исправить ошибку проще, чем аппаратно. Ошибся в разводке платы, при ее изготовлении, и перепутал каналы местами? Перепутай их намеренно в программе, чтобы не тратиться на изготовление печатных плат.

Рынок МК представлен некоторым разнообразием МК, но стоит сделать акцент на определенных моделях и определенных моментах:
- набор "Arduino UNO" поставляется с большой печатной платой 50x65мм, на которой размещены все компоненты. Размер здесь - удобство при макетировании, при первом знакомстве. Вдобавок поставляется макетная плата, которая может использоваться и вне операций с МК (например, для удобной настройки потенциометров: зажимной механизм фиксации ножек). Набор покупался примерно год назад за 400руб - и успешно пылился на полке, т.к. не до него было;
- когда потребуются же боевые задачи - нужен размер печатной платы поменьше. Для этого существует плата "Nano v3", стоящая на алиэкспрессе 125руб с МК ATmega328 (в чиподипе 440руб, естественно). Сам МК, если покупать отдельно, стоит 75руб/10шт. То есть, за изготовленную плату, обвес, разводку, переходник на DIP32W платится 50руб. Это - вопрос выбора: устанавливать в печатную плату МК с программатором (выгода пользователя) или создать свой программатор, шить в них МК, а устанавливать в оборудование - с помощью проходника TQFP32->DIP32W (выгода разработчика, оптимизация расходов, пространства и т.д.);
- существуют МК уже в корпусе DIP28 (узком, например, ATmega8A-PU), большие по габаритам, стоят дороже на 10-20% своих собратьев в SMD-корпусах - но имеет возможность извлечения без пайки. Важно при работе с МК в корпусах SMD: TQFP32 это не PLCC32 из-за незаметного, но все же разного расположения контактов. Не существует проходников TQFP32, что не позволяет избавиться от переходника на DIP32W (это просто феерическая недоработка в сфере МК с данными корпусами!). А вот проходник PLCC32 - стоит всего 7руб, являясь при этом крайне удобной штукой при замене/перепрограммировании МК без пайки;
- для МК существуют платы расширения. К примеру: есть плата, в которую вставляется Nano v.3, - и получается МК с удобными клеммниками на выходе. Есть кросс-плата для параллельной разводки каналов. Плат расширения много - и стоит именно отдельно на эту тему читать в интернете и смотреть, что продается;
- в продаже есть Arduino Ethernet - подключение через сетевую карту без использования дополнительной платы расширения. Есть также Arduino Mega, Arduino Due (процессор 84МГц, 96КБ SRAM, 512КБ Flash, контроллер DMA - 13$), Arduino Leonardo. Arduino Mini - не имеет встроенного интерфейса USB, что уменьшает ее цену; ее перепрограммирование делается с помощью платы расширения Arduino Programmer;
- пока удалось получить точность измерения напряжения в аналоговом порте до 2 знаков после запятой. Шаг измерения совпадает с шагом измерения плат аналогового ввода - 0.0048828125В.

Техника безопасности и особенности среды программирования:
- светодиоды на печатной плате МК очень яркие и слепят глаза. Я накрываю их куском резины, наблюдая за индикацией за отражениями светодиодов от поверхности печатной платы;
- если исходный код содержит только переменные, или отдельная функция описана неправильно, или функция не имеет прототипа - вываливается ошибка 5 (1) при компиляции, и нужно самому думать, в чем дело;
- в справке описываются сами функции, но подключаемые файлы .H не указаны. В итоге приходится смотреть в интернете, где лежит прототип той или иной функции;
- среда не дает сохранять скетчи с русскими буквами и начинающиеся с цифр. Сохранение по полностью англоязычному пути может избавить от части проблем ошибки 5 (1). Скорее всего, нужно просто обновить среду с версии 1.8.1 на более новую;
- лучше всего делать быстрый старт по книге MaxKit.ru "Быстрый старт. Первые шаги по освоению Arduino". Далее - перейти на книгу Саймона Монка "Программируем Arduino. Профессиональная работа со скетчами";
- при первом старте нужно вручную указать порт МК. У меня это COM4, несмотря на подключение по USB;
- напряжение цифровых каналов - 5В;
- именно Arduino Due имеет полноценные аналоговые выходы. В UNO это - выходы с широтно-импульсной модуляцией, меандр частотой порядка 980Гц;
- несмотря на ток 40мА по даташиту, выходное напряжение что с аналоговых, что с цифровых выходов платы Arduino UNO - не стабилизированные 5В. В случае с подключением USB на выходе на холостом ходу было 4.47В, причина - длинный провод от USB ПК, подключенный разветвитель USB без внешнего источника питания. В случае с подключением батареи 12В - 4.97В. Теперь с нагрузкой на 40мА: с USB напряжение упало до 3.7В, с батареей 12В - до 4В. Для цифровых каналов это несущественно (логическим нулем считается напряжение 0.36...0.5В). А для аналогового выхода это epic fail;
- только Due, за счет истинных аналоговых выходов, может генерировать, например, синусоидальный сигнал.

(добавлено 17.07.2018) Вот еще идея возникла. Каждое утро достает солнце, которое светит на уличный термометр, - и он неверные данные показывает. Можно защитить термометр кожухом, но сам кожух раскалится и все равно повлияет на результат. Решением было бы разовое измерение температуры в 5 утра и ее фиксация на дисплее в течение 3 часов. В провод датчика при этом можно сделать врезку из проводков малой толщины, с целью беспрепятственного выхода проводов через балконную или оконную дверь. А сам датчик защитить полиэтиленом или тонким слоем водостойкого герметика.

Из минусов среды - невозможно ставить остановы. И int 2 байта!

Библиотека Necroleptic, призванная уменьшить энергопотребление микроконтроллера, работает неправильно. Delay(1000) не равно Necroleptic.delay(1000).

(добавлено 20.07.2018) Если код сложен в отладке с помощью вывода в монитор порта - можно использовать другие C-подобные языки, где компилятор полноценен; например, Borland C++ Builder.

Библиотека Prescaler, призванная уменьшить частоту процессора в 256 раз, - условно-рабочая. Возможно, она и понижает частоту процессора в 256 раз - но в этом случае выходит из строя delay, а trueDelay в составе библиотеки не обеспечивает замену данной функции. Время, деленное на 256 в delay, лишь примерно похоже на реальное время обычного delay.

(добавлено 06.08.2018) Книга "Петин В.А. Проекты с использованием контроллера Arduino /Санкт-Петербург: БВХ-Петербург, 2014г" - отражает технические характеристики разных платформ Arduino, наборы плат расширений; что позволяет расширить кругозор.
Обновлено ( 06.08.2018 20:56 )
 
 

Последние новости

©2008-2018. All Rights Reserved. Разработчик - " title="Сергей Белов">Сергей Белов. Материалы сайта предоставляются по принципу "как есть". Автор не несет никакой ответственности и не гарантирует отсутствие неправильных сведений и ошибок. Вся ответственность за использование материалов лежит полностью на читателях. Размещение материалов данного сайта на иных сайтах запрещено без указания активной ссылки на данный сайт-первоисточник (ГК РФ: ст.1259 п.1 + ст.1274 п.1-3).