Что такое микроконтроллеры ARM и как они работают. Какие бывают виды микроконтроллеров ARM. Как выбрать подходящий микроконтроллер для проекта. Какие особенности имеют микроконтроллеры разных серий. Как разрабатывать устройства на микроконтроллерах ARM.
Микроконтроллеры ARM: универсальные «мозги» современной электроники
Микроконтроллеры ARM стали настоящим прорывом в мире встраиваемых систем и сегодня используются повсеместно — от простейших бытовых приборов до сложных промышленных устройств. Чем же они так хороши и почему завоевали такую популярность?
Ключевые преимущества микроконтроллеров ARM:
- Высокая производительность при низком энергопотреблении
- Широкий выбор моделей с различными характеристиками
- Большой объем встроенной памяти
- Богатый набор периферийных модулей
- Удобство программирования на языке C
- Совместимость кода между разными моделями
Благодаря этим качествам ARM микроконтроллеры могут применяться практически в любых электронных устройствах — от простых до самых сложных. Они позволяют создавать компактные, энергоэффективные и функциональные решения.
Архитектура ARM — основа современных микроконтроллеров
В основе микроконтроллеров ARM лежит одноименная архитектура процессора, разработанная компанией ARM Limited. Ее главные особенности:
- RISC-архитектура с упрощенным набором команд
- 32-битные вычисления
- Эффективное использование конвейера команд
- Оптимизация энергопотребления
Какие преимущества это дает? ARM-процессоры обеспечивают высокую производительность при низком энергопотреблении. Они отлично подходят для встраиваемых систем с батарейным питанием.
Семейства ядер ARM Cortex-M
Для микроконтроллеров используются ядра серии Cortex-M:
- Cortex-M0/M0+ — сверхмалое энергопотребление, простые задачи
- Cortex-M3 — оптимальный баланс производительности и энергоэффективности
- Cortex-M4 — с блоком обработки чисел с плавающей точкой
- Cortex-M7 — высокопроизводительные вычисления
Выбор конкретного ядра зависит от требований к производительности и энергопотреблению в конкретном устройстве.
Периферия микроконтроллеров ARM — расширяем возможности
Помимо вычислительного ядра, микроконтроллеры ARM содержат богатый набор встроенных периферийных модулей. Рассмотрим основные из них:
Порты ввода-вывода (GPIO)
GPIO (General Purpose Input/Output) — это универсальные цифровые входы/выходы. Они позволяют подключать к микроконтроллеру различные устройства — кнопки, светодиоды, дисплеи и т.д.
Ключевые особенности GPIO:
- Программное конфигурирование на вход или выход
- Высокое входное сопротивление в режиме входа
- Подтяжка к питанию или земле для устранения «плавающего» состояния
- Различные режимы работы выхода (push-pull, open-drain и др.)
Аналого-цифровой преобразователь (АЦП)
АЦП позволяет измерять аналоговые сигналы, преобразуя их в цифровой вид. Это дает возможность подключать аналоговые датчики, обрабатывать сигналы и т.д.
Характеристики АЦП в ARM микроконтроллерах:
- Разрядность 10-12 бит (в некоторых моделях до 16 бит)
- Несколько каналов для измерения разных сигналов
- Высокая скорость преобразования (до миллионов выборок в секунду)
При работе с АЦП важно учитывать факторы, влияющие на точность измерений:
- Стабильность опорного напряжения
- Помехи по цепям питания
- Качество разводки печатной платы
Таймеры и ШИМ
Таймеры — это счетчики, которые могут отсчитывать интервалы времени, генерировать прерывания, измерять длительность импульсов. На их основе реализуется широтно-импульсная модуляция (ШИМ) для управления двигателями, регулировки яркости и т.д.
Возможности таймеров в ARM микроконтроллерах:
- 16 и 32-битные счетчики
- Режимы захвата и сравнения
- Многоканальный ШИМ с высоким разрешением
- Синхронизация нескольких таймеров
Энергосберегающие режимы ARM микроконтроллеров
Важнейшее преимущество ARM микроконтроллеров — наличие гибких режимов энергосбережения. Они позволяют существенно продлить время работы от батарей.
Основные режимы пониженного энергопотребления:
- Sleep — остановка ядра, периферия продолжает работать
- Stop — остановка тактирования, сохранение содержимого памяти
- Standby — отключение питания большей части схемы
Как правильно использовать режимы энергосбережения?
- Переводить микроконтроллер в сон при отсутствии задач
- Настроить пробуждение по прерываниям от датчиков, таймеров и т.д.
- Отключать неиспользуемую периферию
- Снижать тактовую частоту при низкой нагрузке
Грамотное применение энергосберегающих режимов позволяет в разы увеличить время автономной работы устройства.
Программирование ARM микроконтроллеров: от простого к сложному
Разработка программ для ARM микроконтроллеров обычно ведется на языке C. Это обеспечивает хороший баланс между удобством программирования и эффективностью кода.
Основные этапы разработки:
- Написание кода на C
- Компиляция в машинный код
- Отладка с помощью внутрисхемного отладчика
- Программирование микроконтроллера через SWD или JTAG
Для упрощения разработки используются библиотеки периферии от производителей микроконтроллеров. Они предоставляют готовые функции для работы со встроенными модулями.
Популярные среды разработки для ARM:
- Keil MDK
- IAR Embedded Workbench
- STM32CubeIDE
- Eclipse + GCC
Для начинающих удобно использовать платформу Arduino — она позволяет быстро начать разработку даже без глубоких знаний микроконтроллеров.
Выбор ARM микроконтроллера для проекта: на что обратить внимание
При выборе конкретной модели ARM микроконтроллера стоит учитывать следующие факторы:
- Требуемая производительность (тактовая частота, тип ядра)
- Объем Flash и RAM памяти
- Набор периферийных модулей
- Количество выводов и тип корпуса
- Диапазон напряжения питания
- Энергопотребление
- Цена и доступность
Для большинства проектов хорошим выбором будут микроконтроллеры среднего класса на базе Cortex-M3 или M4. Они обеспечивают оптимальный баланс возможностей и стоимости.
При выборе стоит обратить внимание на популярные серии:
- STM32 от STMicroelectronics
- SAM от Microchip
- Kinetis от NXP
- EFM32 от Silicon Labs
Эти производители предлагают широкий выбор моделей и хорошую программную поддержку.
Разработка устройств на ARM микроконтроллерах: практические советы
При проектировании устройств на ARM микроконтроллерах важно учитывать ряд практических моментов:
Защита портов ввода-вывода
Выводы микроконтроллера чувствительны к статическому электричеству и перенапряжениям. Для их защиты рекомендуется использовать:
- Защитные диоды или супрессоры на входах
- Токоограничивающие резисторы
- Фильтрующие конденсаторы
Правильное питание аналоговой части
Для обеспечения точной работы АЦП необходимо:
- Использовать отдельное «чистое» питание для аналоговой части
- Применять LC-фильтры для подавления помех
- Правильно выполнить разводку земли на плате
Отладка и программирование
Для удобной отладки стоит предусмотреть:
- Выводы для подключения отладчика (SWD или JTAG)
- Светодиоды для индикации состояния
- Тестовые точки для подключения осциллографа
Соблюдение этих рекомендаций поможет создать надежное и работоспособное устройство на ARM микроконтроллере.
Задумывая технологический стартап, вы совсем не обязаны быть асом в электронике, гораздо больше шансов на хорошую идею имеет узкий специалист со знанием основ маркетинга, но, даже заказывая кому-то разработку, ориентироваться в возможностях современной элементной базы и представлять цену решения необходимо обязательно. Иначе можно потребовать невозможного, либо получить устройство с завышенной себестоимостью на устаревшей элементной базе.
Под катом попытка кратко и просто рассказать о возможностях современных микроконтроллеров людям от них далёким. Для тех, у кого есть идея нового электронного устройства, но отсутствует представление о том, что такое микроконтроллер. Те, кто хочет сделать первый шаг от занимательных экспериментов с платформой ардуино к проектированию собственных устройств, также могут найти в ней простые, но полезные советы. Я старался, не останавливаясь на технических подробностях, изложить суть и дать несколько простейших, но полезных советов по схемотехнике, чтобы предостеречь от элементарных ошибок начинающих.
Краткое содержание статьи:
Как микроконтроллеры завоевали мир
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Конкуренция с младшими братьями
Об укладке асфальта, пользе сна и его разновидностях
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Периферия простейшего ARM микроконтроллера за пол бакса
Самый дешёвый способ получить дополнительные функции
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
Cortex-M7 — когда хочется большего…
Защита кода, возможность его обновления и многообразие помогли микроконтроллерам завоевать мир
Любой умный прибор требует управления. В большинстве случаев сегодня этим занимаются микроконтроллеры — чипы, которые совмещают в себе микропроцессорное ядро, память и периферийные модули, отвечающие за связь с остальными компонентами устройства и внешним миром.
Микроконтроллеры — мастера на все руки. Один микроконтроллер способен заменить десятки специализированных микросхем, которые были бы необходимы для выполнения требуемых функций в случае, если бы роль вычислителя занимал микропроцессор.
Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.
Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже. Кроме того, решается проблема интеллектуальной собственности, а вы, вместе с исходными кодами программы, получаете возможность развивать и совершенствовать своё устройство.
Память программ, в современных универсальных микроконтроллерах, является перезаписываемой, причём процесс перезаписи можно повторять не один десяток тысяч раз. Напрашивается использование этого факта для обновления программного обеспечения с целью устранения найденных в нём ошибок или расширения функций уже работающего устройства. Это достаточно просто реализовать — добавив в программу специальный участок кода под названием “бутлоадер”, вы получаете возможность обновлять программное обеспечение вашего прибора различными способами: в пункте сервисного обслуживания (если устройство имеет специальный, скрытый внутри корпуса от посторонних глаз, разъём), подключив к компьютеру по USB, через сетевой или даже беспроводной интерфейс. Главное, предусмотреть в приборе необходимую для этого периферию. Предоставляя возможность обновления ПО, всегда следует думать о безопасности, если этот процесс недостаточно защищён, мало того, что злоумышленники могут похитить ваш код, они могут модифицировать его и использовать в своих не исключено, что коварных целях. Например, взять под контроль вещи вашего “умного дома” или шпионить с помощью, установленной вами же у себя дома, WEB камеры.
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Со времён Царя Гороха микроконтроллеры принято разделять по разрядности данных, над которыми они проводят операции. В подавляющем большинстве случаев, сегодня, в новых разработках, стоит останавливать свой выбор на 32 битных микроконтроллерах с ядром АRM. Существует огромное количество их модификаций и всегда можно подобрать экземпляр, наилучшим образом подходящий для решения вашей задачи. В зависимости от набора функций и производительности, цена чипа может составлять от десятков центов до десятков долларов.
Микроконтроллеры(MCU), в зависимости от архитектуры вычислительного ядра, принято разделять на крупные семейства. На сегодняшний день, для разработок устройств малой и средней сложности, наиболее популярны микроконтроллеры c ядрами от Cortex-M0 до Cortex-M7. Чем больше цифра, тем больше вычислительные (и не только) возможности, цена и максимальное энергопотребление. Не последнюю роль в популярности ARM сыграла преемственность архитектуры. Разработчик может с минимальными издержками модифицировать программный код своих предыдущих наработок, переходя от микроконтроллеров одного производителя к чипам другого и мигрируя между ядрами с разной производительностью.
Конкуренция с младшими братьями
Однако ARMы «рулили» не всегда. Я хорошо помню времена, когда абсолютными лидерами рынка были 8 битные микроконтроллеры и, с занятых позиций, их безуспешно пытались оттеснить 16 битные коллеги, но, по иронии судьбы, удалось сделать это только 32 битным старшим братьям. Так сложилось, что к моменту их появления, технологии изготовления чипов сильно удешевили интеграцию в них больших объёмов FLASH памяти. Воспользовавшись удобным случаем, программисты стали переходить с ассемблера на язык более высокого уровня — Си, структура которого отлично ложилась на 32 битную архитектуру. В результате 32 битные микроконтроллеры выполняли вычисления гораздо быстрее своих 8 и 16 битных коллег, но была одна проблема — у них был выше ток потребления.
Поэтому, поначалу, они использовались в случаях, когда требовалась большая вычислительная производительность.
Известно, что средний ток потребления вычислительного ядра микроконтроллера существенно увеличивается с поднятием его тактовой частоты. Поначалу 8 битные модели микроконтроллеров отличались заметно меньшим потреблением при сходной частоте и, кроме того, были способны работать от низкой тактовой частоты, вплоть до 32 кГц.
Энергопотребление микроконтроллеров сильно зависит от тактовой частоты ядра и периферии, чтобы её регулировать, для генерации стали использовать, широко применявшийся в радиопередающих устройствах, узел формирования тактовой частоты на основе ФАПЧ. Это позволило в широких пределах изменять тактовую частоту, не меняя задающий кварцевый резонатор. Периферийным модулям совсем не обязательно иметь такую же тактовую частоту, что и вычислительному ядру. Чтобы снизить их энергопотребление, частоту на них стали подавать через делители с программно-регулируемым коэффициентом деления. Ввели возможность отключать неиспользуемые модули. Эти меры сильно уменьшили энергопотребление, но оно по прежнему оставалось существенно больше, чем у 8 битных.
На короткое время сложился паритет — 32 битные MCU захватили нишу топовых приложений, а 8 битные уверенно удерживали позиции в устройствах, для которых было важно низкое энергопотребление. Он сохранялся до тех пор, пока 32 битные MCU не освоили в совершенстве «импульсный» режим работы.
8-битники, к тому времени, тоже научились это делать, но, из-за низкой производительности, бодрствовать им приходилось гораздо больше и, как результат, они начали проигрывать по энергопотреблению, особенно в задачах, требующих расчётов, что иллюстрирует картинка ниже.
Об укладке асфальта, пользе сна и его разновидностях
Итак, микроконтроллеры настолько хорошо научились считать, что стали выполнять свою работу очень быстро и большинство времени были вынуждены “бить баклуши”, пожирая энергию для выполнения холостых циклов. В устройствах с автономным питанием это сильно сокращает ресурс батарей или время работы от одной зарядки аккумуляторов.
Понаблюдайте за строительными рабочими которые кладут асфальт. Они резко активизируют свою работу, когда пришёл грузовик с новой порцией асфальта, а после его укладки снижают темп. Так и микроконтроллеры умеют повышать и снижать частоту тактирования ядра. Однако, им это даётся не так просто, как рабочим — одновременно изменится и частота работы всей внутренней периферии, поэтому, чувствительные к этому её части придётся перенастраивать.
Не проще ли, выполнив быстро всю работу, немного поспать. Зачастую, да. Причём виды сна микроконтроллеров отличаются ещё более драматично, чем у человека.
Можно просто вздремнуть. В этом случае наш чип всегда наготове и как только зазвенел будильник таймера или его потревожило внешнее прерывание, он просыпается практически мгновенно. Как человек во время дремоты может снять напряжение, но не выспаться толком, когда тебя постоянно дёргают, так и микроконтроллер может снизить своё энергопотребление в этом режиме “всего” раз в 10, называют этот режим SLEEP.
Лучший способ хорошо выспаться — раздеться, лечь в постель, задёрнуть шторы на окне и включить будильник. Однако, после такого сна, уже моментально в работу не включишься. Придётся, как минимум, предварительно ополоснуться холодной водой и одеться. Есть такой режим и у микроконтроллера, когда он ограничивает количество внешних раздражителей и выключает основной тактовый генератор. Это режим STOP. В нём можно уменьшить потребление в 1000 раз, но и на выход из него уже потребуется существенное время.
Теперь, представьте себе, что вы перед сном выпили изрядную дозу снотворного, отключили будильник и телефон, закрыли все окна и двери. Это будет режим STAND BY. Вывести из такого режима микроконтроллер можно только с помощью особых выводов и большая часть памяти о том, чем он занимался перед таким сном будет потеряна навсегда, придётся начинать работу заново. Зато находясь в таком режиме MCU потребляет ещё в два раза меньше.
Последний, весьма экзотический режим, напоминает уже кому, из которой нельзя выйти без специального оборудования. В этом случае работает только специальный генератор тем не менее, являющийся частью микроконтроллера на отдельном часовом кварце, который может функционировать от собственного источника питания и иметь буквально несколько байт оперативной памяти, предназначение которой напомнить микроконтроллеру о том, из какого состояния он в эту кому впал. Если остальные части микроконтроллера, при этом, отключить от питания, то энергопотребление может составить уже одну десятитысячную часть от активного режима.
Выбирая режим экономии энергопотребления необходимо помнить о последствиях применения:
- чем глубже сон, тем дольше пробуждение
- чем глубже сон, тем меньше способов вывести из него микроконтроллер
- чем глубже сон, тем меньше остаётся информации о предыдущем состоянии микроконтроллера
- для достижения минимальных заявленных значений, во многих режимах необходимо принимать дополнительные меры, например — отключения периферии
- для минимизации энергопотребления устройства в целом необходимо грамотно спроектировать схемотехнику всего устройства
- для минимизации энергопотребления устройства в целом, нужно позаботиться о том, чтобы остальные компоненты и цепи также имели микропотребление в неактивном режиме. Глупо предпринимать огромные усилия для того, чтобы опустить потребление микроконтроллера ниже одного микроампера и, при этом, применять в устройстве дешёвый стабилизатор с током собственного потребления в 100 микроампер
но встречается такое сплошь и рядом - для успешного использования режимов глубокого сна не только программа, но и схемотехника, должны быть тщательно продуманы, иначе, вместо экономии, можно получить весьма серьёзные проблемы — редко случающееся, зато “мёртвое” зависание устройства по необъяснимой причине, либо слишком частое пробуждение и, как результат, потребление на порядки выше ожидаемого
Если ваши программист со схемотехником не первый день винят друг друга в криворукости и, вместе, производителя в публикации нереальных цифр в даташитах на микроконтроллер, а ваше устройство сажает батарейки на порядок быстрее, чем вы рассчитывали, это повод, по крайней мере, обратиться к независимым высококвалифицированным экспертам.
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Физически активная часть микроконтроллера, как и подавляющее количество других микросхем, обычно сформирована на пластине монокремния (назовём его, в данном контексте, ЧИП). Чипы занимают очень маленькую площадь, технологически же выгодно производить пластины большого диаметра, поэтому, обычно большое количество чипов, как соты, размещают на одной большой пластине и формируют, в ходе одного технологического процесса. В последствии пластины нарезают на кусочки, получая уже отдельные чипы, которые и помещают в корпуса. Разработка топологии и отладка технологических процессов нового чипа стоит очень дорого, а занимаемое на пластине одним чипом место, как правило, не велико. Производителям выгодно выпускать чипы крупными партиями, но пользователям требуются микроконтроллеры в разных корпусах — кому то важно получить корпус поменьше и подешевле, другому наоборот требуется побольше выводов, чтобы управлять LCD или внешней памятью с параллельным интерфейсом. Производителям выгодно перекрывать все ниши, чтобы клиенты не перебегали к конкурентам, не найдя оптимальной для себя модели.
Очень часто бывает выгодней выпустить крупной партией один универсальный чип и помещать его в разные корпуса, чем запускать десяток различных. У чипов, помещённых в корпуса с малым количеством выводов, часть портов (в данном контексте, под портами будем понимать контактные площадки на поверхности чипа, служащие для общения с внешним миром) просто останутся неподсоединёнными. Часто производители идут дальше — чтобы поднять спрос и цену на микроконтроллеры с большим количеством ножек, они искусственно обрезают функциональность тех, у которых их меньше — отключают некоторые функции, ограничивают объём доступной памяти и т. п.
Так на основе одного чипа формируют серии микроконтроллеров, существенно отличающиеся по объёму памяти и набору периферийных модулей, иной раз и в разы по цене. При этом чипы, в них установленные, могут нарезаться из одних и тех же пластин. Поскольку площадь, на которой размещается один чип, невелика, вклад её в себестоимость конечного изделия также мал и им можно пожертвовать. Становится выгодным отключение дополнительной памяти и других функций, например, на этапе тестирования — либо с помощью однократно программируемых битов конфигурации, либо пережиганием перемычек лазером. Лишь для наиболее массовых изделий имеет смысл для этого создавать слегка изменённый фотошаблон. Причём, совсем не обязательно там будет физически отсутствовать неиспользуемая память, её, опять же, можно просто отключить, удалив перемычки в шаблоне.
Так из одного стандартного дизайна чипа формируется целая серия микросхем.
Периферия простейшего ARM микроконтроллера за пол бакса
Процессорное ядро — это мозг, но, чтобы он не был подобен “сферическому коню в вакууме”, требуются аналоги органов чувств и конечностей.
В микроконтроллере их роль играют выводы на корпусе, к которым внутри корпуса могут подключаются порты(контактные площадки) чипа. В свою очередь, через внутренние коммутаторы, к одному и тому же порту могут подключаться различные периферийные модули.
Для начала рассмотрим периферию одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03.
Для этой серии имеем следующий набор базовых функций:
Часы реального времени (Real Time Clock или RTC), которые могут запитываться с помощью отдельного вывода и работают от отдельного низкочастотного резонатора. Этот модуль потребляет крайне мало энергии, в случае пропадания основного питания он может часами работать от заряженного конденсатора, или годами от маленькой встроенной в прибор батарейки. Кроме этого, он может служить в качестве будильника, выводя микроконтроллер из состояния даже самого глубокого сна в заранее заданное время.
WatchDog — сторожевая собака мешающая микроконтроллеру заснуть навсегда, например, свалившись в бесконечный цикл или перейдя по несуществующему адресу. Его принцип работы прост. Программист настраивает таймер защиты от “зависания” на определённый период времени, допустим на секунду, и запускает его. Затем он расставляет, в выбранных им местах программы, короткие участки кода, которые перезапускают таймер с нулевого значения. Если за секунду не произошло ни одного сброса таймера, WatchDog считает, что с программой что-то не так и устраивает микроконтроллеру перезапуск. Программа начинает работать с начала, причём существует возможность определить являлся ли инициатором ресета WatchDog и учесть этот факт при запуске.
Универсальные цифровые входы-выходы (General Purpose Input-Output GPIO) — это самая распространённая функция, которую поддерживают большинство выводов микроконтроллера. Они могут конфигурироваться либо как входы, либо как выходы.
Рассмотрим работу в качестве входа. Если напряжение на входе микроконтроллера меньше некоего порога (как правило близкого к половине питания), то оно воспринимается как логический ноль, в противном случае как 1. Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).
Если выводы сконфигурированы цифровыми выходами, то их программно можно перевести в высокий уровень равный напряжению питания микроконтроллера, либо низкий. Существуют и более хитрые режимы, но не будем вдаваться в чрезмерные подробности.
Советы начинающим разработчикам Выводы микроконтроллера — мастера на все руки, но следует соблюдать простые правила, чтобы не вывести их из строя. Несмотря на все предосторожности, предпринимаемые производителями чипов, они боятся статики и перенапряжений, поэтому не стоит подсоединять их напрямую к разъёмам, выходящим за пределы платы. Необходимо, в этом случае, предпринять меры — либо воспользоваться специальными интегральными компонентами защиты, либо предусмотреть в схеме супрессор, стабилитрон или защитные диоды, плюс установить в разрыв между выводом разъёма и портом токоограничивающее сопротивление.На рисунке выше изображён участок схемы, спроектированного мной устройства (спутникового модема), с элементами простейшей защиты портов микроконтроллера. X4 — разъём для внешних коммуникаций. Нас интересуют контакты 5-7, к которым присоединяются тревожные кнопки. Сигналом тревоги служит замыкание на землю, поэтому, в нормальном состоянии, на портах должно присутствовать напряжение питания микроконтроллера, что и обеспечивают резисторы R24-R26, номиналом 1 КОм. Супрессоры VD4-VD6 ограничивают напряжение на уровне 5 вольт, это допустимо потому, что применяемый мной микроконтроллер, хотя и питается напряжением 3,3 вольта, но имеет порты толерантные к напряжению 5 вольт. Резисторы R29-R31 на 100 Ом.
Подобная защита спасёт порты вашего микроконтроллера от внешних перенапряжений. У некоторых микроконтроллеров отдельные порты не боятся напряжений, превышающих их напряжение питания. Так у многих микроконтроллеров STM32Fxx почти все порты будучи сконфигурированными как цифровые могут работать с 5 вольтовыми цепями, но если они работают в аналоговом режиме, например в качестве входа АЦП, теряют эту способность и это необходимо учитывать при разработке схемы.
Пожалуйста, соблюдайте технику безопасности. Не оставляйте, свободные, висящие в воздухе порты микроконтроллера сконфигурированными в виде входов, особенно в устройствах временами уходящих в глубокий сон — это как минимум может значительно усложнить процесс прохождение вашего устройства теста на ЭМС (электро-магнитную совместимость). Если оставляете их входами, лучше замкнуть их на землю или питание. Либо программно сконфигурировать выходами.
Существует ещё один лайфхак. Иногда их можно оставить входом и замкнуть на другую цепь. Это помогает в случае очень плотной трассировки провести проводник «сквозь» микроконтроллер, что особо актуально для двухслойных плат.
Используя порты микроконтроллеров в качестве выходов, также стоит свериться с даташитом. Отдельные порты могут иметь разное ограничение по максимальному току, который от них можно получить не опасаясь выхода их строя — нагрузочную способность. Кроме этого, сам чип имеет максимальную нагрузочную способность всех выходов в сумме, которую не следует превышать.
Последнее, о чём хочется упомянуть, выходные порты ARM микроконтроллеров не реагируют на программные инструкции мгновенно, как у 8-битных микроконтроллеров. Они управляются через шину, и их быстродействие зависит от частоты тактирования соответствующего узла, которую можно менять программно. Если вы хотите быстрой реакции, позаботьтесь об увеличении этой частоты, если важнее уменьшить энергопотребление, наоборот выберите менее скоростной режим.
Температурный сенсор Микроконтроллер имеет свой собственный температурный сенсор, правда не слишком точный, тем не менее его можно, с определёнными допущениями, использовать для измерения температуры внутри корпуса прибора.
Уникальный серийный номер Каждый микроконтроллер имеет свой уникальный серийный номер, присвоенный ему на производстве. Очень удобная особенность, которую можно использовать при организации серийного производства ваших изделий.
Интерфейсы обмена данными Различные микроконтроллеры данной серии могут иметь по нескольку наиболее распространённых интерфейсов, сильно облегчающих общение с другими чипами и внешним миром:
- USART — асинхронный последовательный порт, часто использующийся для связи с компьютером
там он называется COM или RS232, модемами и другими устройствами - SPI — высокоскоростной интерфейс, который имеют очень многие чипы, например внешняя память
- I2C — двухпроводной интерфейс, разработанный для общения с датчиками и другой периферией на небольшом расстоянии и небольших скоростях обмена. Большой его плюс заключается в том, что одновременно к одной шине можно подключить десятки различных устройств
Все эти интерфейсы несложно реализовать программно с помощью обычных GPIO, но они будут работать гораздо медленнее и отнимать много ресурсов вычислительного ядра.
Аналого-цифровой преобразователь АЦП или ADС на котором придётся остановиться подробнее.
Чрезвычайно полезный модуль, который способен измерять напряжение аналоговых сигналов. Оценивает он их в долях от величины опорного источника сигнала, в нашем случае это напряжения питания аналогового модуля микроконтроллера, которое может быть равным или немного ниже основного напряжения питания чипа. Теоретическая точность работы АЦП зависит от его разрядности. В современных микроконтроллерах чаще всего применяется 12 разрядный АЦП последовательного приближения, реже 10 и как экзотика встречается 16.
При питании 3 вольта 12 разрядный АЦП микроконтроллера будет иметь разрешающую способность 3/4096=0.00073 Вольта — лучше одного милливольта.
Но на практике достичь этого идеала бывает не просто.
Подробности для начинающих разработчиковНа практике всё бывает далеко не так красиво и точность измерений может снижаться по многим причинам. Ниже перечисляю основные, хорошо известные любому опытному электронщику, а также простые но эффективные способы сведения их пагубного влияния до минимуманестабильность напряжения источника питания АЦП
- применять для питания MCU линейные стабилизаторы с хорошими параметрами
- применять для питания аналоговой части MCU высокостабильные источники опорного напряжения
импульсные помехи по питанию АЦП
- подключать аналоговое питание к цифровому через простейшие фильтры низкой частоты — подавать питание на аналоговую часть MCU через индуктивность и в непосредственной близости от входа микроконтроллера устанавливать керамический конденсатор с диэлектриком XR7 ёмкостью 100 нанофарад, а ещё лучше, параллельно ему включить танталовый конденсатор с ёмкостью в одну — две микрофарады.
импульсные помехи на входе АЦП
- пропускать входной сигнал хотя бы через простейший ФНЧ, состоящий из резистора и конденсатора. Для борьбы с помехами от передающих радиотрактов и короткими импульсными помехами иногда достаточно одиночного конденсатора с диэлектриком NP0 ёмкостью в несколько десятков пикофарад, установленного между входом и землёй, в непосредственной близости от входа АЦП
- не экономить на блокировочных конденсаторах, по крайней мере самого микроконтроллера, устанавливать их в непосредственной близости от каждого вывода питания и в других местах, рекомендованных производителем, рекомендованного им номинала
- тщательно выбирать месторасположение компонентов и соблюдать правила трассировки цепей питания и особенно “земли”, в идеале аналоговая и цифровая земли должны соединяться в одной точке — рядом с выводом аналоговой земли микроконтроллера
высокое выходное сопротивление источника сигнала, опасно тем, что в момент старта измерения АЦП последовательного приближения, которое чаще всего используется в микроконтроллерах, его вход потребляет некоторый отличный от нуля ток и это может привести к уменьшению истинного значения напряжения, так как сигнал фактически подаётся через делитель напряжения.
- правильно выбирать параметры настройки АЦП, например во многих микроконтроллерах можно увеличить время зарядки входной цепи, правда тут приходится идти на компромисс, снижая быстродействие
- устанавливать на входе АЦП буферные усилители на основе ОУ (операционный усилитель), или повторители напряжения. Выбирать их по принципу самых дешёвых не стоит, можно не улучшить, а ухудшить ситуацию, причём значительно. Если не хватает собственного опыта, лучше поискать специально рекомендованные производителями для подобных приложений
Выше изображён участок реальной схемы для подачи питания на аналоговую часть микроконтроллера в устройстве с батарейным питанием. В данном случая я использовал АЦП для оцифровки сигнала с аналогового MEMS микрофона и поэтому имело смысл выделить в отдельную цепь не только аналоговое питание, но и аналоговую землю. В большинстве случаев это избыточно, для того чтобы от неё действительно был толк, нужна ещё и правильная трассировка.
От цепи VBUT питается вся цифровая часть микроконтроллера. На всякий случай привожу номиналы элементов: R5-10 Ом, С10 0.1 мкФ, без индуктивностей L1 и L2 BLM18PG471SN1D в большинстве случаев можно обойтись.
Ещё один любопытный пример из моей практики. В плате, на которой размещалось большое количество высокопотребляющих чипов ASIC, необходимо было измерять их температуру. Самый простой и дешёвый способ — использование высокоомных термисторов. В качестве фильтров я применил конденсаторы достаточно большой ёмкости, воспользовавшись тем фактом, что температура меняется сравнительно медленно. Для оцифровки звука такой фокус однозначно бы «не прокатил».
Осталось упомянуть ещё одну важную особенность АЦП, характерную для микроконтроллеров. Собственно, модулей АЦП в нём, как правило, один или два, а вот входов может быть много. В описываемой серии модуль 1, а входов может быть до 16. Как же так? Очень просто, входы подсоединены к нему через коммутатор. Если вы собираетесь измерять напряжение с 10 входов, то должны организовать цикл — последовательно переключить коммутатор к каждому из 10 входов и сделать измерение. Это необходимо учитывать, рассчитывая времена измерения. В данной серии АЦП, теоретически, способно сделать измерение за 1 микросекунду. Получается, что полный цикл 10 измерений у вас займёт точно больше 10 микросекунд!
Система прямого доступа в память ПДП или DMA — ещё одна архиважная вещь. Этот модуль позволяет пересылать данные от периферии в память или наоборот.
Например, с его помощью вы можете выделить участок памяти для хранения данных, приходящих из АЦП и сделать из него кольцевой буфер. Далее запускается АЦП в режиме считывания данных через равные промежутки времени. Используя механизмы DMA, считанные данные будут, без участия ядра, самостоятельно, байт за байтом, помещаться в выделенный буфер. Когда буфер будет полностью заполнен, ядро получит сигнал и приступит к их программной обработке, а система DMA начнёт процесс загрузки сначала. Поскольку DMA имеет несколько каналов, то никто не мешает реализовать для нашего случая автоматический вывод на USART данных из буфера. В результате мы получим, работающий без использования ядра процесс передачи считанных с АЦП в USART, и не простая работа программиста по конфигурации DMA окупится сторицей.
Модуль широтно-импульсной модуляции ШИМ или PWM, в силу ограниченности статьи не будем останавливаться на нём подробно, отмечу только, что это крайне полезная и широко используемая функция, с помощью которой возможно управлять яркостью светодиодов, скоростью вращения двигателей, рулевыми машинками, конструировать интеллектуальные DC-DC преобразователи и даже звук синтезировать.
Что можно получить, добавив 30 центов?
Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции
А какие дополнительные плюшки предлагает микроконтроллер новейшей серии с ядром чуть посовременнее Cortex-M0+, при стоимости на 20-50 центов дороже аналогов в рассмотренной выше серии по корпусу и количеству выводов?
Таблица отличий между сериями
- в два раза увеличилась максимальная тактовая частота
- с 2 до 1.7 вольт понизилось минимальное напряжение питания
- АЦП способно работать в два с половиной раза быстрее
- появились два канала 12 битного цифро-аналогового преобразователя. Это крайне полезная функция, с помощью которой возможно формировать на выводах сигнал заданного напряжения с точностью лучшей чем 1 мВ, например сигналы произвольной формы в звуковом диапазоне частот
- появились компараторы — устройства для сравнения величин двух аналоговых сигналов, это бывает полезным скажем для определения момента возникновения перегрузки по току
- добавлен USB интерфейс, посредством которого можно подключать устройства к компьютеру. Особый интерес вызывает наличие поддержки опций управления питанием для реализации USB type3-C совместимого интерфейса. О нём я рассказывал в одной из своих статей на Хабре
- появился ускоритель AES для процедур 256 битного шифрования/дешифрации
- UART получил возможность работы в режимах сна и аппаратную поддержку протоколов LIN (простая сеть, широко используется в автопроме), IRDA (протокол передачи данных посредством инфракрасных светодиодов, вспомните телевизионные пульты), SIMcard…
- расширены возможности таймеров и модуля PWM
- верхняя граница температурного диапазона работы поднялась до 125 градусов
- увеличена надёжность работы за счёт расширения режимов перезапуска при возникновении проблем с питанием
- добавлен “честный” аппаратный генератор случайных значений — полезная функция в криптографии
Ну что же, для многих применений незначительная добавка в цене себя вполне окупает, поскольку можно отказаться от перехода на более дорогостоящие микроконтроллеры старших модельных рядов.
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
- Максимальная тактовая частота вырастает уже до 80 МГц
- Появился блок для ускорения вычислений с плавающей точкой
- Ясное дело, максимальная встроенная память увеличилась
- Модели с количеством ног 100 и более поддерживают работу с внешней статической памятью
- USB научился работать в режиме HOST
- Появился контроллер CAN интерфейса. Это очень перспективный интерфейс разработанный для высоконадёжных приложений. Своё победное шествие он начал с автомобильной промышленности и уже почти 20 лет ведёт затяжную войну с давно устаревшим RS-485 в крайне консервативной отрасли промышленной автоматизации.
- Появился интерфейс для подключения SDcard. Очень полезная функция — добавляете в своё устройство держатель за 50 центов и получаете съёмный носитель размером в десятки Гигабайт! С большинством карт удаётся работать и по обычному SPI, но намного медленнее
- Добавили встроенный Операционный Усилитель с большим разнообразием режимов работы. Именно благодаря этой и предыдущей функциям, для своего последнего проекта беспроводного стетоскопа, пришлось остановить выбор на M4 вместо M0+. В результате появилась возможность управлять усилением сигнала с MEMS микрофона и сохранять десятки часов аудиозаписей работы сердца на SD карте
- Криптомодуль научился аппаратно считать HASH функции.
- Контроллер сенсорных приложений усовершенствован и теперь поддерживает уже не только кнопки, но и элементы прокрутки
Cortex-M7 — когда хочется большего…
В подавляющем количестве проектов возможностей предоставляемых вышеописанными ядрами достаточно, но случаются и исключения. Лично со мной такое случалось всего пару раз, причём лишь один раз по действительно уважительной причине — требовалась высокая производительность для подготовки данных для ASIC, контроллер Ethernet и шина CAN-FD c повышенной скоростью обмена.
Если на уровне универсальных микроконтроллеров с ядрами Cortex 4 и ниже, на мой субъективный взгляд, по параметру цена/функциональность сейчас лидирует фирма ST, то в области более высокопроизводительных чипов она уступает лидерство ATMEL, вернее, теперь уже недавно поглотившему его MICROCHIP. Поэтому я остановил свой выбор на серии ATSAMV71, стоимостью от 6 долларов.
Помимо вышеописанного (контроллер Ethernet и шина CAN-FD), по большому счёту, мы получаем, существенно увеличивающее производительность ядро с ускорителем операций, работающее на тактовой частоте до 300 МГц, интерфейсы для подключения видеоматрицы и поддержку динамической памяти.
В заключении попрошу имеющих опыт общения с микроконтроллерами попрошу выбрать подходящий ответ на вопрос.
|
| |
|
| |
|
| |
1. Многие начинающие электронщики не знают с чего начать, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.
Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.
Путь с нуля на мой взгляд заключается в изучении периферии и особенностей, если это микроконтроллер. Правильнее сначала разобраться с тем как дрыгать ножками, потом с таймерами, затем интерфейсами. И только тогда пытаться поднимать свой FAT. Да это не быстро, да это потребует времени и усилий, но практика показывает, как бы вы не пытались сократить этот путь, все равно всплывут проблемы, которые придется решать и время вы потратите куда больше, не имея этой базы.
Только не нужно путать теплое и мягкое. Первое — из всех правил есть исключения, лично видел людей, которые в руках раньше не держали микроконтроллеров, но за крайне короткий срок смогли обскакать бывалых опытных радиолюбителей, их в расчет не берем. Второе — мне попадались личности, которые начинали с копирования схем и сходу разбирались, но скорее это тоже исключение из правил. Третье — и среди ардуинщиков попадаются опытные программисты, это ведь всего навсего платформа, но и это скорее исключение.
Если говорить об общей массе, то дела обстоят именно так как я описал вначале: нежелание разбираться с основами, в лучшем случае оттягивает момент того, когда придется вернуться к этим вопросам. В худшем случае, вы быстро упретесь в потолок своих знаний и все время винить в своих проблемах кого то другого.
2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.
3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.
Кол в мой гроб был вбит с появлением STM32, нужно было обязательно переползать на них, вот тогда то и появились проблемы. Проблемы мягко сказано, фактически мне пришлось осваивать микроконтроллеры и язык Си с нуля. Больше я не повторял прошлых ошибок. Надо сказать это уже пригодилось и не один раз. С тех пор мне довелось поработать с другими платформами и никаких затруднений не испытываю, подход оправдывает себя.
По поводу всех улучшалок и упрощалок, было одно очень хорошее сравнение, что они подобны инвалидным коляскам, которые едут по рельсам, можно ехать и наслаждаться, но вставать нельзя, куда везут — туда и приедешь.
4. Изучайте язык Си. Эх, как же часто я слышу, как начинающие радиолюбители хвалятся, что хорошо знают сишку. Для меня это стало кормом, всегда люблю проконсультироваться у таких собеседников. Обычно сразу выясняется, что язык они совершенно не знают. Могу сказать, что не смотря на кажущуюся простоту, людей которые действительно хорошо бы его знали, встречал не так много. В основном все его знают на столько, на сколько требуется для решения задач.
Однако, проблема на мой взгляд заключается в том, что не зная возможностей, вы сильно ограничиваете себя. С одной стороны не оптимальные решения, которые потребуют более мощного железа, с другой стороны не читаемый код, который сложно поддерживать. На мой взгляд, читаемость и поддерживаемость кода занимает одно из важнейших мест и мне сложно представить, как можно этого добиться не используя все возможности языка Си.
Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.
Хорошим подспорьем будет также изучение всяких тестов по языку, которые дают при собеседованиях. Если порыться то можно много нового узнать.
5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.
6. Читайте даташит. Многие разработчики, пренебрегают этим. Изучая даташит вы будете на две ступени выше тех разработчиков. Делать это крайне полезно, во первых это первоисточник, какие бы сайты вы не читали, в большинстве случаев они повторяют информацию из даташита, зачастую с ошибками и недосказанностями. Кроме того, там может находиться информация, о которой вы не задумываетесь сейчас, но которая может пригодиться в будущем. Может статься так, что вылезет какая то ошибка и вы вспомните что да, в даташите об этом было сказано. Если ваша цель стать хорошим разработчиком, то этого этапа не избежать, читать даташиты придется, чем раньше вы начнете это делать, тем быстрее пойдет рост.
7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.
На мой взгляд, намного проще исключить заранее весь слой этих проблем, чем вылавливать их потом. Поэтому я категорически против переводов, единственный верный совет — изучайте английский язык, чтобы читать даташиты и мануалы в оригинале. Понять смысл фразы с помощью программ переводчиков можно, даже если уровень вашего языка полный ноль.
Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.
8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.
На первоначальном этапе, мне очень сильно помог один метод — сначала собираешь схему и смотришь как она работает, а затем пытаешься найти обоснование в книге. То же самое и с программной частью, когда есть готовая программа, то проще разобраться в ней и соотнести куски кода, какой за что отвечает.
Также важно выходить за рамки дозволенного, подать побольше/поменьше напряжение, делать больше/меньше резисторы и следить за изменениями в работе схемы. В мозгу все это остается и оно пригодится в будущем. Да это чревато расходом компонентов, но я считаю это неизбежным. Первое время я сидел и палил все подряд, но теперь перед тем как поставить тот или иной номинал, всегда вспоминаю те веселые времена и последствия того, если поставить неверный номинал.
9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.
10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.
Но как было сказано, вопрос технологий имеет тонкую грань. Не нужно хвататься за все подряд. В электронике много направлений. Может вам нравится аналог, может цифра, может вы специалист по источникам питания. Если не понятно, то попробуйте себя везде, но практика показывает, что вначале лучше сконцентрироваться на чем то конкретном. Даже если нужно жать в нескольких направлениях, то лучше делать это ступеньками, сначала продавить что то одно.
11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.
В интернетах практически единственный трушный путь к программированию это стать джедаем изготовления печатных плат. Я тоже прошел через этот путь, но каждый раз задаю себе вопрос зачем? С тех пор, как я приобрел себе пару плат, на все случаи жизни, каждый раз думаю о том, что мог бы спокойно прожить все это время без самодельных плат. Мой совет, если есть хоть капля сомнений, то лучше не заморачиваться и взять готовую отладочную плату, а время и средства лучше бы потратить на программирование.
12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.
13. В ту же копилку внесу очень болезненный вопрос инструмента. Инструмент должен позволять вам максимально быстро разрабатывать устройства. Почему то очень многие разработчики не ценят свое время. Типичный пример, дешевая обжимка для клемм, на которой так любят экономить многие работодатели. Проблема в том, что она даже обжимает не правильно, из-за этого провода вываливаются. Приходится производить кучу дополнительных манипуляций, соответственно тратить время. Но как известно дурак платит трижды, поэтому низкая цена кримпера возрастет во много раз, за счет затрачиваемого времени и плохого качества обжима.
Не говорю что дешевое = плохое, нет — все зависит от ситуации. Вернусь к примеру кримпера, было время когда обжимал чем попало, поэтому часто возникали проблемы. Особенно неприятно, когда заводишь плату и она не работает, после долгих поисков ошибки понимаешь что из-за плохо обжатого проводочка, обидно. С тех пор как появилась нормальная обжимка этих проблем нет. Да внутренняя жаба и квакала, и душилась от ее стоимости, но ни разу не пожалел об этом решении. Все что я хочу сказать, что поработав с нормальным инструментом, совершенно не хочется возвращаться к плохому, даже не хочется обсуждать это. Как показывает практика, лучше не экономить на инструментах, если сомневаетесь — возьмите у кого нибудь потестить, почитайте отзывы, обзоры.
14. Заведите сайт, можно писать на нем, что угодно, просто как записки. Практика показывает, что работодатели все равно его не читают, но сам факт производит большой эффект.
15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.
Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.
Вуз ради бумажки. Могу сказать, что были и такие ситуации, когда предлагали работу, которая требовала обязательного наличия образования и было обидно, что именно в тот момент бумажки не было. Но в целом, история показывает, что большинству работодателей наплевать на вашу бумажку.
Следующий момент довольно часто не учитывается, это окружение. Не забывайте, что люди, с которыми вы учитесь это ваше поколение, не исключено что вам с ними работать. Количество фирм работающих в одной отрасли сильно ограничено. Практика показывает, что даже в больших городах все и все друг о друге знают, вплоть до интимных подробностей.
Еще один момент это возможности. Зачастую у вузов есть свои возможности — оборудование, может какие то секции, может какие то программы работы за рубежом, этим нужно пользоваться, если есть хоть малейшая возможность. Если в вузе вы не видите перспективы, идите в другой, мир на каком то одном не заканчивается.
Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.
16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.
И последний совет. Многие радиолюбители необщительные, сердитые и раздражительные — считайте это спецификой работы. Излучайте добро и позитив, будьте хорошим человеком.
В этой статье мы рассмотрим пожарную сигнализацию на микроконтроллере ATmega8 (семейство AVR) и датчике огня. Датчик огня может быть любого типа, мы в нашей схеме будем использовать инфракрасный датчик огня – он не отличается точностью, но зато он самый дешевый … Читать далее →
В этой статье мы подключим фоторезистор к микроконтроллеру ATmega8 (семейство AVR) и с его помощью будем измерять интенсивность света. Для этой цели мы будем использовать 10 битный аналого-цифровой преобразователь микроконтроллера (АЦП). Общие сведения о фоторезисторах Фоторезистор представляет собой преобразователь, чье … Читать далее →
В этой статье мы рассмотрим низкодиапазонный амперметр на микроконтроллере ATmega8 (семейство AVR). Для реализации этой идеи мы задействуем 10 битный аналого-цифровой преобразователь (АЦП) данного микроконтроллера. Для упрощения схемы используем резистивный метод, являющийся самым простым способом определения нужных нам параметров. В … Читать далее →
В этой статье мы рассмотрим процесс взаимодействия двух микроконтроллеров ATmega8 (семейство AVR) через последовательный порт. Взаимодействие будет осуществляться с помощью универсальных асинхронных приемопередатчиков (UART — Universal Asynchronous Receiver Transmitter), имеющихся в микроконтроллерах. Подобное взаимодействие часто бывает востребовано в различных системах. … Читать далее →
В этой статье мы рассмотрим сигнализацию на микроконтроллере ATmega8 (семейство AVR), основанную на анализе колебаний. Данную сигнализацию можно использовать для защиты от воров. Сигнализация основана на использовании датчика наклона (tilt sensor), внешний вид которого показан на следующем рисунке. Одним из … Читать далее →
В этой статье будет описано подключение джойстика к микроконтроллеру ATmega8 (семейство AVR), приведена схема подключения и код программы на языке C с комментариями к ней. Общие принципы работы джойстика Джойстик представляет собой модуль ввода, достаточно часто использующийся для коммуникаций. В … Читать далее →
В этой статье мы рассмотрим подключение и взаимодействие гибкого датчика (FLEX sensor) к микроконтроллеру ATmega8 (семейство AVR). Для решения этой задачи мы задействуем 10 битный аналого-цифровой преобразователь (АЦП), имеющийся в данном микроконтроллере. Что такое гибкий датчик? Гибкий датчик (FLEX sensor) … Читать далее →
В этой статье будет рассмотрена схема подключения углового кодера к микроконтроллеру AVR ATmega8 и приведена программа на языке C (с пояснениями), обеспечивающая взаимодействие этих устройств. Микроконтроллер ATmega8 (семейство AVR) был специально спроектирован для применения во встраиваемых приложениях (embedded applications). Принципы … Читать далее →
В этой статье мы рассмотрим схему для измерения расстояний, построенную с использованием ультразвукового датчика HC-SR04 и микроконтроллера ATmega32 (семейство AVR). Датчик HC-SR04 использует технологию под названием “ECHO” (эхо), то есть испускает ультразвуковой сигнал и потом анализирует отраженный от препятствий сигнал. … Читать далее →
В этой статье мы рассмотрим схему на микроконтроллере ATmega32A (семейство AVR), реализующую цифровой вольтметр с пределами измерений от 0 до 25В. Для этого мы задействуем 10-битный аналого-цифровой преобразователь (АЦП), имеющийся в данном микроконтроллере. Поскольку АЦП микроконтроллера ATmega32A не может на … Читать далее →
В данной статье мы рассмотрим схему для измерения температуры, построенную на основе микроконтроллера ATmega32 (семейство AVR) и сенсора LM35. LM35 представляет собой сенсор линейного напряжения. Как известно, температура обычно измеряется в градусах Цельсия или фаренгейтах. Выходная шкала сенсора LM35 отградуирована … Читать далее →
В этой статье мы рассмотрим счетчик 0-99 на двух символьном семисегментном дисплее под управлением микроконтроллера ATmega32 (семейство AVR). Мы будем подсчитывать число событий основываясь на числе нажатий кнопки. Принцип работы семисегментного дисплея Но прежде чем идти дальше, кратко остановимся на … Читать далее →
Мы знаем, что сейчас в офисах, торговых центрах и многих других местах требуется авторизация людей, которые входят/выходят из этих мест. Часто для этих целей используется радиочастотная идентификация (RFID — Radio Frequency Identification). В частности, радиочастотная идентификация используется в торговых центрах … Читать далее →
Мы знаем, что сейчас в офисах, торговых центрах и многих других местах требуется авторизация людей, которые входят/выходят из этих мест. Часто для этих целей используется радиочастотная идентификация (RFID — Radio Frequency Identification). В частности, радиочастотная идентификация используется в торговых центрах … Читать далее →
Наверное, вы в своей жизни на различных выборах видели специальные машины для голосования. В этой статье мы постараемся собрать упрощенную модель подобной машины на микроконтроллере ATmega32A (семейство AVR). На данном микроконтроллере можно собрать машину для голосования 32 людей, однако в … Читать далее →
В этом проекте мы будем управлять яркостью свечения одноваттного светодиода с помощью микроконтроллера ATmega32 (семейство AVR). Мы будем делать это, используя ШИМ (широтно-импульсную модуляцию). Общий принцип управления яркостью свечения Управляя скоростью модуляции ШИМ (Pulse Width Modulation, PWM) можно регулировать силу … Читать далее →
Мигающий светодиод – это, пожалуй, самая простая схема, которую можно реализовать на микроконтроллере семейства AVR. Предназначена она для начинающих радиолюбителей – чтобы они на примере этой простейшей схемы смогли сделать свой первый шаг в направлении знакомства с микроконтроллерами AVR. В … Читать далее →
В данной статье представлена простая и надежная схема частотомера, реализованная на основе микроконтроллера ATtiny2313 (семейство AVR). С ее помощью можно измерять частоты до 65 кГц включительно. Программа для микроконтроллера написана на BascomAVR – нечасто уже используется, но может быть кто … Читать далее →
Данная схема светодиодной гирлянды на микроконтроллере ATtiny2313 (семейство AVR) содержит небольшое число элементов, отличается простотой сборки и поэтому хорошо подходит для начинающих радиолюбителей. С ее помощью можно управлять 13 светодиодами, подключенными к соответствующим портам микроконтроллера. Доступны такие эффекты как бегущий … Читать далее →
С помощью представленного в данной статье измерителя емкости можно измерять емкость конденсаторов с разрешением 1 пФ в нижнем конце диапазона. Максимальное значение емкости, которое можно им измерить, составляет 10000 мкФ. Ошибка измерения не превышает 0.5% в наихудших случаях, типовое же … Читать далее →
Каждый проект в области электроники и электроники, предназначенный для разработки электронных гаджетов, которые часто используются в нашей повседневной жизни, использует микроконтроллеры с соответствующими сопрягающими устройствами. Существуют различные типы приложений, разработанные с использованием проектов на основе микроконтроллеров. В максимальном количестве приложений микроконтроллер связан с некоторыми внешними устройствами, которые называются интерфейсными устройствами для выполнения некоторых конкретных задач.Например, рассмотрим систему безопасности с проектом изменяемого пользователем пароля, в котором интерфейсное устройство, клавиатура соединено с микроконтроллером для ввода пароля.
Интерфейсные устройстваИнтерфейсные устройства
Интерфейс может быть определен как передача данных между микроконтроллерами и периферийными устройствами, такими как датчики, клавиатуры, микропроцессоры, аналого-цифровые преобразователи или АЦП, ЖК-дисплеи, двигатели, внешняя память, даже с другими микроконтроллерами, некоторые другие сопряженные периферийные устройства и т. д. или устройства ввода и устройства вывода.Эти устройства, которые взаимодействуют с микроконтроллером 8051, используются для выполнения специальных задач или функций, называются интерфейсными устройствами.
Интерфейс — это метод, который был разработан и используется для решения многих сложных задач при проектировании схем с соответствующими характеристиками, надежностью, доступностью, стоимостью, энергопотреблением, размером, весом и т. Д. Чтобы упростить множество функций с помощью простых схем, микроконтроллер сопряжен с такими устройствами, как АЦП, клавиатура, ЖК-дисплей и так далее.
Аналого-цифровой преобразователь (АЦП)
АЦП — это электронная интегральная схема, используемая для преобразования аналоговых сигналов в цифровую или двоичную форму. Как правило, аналого-цифровые преобразователи принимают входное напряжение от 0 до 10 В, от -5 В до + 5 В и т. Д. И тем самым преобразуют этот аналоговый вход в цифровой выход. Большинство параметров окружающей среды, таких как температура, звук, давление, свет и т. Д., Измеряются только в аналоговой форме. Если мы рассмотрим систему контроля температуры, то получение, изучение и обработка данных о температуре от датчиков температуры невозможно с цифровой измерительной системой.Следовательно, для этой системы требуется промежуточное устройство для преобразования температуры из аналоговых в цифровые данные, так что для связи с цифровой системой, содержащей микроконтроллеры и микропроцессоры.
Аналого-цифровой преобразовательАЦП, взаимодействующий с микроконтроллером 8051
SCADA для удаленной промышленной установки представляет собой практическое применение, в котором используется аналого-цифровой преобразователь или АЦП, взаимодействующий с микроконтроллером 8051. Для непрерывного мониторинга нескольких операций удаленного промышленного предприятия диспетчерский контроль и сбор данных (SCADA) являются наилучшей технологией для удаленного управления различными операциями в отрасли, что повышает эффективность и экономит рабочую силу.
Взаимодействие АЦП с 8051 Microcontroller Project Kit от Edgefxkits.comВ этом проекте датчики температуры связаны с микроконтроллером, который подключен к ПК. Подключенные датчики температуры подключаются к микроконтроллеру с помощью аналого-цифрового преобразователя. Поскольку сигнал, генерируемый датчиками, является аналоговым, то эти аналоговые сигналы преобразуются в цифровые и затем поступают на микроконтроллер. Для последовательной связи RS232 является стандартом. Интерфейс RS232 используется для получения связи между компьютером и схемой для передачи данных между схемой и компьютером.
Взаимодействие АЦП с блок-схемой микроконтроллера 8051 от Edgefxkits.com
Если температура превышает заданное значение, микроконтроллер активирует реле, которое отключит нагреватели, и в случае сбоя системы будет сгенерирован аварийный сигнал AV. Здесь обогреватели представлены лампами для демонстрационных целей.
Клавиатура или клавиатура
Обычно клавиатуры или клавиатуры используются в качестве устройств ввода для компьютеров. Но среди различных типов интерфейсных устройств клавиатура также является одним из часто используемых периферийных устройств.Как правило, клавиатура или клавиатура состоит из строк и столбцов, которые называются матричными клавиатурами (m строк * n колонок клавиатур). Они связаны с микроконтроллером для ввода значений или имен, когда это требуется для схемы.
Клавиатура или клавиатураПрименение клавиатуры в качестве устройства сопряжения
Система безопасности с изменяемым пользователем паролем представляет собой практическое приложение, в котором клавиатура используется в качестве одного из устройств сопряжения. Система блокировки дверей на основе пароля используется для обеспечения безопасности дома, организации, офиса или компании.В этой системе открытие или закрытие двери может осуществляться только путем ввода правильного пароля. Для ввода пароля используется клавиатура или клавиатура с микроконтроллером 8051.
Применение клавиатуры в качестве комплекта для проекта устройства сопряжения от Edgefxkits.comТаким образом, система позволит избежать несанкционированного доступа к дверям. Даже если любую несанкционированную попытку управления дверью можно изменить с помощью системы охранной сигнализации, обозначенной здесь лампой. В этом проекте мы можем улучшить безопасность системы, используя множество сопряженных устройств, таких как клавиатура, реле, EEPROM, GSM модем.
Применение клавиатуры в качестве интерфейсной схемы устройства Edgefxkits.comКлавиатура используется для ввода пароля, уполномоченное лицо может изменить пароль с помощью внешних периферийных устройств, таких как EEPROM. Кроме того, GSM-модем с микроконтроллерным интерфейсом может быть использован для отправки SMS-сообщения с уведомлением уполномоченному лицу о несанкционированной попытке, если таковая имеется, для управления дверью с неверным паролем.
ЖК-дисплейЖК-дисплей или жидкокристаллический дисплей является одним из наиболее часто используемых устройств сопряжения, состоящих из жидких кристаллов.Это можно рассматривать как комбинацию твердого и жидкого (непосредственно жидкость не используется, но на самом деле используются жидкие кристаллы воды). Эти ЖК-дисплеи используют жидкие кристаллы для получения видимых изображений. ЖК-дисплеи представляют собой сверхтонкую технологию отображения экрана, которая используется в мобильных телефонах, телевизорах, портативных видеоиграх, ноутбуках, компьютерных мониторах, портативных видеоиграх.
ЖК-дисплейПрименение интерфейса LCD с микроконтроллером
Система посещаемости на основе RFID представляет собой практическое применение интерфейса ЖК-дисплея с микроконтроллером 8051.Эта система представляет собой современный способ получения посещаемости учащихся в классе и позволит избежать обычной системы ручного посещения, отнимающей много времени.
Применение интерфейса LCD с Microcontroller Project Kit от Edgefxkits.comВ этом проекте данные о каждом ученике хранятся на карточке, которая используется для идентификации при посещении учеников. Если студент помещает свою карту перед считывателем RFID-карт, эти данные считываются и проверяются путем сравнения их с ранее сохраненными данными микроконтроллера 8051.На основании проверки соответствия данных на ЖК-дисплее отображается сообщение. ЖК-дисплеи взаимодействуют с микроконтроллером, который используется для отображения подтверждающего сообщения, независимо от того, присутствует студент или отсутствует.
Если требуется информация о посещаемости учащегося, то можно нажать кнопку состояния, которая связана с посещаемостью микроконтроллера. Таким образом, эта система экономит много времени, так как данные хранятся в базе данных. Взаимодействуя с этим проектом системы GSM, ее можно использовать для отправки SMS-уведомлений родителям учащихся о посещаемости.
Применение ЖК-интерфейса с микроконтроллером Блок-схема Edgefxkits.comДля получения технической помощи по проектам в области электроники, которые разработаны с использованием сопрягающих устройств, таких как OLED, настраиваемый ЖК-дисплей, флэш-память, RTC, серводвигатель, сенсорные дисплеи и т. Д. ., пожалуйста, посетите www.edgefxkits.com или вы можете обратиться к нам, разместив свои комментарии в разделе комментариев ниже.
Микроконтроллер — это компьютер. Все компьютеры — речь идет о персональном настольном компьютере, большом мэйнфрейме или микроконтроллере — имеют несколько общих черт:
- Все компьютеры имеют ЦП (центральный процессор), который выполняет программы. Если вы сейчас сидите за настольным компьютером и читаете эту статью, процессор на этом компьютере выполняет программу, которая реализует веб-браузер, отображающий эту страницу.
- CPU загружает программу откуда-то. На настольном компьютере программа браузера загружается с жесткого диска.
- Компьютер имеет некоторое ОЗУ (оперативное запоминающее устройство), где он может хранить «переменные».
- И у компьютера есть несколько устройств ввода и вывода, чтобы он мог общаться с людьми. На настольном компьютере клавиатура и мышь являются устройствами ввода, а монитор и принтер — устройствами вывода. Жесткий диск — это устройство ввода-вывода — он обрабатывает как ввод, так и вывод.
Используемый вами настольный компьютер — это «компьютер общего назначения», который может запускать любую из тысяч программ.Микроконтроллеры — это «компьютеры специального назначения». Микроконтроллеры делают одну вещь хорошо. Существует ряд других общих характеристик, которые определяют микроконтроллеры. Если компьютер соответствует большинству этих характеристик, то вы можете назвать его «микроконтроллером»:
- Микроконтроллеры
- — это « встроенный » внутри какого-либо другого устройства (часто это потребительский продукт), чтобы они могли контролировать функции или действия продукта. Поэтому другое название микроконтроллера — «встроенный контроллер».« Микроконтроллеры
- — это , выделенные для одной задачи и запускающие одну конкретную программу. Программа хранится в ПЗУ (постоянное запоминающее устройство) и, как правило, не изменяется. Микроконтроллеры
- часто представляют собой устройств с низким энергопотреблением . Настольный компьютер почти всегда подключен к сетевой розетке и может потреблять 50 ватт электроэнергии. Микроконтроллер с батарейным питанием может потреблять 50 милливатт
- Микроконтроллер имеет выделенное устройство ввода и часто (но не всегда) имеет небольшой светодиод или ЖК-дисплей для вывода .Микроконтроллер также получает данные от устройства, которым он управляет, и управляет устройством, посылая сигналы различным компонентам в устройстве. Например, микроконтроллер внутри телевизора принимает вход от пульта дистанционного управления и отображает вывод на экране телевизора. Контроллер управляет селектором каналов, акустической системой и некоторыми настройками электроники кинескопа, такими как оттенок и яркость. Контроллер двигателя в автомобиле получает данные от датчиков, таких как датчики кислорода и детонации, и управляет такими вещами, как топливная смесь и время зажигания.Контроллер микроволновой печи принимает ввод с клавиатуры, отображает вывод на ЖК-дисплее и управляет реле, которое включает и выключает микроволновый генератор.
- Микроконтроллер часто бывает небольшим и недорогим . Компоненты выбраны таким образом, чтобы минимизировать размер и быть как можно более дешевыми.
- Микроконтроллер часто, но не всегда, в некотором смысле . Например, микроконтроллер, управляющий двигателем автомобиля, должен работать при экстремальных температурах, с которыми обычный компьютер обычно не справляется.Микроконтроллер автомобиля на Аляске должен нормально работать при -30 градусах F (-34 C), в то время как тот же микроконтроллер в Неваде может работать при 120 градусах F (49 C). Когда вы добавляете тепло, естественным образом генерируемое двигателем, температура в моторном отсеке может доходить до 150 или 180 градусов F (65-80 C). С другой стороны, микроконтроллер, встроенный в видеомагнитофон, вообще не имеет повышенной прочности.
Фактический процессор , используемый для реализации микроконтроллера, может широко варьироваться.Например, сотовый телефон, показанный на вкладке «Внутри цифрового сотового телефона», содержит процессор Z-80. Z-80 — это 8-битный микропроцессор, разработанный в 1970-х годах и изначально использовавшийся в домашних компьютерах того времени. Мне сказали, что Garmin GPS, показанный в разделе «Как работают GPS-приемники», содержит версию Intel 80386 с низким энергопотреблением. Изначально 80386 использовался в настольных компьютерах.
Во многих продуктах, таких как микроволновые печи, спрос на процессор довольно низкий, и цена является важным фактором.В этих случаях производители обращаются к специализированным микросхемам микроконтроллеров — микросхемам, которые изначально были предназначены для недорогих, небольших и маломощных встроенных процессоров. Motorola 6811 и Intel 8051 являются хорошими примерами таких чипов. Существует также линейка популярных контроллеров под названием «PIC microcontrollers», созданная компанией Microchip. По сегодняшним стандартам эти процессоры невероятно минималистичны; но они чрезвычайно недороги при покупке в больших количествах и часто могут удовлетворить потребности дизайнера устройства с одним чипом.
Типичная микросхема микроконтроллера младшего класса может иметь 1000 байтов ПЗУ и 20 байтов ОЗУ на чипе вместе с восемью выводами I / 0. В больших количествах стоимость этих чипов иногда может составлять всего лишь копейки. Вы, конечно, никогда не собираетесь запускать Microsoft Word на таком чипе — Microsoft Word требует, возможно, 30 мегабайт оперативной памяти и процессор, который может выполнять миллионы инструкций в секунду. Но тогда вам не нужен Microsoft Word для управления микроволновой печью. С микроконтроллером у вас есть одна конкретная задача, которую вы пытаетесь выполнить, и важна низкая стоимость и низкое энергопотребление.
,микроконтроллеров для машинного обучения и AI
Глубокое обучение и машинное обучение. Они всегда ассоциировались с большими компьютерами с быстрыми процессорами и графическими процессорами, большим объемом оперативной памяти или работающими алгоритмами в облаке.
Тем не менее, представьте себе, как вы выполняете машинное обучение на микроконтроллере, работающем от батареи с одной монеткой. Вы можете подумать о невозможном, но с современной технологией невозможное теперь возможно с микроконтроллерами.
Прямо сейчас вопрос в ваших головах может быть теперь «Но как ?!» или «Насколько это может быть хорошо?».Ну, не беспокойтесь, мы получили ответы. Сегодня мы поговорим о:
- Зачем использовать микроконтроллеры для машинного обучения и AI
- микроконтроллеров для машинного обучения Сравнение
- — Какой микроконтроллер лучше подходит для машинного обучения?
Зачем использовать микроконтроллеры для машинного обучения и искусственного интеллекта?
Итак, главный вопрос в том, зачем вообще использовать микроконтроллеры для машинного обучения и ИИ, когда у вас так мало памяти для работы?
Несмотря на небольшие объемы памяти, они имеют различные преимущества, которые перевешивают этот недостаток.Они являются:
Низкое энергопотребление
- Благодаря своим небольшим размерам, за счет вычислительной мощности, памяти и памяти, микроконтроллеры потребляют очень мало энергии и являются эффективными.
- Обычно для питания графического процессора и компьютеров требуется много энергии для машинного обучения, что вызывает ограничения и ограничения.
- Однако для микроконтроллеров это другая история. Микроконтроллеры обычно не подключены к главному источнику питания и зависят от батарей или сбора энергии.Например, микроконтроллер может работать от одной батарейки в течение нескольких недель или даже месяцев.
- Это делает микроконтроллеры простыми в установке и реализации, так как не требует подключения к основному источнику питания.
Стоимость
- Обычно для машинного обучения нужно потратить несколько тысяч на создание высокопроизводительной рабочей станции для машинного обучения.
- Однако, с микроконтроллерами, вы можете легко получить один на 200 долларов и ниже, которые также являются надежными.
Гибкость
- Микроконтроллеры очень распространены. Они в основном повсюду вокруг нас, такие как наша бытовая техника, игрушки, автомобили и т. Д. Возможности безграничны, когда мы переносим машинное обучение на микроконтроллеры
- С помощью микроконтроллеров вы можете добавлять ИИ к различным устройствам, не полагаясь на сетевое подключение, которое обычно ограничивается пропускная способность, мощность и высокая задержка.
Конфиденциальность
- Обычно для машинного обучения вам придется записывать все ваши необработанные данные в облако, которое может содержать конфиденциальную или личную информацию.
- Для микроконтроллеров пользователям не нужно беспокоиться об этой проблеме, так как никакие данные не должны будут покидать устройство.
Рекомендуемые микроконтроллеры для машинного обучения
Здесь, в Seeed, мы предлагаем различные микроконтроллеры для удовлетворения потребностей вашего проекта машинного обучения. Они являются:
Coral Dev Board
- Coral Dev Board — это одноплатный компьютер со съемной системой на модуле (SOM), которая содержит eMMC, SOC, беспроводные радиостанции и Google Edge TPU.Он идеально подходит для устройств IoT и других встроенных систем, которые требуют быстрого вывода ML на устройство.
- Характеристики:
Coral Dev Board | |
---|---|
Core Speed | NXP i.MX 8M SOC (четырехъядерный процессор Cortex-A53, плюс Cortex-M4F) |
GPU | Встроенная графическая карта GC7000 Lite |
RAM | 1 ГБ LPDDR4 |
Совместимость программного обеспечения | ПоддержкаTensorflow Lite — не нужно создавать модели с нуля. |
Дополнительные функции | -SOM может быть удален с основанной платы. — Ускорение машинного обучения — сопроцессор Google Edge TPU |
Цена | $ 149,99 |
Комплект разработчика NVIDIA® Jetson Nano ™
- Комплект разработчика NVIDIA® Jetson Nano ™ обеспечивает вычислительную производительность для выполнения современных рабочих нагрузок ИИ при беспрецедентных размерах, мощности и стоимости. Разработчики, учащиеся и создатели теперь могут запускать структуры и модели ИИ для таких приложений, как классификация изображений, обнаружение объектов, сегментация и обработка речи.
- Характеристики:
Комплект разработчика NVIDIA® Jetson Nano ™ | |
---|---|
Core Speed | четырехъядерный ARM A57 @ 1,43 ГГц |
GPU | 128-ядерный графический процессор NVIDIA Maxwell ™ |
RAM | 4 ГБ, 64-разрядная LPDDR4 25,6 ГБ / с |
Совместимость программного обеспечения | Поддержка Tensorflow, PyTorch, Caffe / Caffe2, Keras, MXNet и другие |
Дополнительные функции | — Многопотоковая видеоаналитика — обработка до 8 HD потоковых видео в режиме реального времени с NVIDIA DeepStream SDK |
Цена | — 99 долларов00 |
Sipeed MAIX GO Suit (MAIX GO + 2,8-дюймовый ЖК-дисплей + ov2640 с объективом M12)
- MAIX — специализированный модуль Sipeed, предназначенный для запуска ИИ на краю. Он обеспечивает высокую производительность при небольшом физическом и энергопотреблении, позволяя развернуть высокоточный ИИ на границе, а конкурентоспособная цена делает возможным встраивание в любые устройства IoT.
- Характеристики:
Sipeed MAIX GO Костюм | |
---|---|
Core Speed | RISC-V Двухъядерный 64-битный, 400 МГц, регулируемый |
GPU | Внутри KPU (процессор нейронной сети), 64 KPU с шириной 576 бит и APU (аудио процессор), поддержка 8 микрофонов, частота дискретизации до 192 кГц. |
RAM | Высокоскоростная SRAM 8 МБ, частота 400 МГц (может достигать 800 МГц) |
Совместимость программного обеспечения | поддерживает Tiny-Yolo, Mobile Net-v1, Tensorflow, FreeRTOS и MicroPython |
Дополнительные функции | — Макетная доска и микропифон. — Открытый источник. — на плате JTAG & UART на основе STM32F103C8, отладка M1 без дополнительной Jlink. -Имеет чип управления литиевой батареей с функцией управления трактом питания, позволяющий вам использовать плату с литиевой батареей и питанием от USB без конфликтов. |
Цена | $ 40,90 для MAIX GO Suit, который включает — Sipeed MAIX GO Dev Board. — ЖК-дисплей 2,8 дюйма — OV2640 с объективом M12 4 мм — Акриловый чехол — Антенна Wi-Fi — USB-кабель типа C — Литий-ионный аккумулятор — Винт и шпилька |
Raspberry Pi 4 Компьютер Модель B
- Raspberry Pi 4 Model B является новейшим продуктом в популярной линейке компьютеров Raspberry Pi.Он предлагает революционное увеличение скорости процессора, производительности мультимедиа, памяти и подключения, сохраняя обратную совместимость и потребление энергии, аналогичное Raspberry Pi 3 Model B + предыдущего поколения.
- Характеристики:
Raspberry Pi 4 Компьютер Модель B 4GB | |
---|---|
Core Speed | Broadcom BCM2711, четырехъядерный процессор Cortex-A72 (ARM v8) 64-разрядный SoC @ 1,5 ГГц |
GPU | Broadcom VideoCore VI |
RAM | 1 ГБ, 2 ГБ или 4 ГБ LPDDR4 (в зависимости от модели) |
Совместимость программного обеспечения | -Совместим с TensorFlow (Имеет документацию и курсы для RPi 4) |
Дополнительные функции | — Совместимость с USB-акселератором Coral для дальнейшего ускорения возможностей машинного обучения RPi 4 — Совместимость с наборами Google для искусственного интеллекта (AIY). |
Цена | 4 ГБ — 55 долларов США 2 ГБ — 45 долларов США 1 ГБ — 35 900 долларов США |
ROCK Pi 4 Модель B 4GB
- ROCK PI — это одноплатный компьютер (SBC) в ультрамалом форм-факторе, обеспечивающий лучшие в своем классе характеристики и превосходную механическую совместимость. ROCK PI предлагает производителям, энтузиастам IoT, хобби, PC-энтузиастам и другим надежную и чрезвычайно эффективную платформу для построения и воплощения своих идей в жизнь.
ROCK Pi 4 Модель B 4GB | |
---|---|
Core Speed | Dual Cortex-A72, частота 1,8 ГГц с четырехъядерным Cortex-A53, частота 1,4 ГГц |
GPU | Mali T860MP4 GPU, поддерживает OpenGL ES 1.1 /2.0 /3.0 /3.1 /3.2, Vulkan 1.0, Open CL 1.1 1.2, DX11. |
RAM | 64-битный двухканальный LPDDR4 @ 3200 Мбит / с, 4 ГБ, 2 ГБ или 1 ГБ в зависимости от модели |
Совместимость программного обеспечения | — Совместим с Tensorflow (аналог Raspberry Pi 4) |
Дополнительные функции | — Промышленный стандартный разъем MIPI CSI облегчает подключение существующих камер к ROCK Pi, а R OCK Pi также поддерживает промышленный стандарт MIPI DSI для ЖК-дисплея и сенсорного экрана. — ROCK Pi поддерживает основной AI-стек с ускорением GPU. — Специальный аппаратный ускоритель NPU, который в настоящее время разрабатывается, усилит сложный алгоритм машинного обучения и уменьшит мощность. |
Цена | 4 ГБ — $ 75 2 ГБ — $ 59 1 ГБ — $ 49 |
Какой микроконтроллер лучше всего подходит для машинного обучения?
К сожалению, в чем-то нет ничего лучшего. То же самое касается микроконтроллеров! Каждый микроконтроллер и одноплатные компьютеры имеют свои плюсы и минусы и уникальные функции, которые отличают их друг от друга.Не беспокойтесь, так как мы выделили все «за» и «против», чтобы вы знали, какую плату купить лучше всего подходит для вашего проекта!
Лучшая производительность / мощность: Coral DevBoard
- Плюсы:
- Поскольку у Coral DevBoard установлен новейший чип
NXP i.MX 8M SOC (четырехъядерный Cortex-A53, плюс Cortex-M4F), он также является самым эффективным из всех микроконтроллеров. - Поддерживает Wi-Fi и Bluetooth.
- Встроенный TPU способен выполнять 4 триллиона операций (тераопераций) в секунду (TOPS), используя 0.5 Вт на каждую ТОП (2 ТОП на ватт).
- Имеет устройства обработки видео и графический процессор Vivante GC700 lite, который можно использовать для традиционной обработки изображений и видео. Он также имеет микроконтроллер малой мощности Cortex-M4F, который можно использовать для связи с другими датчиками, такими как датчик температуры, датчик внешней освещенности и т. Д. ваша основа глубокого обучения, негибкая и неспособная использовать любое другое программное обеспечение.
- Самый дорогой из всех других плат разработчиков на $ 149,99.
- Поскольку у Coral DevBoard установлен новейший чип
Лучшая гибкость: Jetson Nano
- Плюсы:
- Улучшенная и расширенная поддержка сред глубокого обучения, таких как
Tensorflow, PyTorch, Caffe / Caffe2, Keras, MXNet и многих других. - Хорошая библиотека поддержки.
- Имеет блок кодирования и декодирования видео, а также поддерживает библиотеку ускорителей NVidia TensorRT для вывода FP16 и вывода INT8.
- Ускорение GPU с плавающей запятой.
- Улучшенная и расширенная поддержка сред глубокого обучения, таких как
- Минусы:
- Более слабое ядро, чем у Coral Dev Board, однако оно обеспечивает достойную производительность, но не столь эффективно.
- Требуется дополнительный внешний ключ Wi-Fi для Wi-Fi.
: Sipeed MAIX GO
- Плюсы:
- Это, пожалуй, самая дешевая плата для разработчиков, которую вы можете найти на рынке в настоящее время, по сравнению с другими 3 по цене 40 долларов.90 для всего костюма, который поставляется с чехлом, сенсорный ЖК-дисплей, объектив камеры, антенна Wi-Fi, USB-кабель типа C, литий-ионный аккумулятор с винтом и шпильками.
- Предоставляет комплексную аппаратную и программную инфраструктуру для облегчения работы пользователей. Решения на основе искусственного интеллекта.
- . Он имеет небольшой размер 88×60 мм, что позволяет встроить его на периферии любого устройства IoT.
- Способен запускать микрофитон на доске.
- Минусы:
- Документация и поддержка не так развиты по сравнению с другими платами разработки на данном этапе.
- Поддержка библиотек не так развита по сравнению с другими.
Лучшая поддержка: Raspberry Pi 4
- Плюсы:
- Дешевый вариант для SBC, начиная с 35 долларов за 1 ГБ.
- Хорошая вычислительная мощность процессора благодаря четырехъядерному 64-разрядному процессору Broadcom BCM2711 Cortex-A72 (ARM v8) с тактовой частотой 1,5 ГГц.
- Рекомендуется для начинающих, так как имеет одно из самых больших сообществ и поддержку для отладки. Он также имеет много подробных уроков и проектов для Raspberry Pi 4.У этого также есть хорошая документация.
- Совместим с USB-ускорителем Coral по цене $ 74,99 для дальнейшего улучшения его возможностей машинного обучения.
- Минусы:
- Более слабый графический процессор по сравнению с другими платами.
- В сочетании с USB-ускорителем Coral общая стоимость увеличивается до 100 долларов и выше.
- Требуется дополнительный радиатор и вентилятор для устойчивого вывода для предотвращения перегрева.
Боретесь с проблемами перегрева с помощью Raspberry Pi 4? Не беспокойтесь, мы покрыли вас нашим:
Blink Blink ICE Tower Вентилятор охлаждения процессора для Raspberry Pi
- Имеет башенную конструкцию с 5-миллиметровой медной трубкой, многослойными радиаторами и 7 мощными лопастями вентилятора, которые могут снизить температуру Raspberry Pi с 80 ℃ до 40 ℃.
Альтернатива для Raspberry Pi 4: ROCK Pi 4 Модель B
- Плюсы:
- Имеет более производительные CPU и GPU для машинного обучения.
- Возможность официально запускать ОС Android
- Поддерживает основной AI-стек с ускорением графического процессора, что хорошо для приложений компьютерного зрения, робототехники и т. Д.
- Минусы:
- Сообщество и поддержка не так надежны по сравнению с Raspberry Pi как сообщество меньше.Отладка может быть проблемой для начинающих и начинающих пользователей, поскольку документация может быть не такой хорошей.
- Не так много аксессуаров для Rock Pi 4 по сравнению с Raspberry Pi 4, поскольку некоторые аксессуары не совместимы с Rock Pi 4.
- Более дорогие по цене от 49 до 75 долларов по сравнению с Raspberry Pi 4 по 35 долларов за $ 55.
- Для Rock Pi 4 поддерживается меньше операционных систем по сравнению с Raspberry Pi.
Резюме
Вот и все для машинного обучения и искусственного интеллекта на микроконтроллерах! Надеюсь, что руководство поможет вам выбрать микроконтроллер для вашего проекта!
Если у вас мало или нет знаний об искусственном интеллекте как о производителе, вы можете посетить наш другой блог «Введение в искусственный интеллект для создателей», чтобы узнать больше, прежде чем приступить к созданию своего собственного проекта машинного обучения!
Хотите узнать больше о микроконтроллерах машинного обучения и аксессуарах для ваших плат разработки? Проверьте наш базар здесь, чтобы узнать больше!
Пожалуйста, следуйте и нам нравится:
Теги: AI, AI Аппаратные средства, AI Raspberry Pi, Coral Dev Board, Глубокое обучение, Jetson Nano, Машинное обучение, микроконтроллер, NVIDIA Jetson Nano, Raspberry Pi 4, машинное обучение, Raspberry Pi 4 Model B, Rock Pi 4 Model B, Sipeed Maix , Sipeed Maix GO, TensorFlow, Tensorflow Lite, зачем использовать микроконтроллер для машинного обученияПродолжить чтение
,Микроконтроллеры— Руководство для начинающих
Microcontroller. Руководство для начинающих. Введение в интерфейс ЖК-дисплея Crystal Display)
Микроконтроллер — замечательный инженерный проект, и он может делать много вещей (с помощью некоторого отличного программирования), но это все еще непрозрачный черный ящик. Если вы хотите, чтобы оно делилось информацией или показывало, что оно пытается сделать, вам нужно подключить (интерфейс) устройства вывода.Устройство вывода — это то, что позволяет отображать информацию из микроконтроллер. То есть устройство вывода позволяет микроконтроллеру «выводить» информацию на «устройство». Мы уже работали с другим устройством вывода, называемым светодиодом (Light Emitting Diode), который испускает свет при программировании это сделать так. Мы подробно рассмотрим взаимодействие и программирование ЖК-дисплея (жидкокристаллический дисплей).
ЖК-дисплей является гораздо более информативным устройством вывода, чем один светодиод.ЖК-дисплей является дисплей, который может легко показывать символы на своем экране. LCDs ассортимент по размеру, цене и конфигурация, от пары строк до больших дисплеев. Некоторые даже очень специально разработан для одного приложения, имея только эту способность отображать установленную графику. Мы будем использовать ЖК-дисплей, который имеет возможность отображать четыре (4) строки символов, длина строки которых составляет 20 символов. Этого вполне достаточно показать совсем немного информации.Еще один популярный ЖК-дисплей имеет 2 строки и 16 символов за строку
В этом видеоуроке мы рассмотрим, как ЖК-дисплей получает информацию и управление, и требования, чтобы убедиться, что информация отправляется на ЖК-дисплей в пути что он может надлежащим образом принять информацию. Итак, что все это значит?
Во-первых, мы имеем несоответствие скорости между ЖК-дисплеем и микроконтроллером. Микроконтроллер намного быстрее, чем ЖК-дисплей, поэтому программа микроконтроллера должна быть полностью осведомленным об этом и компенсировать время, в течение которого ЖК-дисплей занят работой о вещах, которые ты сказал это только что. К счастью, ЖК-дисплей может сообщить нам об этом заняты положение дел. Итак, мы создадим функцию ожидания, пока ЖК-дисплей не будет занят. Для ЖК-дисплей для приема информации от микроконтроллера или для предоставления информации, мы должны включать и выключать его разрешающий контакт, пока информация для LCD принять.
Так сейчас самое время поговорить о выводах на ЖК-дисплее. Самый основной из контакты — это контакты питания для дисплея, чтобы он мог функционировать в первом место. Имеется вывод VDD на 5 вольт и вывод VSS для заземления. Есть пин V0 для регулировки контрастности ЖК-дисплея. Некоторые ЖК-дисплеи даже имеют светодиодную подсветку и как правило, последние два пина.
Так же, как и микроконтроллер, ЖК-дисплей имеет ряд из 8 контактов, которые служат его портом.Контакты, которые служат его портом, это D0, D1, D2, D3, D4, D5, D6 и D7. Эти булавки обычно используются для передачи информации на ЖК-дисплей, но также могут быть установлены для передачи информация возвращается в микроконтроллер. Я знаю, вы, вероятно, думаете, «но Патрик (это я) сказал мне, что это устройство вывода?!? «. Ну, конечно, это так, но время от времени ему нужно будет информировать вас о своем состоянии (если он занят или нет). Через эти контакты можно передавать два типа информации: данные для отображения на ЖК-экран или управляющая информация, которая используется для выполнения таких задач, как очистка экран, управление положением курсора, включение или выключение дисплея и т. д.Эти контакты данных подключаются к контактам нужного порта микроконтроллера. Например, если вы хотите, чтобы ЖК-дисплей был подключен к PORTB, D0 был бы подключен к контакту 0 порта B и: D1-порт B, контакт 1, D2-портB, контакт 2, D3-портB, контакт 3, D4-порт B, контакт 4, D5-PortB Pin5, D6-PortB Pin6 и D7-PortB Pin7. Таким образом, есть пин-код согласованность, и если вы передаете символ в виде шестнадцатеричного числа, LCD примет это правильно.Если нет, то будут неожиданные результаты, если только Вы используете уникальную форму байтовой структуры, но не позволяйте этому мешать.
На ЖК-дисплее имеются другие контакты, которые помогают ЖК-дисплею принимать информацию , и сообщает ЖК-дисплею о получении символа или элемента управления , или контролирует чтение или запись (вход или выход) функция контактов . Просто чтобы уточнить, чтение / запись ориентирован на микроконтроллер: режим чтения «LCD» — это процесс передачи информации от ЖК-дисплея к микроконтроллеру (порт микроконтроллера установлен как вход или чтение или слушаю).; ЖК-режим «записи» передает информацию с микроконтроллера на ЖК-дисплей (микроконтроллер установлен для вывода или записи).
Вывод на ЖК-дисплее, отвечающий за состояние чтения и записи, помечен как R / W. Пин-код на ЖК-дисплее, который отвечает за то, является ли отправленная информация символом или контроль, это вывод RS (выбор регистра). И булавка, которая помогает ЖК принять Информация называется контактом EN (Включить).
Есть три основных вещи, которые вы хотите сделать с ЖК-дисплеем для правильного функционирования (более сложные функции могут быть выполнены с этими тремя основными процедурами): (1) убедиться, что ЖК-дисплей не занят; (2) Управление курсором ЖКД или функцией отображения; и (3) записать символ на ЖК-дисплей для его отображения. Каждый из них потребует свой собственный процесс:
(1) Проверка, занят ли ЖК-дисплей (Если вы пытаетесь отобразить символ на ЖК-дисплее во время ЖК-дисплей занят, тогда ЖК-дисплей просто проигнорирует символ и не будет отображаться).
- Мы настроили порт для приема данных на микроконтроллере (направление данных в качестве входных данных).
- переводим LCD в режим чтения (RW включен).
- переводим ЖК в командный режим (RS выключен).
- И теперь порт волшебным образом содержит данные с ЖК-дисплея (вывод D7 будет включен, если ЖК-дисплей занят и выключен, если он не занят).
(2) Отправить команду на ЖК-дисплей
- Проверяем, занят ли ЖК-дисплей (Выполните шаги, описанные в пункте 1 выше).
- Мы устанавливаем направление порта в качестве вывода, чтобы мы могли отправлять информацию на ЖК-дисплей.
- Мы выключаем RW, чтобы мы могли писать.
- Отключаем RS для командного режима.
- Мы запускаем линии данных с помощью команды, которую мы хотим (просто делая порт равным на номер, который ассоциируется с конкретной командой).
- Включаем, а затем выключаем.
- ЖК-дисплей волшебным образом выполнит команду.
(3) Отправить символ на ЖК-дисплей: это то же самое, что отправить команду, кроме RS включен, и порт будет соответствовать символу, соответствующему коду ASCII.
Итак, мы на самом деле просто включаем и выключаем контакты, как мы это делали со светодиодами из прошлые уроки. Это так просто. Единственный улов в том, что они должны быть сделано в правильной последовательности.
,