Как создать устройства на микроконтроллерах самостоятельно. Какие схемы можно собрать на AVR и Arduino. Где найти готовые проекты для повторения. Какие компоненты потребуются для сборки электронных устройств на микроконтроллерах.
Простые проекты на микроконтроллерах для начинающих
Для тех, кто только начинает осваивать микроконтроллеры, лучше всего подойдут несложные проекты, не требующие глубоких знаний программирования и электроники. Вот несколько идей для начинающих:
- Светодиодный куб 3x3x3 на Arduino — позволяет создать эффектную светодиодную инсталляцию
- Электронные часы на семисегментных индикаторах — классический проект для освоения работы с дисплеями
- Термометр с выводом на LCD-экран — знакомит с подключением датчиков и экранов
- «Бегущая строка» на светодиодной матрице — учит основам динамической индикации
- Музыкальный синтезатор на Arduino — демонстрирует работу со звуком
Эти проекты позволят на практике освоить основы схемотехники и программирования микроконтроллеров. Их можно легко повторить, используя готовые схемы и программы из интернета.
![](/800/600/https/radiostorage.net/uploads/Image/schemes/radio/shema-rk16-078-56.png)
Автомобильные устройства на микроконтроллерах
Микроконтроллеры позволяют создавать различные полезные устройства для автомобиля. Рассмотрим несколько популярных самоделок:
Индикатор уровня топлива
Цифровой индикатор уровня топлива на микроконтроллере ATmega8 позволяет точно контролировать остаток бензина в баке. Устройство подключается к штатному датчику уровня топлива и выводит данные на LED-дисплей. Основные компоненты:
- Микроконтроллер ATmega8
- 7-сегментный LED-дисплей
- Стабилизатор напряжения 7805
- Резисторы, конденсаторы
«Незабывайка» для автомобильных фар
Устройство на ATtiny13 сигнализирует о забытых включенных фарах при выключении зажигания. Также может пикать при включении задней передачи. Компоненты:
- Микроконтроллер ATtiny13
- Пьезоизлучатель
- Транзистор КТ3102
- Резисторы, диоды
Контроллер дневных ходовых огней
Позволяет использовать лампы дальнего света в качестве ДХО, включая их на пониженную мощность. Основа — микроконтроллер ATtiny45. Схема содержит:
- ATtiny45
- MOSFET-транзистор IRF3205
- Стабилизатор L7805
- Оптопара PC817
Эти проекты позволяют улучшить функциональность автомобиля с минимальными затратами.
![](/800/600/https/bascom.at.ua/2011/Sumerki_ONoff/Shem.jpg)
Устройства для дома и быта на микроконтроллерах
Микроконтроллеры находят широкое применение в бытовой технике и домашней автоматизации. Рассмотрим несколько интересных самоделок:
Контроллер для электрочайника
Устройство на базе ATmega8 позволяет контролировать температуру воды в чайнике и поддерживать ее на заданном уровне. Основные компоненты:
- Микроконтроллер ATmega8
- Датчик температуры LM35
- Семисегментный индикатор
- Реле для коммутации нагревательного элемента
Циклический таймер для управления освещением
Двухканальный таймер на ATmega328 позволяет управлять включением/выключением освещения по заданному расписанию. Особенности:
- 2 независимых канала управления
- Режимы работы: логический и ШИМ
- Настройка интервалов через меню
- Сохранение настроек в EEPROM
Декоративная RGB-звезда
Светодиодная инсталляция на ATtiny44 создает красивые световые эффекты. Характеристики:
- 50 RGB-светодиодов
- Случайное изменение цвета и яркости
- Несколько режимов работы
- Регулировка основных цветов потенциометрами
Такие устройства делают быт удобнее и позволяют создать уютную атмосферу в доме.
![](/800/600/https/kaligraf.narod.ru/image/timer_4c_ok_shema.png)
Измерительные приборы на микроконтроллерах
Микроконтроллеры позволяют создавать различные измерительные приборы с хорошими характеристиками. Рассмотрим несколько примеров:
Частотомер на ATmega88
Устройство позволяет измерять частоту в диапазоне от 0,45 Гц до 10 МГц. Основные особенности:
- 7 автоматически переключаемых диапазонов
- Разрешение до 0,000001 Гц
- Измерение периода от 0,1 до 2,2 мкс
- 7-разрядный светодиодный дисплей
Вольтметр на ATtiny13
Компактный вольтметр с посегментной разверткой индикатора. Характеристики:
- Диапазон измерения 0-99,9 В
- Автоматическое определение типа индикатора
- Программируемое переключение шкал
- Минимальные габариты
Термометр с LCD-дисплеем
Простой цифровой термометр на ATmega8 с выводом на ЖК-экран. Состав:
- Микроконтроллер ATmega8
- Датчик DS18B20
- LCD-дисплей 16×2 символа
- Кнопки управления
Такие самодельные приборы часто не уступают по характеристикам промышленным аналогам, при этом стоят значительно дешевле.
Программаторы для микроконтроллеров своими руками
Для прошивки микроконтроллеров необходим программатор. Его также можно собрать самостоятельно. Рассмотрим два популярных варианта:
![](/800/600/https/ucprog.ucoz.ru/08/skhema_clock_2ds_4ms.jpg)
Программатор Громова
Простейший программатор для AVR микроконтроллеров. Особенности:
- Подключение через LPT-порт компьютера
- Поддержка внутрисхемного программирования
- Минимум компонентов — всего 4 резистора
- Работает с большинством AVR МК
USBasp программатор
Более функциональный USB-программатор для AVR. Характеристики:
- Подключение через USB-порт
- Поддержка большинства AVR микроконтроллеров
- Высокая скорость программирования
- Возможность обновления прошивки
Наличие самодельного программатора позволяет экспериментировать с микроконтроллерами без лишних затрат.
Проекты на платформе Arduino
Arduino — популярная платформа для быстрого прототипирования на базе микроконтроллеров AVR. Рассмотрим несколько интересных проектов:
Метеостанция на Arduino
Домашняя метеостанция с датчиками температуры, влажности и давления. Компоненты:
- Arduino Uno
- Датчик BME280
- LCD-дисплей 20×4
- Модуль часов реального времени DS3231
Робот-манипулятор
Простой робот-манипулятор на базе Arduino с сервоприводами. Состав:
![](/800/600/https/microkontroller.ru/wp-content/uploads/2016/03/Shema-trehkanalnogo-termostata-termoregulyatora-taymera-na-ATmega8.png)
- Arduino Nano
- 4 сервопривода MG90S
- Джойстик
- Батарейный отсек
MIDI-контроллер
Устройство для управления музыкальным ПО по протоколу MIDI. Включает:
- Arduino Leonardo
- Потенциометры
- Кнопки
- MIDI-разъем
Arduino позволяет быстро реализовывать сложные проекты благодаря большому количеству готовых библиотек и модулей расширения.
На микроконтроллере » Автосхемы, схемы для авто, своими руками
Бывает идешь мимо припаркованных машин, и замечаешь краем глаза, что кто то уже давно, судя по тусклому свечению ламп, забыл свет выключить. Кто то и сам так попадал. Хорошо когда есть штатный сигнализатор не выключенного света, а когда нету поможет вот такая поделка: Незабывайка умеет пищать, когда не выключен свет и умеет пропикивать втыкание задней передачи.
Схема цифрового индикатора уровня топлива обладает высокой степенью повторяемости, даже если опыт работы с микроконтроллерами незначителен, поэтому разобраться в тонкостях процесса сборки и настройки не вызывает проблем. Программатор Громова – это простейший программатор, который необходим для программирования avr микроконтроллера. Программатор Горомова хорошо подходит как для внутрисхемного, так и для стандартного схемного программирования. Ниже приведена схема контроля индикатора топлива.
Плавное включение и выключение светодиодов в любом режиме (дверь открыта, и плафон включен). Так же авто выключение через пять минут. И минимальное потребление тока в режиме ожидания.
Вариант 1 — Коммутация по минусу. (с применением N-канальных транзисторов) 1) «коммутация по минусу», т.е такой вариант при котором один питающий провод лампы соединен с +12В аккумулятора (источника питания), а второй провод коммутирует ток через лампу тем самым включает ее. В данном варианте будет подаваться минус. Для таких схем нужно применять N-канальные полевые транзисторы в качестве выходных ключей.
Сам модем небольшого размера, недорог, работает без проблем, четко и быстро и вообще нареканий нет к нему. Единственный минус для меня был, это необходимость его включать и выключать кнопкой. Если его не выключать, то модем работал от встроенного аккумулятора, который в итоге садился и модем снова было нужно включать.
Принцип работы прост: привращении крутилки регулируется громкость, при нажатии — выключение-включение звука.
Изначально в Lifan Smily (да и не только) режим работы заднего дворника — единственный, и называется он «всегда махать». Особенно негативно воспринимается такой режим в наступивший сезон дождей, когда на заднем стекле собираются капли, но в недостаточном для одного прохода дворника количестве. Так, приходится либо слушать скрип резины по стеклу, либо изображать робота и периодически включать-выключать дворник.
Немного доработал схему реле времени задержки включения освещения салона для автомобиля Форд (схема разрабатывалась для вполне конкретного автомобиля, как замена штатного реле Ford 85GG-13C718-AA, но была успешно установлена в отечественную «классику»).
Уже не первый раз проскакивают такие поделки. Но почему-то люди жмуться на прошивки. Хотя в большинстве своём они основаны на проекте elmchan «Simple SD Audio Player with an 8-pin IC». Исходниник не открывают аргументируя, что пришлось исправлять проект, что в у меня качество лучше… и т.
Итак. Микроконтроллер Attiny 13- так сказать сердце данного устройства. С его прошивкой долго мучился, никак не мог прошить.Ни 5ю проводками через LPT, ни прогромматором Громова. Компьютер просто не видит контроллер и все.
В связи с нововведениями в ПДД, народ стал думать о реализации дневных ходовых огней. Один из возможных путей это включение ламп дальнего света на часть мощности, об этом и есть данная статья.
Это устройство позволит ближнему свету автоматически включиться при начале движения и регулирует напряжение на лампах, ближнего света, в зависимости от скорости с которой вы едите. Так же, это послужит более безопасному движению и продлит срок службы ламп.
Собрал реле таймера для выключения муфты кондиционера при открытии заслонки. Таймер срабатывает, если заслонка слишком сильно открылась, при возврате таймер делает задержку и выключается.
Моргающий центральный стоп-сигнал с настройкой микроконтроллера. Возможно регулировать частоту моргания, длительность до перехода в постоянное свечение и скважность вспышек моргания, вплоть до стробоскопа. Сделал замер выходной мощности. Держит ток нагрузки в 3.5 ампера, это примерно до 50-ти ватт подключаемой нагрузки.
Всем привет вот решил сделать еще один стробоскопчик. Cтробоскоп имеет 6 эффектов, в режиме габаритов можно поморгать стробами. Переключение эффектов стробоскопов осуществляется кнопкой SB1. При переключении воспроизводится звуковой сигнал, номер эффекта- количество звуковых сигналов.
Устройства на микроконтроллерах семейства AVR своими руками
В этой статье мы рассмотрим что такое фьюзы (Fuse Bits) в платах Arduino и как их можно использовать для повышения эффективности программ для данной платформы. Если говорить точнее, то понятие фьюзы следует соотносить не с платами Arduino, а с микроконтроллерами … Читать далее →
На данной странице представлена карта статей по микроконтроллерам AVR, опубликованным на нашем сайте «Мир микроконтроллеров». По мере добавления статей данной тематики данная карта статей также будет дополняться. Микроконтроллеры семейства AVR в настоящее время являются одними из самых популярных микроконтроллеров. Они … Читать далее →
Микроконтроллер ATtiny85 является удобной и сравнительно мощной альтернативой старшим моделям микроконтроллеров семейства AVR. Его применение особенно оправданно в тех случаях, когда вы стремитесь к минимизации размеров вашего устройства. Микросхема ATtiny85 содержит 8 контактов – 6 контактов ввода/вывода (включая Reset) и … Читать далее →
ATtiny – это серия самых маленьких микроконтроллеров из семейства AVR. Эти микроконтроллеры могут использовать большинство библиотек, доступных для платформы Arduino. ATtiny85 – это 8-пиновый 8-битный микроконтроллер семейства AVR. Его исключительно малый размер и низкое энергопотребление делают его чрезвычайно удобным для … Читать далее →
В этой статье мы рассмотрим создание портативного счетчика шагов (шагомера) на основе микроконтроллера AVR ATtiny85, акселерометра и гироскопа MPU6050, и OLED дисплея. Питание на шагомер будет подавать от простой батарейки на 3V, что позволяет сделать его достаточно компактным и удобным … Читать далее →
GPS модули широко используются в современной электронике для определения местоположения, основываясь на координатах долготы и широты. Системы мониторинга транспортных средств, часы GPS, системы предупреждения о чрезвычайных происшествиях, системы наблюдения – это лишь небольшой список приложений, в которых может потребоваться технология … Читать далее →
Как показывают многочисленные исследования в современном мире люди более склонны доверять машинам нежели другим людям. Сейчас, когда в мире активно развиваются такие технологии как искусственный интеллект, машинное обучение, чат-боты, синергия (совместная деятельность) между людьми и роботами с каждым годом все … Читать далее →
Двигатели постоянного тока относятся к числу наиболее часто используемых двигателей. Их можно встретить где угодно – начиная от простейших конструкций до продвинутой робототехники. В этой статье мы рассмотрим подключение двигателя постоянного тока к микроконтроллеру ATmega16 (семейство AVR). Но сначала немного … Читать далее →
Принцип действия датчиков Холла основан на так называемом «эффекте Холла», открытым Эдвином Холлом (Edwin Hall) в 1869 году. Этот эффект гласит: «эффект Холла основан на явлении возникновения поперечной разности потенциалов (называемой также холловским напряжением) при помещении проводника с постоянным током … Читать далее →
Широтно-импульсная модуляция (сокр. ШИМ, от англ. PWM — Pulse Width Modulation) является технологией, позволяющей изменять ширину импульсов в то время как частота следования импульсов остается постоянной. В настоящее время она применяется в разнообразных системах контроля и управления, а также в … Читать далее →
Лучшие эл схемы на микроконтроллерах сделай сам.
![](/800/600/https/a.d-cd.net/a4679bes-1920.jpg)
Принцип закрывания дверцы клетки весьма прост. Дверка клетки подпирается специальным упором, сделанным из медной проволоки. К упору крепится капроновая нить нужной длины. Если потянуть за нить, то упор соскальзывает, и дверка клетки под собственным весом закрывается. Но это в ручном режиме, а я хотел реализовать автоматический процесс без участия кого-либо.
Для управления механизмом закрывания дверцы клетки был применен сервопривод. Но в процессе работы он создавал шум. Шум мог спугнуть птицу. Поэтому сервопривод я заменил на коллекторный двигатель, взятый из радиоуправляемой машинки. Он работал тихо и идеально подходил, тем более что управлять коллекторным двигателем не составляло сложностей.
Для определения, находится ли уже птица в клетке, я использовал недорогой датчик движения. Сам датчик движения уже является законченным девайсом, и паять ничего не нужно. Но у данного датчика угол срабатывания весьма большой, а мне нужно, чтобы он реагировал только во внутренней области клетки. Для ограничения угла срабатывания я поместил датчик в цоколь, когда-то служившей эконом-лампы. Из картона вырезал своего рода заглушку с отверстием посередине для датчика. Пошаманив с расстоянием данной заглушки относительно датчика, настроил оптимальный угол для срабатывания датчика.
В качестве зазывалы для птиц я решил применить звуковой модуль WTV020M01 с записанным на микроSD карте памяти пением чижа и щегла. Именно их я и собирался ловить. Поскольку я использовал один звуковой файл, то и управлять звуковым модулем я решил простим способом, без использования протокола обмена между звуковым модулем и микроконтроллером.
При подаче на девятую ножку звукового модуля низкого сигнала, модуль начинал воспроизводить. Как только звук воспроизводился на пятнадцатой ноге звукового модуля, устанавливается низкий уровень. Благодаря этому микроконтроллер отслеживал воспроизведение звука.
Поскольку я реализовал паузу между циклами воспроизведения звука, то для остановки воспроизведения звука программа подает низкий уровень на первую ножку звукового модуля (reset). Звуковой модуль является законченным устройством со своим усилителем для звука, и, по большому счету, в дополнительном усилителе звука он не нуждается. Но мне данного усиления звука показалось мало, и в качестве усилителя звука я применил микросхему TDA2822M. В режиме воспроизведения звука потребляет 120 миллиампер. Учитывая, что поимка птицы займет какое-то время, в качестве автономной батареи питания я применил не совсем новый аккумулятор от бесперебойника (всё равно валялся без дела).
Принцип электронного птицелова прост, и схема состоит в основном из готовых модулей.
Программа и схема —
Теперь у меня на столе лежит два одинаковых программатора. А всё для того, чтобы попробовать новую прошивку. Эти близняшки буду шить друг друга. Все опыты проводятся под MS Windows XP SP3 .
Цель — увеличение скорости работы и расширение совместимости программатора.
Популярная среда разработки Arduino IDE привлекает большим количеством готовых библиотек и интересных проектов, которые можно найти на просторах Сети.
Некоторое время назад оказались в моем распоряжении несколько микроконтроллеров ATMEL ATMega163 и ATMega163L. Микросхемы были взяты из отслуживших свой срок девайсов. Данный контроллер очень похож на ATMega16, и фактически является его ранней версией.
Привет читателям Датагора! Мне удалось собрать вольтметр минимальных размеров с посегментной разверткой индикатора при довольно высокой функциональности, с автоматическим определением типа индикатора и выбором режимов.
Прочитав статьи Edward Ned’а, я собрал DIP-версию и проверил ее в работе. Действительно вольтметр работал, ток через вывод микросхемы к индикатору не превышал 16 миллиампер в импульсе, так что работа микросхемы без резисторов, ограничивающих токи сегментов, вполне допустима и не вызывает перегрузок элементов.
Не понравилось слишком частое обновление показаний на дисплее и предложенная шкала «999». Хотелось подправить программу, но исходных кодов автор не выкладывает.
В это же мне потребовались вольтметр и амперметр для небольшого блока питания. Можно было собрать на совмещенный вариант, а можно было собрать два миниатюрных вольтметра, причем габариты двух вольтметров получались меньше совмещенного варианта.
Свой выбор я остановил на микросхеме и написал исходный код для посегментной развертки индикатора.
В процессе написания кода возникла идея программируемого переключения шкал и положения запятой, что и удалось реализовать.
Механический энкодер — вещь удобная в использовании, но он имеет некоторые досадные недостатки. В частности, контакты со временем изнашиваются и приходят в негодность, появляется дребезг. Оптические энкодеры гораздо надежнее, но они дороже, многие из них боятся пыли, и они редко встречаются в таком виде, в котором их удобно было бы использовать в радиотехнике.
Короче, когда я узнал о том, что шаговый двигатель можно использовать как энкодер, эта идея мне очень понравилась.
Практически вечный энкодер! Замучить его невозможно: соберешь раз и можешь энкодить всю жизнь.
Предварительный усилитель-коммутатор с цифровым управлением. Применяем с программированием через оболочку Arduino, электронные потенциометры от Microchip, графический TFT.
Разрабатывать и собирать это устройство в мои планы не входило. Ну вот просто никак! У меня уже есть два предварительных усилителя. Оба меня вполне устраивают.
Но, как обычно происходит у меня, стечение обстоятельств или цепь неких событий, и вот нарисовалась задача на ближайшее время.
Здравствуйте, уважаемые читатели ! Хочу представить вам « » — проект подающего робота для настольного тенниса, который будет полезен новичкам и любителям при отработке приёма различного типа подач в любую зону стола, поможет рассчитать тайминг и силу приёма мяча.
А ещё можно просто привыкнуть к новой накладке или ракетке, и хорошенько простучать её.
Приветствую читателей ! Есть у меня пожилой компьютер, которому уже исполнилось лет десять. Параметры у него соответствующие: «пенёк» 3,0 ГГц, пара Гб ОЗУ и древняя материнская плата EliteGroup 915-й серии.
И задумал я куда-нибудь старичка пристроить (подарить, продать), т. к. выбрасывать жалко. Но мешала задуманному одна неприятность: у материнки не срабатывало включение от кнопки питания, и что бы я ни делал, начиная от проверки проводов и заканчивая прозвонкой транзисторов на плате, проблему найти так и не смог. Отдавать в ремонт спецам — ремонт окажется дороже всего компа.
Думал я, думал и нашёл способ запустить моего бедолагу. Выдернул батарею BIOS-а, от чего комп испугался и сразу стартанул при следующем появлении питания! А дальше — почти в каждом BIOS-е есть запуск ПК от любой кнопки клавиатуры или кнопки POWER на клавиатуре. Казалось бы, проблема решена. Ан нет, есть нюансы. С USB-клавиатур запуск не срабатывал. Плюс не хотелось пугать нового хозяина, компьютер должен стартовать от привычной кнопки питания на корпусе.
Бывает идешь мимо припаркованных машин, и замечаешь краем глаза, что кто то уже давно, судя по тусклому свечению ламп, забыл свет выключить. Кто то и сам так попадал. Хорошо когда есть штатный сигнализатор не выключенного света, а когда нету поможет вот такая поделка: Незабывайка умеет пищать, когда не выключен свет и умеет пропикивать втыкание задней передачи.
Схема цифрового индикатора уровня топлива обладает высокой степенью повторяемости, даже если опыт работы с микроконтроллерами незначителен, поэтому разобраться в тонкостях процесса сборки и настройки не вызывает проблем. Программатор Громова – это простейший программатор, который необходим для программирования avr микроконтроллера. Программатор Горомова хорошо подходит как для внутрисхемного, так и для стандартного схемного программирования. Ниже приведена схема контроля индикатора топлива.
Плавное включение и выключение светодиодов в любом режиме (дверь открыта, и плафон включен). Так же авто выключение через пять минут. И минимальное потребление тока в режиме ожидания.
Вариант 1 — Коммутация по минусу. (с применением N-канальных транзисторов) 1) «коммутация по минусу», т.е такой вариант при котором один питающий провод лампы соединен с +12В аккумулятора (источника питания), а второй провод коммутирует ток через лампу тем самым включает ее. В данном варианте будет подаваться минус. Для таких схем нужно применять N-канальные полевые транзисторы в качестве выходных ключей.
Сам модем небольшого размера, недорог, работает без проблем, четко и быстро и вообще нареканий нет к нему. Единственный минус для меня был, это необходимость его включать и выключать кнопкой. Если его не выключать, то модем работал от встроенного аккумулятора, который в итоге садился и модем снова было нужно включать.
Принцип работы прост: привращении крутилки регулируется громкость, при нажатии — выключение-включение звука. Нужно для кар писи на винде или андройде
Изначально в Lifan Smily (да и не только) режим работы заднего дворника — единственный, и называется он «всегда махать». Особенно негативно воспринимается такой режим в наступивший сезон дождей, когда на заднем стекле собираются капли, но в недостаточном для одного прохода дворника количестве. Так, приходится либо слушать скрип резины по стеклу, либо изображать робота и периодически включать-выключать дворник.
Немного доработал схему реле времени задержки включения освещения салона для автомобиля Форд (схема разрабатывалась для вполне конкретного автомобиля, как замена штатного реле Ford 85GG-13C718-AA, но была успешно установлена в отечественную «классику»).
Уже не первый раз проскакивают такие поделки. Но почему-то люди жмуться на прошивки. Хотя в большинстве своём они основаны на проекте elmchan «Simple SD Audio Player with an 8-pin IC». Исходниник не открывают аргументируя, что пришлось исправлять проект, что в у меня качество лучше… и т.д. Короче взяли open source проект, собрали, и выдаёте за своё.
Итак. Микроконтроллер Attiny 13- так сказать сердце данного устройства. С его прошивкой долго мучился, никак не мог прошить.Ни 5ю проводками через LPT, ни прогромматором Громова. Компьютер просто не видит контроллер и все.
В связи с нововведениями в ПДД, народ стал думать о реализации дневных ходовых огней. Один из возможных путей это включение ламп дальнего света на часть мощности, об этом и есть данная статья.
Это устройство позволит ближнему свету автоматически включиться при начале движения и регулирует напряжение на лампах, ближнего света, в зависимости от скорости с которой вы едите. Так же, это послужит более безопасному движению и продлит срок службы ламп.
Представляю вторую версию двухканального циклического таймера. Были добавлены новые функции и изменилась принципиальная схема. Циклический таймер позволяет включать и выключать нагрузку, а также выдерживать паузу на заданные интервалы времени в циклическом режиме. Каждый из выходов таймера имеет 2 режима работы — «Логический» и «ШИМ». Если выбран логический режим устройство позволяет управлять с помощью контактов реле освещением, отоплением, вентиляцией и другими электроприборами. Нагрузкой могут выступать любые электрические приборы мощность нагрузки которых не превышает максимального тока реле. Тип выхода «ШИМ» позволяет например подключить через силовой транзистор двигатель постоянного тока, при этом есть возможность установить скважность ШИМ, чтобы двигатель вращался с определенной скоростью.
Часы собранные на микроконтроллере ATtiny2313 и светодиодной матрице показывают время в 6-ти различных режимах.
Светодиодная матрица 8*8 управляется методом мультиплексирования. Токоограничивающие резисторы исключены из схемы, чтобы не испортить дизайн, и, поскольку отдельные светодиоды управляются не постоянно, они не будут повреждены.
Для управления используется только одна кнопка, длительное нажатие кнопки(нажатие и удержание) для поворота меню и обычное нажатие кнопки для выбора меню.
Это хобби-проект, потому точность хода часов зависит лишь от калибровки внутреннего генератора контроллера. Я не использовал кварц в этом проекте, так как он занимал бы два нужных мне вывода ATtiny2313. Кварц может быть использован для повышения точности в альтернативном проекте (печатной плате).
На этот раз я представлю простой малогабаритный частотомер с диапазоном измерения от 1 до 500 МГц и разрешением 100 Гц.
В настоящее время, независимо от производителя, почти все микроконтроллеры имеют так называемые счетные входы, которые специально предназначены для подсчета внешних импульсов. Используя этот вход, относительно легко спроектировать частотомер.
Однако этот счетчый вход также имеет два свойства, которые не позволяют напрямую использовать частотомер для удовлетворения более серьезных потребностей. Одна из них заключается в том, что на практике в большинстве случаев мы измеряем сигнал с амплитудой в несколько сотен мВ, который не может перемещать счетчик микроконтроллера. В зависимости от типа, для правильной работы входа требуется сигнал не менее 1-2 В. Другое заключается в том, что максимальная измеримая частота на входе микроконтроллера составляет всего несколько МГц, это зависит от архитектуры счетчика, а также от тактовой частоты процессора.
Это устройство позволяет контролировать температуру воды в чайнике, имеет функцию поддержания температуры воды на определенном уровне, а также включение принудительного кипячения воды.
В основе прибора микроконтроллер ATmega8, который тактируется от кварцевого резонатора частотой 8МГц. Датчик температуры – аналоговый LM35. Семисегментный индикатор с общим анодом.
Эта декоративная звезда состоит из 50 специальных светодиодов RGB, которые контролируются ATtiny44A . Все светодиоды непрерывно изменяют цвет и яркость в случайном порядке. Также есть несколько разновидностей эффектов, которые также активируются случайно. Три потенциометра могут изменять интенсивность основных цветов. Положение потенциометра индицируется светодиодами при нажатии кнопки, а изменение цвета и скорость эффекта можно переключать в три этапа. Этот проект был полностью построен на компонентах SMD из-за специальной формы печатной платы. Несмотря на простую схему, структура платы довольно сложная и вряд ли подойдет для новичков.
В этой статье описывается универсальный трехфазный преобразователь частоты на микроконтроллере(МК) ATmega 88/168/328P . ATmega берет на себя полный контроль над элементами управления, ЖК-дисплеем и генерацией трех фаз. Предполагалось, что проект будет работать на готовых платах, таких как Arduino 2009 или Uno, но это не было реализовано. В отличие от других решений, синусоида не вычисляется здесь, а выводится из таблицы. Это экономит ресурсы, объем памяти и позволяет МК обрабатывать и отслеживать все элементы управления. Расчеты с плавающей точкой в программе не производятся.
Частота и амплитуда выходных сигналов настраиваются с помощью 3 кнопок и могут быть сохранены в EEPROM памяти МК. Аналогичным образом обеспечивается внешнее управление через 2 аналоговых входа. Направление вращения двигателя определяется перемычкой или переключателем.
Регулируемая характеристика V/f позволяет адаптироваться ко многим моторам и другим потребителям. Также был задействован интегрированный ПИД-регулятор для аналоговых входов, параметры ПИД-регулятора могут быть сохранены в EEPROM. Время паузы между переключениями ключей (Dead-Time) можно изменить и сохранить.
Этот частотомер с AVR микроконтроллером позволяет измерять частоту от 0,45 Гц до 10 МГц и период от 0,1 до 2,2 мкс в 7-ми автоматически выбранных диапазонах. Данные отображаются на семиразрядном светодиодном дисплее. В основе проекта микроконтроллер Atmel AVR ATmega88/88A/88P/88PA, программу для загрузки вы можете найти ниже. Настройка битов конфигурации приведена на рисунке 2 .
Принцип измерения отличается от предыдущих двух частотомеров. Простой способ подсчета импульсов через 1 секунду, используемый в двух предыдущих частотомерах(частотомер I, частотомер II), не позволяет измерять доли Герц. Вот почему я выбрал другой принцип измерения для своего нового частотомера III. Этот метод намного сложнее, но позволяет измерять частоту с разрешением до 0,000 001 Гц.
Это очень простой частотомер на микроконтроллере AVR. Он позволяет измерять частоты до 10 МГц в 2-х автоматически выбранных диапазонах. Он основан на предыдущем проекте частотомера I , но имеет 6 разрядов индикатора вместо 4-х. Нижний диапазон измерения имеет разрешение 1 Гц и работает до 1 МГц. Более высокий диапазон имеет разрешение 10 Гц и работает до 10 МГц. Для отображения измеренной частоты используется 6-разрядный светодиодный дисплей. Прибор построен на основе микроконтроллера Atmel AVR ATtiny2313A или ATTiny2313 . Настройку битов конфигурации вы можете найти ниже.
Микроконтроллер тактируется от кварцевого резонатора частотой 20 МГц (максимально допустимая тактовая частота). Точность измерения определяется точностью этого кристалла, а также конденсаторов C1 и C2. Минимальная длина полупериода измеряемого сигнала должна быть больше периода частоты кварцевого генератора (ограничение архитектуры AVR). Таким образом, при 50% рабочем цикле можно измерять частоты до 10 МГц.
Поделки с микроконтроллерами – вопрос, как никогда актуальный и интересный. Ведь мы живем в 21 веке, эпохе новых технологий, роботов и машин. На сегодняшний день каждый второй, начиная с малого возраста, умеет пользоваться интернетом и различного рода гаджетами, без которых порою и вовсе сложно обойтись в повседневной жизни.
Поэтому в этой статье мы будем затрагивать, в частности, вопросы пользования микроконтроллерами, а также непосредственного применения их с целью облегчения миссий, каждодневно возникающих перед всеми нами. Давайте разберемся, в чем ценность этого прибора, и как просто использовать его на практике.
Микроконтроллер − это чип, целью которого является управление электрическими приборами. Классический контроллер совмещает в одном кристалле, как работу процессора, так и удаленных приборов, и включает в себя оперативное запоминающее устройство. В целом, это монокристальный персональный компьютер, который может осуществлять сравнительно обыкновенные задания.
Разница между микропроцессором и микроконтроллером заключается в наличии встроенных в микросхему процессора приборов «пуск-завершение», таймеров и иных удаленных конструкций. Применение в нынешнем контроллере довольно сильного вычисляющего аппарата с обширными способностями, выстроенного на моносхеме, взамен единого комплекта, существенно уменьшает масштабы, потребление и цену созданных на его основе приборов.
Из этого следует, что применить такое устройство можно в технике для вычисления, такой, как калькулятор, материнка, контроллеры компакт-дисков. Используют их также в электробытовых аппаратах – это и микроволновки, и стиральные машины, и множество других. Также микроконроллеры широко применяются в индустриальной механике, начиная от микрореле и заканчивая методиками регулирования станков.
Микроконроллеры AVR
Ознакомимся с более распространенным и основательно устоявшимся в современном мире техники контроллером, таким как AVR. В его состав входят высокоскоростной RISC-микропроцессор, 2 вида затратной по энергии памяти (Flash-кэш проектов и кэш сведений EEPROM), эксплуатационная кэш по типу RAM, порты ввода/вывода и разнообразные удаленные сопряженные структуры.
- рабочая температура составляет от -55 до +125 градусов Цельсия;
- температура хранения составляет от -60 до +150 градусов;
- наибольшая напряженность на выводе RESET, в соответствии GND: максимально 13 В;
- максимальное напряжение питания: 6.0 В;
- наибольший электроток линии ввода/вывода: 40 мА;
- максимальный ток по линии питания VCC и GND: 200 мА.
Возможности микроконтроллера AVR
Абсолютно все без исключения микроконтроллеры рода Mega обладают свойством самостоятельного кодирования, способностью менять составляющие своей памяти драйвера без посторонней помощи. Данная отличительная черта дает возможность формировать с их помощью весьма пластичные концепции, и их метод деятельности меняется лично микроконтроллером в связи с той либо иной картиной, обусловленной мероприятиями извне или изнутри.
Обещанное количество оборотов переписи кэша у микроконтроллеров AVR второго поколения равен 11 тысячам оборотов, когда стандартное количество оборотов равно 100 тысячам.
Конфигурация черт строения вводных и выводных портов у AVR заключается в следующем: целью физиологического выхода имеется три бита регулирования, а никак не два, как у известных разрядных контроллеров (Intel, Microchip, Motorola и т. д.). Это свойство позволяет исключить потребность обладать дубликатом компонентов порта в памяти с целью защиты, а также ускоряет энергоэффективность микроконтроллера в комплексе с наружными приборами, а именно, при сопутствующих электрических неполадках снаружи.
Всем микроконтроллерам AVR свойственна многоярусная техника пресечения. Она как бы обрывает стандартное течение русификатора для достижения цели, находящейся в приоритете и обусловленной определенными событиями. Существует подпрограмма преобразования запрашивания на приостановление для определенного случая, и расположена она в памяти проекта.
Когда возникает проблема, запускающая остановку, микроконтроллер производит сохранение составных счетчика регулировок, останавливает осуществление генеральным процессором данной программы и приступает к совершению подпрограммы обрабатывания остановки. По окончании совершения, под шефствующей программы приостановления, происходит возобновление заранее сохраненного счетчика команд, и процессор продолжает совершать незаконченный проект.
Поделки на базе микроконтроллера AVR
Поделки своими руками на микроконтроллерах AVR становятся популярнее за счет своей простоты и низких энергетических затрат. Что они собой представляют и как, пользуясь своими руками и умом, сделать такие, смотрим ниже.
«Направлятор»
Такое приспособление проектировалось, как небольшой ассистент в качестве помощника тем, кто предпочитает гулять по лесу, а также натуралистам. Несмотря на то, что у большинства телефонных аппаратов есть навигатор, для их работы необходимо интернет-подключение, а в местах, оторванных от города, это проблема, и проблема с подзарядкой в лесу также не решена. В таком случае иметь при себе такое устройство будет вполне целесообразно. Сущность аппарата состоит в том, что он определяет, в какую сторону следует идти, и дистанцию до нужного местоположения.
Построение схемы осуществляется на основе микроконтроллера AVR с тактированием от наружного кварцевого резонатора на 11,0598 МГц. За работу с GPS отвечает NEO-6M от U-blox. Это, хоть и устаревший, но широко известный и бюджетный модуль с довольно четкой способностью к установлению местонахождения. Сведения фокусируются на экране от Nokia 5670. Также в модели присутствуют измеритель магнитных волн HMC5883L и акселерометр ADXL335.
Беспроводная система оповещения с датчиком движения
Полезное устройство, включающее в себя прибор перемещения и способность отдавать, согласно радиоканалу, знак о его срабатывании. Конструкция является подвижной и заряжается с помощью аккумулятора или батареек. Для его изготовления необходимо иметь несколько радиомодулей HC-12, а также датчик движения hc-SR501.
Прибор перемещения HC-SR501 функционирует при напряжении питания от 4,5 до 20 вольт. И для оптимальной работы от LI-Ion аккумулятора следует обогнуть предохранительный светодиод на входе питания и сомкнуть доступ и вывод линейного стабилизатора 7133 (2-я и 3-я ножки). По окончанию проведения этих процедур прибор приступает к постоянной работе при напряжении от 3 до 6 вольт.
Внимание: при работе в комплексе с радиомодулем HC-12 датчик временами ложно срабатывал. Во избежание этого необходимо снизить мощность передатчика в 2 раза (команда AT+P4). Датчик работает на масле, и одного заряженного аккумулятора, емкостью 700мА/ч, хватит свыше, чем на год.
Минитерминал
Приспособление проявило себя замечательным ассистентом. Плата с микроконтроллером AVR нужна, как фундамент для изготовления аппарата. Из-за того, что экран объединён с контроллером непосредственно, то питание должно быть не более 3,3 вольт, так как при более высоких числах могут возникнуть неполадки в устройстве.
Вам следует взять модуль преобразователя на LM2577, а основой может стать Li-Ion батарея емкостью 2500мА/ч. Выйдет дельная комплектация, отдающая постоянно 3,3 вольта во всём трудовом интервале напряжений. С целью зарядки применяйте модуль на микросхеме TP4056, который считается бюджетным и достаточно качественным. Для того чтобы иметь возможность подсоединить минитерминал к 5-ти вольтовым механизмам без опаски сжечь экран, необходимо использовать порты UART.
Основные аспекты программирования микроконтроллера AVR
Кодирование микроконтоллеров зачастую производят в стиле ассемблера или СИ, однако, можно пользоваться и другими языками Форта или Бейсика. Таким образом, чтобы по факту начать исследование по программированию контроллера, следует быть оснащенным следующим материальным набором, включающим в себя: микроконтроллер, в количестве три штуки — к высоковостребованным и эффективным относят — ATmega8A-PU, ATtiny2313A-PU и ATtiny13A- PU.
Чтобы провести программу в микроконтроллер, нужен программатор: лучшим считают программатор USBASP, который дает напряжение в 5 Вольт, используемое в будущем. С целью зрительной оценки и заключений итогов деятельности проекта нужны ресурсы отражения данных − это светодиоды, светодиодный индуктор и экран.
Чтобы исследовать процедуры коммуникации микроконтроллера с иными приборами, нужно числовое приспособление температуры DS18B20 и, показывающие правильное время, часы DS1307. Также важно иметь транзисторы, резисторы, кварцевые резонаторы, конденсаторы, кнопки.
С целью установки систем потребуется образцовая плата для монтажа. Чтобы соорудить конструкцию на микроконтроллере, следует воспользоваться макетной платой для сборки без пайки и комплектом перемычек к ней: образцовая плата МВ102 и соединительные перемычки к макетной плате нескольких видов — эластичные и жесткие, а также П-образной формы. Кодируют микроконтроллеры, применяя программатор USBASP.
Простейшее устройство на базе микроконтроллера AVR. Пример
Итак, ознакомившись с тем, что собой представляют микроконтроллеры AVR, и с системой их программирования, рассмотрим простейшее устройство, базисом для которого служит данный контроллер. Приведем такой пример, как драйвер низковольтных электродвигателей. Это приспособление дает возможность в одно и то же время распоряжаться двумя слабыми электрическими двигателями непрерывного тока.
Предельно возможный электроток, коим возможно загрузить программу, равен 2 А на канал, а наибольшая мощность моторов составляет 20 Вт. На плате заметна пара двухклеммных колодок с целью подсоединения электромоторов и трехклеммная колодка для подачи усиленного напряжения.
Устройство выглядит, как печатная плата размером 43 х 43 мм, а на ней сооружена минисхемка радиатора, высота которого 24 миллиметра, а масса – 25 грамм. С целью манипулирования нагрузкой, плата драйвера содержит около шести входов.
Заключение
В заключение можно сказать, что микроконтроллер AVR является полезным и ценным средством, особенно, если дело касается любителей мастерить. И, правильно использовав их, придерживаясь правил и рекомендаций по программированию, можно с легкостью обзавестись полезной вещью не только в быту, но и в профессиональной деятельности и просто в повседневной жизни.
Инструкции по созданию роботов на базе контроллеров:
Этот раздел сайта посвящен пошаговым инструкциям с фото и видео по изучению arduino, основам использования микроконтроллеров arduino в робототехнике. Проекты с контроллером arduino uno и starter kit. Практическая энциклопедия по arduino проектам для начинающих. Схемы и примеры arduino на русском. Основы работы со скетчами arduino, описания комплекта, программируем arduino. Программирование ардуино своими руками, описание ардуино комплектов для создания роботов. Конструируем роботов на базе arduino самостоятельно. Собираем примеры сборки ардуино роботов. Скетчи и проекты для arduino проектов для начинающих новичков и специалистов:
library_books Подборки: DIY: Настоящий робот дроид BB-8 под Arduino. Пошаговая инструкция по созданиюВозможно ли построить дроида ВВ8 в домашних условиях из подручных материалов? Воспользуйтесь нашей пошаговой инструкцией, чтобы создать звездного робота своими руками. В данной инструкции мы покажем вам как построить своими руками известного дроида ВВ-8 ростом в натуральную величину, под управлением arduino и смартфона…
schedule 13.01.2017 favorite_borderДоступно только зарегистрированным пользователям
schedule 05.01.2017 favorite_borderДоступно только зарегистрированным пользователям
DIY: Несложный робот пылесос под Arduino своими руками. Пошаговая инструкция по изготовлениюПопулярность автоматизированных домашних уборщиков с каждым днем возрастает. Не исключение, роботы-пылесосы для сухой уборки, способные поддерживать чистоту пола без вашего вмешательства. Если вы хотите узнать, как он устроен и построить его собственными руками, представляем вашему вниманию инструкцию по сборке простейшего робота-пылесоса из подручных средств…
schedule 20.08.2014 favorite_borderДоступно только зарегистрированным пользователям
DIY: Коробочка самовыключатель под управлением Arduino. Пошаговая инструкция по созданиюЭто руководство — как построить еще один бесполезный робот, который предназначен скорее для развлечения, чем для решения логических задач. Игрушка в виде коробочки с тумблером и открывающейся створкой, заключает в себе ряд механических элементов и блок управления на основе Arduino. Для удобства представляем вам 9 шагов для более детального подхода к сборке. Что из этого получиться увидим, когда соберем эту игрушку у себя дома…
schedule 12.03.2014 favorite_borderДоступно только зарегистрированным пользователям
DIY: Простой робот паук на Arduino и Fischertechnik. Пошаговая инструкция по созданиюЕсли вам нужен проект, который будет использовать все свои сервоприводы и механизмы движения, вы можете создать простого робота-паука. Если у вас есть навыки работы с техникой Fischertechnik, LEGO и K’NEX и лишние сервоприводы, этот проект для Вас. Действительно, этот паук с нелепыми движениями является большой обучающей платформой. Основной целью этого проекта является обучение основам работы сервоприводов, их синхронизации, программированию и пониманию диапазона и силы. Результат будет очень забавным…
schedule 09.12.2013 favorite_borderДоступно только зарегистрированным пользователям
DIY: Sneel — плавающий робот-змея под Arduino. Пошаговая инструкция по созданиюSneel является роботом-змеей, который построенный для изучения живых, извилистых движений роботов в водной среде. Он предназначен для перемещения в неизвестной территории и экстремальной местности. Sneel является биомиметическим, мобильным, водным роботом с открытым исходным кодом. Электромеханическая конструкция Sneel имитирует структуру и движения реальной водяной змеи, чтобы исследовать поведение линейных роботов во время плавания. Представляем вам подробнейшую пошаговую инструкцию по его изготовлению…
schedule 15.10.2013 favorite_borderДоступно только зарегистрированным пользователям
schedule 29.05.2013 favorite_borderДоступно только зарегистрированным пользователям
DIY: Гигантский картонный робот-манипулятор. Пошаговая инструкция по созданиюПредставляем вам картонного огромного робота, контролируемого компьютером, рука которого достигает 6 футов. Он состоит из двух конфигураций: 1) рука с захватом – трехпалый захват, который позволяет подбирать игрушки и грязные носки с пола без необходимости нагибаться. Возможность сохранения пути руки позволяет пользователям принимать те же движения с помощью камеры, снятые с точностью и способностью повторного воспроизведения. 2) Кран с камерой — камера с телефона позволяет делать фантастические изображения за мимолетный промежуток времени и видео-съемку…
schedule 29.05.2013 favorite_borderДоступно только зарегистрированным пользователям
DIY: Робот-танк на основе Androidного смартфона. Пошаговая инструкция по созданиюРобот-танк на основе смартфона является отличным проектом для вас и ваших детей. Этот робот может быть построен в течение часа и не требует пайки или специальных инструментов. Когда вы закончите его сборку, просто скачайте и установите приложение EMGRobotics Audio Robot на вашем телефоне. Приложение будет использовать камеру в телефоне и различные алгоритмы компьютерного зрения, чтобы робот ездил вокруг в поисках лиц или определенных цветов. Робот может также следовать линии или преследовать других роботов по комнате…
schedule 29.05.2013 favorite_borderДоступно только зарегистрированным пользователям
schedule 27.05.2013 favorite_borderДоступно только зарегистрированным пользователям
DIY: Робоавтомобиль под Arduino с управлением с помощью Android устройств. Пошаговая инструкция по созданиюЭто простой проект робо-автомобиля, который управляется через Bluetooth. Здесь используется контроллер Arduino. Для управления автомобилем используется Androidный гаджет со встроенным акселерометром. Чувствительность и значение наклона устанавливается в настройках приложения Android. Также предоставляется обычный способ управления – кнопки на экране. В дополнение ко всему можно реализовать сенсорное управление…
schedule 19.02.2013 favorite_borderДоступно только зарегистрированным пользователям
DIY: FIER — четвероногий робот на основе Arduino. Пошаговая инструкция по созданиюЭтот интересный механизм называется FIER. Он представляет собой четвероногого робота, который сделан из деревянных деталей, проводков и программной системы Arduino. В этой инструкции мы продемонстрируем вам пошаговое построение этого робота со всеми подробностями. Это не сложно, нужно терпение и простые навыки работы с деревом и электроникой…
schedule 18.02.2013 favorite_borderДоступно только зарегистрированным пользователям
В этом разделе вы можете найти схемы и проекты, что бы собрать своего arduino робота или робота на базе другого микрокомпьютера контроллера. Arduino для начинающих своими руками. Примеры проектов на русском с использованием arduino, основы работы со скетчами arduino при создании ардуино робота и другое о платформе arduino на этой странице. Практическая энциклопедия для конструирования роботов на котроллере arduino. Визуальное программирование микроконтроллера, как программировать и использовать arduino в робототехнике при создании мобильных роботов.
Так же здесь есть курсы, примеры и уроки по интерфейсу arduino, уроки ардуино на русском для начинающих. Уроки по программированию ардуино роботов, роботов на конструкторе арудино и других контроллерах для создания мобильных роботов для начинающих.
Подробные описания и пошаговые инструкции по конструированию роботов на базе контроллера ардуино. Фото и видео инструкции о том, как собрать своего ардуино робота из подручных материалов. Как собрать и запрограммировать арудино робота своими руками для себя или соревнований. Практическая энциклопедия, скетчи и примеры роботов на ардуино, которые вы сможете собрать в домашних условиях.
Микропроцессор своими руками. Часть 4.1. Как отладить встроенный в FPGA микроконтроллер? — Компоненты и технологии
Все статьи цикла:
Что будет предложено вниманию читателей в этой статье
Иллюстрация из книги «Сочинения Жуковского», издание 1905 года
На маленькой цветной заставке справа образно показано состояние разработчика на стадии отладки проекта. Особенно когда сроки «горят», а ошибку не удается найти. То есть проект не работает так, как задумано, а для поиска и локализации ошибки, как обычно, не хватает удобного отладочного инструмента. Такая проблема встает каждый раз, как только проект приходит к стадии отладки «железа». Причем именно эта стадия разработки проекта является наиболее трудоемкой и требует наивысшей квалификации разработчика. Какие же есть методики, позволяющие ускорить этот процесс?
Поскольку отладка для разных типов проектов имеет различную специфику, то целью данной статьи не является описание «универсального» способа отладочного инструмента. В рамках этой статьи автор поставил себе цель: показать, как производить отладку на примере софт-процессоров. И как для этой цели использовать порт JTAG в качестве порта общего назначения для приема и передачи данных в/из проекта пользователя. Таким образом, данная статья продолжает цикл статей, озаглавленный «Микропроцессор своими руками», см. [1–4] и статью о JTAG тестировании [5]. Специально для этого материала будут разработаны следующие проекты:
- Проект встроенного отладочного блока. Язык описания — Verilog. Среда ISE — 8.1. Проект будет отлажен на плате Xilinx Spartan-3E Sample Pack. Микросхема — XC3S100E-TQ144.
- Проект встроенного отладочного блока. Язык описания — Verilog. Среда Quartus. Проект будет отлажен на плате MAX2 — DEVKIT-1270. Микросхема — EPM 1270 F256С5.
- Проект управляющей программы для работы с JTAG-портом. Среда — Borland C++ Builder 6.
Все эти проекты будут разработаны только как дополнения к данной статье. При их разработке не ставилась цель получить законченный коммерческий продукт. Поэтому некоторые части программ написаны наиболее простым способом, но как представляется автору, это будет более понятно начинающим. А для опытных разработчиков не составит особого труда модифицировать файлы этих проектов для своих потребностей. Главное, что при их помощи читатели смогут сами проверить работу JTAG-порта в режиме отладки их проекта. Проекты можно взять на сайте автора, и они будут выкладываться по мере готовности. Но, поскольку выполнить все проекты к моменту выхода статьи достаточно тяжело, то автор приносит свои извинения в случае их задержки. И еще одна просьба. У автора сейчас нет возможности набрать статистику по испытаниям данных проектов на разных платах и разных микросхемах. Поэтому если вы, уважаемый читатель, найдете что-либо интересное в данном вопросе, то не сочтите за труд написать автору письмо с вашими наблюдениями, дополнениями и рекомендациями.
Что значит «отладить»?
Для начала давайте уточним терминологию. Что значит «отладить» и как это происходит?
При этом необходимо еще одно уточнение. Отладку программного обеспечения (ПО) для микроконтроллера можно разделить на две части:
- Отладка программного обеспечения на кросс-средствах.
- Отладка на реально работающем изделии.
Отладка ПО на кросс-средствах известна и описана многократно. Поэтому в данной статье будем считать, что ПО для встроенного процессора уже отлажено на софт-симуляторах данного микропроцессора. Таким образом, речь не идет о полной отладке ПО. Речь в данном случае идет только о второй части, а именно — только о привязке ПО к реальному устройству, об исследовании характеристик «внешнего мира» данного микроконтроллера.
Разделим разные способы отладки по признаку работы в реальном времени:
- Отладочные системы, позволяющие отлаживаемому устройству продолжительно работать в режиме реального времени.
- Отладочные системы, позволяющие отлаживаемому устройству работать в режиме реального времени только кратковременно.
- Отладочные системы, не позволяющие отлаживаемому устройству работать в режиме реального времени.
Как же отлаживают встроенный в FPGA микропроцессор? Практически так же, как и обычный однокристальный процессор.
Перед тем как начать рассматривать структуры отладочных средств, необходимо обсудить еще один вопрос. Тактовые частоты встроенных в FPGA микроконтроллеров уже перевалили за диапазоны в десятки мегагерц и теперь тактовые частоты в сотни мегагерц являются обычными рабочими частотами для многих кристаллов. А каналы вывода информации из FPGA в ряде случаев оказываются достаточно медленными. Поэтому для вывода информации из кристалла необходимо довольно значительное время. И чем больше информации мы хотим вывести, тем сложнее это будет сделать, что в свою очередь скажется на всем процессе отладки.
Вот почему настал тот момент, когда отладочное устройство должно переместиться из «внешнего мира» внутрь кристалла.
И еще один аспект разработки отладочных устройств необходимо рассмотреть сейчас. Инженерный труд— это всегда решение, которое необходимо принять при противоречивых условиях. Как не бывает абсолютных истин, так не бывает и абсолютных технических решений. Одно решение будет хорошо для одних случаев, но плохо для других. Поиск компромисса труден. Но именно он приводит к тому, что ваше изделие будет превосходить изделия конкурентов. Тот блок, который мы будем рассматривать в этой статье, выполняет вспомогательную роль при отладке. Он не влияет на потребительские качества основного изделия. Он нужен только на этапе настройки, отладки, опытной эксплуатации. Поэтому для таких вспомогательных блоков целевую функцию можно сформулировать так: «Нам нужен блок, который бы выполнял функцию отладки, но при этом, чтобы самоо его не было…». Вот вам и первое противоречие. Исходя из того, что все реализации имеют свои достоинства и недостатки, мы постараемся рассмотреть каждую из предлагаемых реализаций с двух точек зрения. Что дает нам данная реализация и что она позволяет сделать с отлаживаемым изделием? Какими ресурсами за это надо заплатить и какие ограничения на работу изделия и на режим отладки необходимо наложить? И уже исходя из достаточно полного набора решений, читатель сам сможет выбрать то решение, которое он сочтет нужным применить в своем проекте.
О фразе: «У меня все работает»
Именно такую фразу можно услышать чаще всего в ответ на вопрос начальника о том, как обстоят дела у его подчиненного. В таком случае автор этой статьи всегда вспоминает другую фразу, которую когда-то говорил его начальник: «Все так, но… только трошечки не так». Если представить процесс разработки, как процесс заряда конденсатора, который протекает по экспоненте, то за одно «Тау» выполняется 30% задания, за 3 «Тау» мы подойдем к уровню 95% или, можно сказать, достигнем уровня ошибок в 5%. А вот до уровня ошибок в доли процента будем добираться за многие десятки этих самых «Тау».
Зачем приведены эти рассуждения? Процесс отладки считается завершенным, и устройство считается отлаженным только до уровня, определенного отладочным средством и методикой отладки. Можно отладить изделие в шаговом режиме, а можно и в режиме реального времени. И в том, и в другом случае изделие будет числиться в категории «У меня все работает». Просто трудоемкость отладки и требуемые для этих вариантов отладки ресурсы потребуются совершенно разные. И если в одном случае отладка в шаговом режиме будет вполне достаточна, то в другом случае такой вариант отладки будет совсем неприемлем.
А теперь любимое рассуждение автора о монете. Вполне естественно, когда вы подкидываете монету, она падает и встает точно на ребро. Ну, правда, если эта монета не «зависнет» в воздухе… Вы улыбаетесь, уважаемый читатель? А что же происходит при отладке? Все ли условия для поиска ошибок вы предусмотрели? Все ли эти условия охватывает отладочное средство? Выводит ли оно сообщения об этих ошибках? Какими ошибками можно пренебречь на данном этапе отладки? И что значит «все работает»? Давайте отвлечемся от микроконтроллеров и FPGA и перейдем от абсолютных истин к относительным. (Автор заранее просит прощения, если вы, уважаемый читатель, сочтете последующие высказывания и термины, отличающимися от того, что вы прочли в учебнике по философии.)
Так что же такое тестирование и когда можно считать, что мы получаем достоверный результат? Скорее всего, ответ на этот вопрос будет таким: «Мы устойчиво получаем результат, который вызывается определенным внешним воздействием, при том условии, что все другие внешние воздействия не изменяются или их изменение не оказывает влияния на получаемый результат». То есть речь идет о результате, который получается только относительно каких-то условий. Примером для данного рассуждения может быть серия из 100 попыток включить сгоревшую электролампочку. Можно смело утверждать, что во всех 100% тестов мы получим именно тот результат, который и ожидали, вне зависимости от окружающей температуры, влажности и напряжения электросети. Но еще раз необходимо повторить — этот результат будет достоверен только для вполне определенных условий. И нельзя абсолютно уверенно говорить о том, что не включенная в электросеть лампочка ВСЕГДА НЕ будет гореть. И если вы видели, как светится неоновая лампочка, которой медсестра проверяет прибор под названием «УВЧ», который находится в кабинете физиотерапии, то я думаю, что вы меня поймете. Неоновая лампочка светится, хотя провода к ней не подключены. Просто в этом случае действуют совершенно другие условия. Но вернемся к обычной электролампочке и к обычным условиям.
Гораздо сложнее получить достоверный результат испытаний для исправной электролампочки, так как в этом случае необходимо предусмотреть, чтобы довольно много параметров соответствовало норме. То же самое и с микроконтроллерами. Без сомнения, микроконтроллер гораздо сложнее электролампочки, поэтому у него гораздо больше возможностей НЕ работать! И, соответственно, гораздо сложнее определить те условия, при которых он будет работать, причем устойчиво. Для того чтобы упростить процедуру, принято тестирование всего изделия начинать с простейших тестов, и затем принимать решение о том, работает изделие по данному тесту или нет. Далее тестирование следует проводить поэтапно. На следующем этапе тестирования проверенная часть изделия считается исправной, и с ее помощью производится проверка других частей изделия. Тестирование постепенно охватывает все большие и большие части изделия, и так до тех пор, пока изделие не будет считаться полностью протестированным. Только после этого принимается решение о полной или частичной исправности проверяемого изделия. И только с учетом конкретных условий. Например, выглядящий вполне работоспособным измерительный тракт в приборе, который испытывается на лабораторном столе, может давать погрешность измерений гораздо меньше той, что предусмотрена его классом точности. Но в термокамере такой прибор может «удрейфовать» и выйти за пределы допустимой погрешности. Так работает этот прибор или нет? Все зависит от того, для каких условий работы он предназначен. Если для лабораторных, то прибор признается работоспособным. Если для индустриальных — не работоспособным.
Как же производится тестирование на практике? Вспомните, как происходит процесс включения вашего компьютера и запуск операционной системы. Компьютер тестируется постепенно, начиная от центра (от процессора) и постепенно охватывая периферию. Сначала процессор, далее подключается видеосистема в минимальном режиме, потом в графическом режиме и т. д. Точно так же необходимо тестировать и встроенные изделия. Первый тест — проверка на припайку по технологии граничного сканирования (Boundary Scan), далее минимальное отладочное средство для проверки линии связи, затем более полное и т. д. И чем больше условий мы хотим протестировать, тем сложнее должно быть само отладочное средство. А если отладочное средство представляет собой сложную структуру, то и оно должно самотестироваться при включении и сообщать об ошибках в работе, возникающих при работе самого отладочного средства. Причем всегда необходимо принимать меры, направленные на то, чтобы само отладочное средство работало более надежно, чем проверяемое им изделие.
Можно сделать следующий вывод: для тестирования необходимо иметь возможность выбрать нужный аппаратно-программный инструмент, для того чтобы с наименьшими затратами выполнить необходимое для данного случая тестирование.
Вот теперь давайте рассмотрим, как делается отладка проектов в FPGA на аппаратнопрограммном уровне.
Логический анализатор
Кратко можно напомнить историю. К первым однокристальным микроконтроллерам делались специальные кристаллы для отладочных устройств. Эти кристаллы содержали такие же микроконтроллеры, как и те, которые надо отлаживать, только все их регистры были на выводах микросхемы и эти выводы были подключены к схеме отладочного устройства. В то время как процессор выполняет команды и пересылает данные, внешнее по отношению к процессору устройство производит запись кодов адреса и данных, а также состояние служебных регистров и флагов микропроцессора в свой вспомогательный блок памяти. Далее эти данные пересылаются пользователю. Такое решение позволяло получать все состояния шин и регистров микропроцессора за определенный интервал времени.
Такие кристаллы устанавливались в специализированные устройства — внутрисхемные эмуляторы. Эти устройства позволяли получить полную трассировку отлаживаемой программы и значительно облегчали работу. На рис. 1 показана структура внутрисхемного эмулятора IECube. А на рис. 2 показано сопряжение эмулятора с отлаживаемой платой при помощи устройства сопряжения и соответствующего кабеля. Данный эмулятор фирма NEC поставляет для отладки своих микроконтроллеров. Гибкий кабель и набор переходных колодок позволяет надежно подключить устройство сопряжения с отладочным устройством к тестируемой плате. При этом дополнительно поставляемые переходники и кабели сопряжения позволяют подключать эмулятор к различного типа контактным площадкам микроконтроллеров на отлаживаемой плате. И если для корпусов типа DIP внутрисхемные эмуляторы привычно вставляются в колодки, то к контактным площадкам под BGA корпуса припаивается специальная переходная плата, а уже с нее сигналы подаются на эмулятор.
Рис. 1. Структура внутрисхемного эмулятора IECube
Рис. 2. Внешний вид внутрисхемного эмулятора IECube
Обычно наиболее распространенные типы внутрисхемных эмуляторов полностью поддерживались стандартными программными инструментами и не требовали изучения какого-либо дополнительного программного инструментария. Для разработчика оставалось только указать тип применяемого внутрисхемного эмулятора, и далее программа предоставляла разработчику полный сервис при отладке и трассировке. Но, к сожалению, ничто не вечно… Прорыв технологии изготовления полупроводников привел к появлению микропроцессоров, работающих на тактовых частотах свыше 30 МГц. Сегодня обычными тактовыми частотами становятся частоты в сотни мегагерц. А при таких частотах применение внешнего устройства становится невозможным.
Но вернемся к микроконтроллерам в FPGA. Точно такое же решение, а именно внутрисхемный эмулятор, можно применить и для отладки встроенного в FPGA микроконтроллера. При применении этого способа отладки у нас не будет таких ограничений по тактовой частоте, как в случае применения внешнего внутрисхемного эмулятора. Но, тем не менее, проект должен выполняться так, чтобы не возникало нарушений при обработке сигналов микроконтроллера.
Проект выполняется таким образом, что все регистры и память микроконтроллера делаются доступными по чтению и записи от host-машины. Примером данного подхода является подключение к проекту многоканального логического анализатора. Конечно, логический анализатор не может менять содержимое регистров, но он очень просто выполняется и может занимать достаточно мало ресурсов (объем занимаемых ресурсов определяется потребностями пользователя), поэтому он очень полезен при отладке в режиме реального времени. Итак, давайте рассмотрим пример выполнения логического анализатора.
Встроенный логический анализатор (ЛА)
Преимуществом данного способа отладки является то, что пользователь получает полную картину событий, причем запись ведется в реальном времени и не требует изменения в ПО пользователя и/или аппаратных ресурсов самого микроконтроллера. При таком способе работы получается запись максимально возможного числа параметров в реальном времени.
Но у данного способа есть и свои недостатки. К ним можно отнести несколько повышенный, по сравнению с первоначальным проектом, «расход ресурсов». Для записи информации необходимо иметь достаточный объем памяти. Для того чтобы информация о состоянии регистров и флагов попала в память, необходимо задействовать дополнительные ресурсы для прохождения (роутинга) сигналов внутри микросхемы. Чтобы преодолеть это противоречие, можно для отладки проекта использовать специальные платы, на которых устанавливают FPGA большего объема. Часто на такие платы устанавливают и дополнительные микросхемы памяти. При использовании внешней памяти объем данных, используемых при отладке, значительно увеличивается. Но при этом необходимо использовать корпуса микросхем FPGA с большим числом выводов. При использовании внешней памяти необходимо учитывать и ограничения по быстродействию.
Блок ЛА должен запоминать входные данные в буферную память, и затем эти данные могут быть считаны host-машиной. Для этого в FPGA имеются встроенные блоки памяти, которые позволяют создавать массивы памяти требуемой разрядности. Далее системы большой сложности обычно имеют какую-либо шину, связывающую FPGA с внешним миром. Тип интерфейса и способ передачи информации существенной роли не играют.
Наиболее важным здесь является то, что есть возможность выполнить проект ЛА параметризируемым и, установив параметр USED = NO, не занимать ресурс в том блоке (файле), куда помещен ЛА. Встроим ЛА в каждый отлаживаемый нижний блок. Остается только снабдить каждый блок входами и выходами для ЛА и подвести все сигналы через все блоки к host-машине. Теперь, установив в нужном блоке ЛА параметр USED = YES, мы получим средство для контроля сигналов в любом нижнем блоке, и для этого не нужно исправлять весь проект. Мало того, таких ЛА можно задействовать в проекте несколько и считывать с них данные поочередно. Такое решение позволит отладить каждый блок в проекте на реальном «железе», отладить часть проекта или весь проект. У микросхем FPGA, большей частью, имеется возможность устанавливать на ту же самую посадочную площадку микросхему «большей емкости», поэтому на этапе отладки есть возможность встроить ЛА, а после отладки в серийных изделиях использовать микросхемы «меньшей емкости». Кроме того, устройства с микросхемами FPGA сами по себе могут служить и внешними ЛА.
Рассмотрим блок-схему простейшего логического стабилизатора (рис. 3).
Рис. 3. Блок-схема простейшего логического стабилизатора
ЛА работает следующим образом. До начала работы ЛА производится установка счетчика 3, то есть необходимо указать, сколько раз будет производиться запись в память после сигнала старта.
При обращении от host-машины сбрасывается триггер готовности, и ЛА переходит в состояние ожидания сигнала старта. При этом входная информация начинает записываться в память ЛА, что позволяет увидеть состояние сигналов на входах ЛА до момента старта. При приходе сигнала старта в регистр 4 записывается текущее состояние счетчика адреса памяти 3 и взводится триггер старта 6. Триггер старта 6 разрешает работу счетчика числа записей 9. По выполнении заданного числа записей триггер старта 6 сбрасывается, триггер готовности 5 взводится, и ЛА переходит в исходное состояние.
Далее host-машина читает счетчик адреса при старте 4, добавляет или вычитает смещение, задаваемое пользователем, и записывает полученное значение в счетчик текущего адреса памяти 3. При чтении данных host-машиной производится автоинкремент счетчика 3. Таким образом, производится чтение только части блока памяти или всего блока памяти.
Такое построение ЛА позволяет строить диаграммы с требуемым смещением относительно сигнала старта, то есть сигнал старта может быть в начале диаграммы, как у аналоговых осциллографов, в середине или в конце диаграммы — как у цифровых ЛА.
Поскольку данный ЛА находится «целиком в руках пользователя», то это позволяет варьировать условия запуска ЛА по его желанию от любого сигнала в блоке пользователя.
Тактовая частота записи данных также может быть выбрана пользователем. Это может быть как тактовая частота, используемая в конкретном блоке пользователя, так и внешняя частота. Мало того, тактовая частота может переключаться в зависимости от состояний сигналов в блоке пользователя. Можно выбрать другой режим работы управления синхрочастотой — при помощи сигнала разрешения. Управляя этим сигналом, можно блокировать запись данных, что позволяет существенно сократить требуемый для анализатора объем памяти.
ЛА, построенные таким образом, дают возможность строить диаграммы сигналов в любом требуемом пользователем формате, при любой требуемой развертке и любом, задаваемом параметрически, числе отсчетов данных. То есть один и тот же блок внутренней памяти можно сначала использовать как ЛА, имеющий 16 лучей, при 128 отсчетах и получить «панораму» событий, далее переключиться на 8 лучей при 265 отсчетах и так далее — до 1 луча при 2048 отсчетах.
Приведем фрагмент файла-рапорта, полученного при компиляции ЛА, имеющего 8 лучей при 256 отсчетах (рис. 4).
Рис. 4. Часть рапорта, полученного при компиляции ЛА, имеющего 8 лучей при 256 отсчетах
Всего 105 ячеек, большая часть из которых занята привязкой асинхронного интерфейса host-машины к внутреннему синхронному проекту на системной тактовой частоте 33 МГц.
Таким образом, при очень скромных затраченных ресурсах можно получить сервис настоящего цифрового осциллографа.
Если пользователь имеет возможность затратить несколько больше ресурсов, то появляется возможность реализовать уже не простейший ЛА, а более функциональный, имеющий гораздо больше возможностей как по быстродействию, так и по возможности отображения записанной информации.
При необходимости проверить большее число сигналов на вход ЛА может быть подключен коммутатор сигналов, так можно расширить возможности работы ЛА внутри отлаживаемого блока.
Программа управления логическим анализатором представляет собой удобный интерфейс взаимодействия с ЛА и расширяет его возможности и область применения. Основное ее назначение — в отображении и сохранении данных, полученных из ЛА. Программа позволяет просматривать значение сигнала в любой момент времени, масштабировать графики, а также вводить на графики дополнительную информацию, такую как маркеры и подписи.
Кроме того, существует возможность объединения групп каналов в шину. Возможно различное трактование отображения сигналов шин. Так, например, для шины I2C можно отображать адресную часть кадра или данные кадра в виде цифровых значений, при этом сигналы могут быть представлены в прямом или инверсном виде.
Программная оболочка может представлять собой и простейший визуальный компонент из имеющихся библиотек, либо быть специализированной программой. Поскольку данный ЛА с точки зрения интерфейса также находится «целиком в руках пользователя», то и логика работы с шиной host-машины задается пользователем. Именно это и определяет легкость встраивания программной поддержки ЛА в тестовые, а при необходимости и в рабочие программы пользователя. Это позволяет контролировать работу ЛА непосредственно из программ пользователя, что значительно облегчает работу и требует меньших затрат ресурсов host-машины.
На рис. 5 показано основное окно программной оболочки для встроенного ЛА, и поверх него показано несколько окон для выбора настроек.
Рис. 5. Окно программной оболочки для встроенного ЛА (поверх него показано несколько окон для выбора настроек)
Программа имеет несколько вспомогательных окон, необходимых для настройки интерфейса, режимов снятия данных и режимов отображения данных. Основное окно программы разделено на три части. В нижней части окна находятся элементы управления режимом работы. В средней части расположены основные диаграммы сигналов. Они могут быть разбиты на несколько страниц, и пользователь получает возможность просматривать диаграммы сигналов постранично. Также есть возможность установить и перемещать по диаграмме два курсора. В верхней части окна расположена «линза». Здесь изображены состояния сигналов, находящихся между курсорами на основной диаграмме.
Пример разработки аналогичного анализатора приведен на сайте фирмы Digilent Inc. Там же можно получить открытый проект, выполненный студентами университета Technical University of Cluj-Napoca [7].
Оценим «за» и «против» в этом случае. Сравним фирменные логические анализаторы и «самодельные». Сначала рассмотрим фирменные ЛА. Плюсы: поставляемые вместе с софтом фирм-производителей микросхем такие ЛА всегда и гарантированно работают правильно, по крайней мере, именно это обещают фирмы-производители. А минусы — это то, что работают они только через свои «родные» аппаратные адаптеры и никак иначе. Теперь рассмотрим вторую группу ЛА. Самодельные, и особенно взятые из открытых проектов, — они тоже работают. Но — без гарантии того, что «написано, как сказано» (фраза из «Оптимистической трагедии» Вс. Вишневского), поэтому прежде чем использовать такой логический анализатор, необходимо потратить время на его проверку. Но, с другой стороны, «самодельный» ЛА работает с тем аппаратным адаптером, который есть в распоряжении пользователя. Его можно запускать из любого программного обеспечения и это — его несомненное достоинство.
Внешний логический анализатор
Интересное совместное решение данного вопроса предложено компаниями Xilinx и Agilent. Это динамический пробник N5397A, N5406A для осциллографов смешанных сигналов серии Infiniium 8000 и 6000.
Ядро ATC2 (Agilent Trace Core — ядро трассировки Agilent) добавляется к проекту пользователя на этапе выполнения проекта. С помощью программы Core Inserter компании Xilinx можно задать нужные параметры ATC2 и создать необходимое для отладки ядро, которое лучше всего будет соответствовать потребностям разработки пользователя. Параметры включают число внешних выводов, число банков сигналов и вид измерения (анализ логических состояний или анализ временных диаграмм). Логические каналы осциллографа способны выполнять сбор данных только в режиме временных диаграмм. Анализ логических состояний производится осциллографом Infiniium 8000 в режиме постобработки данных, при этом возможно произвести объединение сигналов в шины.
- На каждом внешнем выводе ПЛИС, выделенном для отладки, можно измерить до 64 внутренних сигналов. У осциллографов серии 8000 или 6000 имеется возможность с помощью их 16 логических каналов, подключенных к выводам FPGA, выделенных для отладки, получить доступ к 1024 внутренним сигналам FPGA.
- Перемещение контрольных точек внутри ПЛИС требует затрат времени. Теперь менее чем за секунду можно выполнить измерения на различных наборах внутренних сигналов без изменения схемы. При этом временные соотношения внутри ПЛИС остаются неизменными даже при выборе для исследования нового набора внутренних сигналов.
- Автоматическое включение цифровых каналов и шин в соответствии с выбранным банком сигналов. Названия сигналов, используемые в системе проектирования ПЛИС, автоматически отображаются в виде меток логических каналов в осциллографе смешанных сигналов.
- Поддерживаемые семейства ПЛИС компании Xilinx: Virtex-4, Virtex-II Pro, Virtex-II и Spartan-3.
На рис. 6 показано подключение отлаживаемой платы к осциллографу.
Рис. 6. Осциллограф Infiniium 8000 с отлаживаемой платой
Какие же «за» и «против» в этом случае? По поводу «за» все и так понятно, ибо хороший инструмент — половина успеха. Что касается «против» — жаль, что не каждый разработчик может позволить себе иметь такой инструмент.
Трассирование микроконтроллера
Другой путь, требующий заметно меньше ресурсов для отладки, — это трассирование. Но он требует дополнительных ресурсов для ядра микроконтроллера. И для того чтобы выполнять само трассирование, необходимо к ядру процессора добавить блок, который будет выполнять функции трассирования.
Как же устроено такое отладочное устройство? Оно может выполнять несколько функций. Простейшей будет функция временного останова отлаживаемого микропроцессора, так как это делалось раньше в микропроцессорах по сигналу «Готовность». Функция останова обычно запускается либо при выполнении какой-либо процедуры процессора, либо при совпадении каких-либо условий, либо на каждой инструкции, выполняемой процессором. Например, при отладке есть необходимость проверить сигналы, выдаваемые в порт при каком-то условии.
Однако здесь необходимо учесть то, что при изменении режима работы процессора во времени необходимо изменить и режимы работы других узлов схемы. Представим, что в проекте имеется системный таймер. Этот таймер отсчитывает метки времени и, при достижении заданного значения, выдает свой запрос на блок прерывания процессора. Если мы не изменим режим работы такого таймера, то при выполнении процедур отладки таймер будет находиться в режиме счета и не даст процессору выполнить запланированное число команд между своими прерываниями. В данном случае есть два пути: первый из них — запретить прерывания этого таймера. Но при этом у нас может нарушиться режим работы программных ветвей, привязанных к прерываниям таймера. Второй путь — это синхронизировать работу такого таймера с выполнением команд основного поля памяти процессора. То есть отладочное устройство должно блокировать узлы, привязанные к реальному времени, на тот промежуток времени, пока процессор находится в ожидании или выполняет подпрограмму отладки. Такой способ работы хорошо подходит для тех узлов, которые привязаны к системной синхрочастоте. Однако для узлов, работающих с периферией, такой способ работы может и не подойти. Если отлаживаемый процессор должен очень быстро реагировать на поступающее к нему входное воздействие, то в режиме отладки такое воздействие может быть пропущено. То же самое может произойти, если входные данные должны приходить не кадрами, а потоком. Например, поток Е1 или звуковые, либо видеоданные. При останове процессора для отладки часть входных данных может быть потеряна. Поэтому достаточно трудно выбрать способ отладки, чтобы он одновременно удовлетворял всем, подчас противоречивым потребностям.
Итак, возвращаемся к тому, как «заставить» процессор выполнять трассирование. Здесь можно поступить двумя способами.
Первый способ — привлечь для отладки нечто внешнее. Например, внутри кристалла можно организовать блок сопряжения, а снаружи кристалла задействовать дешевый микроконтроллер (рис. 7).
Рис. 7. Отладка проекта пользователя при помощи дополнительного внешнего микроконтроллера и блока сопряжения
При срабатывании триггера в отладочном устройстве данные из FPGA передаются во внешний микроконтроллер, например по последовательной шине, связывающей отлаживаемый кристалл с микроконтроллером. Достоинством такого способа реализации будет то, что протокол передачи данных от внешнего микроконтроллера до хоста достаточно просто может быть реализован на стандартных аппаратных и программных ресурсах микроконтроллера. Причем такой узел может быть «проектонезависимым» и легко перестраиваться от проекта к проекту. После окончания процедуры передачи данных в хост отладочное устройство должно получить сигнал об окончании цикла останова.
Дополнительным преимуществом такой структуры является то, что внешний по отношению к кристаллу микроконтроллер может кроме отладки выполнять и многие другие функции. Например, функции загрузки и сохранения различных кодов ключей, паролей и т. д. Аналоговая часть микроконтроллера способна проверять аналоговые параметры FPGA — напряжение питания, температуру и другие.
Второй способ — использовать для отладки внутренние ресурсы. Чем занят отлаживаемый микроконтроллер в предыдущем примере? Да он просто бездельничает! Итак, заставим его работать!
Для этого отладочное устройство должно поменять порядок выполнения инструкций микропроцессора. При такой организации отладочное устройство выдает свою инструкцию вместо той, что должна была прийти в потоке команд, читаемых из памяти команд. При этом счетчик команд блокируется. Примером такой трассировки может служить известная команда TRAP. Команда, выдаваемая отладочным устройством, может вызвать какую-либо подпрограмму, находящуюся в основной памяти команд микропроцессора (рис. 8).
Рис. 8. Отладочное устройство, работающее в режиме трассирования
На рис. 9 показано, что замена кода команды из отлаживаемой программы на код команды перехода на мониторную программу выполняется аппаратно. Но ведь эту же процедуру можно делать и программно. Сначала суть дела. Необходимо в памяти программ микропроцессора заменить код команды на код перехода, выполнить процедуры трассирования, вернуться из процедур трассирования и вернуть в памяти команд код той команды, которая была заменена на команду перехода. Для такого способа работы необходимо иметь возможность где-то временно хранить код той самой команды, которую потом нужно «вернуть» назад. Необходимо анализировать коды команд, так как после выполнения операций по отладке программа должна будет «знать» то место, куда она должна вернуться. В том случае, если трассирование выполнялось на той команде, которая не может изменить порядок выполнения команд, то при возврате отлаживаемая программа вернется на следующую команду. Здесь все просто и понятно. А вот в случае команд ветвления, особенно команд с условным ветвлением, необходимо анализировать признаки ветвления. Например, команда перехода по биту четности «заставит» нас проверить значение бита четности на момент исполнения программы. Но и здесь дело довольно предсказуемое. А вот переход по значению аппаратного флага может оказаться роковым, если программа начнет анализировать текущее значение флага, а в это время само значение флага изменится. Конечно, здесь подразумевается, что флаг привязан к синхрочастоте процессора и все его изменения происходят вполне корректно под эту синхрочастоту. Речь в данном случае идет о том, что команда анализируется в одно время, а текущее значение флага выводится на консоль в другое время. Этот промежуток времени в несколько команд процессора может оказаться вполне достаточным для того, чтобы значение флага изменилось. В таком случае пользователь на консоли увидит, что процессор выполнил команду, например ветвление по флагу, равному 1, а само значение флага будет показано равным нулю. Или, например, команда возврата по флагу будет обработана при одном значении флага, а сам переход будет выполнен по другому значению. Чтобы у нас не происходило таких недоразумений, необходимо значения переменных считывать только один раз и хранить эти значения в дополнительных регистрах или в ячейках памяти.
Рис. 9. Порядок выполнения команд при трассировании
И последнее замечание при режиме программной замены кодов команд. Чтобы заменить код команды, ее необходимо записать в поле памяти команд. А как мы знаем, не все процессоры это умеют делать. Конкретная реализация здесь может быть самая разная. Например, можно сделать порт косвенного адреса и косвенных данных. В регистр или в порт ввода/вывода записываются параметры, а при обращении к регистру данных по окончании этого обращения необходимо сформировать аппаратный цикл записи в память программ.
Несомненным достоинством второго способа трассирования является то, что для отладки не нужно иметь ничего внешнего. «Пусть процессор отлаживает себя сам!» — вот девиз этого способа. А недостатки? Недостатки очевидны. Для того чтобы этот способ заработал, необходимо в память программ, которую мы собираемся отлаживать, добавить кусок кода, в котором были бы описаны все процедуры, необходимые для того, чтобы получить информацию, обработать ее и затем передать по каналу связи. После чего отлаживаемый процессор должен произвести процедуру восстановления контекста в регистрах, памяти и т. д., то есть во всех тех узлах, которые использовались для отладки.
Итак, процессор должен устойчиво работать и достоверно передавать информацию, нужна дополнительная память и дополнительный код. С памятью проще всего — для отладки можно взять FPGA с большими ресурсами. Код можно написать и отладить в софт-симуляторе. Но, кроме этого, возможно, есть и еще одна трудность. Когда в этой статье был введен термин «отлаживаемый микроконтроллер», то структура самого микроконтроллера не была определена. А если обратиться к предыдущим статьям этого цикла, то читатель может заметить, что автор неоднократно повторял тезис о том, что не бывает «просто микропроцессора», так же как и не бывает «просто автомобиля». Для каждой конкретной задачи будет оптимален только свой набор команд и только своя архитектура. Вывод: возможен случай, когда микроконтроллер будет оптимален для целевой задачи, но он не сможет делать обработку и пересылку данных. Например, просто потому, что у него не будет соответствующих команд, не будет UART’ов и таймеров для генерации тактовой частоты для UART’а.
Подведем итог этого раздела. В данном случае режим реального времени выполняется только до тех пор, пока не начинаются процедуры трассировки.
И еще один вариант второго способа
То, что было описано выше, достаточно хорошо известно. Программы под названием «Монитор» начали применяться достаточно давно, и они вполне успешно применяются и сегодня. Но ведь мы ведем речь о микроконтроллерах в FPGA, а это значит, что у нас для отладки гораздо больше возможностей, чем у пользователей обычных «однокристалок». Для того чтобы пользоваться мониторными программами, пользователь однокристального микроконтроллера вынужден размещать мониторную программу в основном поле памяти программ. А это значит, что разрядности всех счетчиков адресов и указателей на память должно хватать для работы со всем полем памяти. Значит, команды прямой загрузки указателей также должны иметь поля соответствующей разрядности. И менять их тоже не хочется. Так как же делать отладку, чтобы монитор не был в основном поле памяти программ? В случае проектирования в FPGA — все в наших руках. Делаем второе поле памяти и помещаем мониторную программу туда. Теперь команда трассировки должна не только делать переход по адресу нужной директивы монитора, но и автоматически менять поля памяти. Соответственно, и команда возврата из прерывания, например, должна переключать поля памяти на основное поле памяти. При работе пользовательской программы в основном поле памяти такая команда будет только подтверждать, что выбрано основное поле памяти, а при отладке позволит выполнять переключение полей памяти автоматически.
В чем преимущество данного метода? В теневой памяти можно расположить мониторную программу, отладить ее один раз и далее, при отладке пользовательской программы, не менять содержимое данного поля памяти. Недостатки? Необходим мультиплексор данных, который бы мог коммутировать коды команд, получаемые от основного и теневого полей памяти (рис. 10). Возможно, что для работы с теневым полем памяти может понадобиться не только теневое ПЗУ, но и теневое ОЗУ. Их объем и расположение в поле адресов будет определяться структурой микроконтроллера и его набором команд.
Рис. 10. Отладочное устройство, в котором имеется мультиплексор данных
Еще один вариант, представляющий собой гибрид двух предыдущих
Представим себе случай отладки устройства, не требующего режима реального времени. Например, микроконтроллер производит обслуживание АЦП. Связь с АЦП осуществляется последовательным кодом, и у нас нет жестких требований по времени выполнения программы. Основным условием в таком случае будет такое: программа в отлаживаемом микроконтроллере должна выполняться быстрее, чем работает АЦП. И если мы будем выполнять команды в десятки раз медленнее основного рабочего режима, но при этом удовлетворим условие по обслуживанию АЦП, то сможем значительно упростить отладочное устройство.
Для такого режима можно выполнять команды, выдаваемые отладочным устройством, одну за другой (рис. 11). Представим структуру, состоящую из отлаживаемого микропроцессора, отладочного устройства и внешнего контроллера или host-машины. Отлаживаемый микроконтроллер готов выполнить очередной шаг команды. (Возможны случаи, когда команда выполняется за несколько машинных циклов, например многобайтные команды.) Но отладочное устройство выдает сигнал останова и блокирует выполнение данного цикла. Процессор «замирает» в состоянии ожидания. Далее отладочное устройство производит переключение основного поля памяти на теневое поле памяти. В качестве такового в данном варианте нам будет достаточно только одного регистра для памяти команд и, возможно, еще одного для памяти данных и стека. Далее отладочное устройство заносит в регистр код команды. Если данная команда должна считывать данные из оперативной памяти или из стека, то в дополнительные регистры заносятся соответствующие данные. После завершения записи информации в регистры отладочное устройство «отпускает» отлаживаемый микроконтроллер на один такт. Отлаживаемый микроконтроллер выполняет только одну эту команду и снова останавливается. Устройство отладки вновь получает доступ к регистрам отлаживаемого микроконтроллера и анализирует его состояние.
Рис. 11. Режим отладки
Рассмотрим в качестве примера такой случай — микропроцессор остановился на команде записи в память данных. Отладочное устройство считывает код команды и анализирует его. По результатам анализа отладочное устройство считывает код адреса, по которому должны записываться данные. Этот код адреса может содержаться либо в самом коде команды при непосредственной записи литерала, либо в регистре указателя, при косвенной адресации. В более сложных процессорах код адреса может формироваться и более сложным образом. Например, при косвенной адресации со сдвигом относительно одного из регистров. При этом отладочное устройство может формировать дополнительные служебные сигналы так, чтобы отдельные узлы формирования адреса завершили бы свою работу по вычислению адреса, и на одной из шин микропроцессора появились бы требуемые данные. Далее отладочное устройство на основании полученных данных и данных о состоянии микропроцессора в host-машине или во внешнем микроконтроллере формирует картину состояния отлаживаемого микроконтроллера.
Структура состоит из отлаживаемого микропроцессора, отладочного устройства и внешнего контроллера или host-машины.
По результатам анализа состояния микропроцессора отладочное устройство принимает решение о том, какие данные и куда надо заносить, продолжать ли режим трассировки или произвести переключение на основное поле памяти. Основное поле памяти отлаживаемого микропроцессора может быть восстановлено в соответствии с той картиной памяти, которая находится в host-машине.
Интерфейс для связи отладочного устройства и внешнего процессора может быть любым. Наиболее предпочтительным в данном случае являются те интерфейсы, которые уже имеются в отлаживаемом изделии. Например, PCI или JTAG.
Рассмотрим преимущества. Такой вариант исполнения отладочного устройства является самым простым и требует минимума ресурсов. Недостатки — невозможен режим реального времени и требуется большая программная поддержка.
Первые итоги
Рассмотрены способы организации отладки микроконтроллеров. Приведены блок-схемы отладочных устройств. Описаны достоинства и недостатки каждой из рассмотренных схем. Конечно, приведены только самые распространенные способы выполнения. И на этом рассмотрение вариантов реализации отладочных устройств мы закончим.
В следующей части статьи перейдем к рассмотрению работы с портом JTAG.
Автор благодарит за предоставленные материалы и оборудование фирму Inline, Российское представительство Agilent Technologies, фирму ЭФО, а также всех тех, кто помог ему в его нелегком деле.
Литература- Семенов Н., Каршенбойм И. Микропрограммные автоматы на базе специализированных ИС // Chip News. 2000. № 7.
- Каршенбойм И. Микропроцессор своими руками // Компоненты и технологии. 2002. № 6, 7.
- Каршенбойм И. Микропроцессор своими руками-2. Битовый процессор // Компоненты и технологии. 2003. № 7, 8.
- Каршенбойм И. Микропроцессор своими руками-3. Ассемблер и софт-симулятор // Компоненты и технологии. 2006. № 3, 5.
- Каршенбойм И.Виртуальные кнопки и светодиоды, или Неизвестное обо всем известном JTAG-сканировании // Компоненты и технологии. 2005. № 6.
- Каршенбойм И., Паленов К. «Встроенный» логический анализатор — инструмент разработчика «встроенных» систем // Схемотехника. 2001. № 12.
- www.digilentinc.com/Resources/DesignContest.cfm?Nav1=Design&Nav2=DesignContest
- www.amontec.com/ JTAG Interface: Common Pinouts amt_ann003 (v1.1) Application Note.
- www.heanet.dl.sourceforge.net/sourceforge/jblaster/jblaster-1.1L.tar.gz
Устройства на микроконтроллерах avr своими руками
Микроконтроллеры
Данный раздел посвящен такой современной теме, как микроконтроллеры. В настоящее время без микроконтроллеров, не обходится практически ни одно современное устройство. Если у вас возникли какие-либо вопросы по теме микроконтроллеров, их программированию и т.п., то вы можете посетить форумы: МК для начинающих, AVR-форум, PIC-форум, Arduino и Raspberry Pi, STM32/ARM-форум, программаторы, периферия, ПЛИС, где на ваши вопросы постараются ответить грамотные специалисты и участники форума.
Микроконтроллеры для начинающих:
- Микроконтроллеры AVR для начинающих. Часть 1 — знакомство с семейством AVR
- Микроконтроллеры AVR для начинающих. Часть 2 — программаторы и прошивка. Работа с PonyProg
- Микроконтроллеры AVR для начинающих. Часть 3 — работа с CodeVision AVR
- Книга по программированию микроконтроллеров AVR
- Видеокурс (8 уроков, плюс задачи) по AVR с авторской темой поддержки на форуме
- Обучающее видео по микроконтроллерам для начинающих
- AVR на C — просто?
- AVR на C — просто? Часть 2
- AVR на C — просто? Часть 3
- AVR на C — просто? Часть 4
- Фьюзы микроконтроллеров AVR – как и с чем их едят
- Учимся создавать устройства на микроконтроллерах: «светофор»
- Учимся создавать устройства на микроконтроллерах: «индикатор заряда аккумулятора»
- Идеальная программа на С для МК, попробуем написать
- Идеальная программа на С для МК — продолжение
- Написание программ на С в Code Vision AVR для контроллеров не имеющих ОЗУ
- Timer/Counter for AVR для начинающих
- ШИМ на микроконтроллере Attiny13
- ШИМ контроллер на МК Attiny2313 (управление вентилятором)
- ШИМ-регулятор на микроконтроллере ATmega8515
- Регулятор яркости (ШИМ) для светодиодного драйвера или велофары
- PWM или ШИМ (широтно импульсная модуляция) на AVR для новичков. Часть 1
- PWM или ШИМ на AVR для новичков. Часть 2 — программный ШИМ
- Программный ШИМ на STM8L
- Работы MCP3421 АЦП 18 бит с микроконтроллером ATmega32
- Отладочная плата на AT89S52 или изучаем МК с нуля
- Счётчик с памятью на Attiny2313
- Управление 595 сдвиговыми регистрами при помощи AVR по SPI
- Включение и выключение приборов одной кнопкой
- Включение и выключение устройств одной кнопкой
- Подключение светодиодов к AVR
- mikroPascal for AVR. Урок 1. Введение
- mikroPascal for AVR. Урок 2. АЦП, UART и отображение
- mikroPascal for AVR. Урок 3. Еще раз UART а также немного о прерываниях
- mikroPascal for AVR. Урок 4. Прерывания, прерывания и еще раз прерывания. Таймеры
- mikroPascal for AVR. Урок 5. Использование OneWire. Встроенная библиотека
- mikroPascal for AVR. Урок 6. Снова работа с OneWire. Расширенная библиотека
- mikroPascal for AVR. Урок 7. Аппаратный ШИМ
- mikroPascal for AVR. Урок 8. Программный ШИМ
- Урок по PWM (ШИМ) для mikroPascal for AVR
- Урок по mikropascal for AVR.I2C
- AvrStudio 4. Библиотека для AVR. Модуль для I2C или TWI
- Algorithm Builder. Урок 1 — Введение
- Algorithm Builder. Урок 2 — О создании первой программы
- Работа с I2C и SPI на примере часов реального времени PCA2129T
- Библиотека для управления несколькими 1Wire устройствами при топологии точка-точка
- Расширение количества портов микроконтролера PIC18 через SPI-интерфейс
- AvrStudio 4. CMSIS для AVR. Структура для GPIO
- PSoC. Глава 0. Введение. Первый пример
- PSoC. Глава 1. ADC
- PSoC. Глава 2. UART
- PSoC. Глава 3. DAC и UART RX линия
- PSoC. Глава 4. Таймеры и глобальные прерывания
- Начинаем работать с FPGA или ПЛИС это просто. Часть 1
- Начинаем работать с FPGA или ПЛИС это просто. Часть 2
- Внутреннее устройство ПЛИС (FPGA)
- FPGA. Просто о сложном — Философия написания конфигураций для ПЛИС
- FPGA. Просто о сложном — Создание проекта в Quartus II. Сравнение VHDL и Verilog
- Начинаем работать с микроконтроллерами MSP430 от фирмы Texas Instruments
- Проект виртуального СОМ порта для отладочной платы STM32h207
- SYS/BIOS: операционная система реального времени для микроконтроллеров MSP430
Уроки по STM32, ARM:
- IAR и STM32 CORTEX M0. Часть 0x00 (пустой треп и отмазки)
- IAR и STM32 CORTEX M0. Часть 0x01. Подготовка платформы IAR
- IAR и STM32 CORTEX M0. Часть 0x02, Начинаем пайку!
- IAR и STM32 CORTEX M0. Часть 0x03, Программируем без программатора
- IAR и STM32 CORTEX M0. Часть 0x04 Автоматизация прошивки IAR
- IAR и STM32 CORTEX M0. Часть 0x05, GPIO — входит и выходит…
- ARM – это просто (часть 1)
- ARM – это просто (часть 2)
- ARM – это просто (часть 3)
- STM8. Урок 1. Настройки среды ST Visual Develop
- STM8. Урок 2. Тактирование контроллера
- STM8. Урок 3. Описание GPIO и библиотека SPL
- STM8. Урок 4. Настройка таймера 4. Прерывания таймера
- STM8. Cosmic ошибка компилятора «FlexLM No such feature exists»
- STM32 старт с CMSIS
- STM32 простой и быстрый старт с CooCox CoIDE
- ARM. STM32 быстрый старт
- STM32. Урок 1. Выбор отладочной платы
- STM32. Урок 2. Порты ввода/вывода
- STM32. Урок 3. UART
- STM32. Урок 4. Basic timers
- STM32. Урок 5. Подключение LCD дисплея Wh2602
- STM32F4. Урок 1 — управление светодиодами
- STM32F4. Урок 2 — нажатие кнопки
- STM32F4. Урок 3 — цифровые выходы
- STM32F4. Урок 4 — цифровые входы
- STM32F4. Урок 5 — работа с АЦП
- STM32F4. Урок 6 — работа с дисплеем ST7783
- STM32F4. Урок 7 — Графическая библиотека для дисплея ST7783
- STM32F4. Урок 8 — Библиотека шрифтов для дисплея ST7783
- STM32F4. Урок 9 — Тачскрин ADS7843
- STM32F4. Урок 10 — Программные таймер и счетчик
- STM32F4. Урок 11 — Генератор случайных чисел
- STM32F4. Урок 12 — UART
- STM32F4. Урок 13 — Работа с SD-картой
- STM32F4. Урок 14 — АЦП с использованием DMA
- STM32F4. Урок 15 — Низкоуровневый SPI
- STM32F4. Урок 16 — Работа с ЦАП MAX5250 по SPI
- STM32F4. Урок 17 — Управление LIS302DL через SPI
- STM32F4. Урок 18 — Низкоуровневый I2C
- STM32F4. Урок 19 — Работа с EEprom M24C02 по I2C
- STM32F4. Урок 20 — Отображение изображения с SD-карты
- STM32F4. Урок 21 — АЦП в групповом режиме
- STM32F4. Урок 22 — Системная проверка
- STM32F4. Урок 23 — Работа с ЦАП
- STM32F4. Урок 24 — Работа с ЦАП через DMA
- STM32F4. Урок 25 — Работа с ШИМ
- STM32F4. Урок 26 — Передача данных АЦП на ПК
- STM32F4. Урок 27 — Подключение камеры OV9655
- STM32F4. Урок 28 — Работа с внешними прерываниями
- STM32F4. Урок 29 — Работа с PS2-клавиатурой
- STM32F4. Урок 30 — Работа с PS2-мышкой
- STM32F4. Урок 31 — Использование USB-OTG как виртуальный COM-порт
- STM32F4. Урок 32 — Использование USB-OTG в режиме MSC_HOST
- STM32F4. Урок 33 — Работа с дисплеем SSD1289
- STM32F4. Урок 34 — Подключение символьного LCD-дисплея 16х2 (HD44780)
- USB FLASH. Введение и часть 1 — Работа с AT45DB161D
- USB FLASH. Часть 2 — Периферия USB в STM32F0
- USB FLASH. Часть 3 — Заключительная. Протокол SCSI
- FAT32 на STM32
- Управление текстовыми командами (USART на STM32)
- Обработка нажатия пользовательской кнопки, используя внешние прерывания
- Подключение матричной клавиатуры к STM32F4Discovery
- Библиотека матричной клавиатуры для STM32F4 Discovery
- Библиотека HD44780 4 строки по 20 символов для STM32
- Зажигаем на TLC5940
- IAR EWARM. STM32F030F4P6. Микроконтроллер отсутствует в списке…
- STM32F030. Не блокирующая реализация I2C
- Nucleo-F411RE USB-ADC
- Работаем с LabVIEW на примере STM32
Уроки по AVR (BASCOM-AVR):
- Урок 1. Что такое AVR микроконтроллер?
- Урок 2. Программатор AVR микроконтроллеров
- Урок 3. Отладочная плата для AVR микроконтроллера Attiy13
- Урок 4. Порты вывода в микроконтроллере Attiy13
- Урок 5. Программирование AVR микроконтроллеров
- Урок 6. Первая конструкция на микроконтроллере AVR
- Урок 7. Работа с ЖК индикатором на контроллере HD44780 и его аналогах
- Урок 8. Ввод информации в МК. Подключение кнопки к МК BASCOM-AVR
- Урок 9. Работа с АЦП на примере ATtiny13 в BASCOM-AVR
- Урок 10. Работа с UART интерфейсом
- Урок 11. Работаем с DS1307 микросхемой часов реального времени
- Урок 12. Работа с компьютерной PS/2 клавиатурой в BASCOM-AVR
- Урок 13. Аппаратная ШИМ на микроконтроллере
- Урок 14. Программный UART в BASCOM-AVR
- Урок 15. Работа с датчиком температуры DS18B20 в BASCOM-AVR
- Урок 16. Работа с энкодером в BASCOM-AVR
- Урок 17. Использование бутлоадера в BASCOM-AVR
- Урок 18. Работа с дисплеем от Nokia 3310
- Урок 19. Работа с ультразвуковым датчиком расстояния HC-SR04 в BASCOM-AVR
- Урок 20. Подключение семисегментного индикатора по трём проводам (74HC595)
- Урок 21. BASCOM-AVR и Arduino
Схемы и устройства на микроконтроллерах:
- Мини цифровая паяльная станция
- Цифровая паяльная станция своими руками DSS-1
- Цифровая паяльная станция 4 в 1 (DSS-2.1)
- Станция для монтажа и демонтажа BGA и других SMD радио компонентов
- Зарядное устройство-анализатор NiMh/NiCd аккумуляторов
- Интеллектуальное зарядное устройство NiMh/NiCd аккумуляторов
- Тестер АА аккумуляторов
- Индикатор состояния заряда 12В аккумулятора
- Два микроконтроллерных регулятора мощности
- Автосвет — управление внешними световыми приборами авто
- Бортовой тахометр на PIC16C84
- Велокомпьютер на PIC16F628A и 4-разрядном LED индикаторе
- Велокомпьютер своими руками
- Wi-Fi модули ESP8266 и AVR микроконтроллер
- Связь МК при помощи RF модулей
- Радиосвязь между двумя микроконтроллерами с применением RF-модулей
- Интерфейс связи между GSM модулем SIM300 и микроконтроллером AVR ATmega32
- Отправка и получение SMS, используя GSM модуль SIM300
- Как связать микроконтроллер и компьютер по каналу RS-232
- Радиоуправление тремя нагрузками на «RF модулях» с применением микроконтроллеров
- Устройство радиоуправления на 12 команд
- Устройство радиоуправления (радиоключ) на 3 команды
- Устройство ДУ на 12 команд повышенной мощности
- Электронные весы на базе HX711
- Ультразвуковой контроль уровня воды на микроконтроллере 8051
- Ультразвуковой дальномер
- Мини радар, измеритель скорости
- Связь по Bluetooth между STM32 и Android
- GPS приемник своими руками на модуле EB-500 и AVR
- Портативный GPS Data Logger
- Акселерометр ADXL345
- Акселерометр и гироскоп MPU6050
- Тестер концентрации алкогольных паров на AVR
- Простой электронный компас
- Простейший ландромат
- Интеллектуальный ландромат
- Один купюроприемник и четыре аттракциона
- Простой торговый автомат своими руками
- Сопряжение с компьютером цифрового мультиметра серии 830
- Электронный кодовый замок на ATmega8
- Кодовый замок на PIC16F628A
- Индикация места ключа (Часть1)
- Индикация места ключа (Часть 2)
- Кодовый замок
- Переговорное устройство и хаб
- RFID считыватель транспондеров TIRIS от Texas Instruments
- Считыватель электронных ключей iButton (DS1990) на МК ATtiny2313
- Электронный замок с ключами iButton
- Охранное устройство с ключами iButton и датчиком удара
- Датчик движения на PIC-микроконтроллере с применением PIR-сенсора
- Охранное устройство с оповещением по телефонной линии
- Охранное устройство «Лазерная растяжка»
- Устройство многокомандного дистанционного управления для проведения пиротехнических шоу
- Модуль автономного сброса
- 4-х канальный контроллер нагрузок с управлением по UART
- Контроллер 8 нагрузок на ATtiny13 с управлением по UART
- USB устройство ввода-вывода на PIC18F4550 с 16 цифровыми I/O и 8 аналоговыми входами
- Дата-логгер (регистратор аналоговых данных)
- Устройство ввода вывода
- USB Device
- COM-терминал
- Подключение и запуск мотора от FDD (JCM5044)
- Простой тестер униполярных шаговых двигателей на ATtiny2313 и ULN2004
- Микрошаговый драйвер из старого принтера на микроконтроллере ATmega32
- Управление двумя шаговыми двигателями по UART
- Датчик оборотов двигателя для контроллера
- Отладочная плата для устройств на МК Atmega8/48/88/168/328
- Отладочная плата для микроконтроллеров ATtiny13/15
- Универсальная основа для контроллера с графическим интерфейсом на ATmega8 c OLED дисплеем
- Простая отладочная плата на ATTINY2313
- Отладочная плата AT90USB162
- PIC16F877A — Отладочная плата
- Набор для разработки на основе микроконтроллера PIC18F4520
- Универсальная отладочная плата для AVR
- Контроль 15-ти контактов одним входом PIC-микроконтроллера
- Дисплейно-клавиатурный драйвер TM1638
- Подключаем PS/2 клавиатуру к PIC
- Подключение PS/2, AT клавиатуры к микроконтроллеру Attiny2313
- Интерфейсная плата для связи клавиатуры PS2 с LCD-дисплеем на МК PICAXE
- Клавиатурный датчик кода Морзе (PS/2 и PIC16F628A)
- ABCom — компьютер на ATmega1284P
- Электронные аксессуары для игры S.T.A.L.K.E.R.
- Электронная игра «Светодиодные наперстки»
- Экономичные игральные кости на PIC12F629
- Электронная игральная кость на ATtiny 2313
- Игровая консоль на STM32 и LCD Nokia 5110
- Игровая видеоконсоль на AVR AVGA
- Контроллер кнопок для игры Brein Ring v2.0
- USB шутка
- USB шутка 2
- Игра «разминируй бомбу»
- Руль, джойстик и геймпад с обратной связью (Force Feedback)
- Микроконтроллерный вирус и антивирус
- USB Password Keeper
- Почему одни микроконтроллеры надежнее других
- Переходник ATmega8 TQFP в DIP
- Вспомогательные модули для отладочных плат
- Разгон ATmega328 (30 МГц)
Освещение, LED, ЖКИ и LCD:
- Устройство мультимедиа (Multimedia device)
- Простой тачскрин (touch screen) интерфейс на PIC
- Сенсорный модуль на AVR
- Простой тач-сенсор на AVR
- Работаем с ЖКИ. Часть 1
- Работаем с ЖКИ. Часть 2
- LCD Wh2602B компании Winstar
- Обзор IPS дисплея 80х160 точек с контроллером ST7735
- Обзор дисплея 128х160 точек с контроллером ST7735
- Подключение и использование LCD Nokia 3310 (5110) к AVR-микроконтроллеру
- Генератор отрицательного напряжения для дисплея 1602 и подобных
- Небольшой тест OLED дисплея Winstar WEH001602ALPP5N
- Подключаем LCD от Siemens C75 и ME75 к STM32
- Работа с дисплеем LPH8731-3C от телефонов Siemens
- Особенности работы с дисплеем LPH9157-2
- Библиотека для дисплея LPH9135
- Библиотека для символьного дисплея на базе HD44780
- TFT дисплей 3.2 с открытым исходным кодом
- Подключаем дисплей Nokia1616 к BASCOM-AVR
- Подключение графического ЖК-дисплея 128х64 KS0108 к AT89C52
- Переходник ЖКИ HD44780 в UART
- Устройство отображения информации на LCD-дисплее 16×2 с контролером HD44780
- Электронная метка с ЖКИ на микроконтроллере
- Подключение LCD-дисплея ST7565 к микроконтроллеру MSP430
- SSD1331 RGB OLED дисплей
- Программная реализация интерфейса управления TM1640 на ATmega
- Советчик в кармане
- Нет ЖКИ-драйвера – есть калькулятор!
- Электронная читалка своими руками на микроконтроллере ATmega32
- Подключение семисегментного индикатора по UART на ATtiny13
- Динамическая индикация на светодиодных 7-сегментных индикаторах с программной регулировкой яркости
- Еще раз о динамической индикации на LED-индикаторах
- Подключение 4-разрядного LED индикатора всего к 4 портам микроконтроллера
- Управление RGB-прожекторами
- Простая мигалка на RGB светодиоде с использованием МК ATtiny2313 (ATtiny13)
- Управление светодиодами WS2813 с адресацией с помощью ATtiny
- Управление RGB светодиодом
- Бегущая строка на PIC16F877 на 20 матрицах 8х8 или 160х8 пикселей
- Бегущая строка 8×80 LED на PIC16F628
- Бегущая строка 8×80 с набором текста на клавиатуре (PIC16F628)
- Бегущая строка на PIC контроллере
- Бегущая строка на ATmega168
- Светодиодная гирлянда на микроконтроллере
- Простая светодиодная гирлянда на МК Attiny13
- POV — Светодиодная подсветка велосипедных колес на MSP430
- Бегущая строка с механической разверткой
- DMX512 Контроллер на 40 каналов
- PixelPOI
- Светодиодная матрица – МОДЖЕТ
- Эффект Fade Out для LED при помощи ШИМ (PIC)
- 3-х канальный ШИМ регулятор на Attiny2313
- ШИМ-регулятор на AVR
- Регулятор яркости подсветки на датчике Bh2750
- Светофор своими руками
- Устройство имитации работы светофора на микроконтроллере PIC16F84A
- Светофор на PIC12F629 с «неправильной» программой
- Светофор на ATtiny13
- Имитация светофора
- Управление светодиодом на МК Attiny13
- Эффект горящей свечи на ATTiny
- АЦП на TINY13 и 16 светодиодов
- Новогодняя лампа-ночник из RGB-светодиодов на плате LaunchPad MSP-EXP430, управляемая ИК-пультом
- Ночник на микроконтроллере
- ИК пульт на MSP430 Lanchpad
- Доработка китайского налобного фонарика
- LED светильник с ШИМ и таймером
- Контроллер люстры с 6 лампами
- Адаптер двухканального светового шнура
- Контроллер двухцветного светового шнура Flexilight
- Прокачай свой монитор. Собери интерактивную фоновую подсветку
Аудио:
- Анализатор свиста на Cortex-M4 или включение нагрузки по свистку
- Передача звука по радиоканалу с использованием кодека Speex
- Визуализация аудио сигнала на Nokia 3310 LCD
- Аудио анализатор спектра на Atmega32
- Простой SD аудио-плеер
- MMC/SD WAV стерео плеер на ATmega32 с пультом управления от ТВ
- SD WAV плеер с управлением по UART
- Воспроизведение видео на цветном ЖК-дисплее Nokia с помощью 8 битного AVR микроконтроллера Atmega32
- Вторая жизнь Creative Sound Blaster
- MP3 плеер своими руками
- Воспроизведение нот на PIC
- Воспроизведение звука на PIC
- Пианино на микроконтроллере PIC18F4550
- Эффект эхо (echo) на микроконтроллере Atmega32
- MMC/SD диктофон на PIC16F877A
- Музыкальный звонок с тайной кнопкой
- Музыкальный звонок на МК Attiny13
- Музыкальный звонок с возможностью замены мелодий без использования программатора
- Музыкальный звонок, который умеет всё (Z80)
- Дверной звонок
Часы и таймеры:
- Часы на газоразрядных индикаторах
- Часы на газоразрядных индикаторах V2.0
- Nixie Clock «King Size»
- Электронные часы-будильник на газоразрядных индикаторах и МК
- Часы на газоразрядных индикаторах с ATmega8
- Часы в стиле стимпанк на газоразрядных индикаторах
- Наручные часы на ГРИ (по проекту Bars)
- Многофункциональные часы-термостат с дистанционным управлением
- Музыкальные часы с термометрами на PIC16F873A
- Шахматные часы — сувенир
- Многофункциональные наручные LED часы
- Говорящие часы
- Часы/календарь на МК ATTiny2313 и RTC DS1305
- Часы на DS3231 и AVR-микроконтроллере
- Часы на PCA21125 и AVR-микроконтроллере
- Часы на PIC16F877A
- Часы на PIC16F628A и FYQ3641A
- Часы на PIC-микроконтроллере
- Часы с автоматической регулировкой яркости, сенсорными кнопками и т.д.
- Часы на Attiny2313
- LED часы на Attiny2313 и DS1307
- Часы на ATtiny2313, DS1307 и ЖКИ индикаторе 8*2
- Часы с несколькими функциями на AVR
- Будильник радио
- Часы-будильник с термометром
- Часы — календарь
- Говорящие часы — термометр с календарем
- Цифровые часы на RTC DS12C887 и 8051
- RTC на STM8L-Discovery
- Библиотека для работы с шиной I2C и с часами реального времени PCF8583
- Часы на PCF8523 и AVR-микроконтроллере
- Часы-бомба или Detonator Clock
- Двоичные часики на ATmega8
- Простые бинарные часы
- USB счетчик посещений на микроконтроллере AVR ATtiny25
- Система автоматической подачи звонков на AVR
- Реле времени
- Таймер 0…9999 секунд для засветки фоторезиста на ATtiny13
- Бытовой таймер на PIC-микроконтроллере
- Простой таймер на PIC16F84A
- Таймер на PIC
- Таймер обратного отсчёта на МК Attiny2313
- Таймер обратного отсчета на МК ATmega8 + ЖКИ 8х2 или 16х1
- Таймер обратного отсчета на 0-9999 секунд на PIC12F683
- Многофункциональный циклический таймер
- Устанавливаем в корпус многофункциональный циклический таймер
Измерение температуры, термостаты и терморегуляторы на микроконтроллерах:
- Метеостанция на STM32
- Комнатная метеостанция
- WiFi ESP8266 — новый шаг в проектировании домашних устройств с беспроводным интерфейсом
- Беспроводной измеритель температуры и влажности с USB-интерфейсом
- Измеритель влажности и температуры
- Датчик температуры и относительной влажности с адаптивной регулировкой яркости индикатора
- Простой измеритель температуры
- LCD-термометр
- USB термометр
- Bluetooth термометр
- Bluetooth термометр на AVR (Arduino)
- Термометр на PIC
- Термометр на датчике SE97B и AVR-микроконтроллере
- Цифровой термометр на датчике LM75AD
- Подключение датчика температуры окружающей среды DS18B20 к микроконтроллеру
- Термометр на DS18B20
- Термореле с цифровым датчиком температуры
- Сдвоенный цифровой термометр на ATmega8 и DS18B20
- Простой термометр для дома с двумя датчиками DS18B20
- Термометр на МК Attiny13 и датчике DS18B20
- Необычный термометр на ATtiny13 и DS18B20
- Декоративный термометр на микроконтроллере
- Термометр на AT89C2051 и DS18B20
- Универсальный двухканальный термометр на AVR
- Многоточечный термометр
- Термометр на STM8L-Discovery
- XControl
- LAN Control — система удаленного управления через локальную сеть, интернет и ПДУ
- Электронный термостат и сигнализатор температуры на PIC16C84
- Термостат на PIC16F877A и LCD NOKIA 3310
- Простой терморегулятор
- Терморегулятор с предварительной установкой 4-х температур контроля для термометра помещения
- Терморегулятор на PIC
- Программируемый термостабилизатор
- Барометр на AVR
- Часы, термометр, термостат, будильник, система удалённого управления
- Часы + термометр на PIC16F628A и LED индикаторах
Измерения, генераторы:
- 30В вольтметр на MSP430
- Многоканальный дистанционный вольтметр
- Малогабаритный частотомер-цифровая шкала до 200 МГц с ЖКИ дисплеем
- Частотомер до 16 МГц на микроконтроллере
- Самодельный осциллограф на микроконтроллере AVR
- Осциллографический пробник на ATmega8
- Цифровой LCD-осциллограф
- USB-осциллограф
- Генератор сигналов на МК ATtiny2313
- Функциональный DDS-генератор
- DDS генератор
- Определитель цвета
- Цифровой дозиметр Гамма_1
Программаторы, восстановление МК, прошивка:
- Клон AVR JTAG ICE
- Китайский JTAG ICE для AVR и установка драйверов
- Клон PICkit 2
- PURPIC, переносной клон PICkit2
- Простой USB программатор PIC
- Простейший программатор для PIC
- Простой программатор PIC-контроллеров с использованием PicPgm
- Программатор для PIC-контроллеров
- Сохранение калибровочной константы для контроллеров PIC 12F629 и 12F675
- Как сделать простой программатор для PIC-ов и AVR-ов
- Программатор для микроконтроллеров AT89C51/52/55
- Простой программатор
- USBasp — USB программатор для микроконтроллеров Atmel AVR
- Доработка программатора USBasp
- VUSBTiny программатор
- Универсальный USB-программатор
- Адаптер ZIF SOIC для программатора
- Универсальный адаптер-программатор
- Универсальный адаптер для Atmel STK500
- Компактный программатор USBTiny-MkII SLIM (клон AVRISP-MKII)
- Программатор ATtiny84 USBtiny AVR ISP
- AVR-программатор ULTI-SP
- USB программатор микроконтроллеров AVR и AT89S, совместимый с AVR910
- Программатор Громова для ATmega8A-PU
- AVR-программатор на PIC
- Универсальный программатор
- Исправление фузов AVR
- Устройство оживления микроконтроллеров Atmel
- SinaProg + ATmega328P исправляем прошивку фьюзов
- Программатор для КР573РФ5
- Внутрисхемное программирование и отладка микроконтроллеров Microchip
- Программирование микроконтроллеров AVR в Ubuntu
- Программирование микроконтроллеров AVR в Ubuntu-2 (GUI)
- STM32F4DISCOVERY: Работа с ARM Cortex M4
Радиоэлектроника, схемы и самодельные радиоэлектронные устройства, секреты и полезности
Радиоэлектроника и электронные устройства своими руками. Принципиальные схемы и конструкции источников питания, усилителей, приемников, передатчиков и трансиверов, устройств автоматики на микроконтроллерах и дискретных радиоэлектронных компонентах, схемы на радиолампах, транзисторах и т.п. Представлены мои эксперименты и наработки по радиоэлектронике и схемотехнике, реализации популярных схем и электронных конструкций.
Июль 01 2019 → Радиоэлектроника
Описана схема самодельного блока бесперебойного питания на основе двух интегральных стабилизаторов, который обеспечит непрерывную работу устройства с низковольтным питанием. Элементом накопления энергии для резервирования служит Ni-MH аккумуляторная батарея.
0 0 1967
Январь 04 2019 → Радиоэлектроника
В данном материале я постараюсь очень подробно и в пошаговом режиме рассказать как самостоятельно изготовить печатную плату по методологии «ЛУТ», чтобы она получилась качественной, аккуратной и как правило с первого раза! В качестве примера будет описано изготовление печатной платы для усилителя низкой частоты на микросхеме TDA7250.
3 0 6214
Январь 04 2019 → Радиоэлектроника
Небольшая история о ремонте усилителя «Радиотехника У-101 стерео», замена модулей УМЗЧ на схему усиления мощности с TDA7250, профилактические работы, эксперименты с выходными транзисторами TIP142 + TIP147, BDW93 + BDW94.
Внимание! В статье 58 фото, схем и иллюстраций — несколько МБ трафика!
4 9 16394
Ноябрь 21 2016 → Радиоэлектроника
Схема и описание простого самодельного термореле на операционном усилителе LM358, также приведена печатная плата и фото готового устройства. Применяется для включения или выключения питания различных устройств при достижении некоторого порога температуры на термодатчике, который прикреплен к контролируемому объекту. Можно управлять нагревательными элементами, лампами накаливания, электронасосами для отопления, бытовой электроникой и т.п.
4 7 8989
Сентябрь 14 2016 → Радиоэлектроника
В данной публикации будет идти речь об изготовлении передней панели к самодельному усилителю, а также немного расскажу как я планировал корпус усилителя. Поведаю вам о простом способе нанесения надписей на металлическую поверхность передней панели, а также о других полезностях при планировании и изготовлении корпуса для самодельного УМЗЧ.
6 2 11447
Июль 25 2016 → Радиоэлектроника
Перебирая у себя на чердаке разный хлам нашел маленькое и интересное изделие — свой первый радиоприемник, который выполнен на трех транзисторах… Решил запустить его, послушать что он сейчас может принимать в диапазоне СВ (средние волны, MW), вспомнить те времена и написать небольшую статью на память.
6 10 4755
Март 06 2015 → Радиоэлектроника
Описано изготовление экспериментальной многодиапазонной КВ катушки для самодельного регенеративного радиоприемника на одной лампе. Приведен опыт расчета, а также SciLab скрипт для подбора количества витков и конденсаторов чтобы покрыть определенный участок частот.
9 13 6736
Январь 08 2015 → Радиоэлектроника
При экспериментах с микроконтроллерами, особенно когда начинаешь и делаешь первые шаги, очень удобно собирать схемы на макетной панельке с проводниками-перемычками. В статье кратко опишу как можно использовать в подобных целях проводники, коннекторами и другие компоненты, изъятые из старых компьютерных корпусов.
1 0 3011
Январь 05 2015 → Радиоэлектроника
Эксперимент по переделыванию батарейного регенератора(регенеративный радиоприемник) на лампе 2К2М под диапазон коротких волн(КВ, SW). Описано и проиллюстрировано изготовление катушки индуктивности для КВ диапазона. Также кратко расскажу как ведет себя приемник с новой катушкой и что изменилось.
7 12 20666
Ноябрь 26 2014 → Радиоэлектроника
Заснял небольшое видео, которое демонстрирует работу радиоприемника на одной лампе, о котором я рассказывал в недавней публикации. Продемонстрирован прием и настройку на несколько радиостанций в разных режимах работы.
8 0 2793
Как создать свою собственную плату микроконтроллера STM32
В этом пошаговом руководстве вы узнаете, как создать свою собственную плату микроконтроллера на основе популярного микроконтроллера STM32 от ST Microelectronics.
Опубликовано Джон Тил
Я разделю весь процесс проектирования на три основных этапа:
ШАГ 1 — Проектирование системы
ШАГ 2 — Проектирование схемотехники
ШАГ 3 — Проектирование компоновки печатной платы
Шаг 1 — Система / Эскизный проект
При разработке новой схемы первым шагом является проектирование системы высокого уровня (которое я также называю предварительным проектом).Прежде чем вдаваться в подробности проектирования полной принципиальной схемы, всегда лучше сначала сосредоточиться на общей картине всей системы.
Проектирование системы состоит в основном из двух этапов: создание блок-схемы и выбор всех критических компонентов (микрочипов, датчиков, дисплеев и т. Д.). Системный дизайн рассматривает каждую функцию как черный ящик
В инженерии черный ящик — это объект, который можно рассматривать с точки зрения его входов и выходов, но без какого-либо знания его внутренней работы.При проектировании системного уровня основное внимание уделяется взаимодействию и функциональности более высокого уровня.
Для более глубокого обучения ознакомьтесь с моим курсом проектирования печатных плат, который включает более 3 часов видео, в котором я проектирую более сложную плату STM32.
Блок-схема
Ниже приведена блок-схема, с которой мы будем работать в этой серии руководств. Как я уже упоминал, в этом первом руководстве мы сосредоточимся только на самом микроконтроллере.В будущих уроках мы расширим дизайн, чтобы включить все функции, показанные на этой блок-схеме.
Блок-схема должна включать блок для каждой основной функции, взаимосвязи между различными блоками, определенные протоколы связи и любые известные уровни напряжения (входное напряжение питания, напряжение батареи и т. Д.).
Позже, когда все компоненты были выбраны и требуемые напряжения питания известны, я хотел бы добавить напряжения питания к блок-схеме.Включая напряжение питания для каждого функционального блока, он позволяет легко определить все напряжения питания, которые вам понадобятся, а также любые переключатели уровня.
В большинстве случаев, когда два электронных компонента обмениваются данными, им необходимо использовать одно и то же напряжение питания. Если они питаются от разных напряжений, вам обычно потребуется добавить переключатель уровня.
Блок-схема системного уровня. Блоки желтого цвета включены в это начальное руководство.
Теперь, когда у нас есть блок-схема, мы можем лучше понять необходимые требования к микроконтроллеру.Пока вы не наметили все, что будет подключаться к микроконтроллеру, невозможно выбрать подходящий микроконтроллер.
Выбрать микроконтроллер
При выборе микроконтроллера (или любого другого электронного компонента) мне нравится использовать веб-сайт дистрибьютора электроники, такой как Newark.com. Это позволяет легко сравнивать различные варианты на основе различных спецификаций, цен и наличия. Это также простой способ быстро получить доступ к таблице данных компонента.
Если вы регулярно читаете этот блог, то знаете, что я большой поклонник микроконтроллеров ARM Cortex-M. Микроконтроллеры Arm Cortex-M — самая популярная линейка микроконтроллеров, используемых в коммерческих электронных продуктах. Они используются в десятках миллиардов устройств.
Микроконтроллерыот Microchip (включая Atmel) могут доминировать на рынке производителей, но Arm доминирует на рынке коммерческих продуктов.
Arm не производит чипы напрямую.Вместо этого они разрабатывают архитектуры процессоров, которые затем лицензируются и производятся другими производителями микросхем, включая ST, NXP, Microchip, Texas Instruments, Silicon Labs, Cypress и Nordic.
ARM Cortex-M — это 32-разрядная архитектура, которая является фантастическим выбором для более ресурсоемких задач по сравнению с тем, что доступно для более старых 8-разрядных микроконтроллеров, таких как ядра 8051, PIC и AVR.
МикроконтроллерыArm бывают разных уровней производительности, включая Cortex-M0, M0 +, M1, M3, M4 и M7.Некоторые версии доступны с блоком с плавающей запятой (FPU) и обозначены буквой F в номере модели, например Cortex-M4F.
Одним из самых больших преимуществ процессоров Arm Cortex-M является их низкая цена при требуемом уровне производительности. Фактически, даже если для вашего приложения достаточно 8-битного микроконтроллера, вы все равно должны рассмотреть 32-битный микроконтроллер Cortex-M.
Существуют микроконтроллеры Cortex-M по ценам, очень сопоставимым с некоторыми из старых 8-битных чипов.Основание вашего дизайна на 32-битном микроконтроллере дает вам больше возможностей для роста, если вы захотите добавить дополнительные функции в будущем.
STM32 от ST Microelectronics — моя любимая линейка микроконтроллеров ARM Cortex-M.
Хотя многие производители микросхем предлагают микроконтроллеры Cortex-M, мне больше всего нравится серия STM32 от ST Microelectronics. Линия микроконтроллеров STM32 довольно обширна и предлагает практически любые функции и уровень производительности, которые вам когда-либо понадобятся.Строку STM32 можно разбить на несколько подсерий, как показано в Таблице 1 ниже.
Серия STM32 | Cortex-Mx | Макс. Частота (МГц) | Производительность (DMIPS) |
F0 | M0 | 48 | 38 |
F1 | м3 | 72 | 61 |
F3 | M4 | 72 | 90 |
F2 | м3 | 120 | 150 |
F4 | M4 | 180 | 225 |
F7 | M7 | 216 | 462 |
H7 | M7 | 400 | 856 |
L0 | M0 | 32 | 26 |
L1 | м3 | 32 | 33 |
L4 | M4 | 80 | 100 |
L4 + | M4 | 120 | 150 |
Таблица 1: Сравнение различных вариантов микроконтроллера STM32
Подсерия STM32F — это их стандартная линейка микроконтроллеров (в отличие от подсерии STM32L, которая специально ориентирована на более низкое энергопотребление).STM32F0 имеет самую низкую цену, но также и самую низкую производительность. На шаг впереди идут подсерии F1, за которыми следуют F3, F2, F4, F7 и, наконец, H7.
Для этого урока я выбрал STM32F042K6T7, который поставляется в 32-выводном корпусе с выводами LQFP. Я выбрал свинцовый пакет в первую очередь потому, что он упрощает процесс отладки, потому что у вас есть легкий доступ к контактам микроконтроллера. В то время как в безвыводном корпусе, таком как QFN, контакты спрятаны под корпусом, что делает доступ невозможным без контрольных точек.
Пакет с выводами также позволяет легко заменить микроконтроллер в случае его повреждения. Наконец, безвыводные корпуса стоят дороже, чтобы припаять их к печатной плате, поэтому они увеличивают затраты как на прототипирование, так и на производство.
Я выбрал STM32F042, потому что он предлагает умеренную производительность, хорошее количество контактов GPIO и различные последовательные протоколы, включая UART, I2C, SPI и USB. Это микроконтроллер STM32 довольно начального уровня, всего с 32 контактами, но с большим набором функций.Более продвинутые версии поставляются с 216 контактами, что было бы довольно сложно для вводного руководства.
В этом первом видео мы не будем использовать большинство из этих функций, но мы воспользуемся ими в следующих видеороликах этой серии.
Шаг 2 — Разработка принципиальной схемы
Принципиальная электрическая схема для этого первого руководства, показывающая микроконтроллер STM32, линейный регулятор, разъем USB и разъем для программирования.
Теперь, когда мы выбрали микроконтроллер, пришло время разработать принципиальную электрическую схему.Для этих руководств я буду использовать инструмент проектирования печатных плат под названием DipTrace.
Доступны десятки инструментов для печатных плат, но когда дело доходит до простоты использования, цены и производительности, я считаю, что DipTrace трудно превзойти, особенно для стартапов и производителей.
Если у вас нет пакета проектирования печатной платы, вы можете рассмотреть возможность загрузки бесплатной версии DipTrace, чтобы вы могли внимательно следить за этим руководством. Они также предлагают бесплатную пробную версию своей полной версии. Лучший способ чему-то научиться — это всегда делать это на самом деле.
Для этого начального руководства достаточно бесплатной версии DipTrace, но для большинства проектов вам потребуется перейти на платную версию.
Тем не менее, это руководство будет сосредоточено на процессе разработки специальной платы микроконтроллера, а не на том, как использовать какой-либо конкретный инструмент для проектирования печатных плат. Таким образом, независимо от того, какое программное обеспечение для печатных плат вы в конечном итоге используете, вы все равно найдете эти руководства столь же полезными.
Первым шагом в разработке схемы является размещение всех ключевых компонентов.Для этой первоначальной конструкции это включает микросхему микроконтроллера, регулятор напряжения, разъем microUSB и разъем для программирования.
Для более сложных проектов обычно имеет смысл сначала полностью спроектировать каждую подсхему, а затем объединить их все вместе. В зависимости от сложности конструкции (и личных предпочтений) вы также можете разместить каждую подсхему на отдельном листе. Это предотвращает превращение схемы в огромного, подавляющего монстра на одном листе.
Конденсаторы
Далее мы разместим все различные конденсаторы.По большей части вы можете думать о конденсаторах как о крошечных перезаряжаемых батареях, которые удерживают электрический заряд и помогают стабилизировать напряжение в линии питания.
Начнем с размещения конденсатора 4,7 мкФ на входном контакте линейного регулятора. Это входное напряжение 5 В постоянного тока, поступающее от внешнего зарядного устройства USB. Это напряжение подается на линейный регулятор TLV70233, который понижает напряжение до 3,3 В, поскольку на микроконтроллер может подаваться только максимум 3,6 В.
Другой 4.Конденсатор емкостью 7 мкФ ставится на выходе стабилизатора как можно ближе к выводу. Этот конденсатор служит для накопления заряда для питания переходных нагрузок и стабилизирует внутренний контур обратной связи регулятора. Без выходного конденсатора большинство регуляторов начнут колебаться.
ПРИМЕЧАНИЕ: Обязательно загрузите бесплатное руководство в формате PDF 15 шагов для разработки нового электронного оборудования .
Разделительные конденсаторы должны быть размещены как можно ближе к выводам питания микроконтроллера (VDD).Всегда лучше обратиться к таблице данных микроконтроллера, чтобы получить рекомендации по разделению конденсаторов.
В таблице данных для STM32F042 рекомендуется разместить конденсатор емкостью 4,7 мкФ и 100 нФ рядом с каждым из двух выводов VDD (выводы входного питания). Также рекомендуется разместить развязывающие конденсаторы емкостью 1 мкФ и 10 нФ рядом с выводом VDDA.
Вывод VDDA предназначен для питания внутреннего аналого-цифрового преобразователя (АЦП) и должен быть особенно чистым и стабильным. Мы не используем АЦП в этом первом руководстве, но мы будем использовать его в будущем.
Обратите внимание, что вы обычно видите два размера конденсатора, указанные вместе для целей развязки. Например, конденсаторы 4,7 мкФ и 100 нФ.
Более крупный 4,7 мкФ может хранить больше заряда, что помогает стабилизировать напряжение, когда требуются большие скачки тока нагрузки. Конденсатор меньшего размера служит в основном для фильтрации любых высокочастотных шумов.
Распиновка микроконтроллера
Хотя STM32F042 предлагает широкий спектр функций, таких как интерфейсы связи UART, I2C, SPI и USB, вы не найдете ни одной из этих функций, обозначенных на распиновке микроконтроллера.Это связано с тем, что большинство микроконтроллеров назначают различные функции каждому выводу, чтобы уменьшить количество требуемых выводов.
Распиновка микроконтроллера STM32F042 в 32-выводном выводном корпусе LQFP.
Например, на STM32F042 вывод 9 помечен как PA3, что означает, что это вывод GPIO. При запуске эта функция автоматически назначается этому контакту. Но есть и альтернативные функции, которые можно указать в программе прошивки.
Контакт 9 может быть запрограммирован для выполнения следующих функций: входной контакт приема для последовательной связи UART, вход в аналого-цифровой преобразователь (АЦП), выход таймера или контакт ввода / вывода для контроллера емкостного сенсорного датчика. .
См. Таблицу определения выводов в таблице данных микроконтроллера (стр. 33 для STM32F042), в которой показаны все различные функции, доступные для каждого вывода. Всегда проверяйте, чтобы две функции, необходимые для вашего продукта, не перекрывались на одних и тех же контактах.
Часы
Всем микроконтроллерам для синхронизации требуются часы. Эти часы — просто точный генератор. Микроконтроллеры выполняют запрограммированные команды последовательно с каждым тактом часов.
Самым простым вариантом, если он доступен на выбранном микроконтроллере, является использование внутренних часов.Эти внутренние часы известны как часы RC-генератора, потому что они используют временные характеристики резистора и конденсатора.
Основным недостатком RC-генератора является точность. Резисторы и конденсаторы (особенно встроенные в микрочип) значительно различаются от блока к блоку, что приводит к изменению частоты генератора. Температура также существенно влияет на точность.
RC-генератор подходит для простых приложений, но если ваше приложение требует точной синхронизации, этого будет недостаточно.В этом начальном руководстве мы собираемся использовать внутренние часы RC, чтобы упростить задачу. В будущих уроках мы улучшим конструкцию, добавив гораздо более точный внешний кварцевый генератор.
Разъем для программирования
Программирование STM32 выполняется с помощью одного из двух протоколов: JTAG или Serial Wire Debug (SWD). Более продвинутые версии STM32 (STM32F1 и выше) предлагают интерфейсы программирования как JTAG, так и SWD. Подсерия STM32F0 предлагает только более простой интерфейс программирования SWD, поэтому мы сосредоточимся на этом в этом руководстве.
Интерфейс SWD требует всего 5 контактов. Это SWDIO (ввод / вывод данных), SWCLK (тактовый сигнал), NRST (сигнал сброса), VDD (напряжение питания) и заземление.
К сожалению, программатор ST-LINK, который вы будете использовать для программирования STM32, использует 20-контактный разъем JTAG (с функцией SWD). Этот разъем довольно большой и не подходит для небольших плат.
Вместо этого вы можете использовать плату адаптера с 20 контактов на 10 контактов, такую как эта от Adafruit, чтобы вы могли использовать на плате 10-контактный разъем меньшего размера.
В этом руководстве мы будем использовать 10-контактный разъем. Если это все еще слишком велико для вашего проекта, вы всегда можете использовать 5-контактный разъем и перемычки от 20-контактного выхода программатора для подключения только 5 линий, необходимых для программирования SWD.
Мощность
Последняя часть схемы, которую мы рассмотрим, — это силовая часть. Микроконтроллер STM32 может питаться напряжением питания от 2,0 до 3,6 В. Если у вас нет источника переменного тока, вам понадобится встроенный стабилизатор, обеспечивающий соответствующее напряжение питания.
Для этой конструкции мы будем питать плату от внешнего зарядного устройства USB, которое выдает 5 В постоянного тока. Затем это напряжение подается на линейный регулятор напряжения (TLV70233 от Texas Instruments), который понижает его до стабильного 3,3 В.
Для STM32 требуется максимум 24 мА при условии, что ни один из выводов GPIO не потребляет ток (каждый вывод GPIO может подавать до 25 мА). Абсолютный максимальный ток, который когда-либо потребуется для STM32, составляет 120 мА, при условии, что различные выводы GPIO используют ток.
TLV70233 рассчитан на ток до 300 мА, что должно быть более чем достаточно для этой первоначальной конструкции. В будущих руководствах, по мере добавления дополнительных функций, нам может потребоваться пересмотреть это, чтобы убедиться, что регулятор может обрабатывать требуемый ток системы.
Проверка правил электрооборудования
Последним этапом разработки принципиальной принципиальной схемы является выполнение этапа проверки, называемого «Проверка электрических правил» (ERC). На этом этапе проверки проверяются такие ошибки, как короткое замыкание между цепями, цепи только с одним выводом, наложенные выводы и несоединенные выводы.
Вы также можете настроить различные ошибки типа вывода. Например, если выходной контакт подключен к другому выходу, вы получите сообщение об ошибке. Или, если выходной контакт подключен к линии питания, вы получите ошибку. DipTrace использует цветную матрицу сетки, которая позволяет вам определить, какие типы контактов будут выдавать вам ошибки или предупреждения.
Шаг 3 — Дизайн макета печатной платы (PCB)
После того, как схематический дизайн закончен, пора спроектировать печатную плату.Начните со вставки всех компонентов в компоновку печатной платы. В DipTrace вы можете использовать функцию «Преобразовать в печатную плату» в схеме, чтобы автоматически создать печатную плату со всеми вставленными компонентами.
Размещение компонентов
Несмотря на то, что все компоненты были вставлены, ваша задача — точно определить, где каждый компонент размещается на печатной плате.
Большинство пакетов программного обеспечения для проектирования печатных плат включают функцию автоматического размещения компонентов с целью минимизации длины трассировки.Но я никогда им не пользуюсь, и почти необходимо вручную размещать компоненты в наилучшем расположении.
Для нашей начальной обучающей схемы размещение компонентов довольно просто. Разместите разъем microUSB рядом с линейным регулятором так, чтобы его выход был как можно ближе к контактам входного питания (VDD) на микроконтроллере. Наконец, разместите разъем для программирования в любом удобном месте.
Размещение критических компонентов в этой первоначальной конструкции: микроконтроллер (U1), регулятор (U2), разъем micro USB (J1) и разъем для программирования (JTAG-1).
После того, как все компоненты сердечника правильно размещены, следующим шагом будет размещение всех пассивных компонентов (резисторов, конденсаторов и катушек индуктивности). В этой первоначальной конструкции единственными пассивными компонентами являются конденсаторы.
Один из ключевых аспектов проектирования электроники, который вам необходимо изучить, — это концепция паразитов. Паразиты — это пассивные компоненты (резисторы, конденсаторы и катушки индуктивности), которые вы намеренно не добавляете в свою схему. Но, тем не менее, они есть и влияют на производительность.
Например, хотя дорожка сигнала предназначена для идеального короткого замыкания, на самом деле она имеет некоторое конечное сопротивление, емкость и индуктивность, которые становятся все более значимыми по мере увеличения длины дорожки и количества изгибов и переходных отверстий.
Размещение всех критических компонентов (U1, U2, J1 и JTAG-1) и пассивных компонентов (конденсаторов).
Таким образом, это означает, что если источник напряжения расположен далеко от нагрузки, которой в данном случае является микроконтроллер STM32, по сути, между нагрузкой и источником есть резистор (без учета емкости и индуктивности).
Если микроконтроллеру внезапно требуется быстрый всплеск тока, это вызовет падение напряжения на этом резисторе трассировки.
Таким образом, даже если выходное напряжение регулятора напряжения может быть идеальным 3,30 В, напряжение на выводе микроконтроллера будет ниже во время этого скачка тока. Для решения этой проблемы используются развязывающие конденсаторы.
Помните, конденсаторы похожи на маленькие батарейки, которые накапливают электрический заряд. Размещение их прямо у контактов питания микроконтроллера позволяет им обеспечивать любые быстрые переходные токи, необходимые микроконтроллеру.
После исчезновения переходной нагрузки конденсаторы перезаряжаются источником питания, поэтому они готовы к следующему переходному увеличению тока нагрузки.
Стек слоев печатной платы
Печатная плата состоит из слоев, уложенных друг на друга. Проводящие слои разделены изоляционными слоями. Минимальное количество проводящих слоев — два. Это означает, что верхний и нижний уровни могут использоваться для маршрутизации сигналов, и эти два слоя разделены внутренним изолирующим слоем.
Для простоты этого урока мы начнем с двухслойной доски. Но по мере увеличения сложности схемы вам придется добавлять дополнительные слои.
Количество проводящих слоев всегда четное, поэтому вы можете получить плату с 2,4,6,8,10,12 проводящими слоями. Для большинства дизайнов потребуется 4-6 слоев, а для более сложных дизайнов может потребоваться 8 или более слоев.
Маршрут
После того, как все компоненты были правильно размещены, самое время выполнить необходимую трассировку.Есть два варианта маршрутизации: ручной и автоматический.
Для автоматической маршрутизации в DipTrace вы просто выбираете Route -> Run Autorouter , и программное обеспечение автоматически выполнит всю маршрутизацию.
К сожалению, автоматические маршрутизаторы в целом выполняют ужасную работу, и почти во всех случаях вам придется вручную выполнять всю маршрутизацию. В этом уроке мы будем выполнять всю маршрутизацию вручную.
Разводка печатной платы (черные дорожки на верхнем слое, серые дорожки на нижнем слое)
При трассировке на печатной плате вы хотите минимизировать длину каждой трассы, насколько это возможно.Вы также хотите минимизировать количество переходных отверстий и избегать любых изгибов на 90 градусов на дорожках. Эти рекомендации особенно важны для трасс с высокой мощностью и высокоскоростных сигналов.
A через — это отверстие между слоями с проводящим материалом, которое позволяет соединять вместе две дорожки на разных слоях. Большинство переходных отверстий известны как переходные отверстия от до , что означает переходные туннели через все слои платы.
Сквозные переходные отверстия — самый простой тип в изготовлении, поскольку их можно просверлить после сборки всего набора слоев печатной платы.
Via # 1 — это классический сквозной переход, via # 2 — слепой переход, а via # 3 — скрытый переход.
Переходные отверстия, которые туннелируют только через подмножество слоев, называются скрытыми и глухими переходными отверстиями. Слепые переходные отверстия соединяют внешний слой с внутренним слоем (таким образом, один конец скрыт внутри стека печатной платы). Скрытые переходные отверстия соединяют два внутренних слоя и полностью скрыты на собранной печатной плате.
Глухие и скрытые переходные отверстия позволяют упаковать конструкцию более плотно. Это потому, что они не занимают места на слоях, которые их не используют.С другой стороны, сквозные переходные отверстия занимают место на всех слоях.
Однако имейте в виду, что глухие и скрытые переходные отверстия резко увеличивают стоимость прототипа вашей платы. В большинстве случаев вам следует ограничиться использованием только сквозных переходных отверстий. Только исключительно сложные конструкции, которые должны умещаться в исключительно маленьком пространстве, вероятно, когда-либо потребуют этих более сложных типов переходных отверстий.
При прокладке любых силовых линий с высоким током необходимо убедиться, что ширина трассы способна пропускать необходимый ток.Если вы пропустите слишком большой ток через дорожку печатной платы, она перегреется и оплавится, что приведет к неисправности платы.
Для определения необходимой ширины дорожки мне нравится использовать калькулятор ширины дорожки печатной платы. Чтобы определить требуемую ширину дорожки, вам нужно сначала узнать толщину дорожки для вашего конкретного процесса печатной платы.
Производители печатных платпозволяют вам выбирать различную толщину проводящего слоя, обычно измеряемую в унциях на квадратный фут (oz / ft 2 ), но также измеряемую в миллиметрах (мил — одна тысячная дюйма) или миллиметрах.
Обычная толщина проводящего слоя составляет 1 унцию / фут 2 . В этом уроке я сделал линии электропитания шириной 10 мил. Использование калькулятора, связанного с приведенным выше, показывает, что дорожка размером 1 унцию / фут 2 шириной 10 мил на самом деле может пропускать почти 900 мА тока.
Очевидно, это намного больше, чем нам нужно, и я мог бы легко сузить линии снабжения. В первом уроке я показал, что абсолютный максимальный ток, требуемый STM32F042, составляет 120 мА.Возможно, удивительно, что для работы в 120 мА нам нужна только ширина дорожки 0,635 мил!
Минимальная ширина следа, допустимая для большинства процессов, составляет 4-6 мил. Следы минимальной ширины могут быть легко использованы для линий подачи в этой конструкции. При этом, чем шире кривая, тем меньше сопротивление и стабильнее напряжение питания на каждом компоненте.
Если пространство не очень ограничено, всегда следует чрезмерно проектировать трассы источника питания. Фактически, во многих случаях вам понадобится разводка источника питания на отдельном уровне, чтобы вы могли максимизировать ширину разводки.
Наконец, в калькуляторе вы заметите, что требования к внутренним и внешним слоям различаются. Для этого простого двухслойного дизайна оба слоя являются внешними, поэтому нам нужно использовать « Results for External Layers in Air ».
Внутренние слои могут пропускать гораздо меньший ток, потому что они не получают охлаждающего эффекта при контакте с воздухом, поэтому следы будут перегреваться при гораздо меньшем токе.
Завершенный макет печатной платы (PCB) для этого начального руководства.
Проверка
После того, как весь маршрут завершен, самое время выполнить проверки, чтобы убедиться, что все правильно. Именно здесь автоматизация действительно работает, и любой инструмент проектирования печатных плат предлагает функции автоматической проверки.
Существует два основных типа проверки: проверка правил проектирования (DRC) и схематическое сравнение.
DRC проверяет соблюдение всех правил проектирования печатных плат. Сюда входят такие правила, как минимально допустимая ширина дорожек, минимальный допустимый интервал между дорожками, минимальный интервал между дорожкой и краем платы и т. Д.
Чтобы запустить проверку DRC, необходимо сначала получить все правила проектирования для конкретного процесса печатной платы, который вы будете использовать.
Каждый процесс прототипирования печатной платы имеет несколько разные правила, поэтому вы должны иметь правильные правила, прежде чем продолжить. Вы можете получить правила проектирования для вашего конкретного процесса у поставщика прототипа печатной платы.
В DipTrace вы определяете правила проектирования, выбирая Проверка-> Правила проектирования . После того, как все правила были правильно определены, вы можете запустить DRC, выбрав Verification-> Check Design Rules.
После того, как вы убедились, что компоновка вашей печатной платы соответствует всем правилам проектирования, пришло время проверить, соответствует ли конструкция вашей печатной платы вашей принципиальной схеме. Для этого в DipTrace вы просто выбираете Verification-> Compare to Schematic .
В будущих уроках я покажу вам различные типы ошибок DRC и сравнения схем, а также способы их исправления.
Создание герберов
После того, как вы убедились, что проект соответствует правилам проектирования и соответствует схематической диаграмме, пора заказывать прототипы печатной платы.
Для этого вам необходимо преобразовать проект компоновки печатной платы (который в настоящее время хранится в собственном файловом формате) в файловый формат промышленного стандарта, известный как Gerber.
Формат Gerber выводит каждый слой проекта печатной платы в виде отдельного файла. Сгенерированные слои — это намного больше, чем просто проводящие слои вашей платы. Некоторые из этих слоев включают:
1) Слои шелка — Включает текст и обозначения компонентов.
2) Монтажные слои — Аналогично шелковым слоям, но с особыми инструкциями по сборке.
3) Слои паяльной маски — указывает зеленый цвет на печатной плате, закрывающий любые проводники, к которым вы не хотите паять. Это предотвращает случайное замыкание во время пайки.
4) Слои паяльной пасты — Используется для точного размещения паяльной пасты в местах пайки.
Вам также необходимо будет сгенерировать так называемый файл Pick-and-Place , который включает координаты и ориентацию для всех компонентов.Этот файл используется производителями автоматических машин для размещения компонентов.
Наконец, вам нужно вывести файл сверления, который обеспечивает точное расположение и размер любых отверстий, таких как переходные и монтажные отверстия.
Когда у вас есть Gerbers, файл Pick-and-Place и файл сверления, вы можете отправить эти файлы в любой магазин прототипов или изготовителя для производства вашей платы.
Сводка
В этом руководстве вы узнали, как разработать блок-схему на уровне системы, выбрать все критические компоненты, спроектировать полную принципиальную принципиальную схему, спроектировать макет печатной платы (PCB) и заказать прототипы готовой печатной платы микроконтроллера. дизайн.
В этом учебном пособии сама схема намеренно оставлена достаточно простой, чтобы не перегружать вас сложностью схемы. При этом микроконтроллер без каких-либо дополнительных функций не очень полезен.
Наконец, не забудьте загрузить бесплатно PDF : Ultimate Guide to Develop and Sell Your New Electronic Hardware Product . Вы также будете получать мой еженедельный информационный бюллетень, в котором я делюсь премиальным контентом, недоступным в моем блоге.Другой контент, который может вам понравиться:
Как спроектировать схему
В этом руководстве я научу вас, как построить свою собственную схему микроконтроллера.Таким образом, вы можете легко добавлять микроконтроллеры в свои собственные проекты. Мы подошли к третьей части этого урока.
В первой части руководства по микроконтроллеру мы рассмотрели, что такое микроконтроллер. Мы увидели, что микроконтроллер похож на маленький компьютер, и что вы можете использовать его для создания удивительных вещей, таких как сотовые телефоны или даже вашу собственную портативную игровую консоль.
Затем во второй части мы рассмотрели различные типы микроконтроллеров и выбрали один для наших целей. Мы выбрали ATmega32U2, потому что мы можем программировать его через USB, и его достаточно легко паять дома.
В этой третьей части руководства по микроконтроллеру мы собираемся разработать нашу схему с нуля. Итак, нам нужно разработать принципиальную схему со всеми компонентами и соединениями, необходимыми для работы нашей схемы.
Давайте построим эту штуку!
Бонус: Загрузите это руководство из 5 частей в формате PDF, которое шаг за шагом покажет вам, как сделать плату микроконтроллера, которую вы можете построить дома, используя стандартные инструменты для хобби.
Что нам нужно?
Как мы решаем, какие компоненты подключать к нашему микроконтроллеру?
Давай подумаем.Нам нужно питание для чипа, иначе он не пойдет. И нам понадобится USB-соединение, так как мы собираемся программировать его через USB. И нам нужны физические контакты, с помощью которых мы можем легко подключить что-нибудь к нашей схеме и протестировать ее.
Итак, нам нужно:
- Мощность
- USB-соединение
- Контактные соединения
Лист данных
Чтобы выяснить, какие именно компоненты нам нужны и как их соединить, смотрим в даташит чипа.
Таблица данных представляет собой исчерпывающий документ с большим количеством технических данных о том, как работает микроконтроллер и как вы можете управлять различными его частями.
Если вы не привыкли читать таблицу, это может показаться немного подавляющим. Но посмотрев несколько таблиц данных, вы рано или поздно начнете понимать, как это устроено.
Нет необходимости читать даташит от начала до конца. Вам нужно только прочитать те части, которые интересны для того, что вы хотите сделать.
Итак, если вы хотите создать таймер на своем микроконтроллере, прочтите раздел таймера. Если вы хотите использовать UART, найдите раздел UART.
Следует отметить одну вещь — в таблице данных ATmega32U2 оглавление находится в конце.
Питание и USB
Мы можем выбрать, хотим ли мы, чтобы схема питалась от кабеля USB или от дополнительного кабеля питания.
Чтобы все было проще и с меньшим количеством компонентов, давайте сделаем это устройство с питанием от USB. Это означает, что он будет работать только при подключении к USB.
Итак, что это значит? Какие компоненты нам нужны?
Чтобы выяснить это, давайте заглянем в раздел USB в техническом описании и посмотрим, что мы находим.
Опции питания USB-модуля
Из содержания в конце таблицы мы находим раздел под названием USB Module Powering Options на странице 186. Здесь мы можем найти следующий рисунок, который показывает нам, как подключить USB-часть микросхемы, чтобы сделать его питание от USB.
Как подключить ATmega32U2 как устройство с питанием от USB 5 В. (Источник: Atmel.com)Из руководства по проектированию на стр. 189 мы узнаем, что резисторы должны быть резисторами на 22 Ом, и что также настоятельно рекомендуется установить конденсатор на 10 мкФ на линии VBUS.Так что давайте также добавим конденсатор на 10 мкФ.
Кристалл
На изображении выше мы видим, что есть также кристалл и два конденсатора, подключенные к контактам XTAL1 и XTAL2. Почему это?
Для работы микроконтроллеру нужны часы. Большинство микроконтроллеров имеют внутренний RC-генератор, который создает тактовый сигнал. Как и ATmega32U2.
Но дело в том, что USB-часть микроконтроллера не может работать с этими внутренними часами. Итак, чтобы USB работал, нам нужен внешний кристалл.
Какой именно кристалл нам нужен, мы можем найти на странице 30 в техническом описании. Здесь также указаны номиналы конденсаторов.
Разъемы контактови светодиод
Мы хотим иметь возможность подключать что-то к нашей схеме микроконтроллера. Итак, мы добавим 16 физических контактов, которые подключены к контактам ввода / вывода PB0-PB7 и PD0-PD7. Это упрощает подключение чего-либо к нашей схеме.
Еще мы должны добавить светодиод. Таким образом, мы можем легко проверить, работают ли схема и наш код.Чтобы контролировать ток через светодиод, мы также добавляем последовательно с ним токоограничивающий резистор.
Кнопка сброса
Очень часто на схеме микроконтроллера имеется кнопка сброса. Это упрощает сброс микроконтроллера без отключения USB-кабеля.
На странице 47 таблицы данных мы можем прочитать:
«MCU сбрасывается, когда низкий уровень присутствует на выводе RESET дольше минимальной длительности импульса».
Итак, нам нужно убедиться, что штифт сброса обычно поднимается высоко, и опускается только при нажатии кнопки сброса.
Для этого мы используем так называемый подтягивающий резистор. Это резистор, подключенный между выводом сброса и VCC (5 вольт), который «подтягивает» вывод сброса к высокому уровню.
Подключаем кнопку сброса таким образом, чтобы контакт сброса был заземлен (0 вольт), если кнопка нажата.
Хорошее значение для этого резистора составляет около 10 кОм.
Полная принципиальная схема микроконтроллера
Если мы объединим все части, которые мы обсуждали выше, мы получим следующую принципиальную схему.Вы заметите, что некоторые части кажутся не связанными с остальными. Но если на проводе есть имя, это означает, что этот провод подключен ко всем другим проводам с таким же именем.
Разработка печатной платы и ее изготовление
Вау, теперь все складывается. Все, что нам нужно сделать, это создать печатную плату. Итак, именно этим мы и займемся в следующей части руководства.
Далее нам нужно создать эту схему и сделать ее.
Бонус: Загрузите это руководство из 5 частей в формате PDF, которое шаг за шагом покажет вам, как сделать плату микроконтроллера, которую вы можете построить дома, используя стандартные инструменты для хобби.
Щелкните здесь, чтобы перейти к части 4 в руководстве по микроконтроллеру >>
Схема основного источника питаниядля Arduino и других микроконтроллеров
Микроконтроллеры— интересная и важная часть современной электроники. С постоянно растущей областью электроники стало невозможным быть инженером-электронщиком и не вмешиваться в микроконтроллеры. Но общая проблема, возникающая при использовании множества разных контроллеров, заключается в том, что каждому контроллеру может потребоваться разный уровень напряжения для безопасной работы.Итак, в этом проекте мы собираемся создать комплексную схему основного источника питания для Arduinos и других микроконтроллеров.
В основе этого важного источника питания эта схема служит базовым источником питания для микроконтроллеров, работающих в стандартном диапазоне постоянного тока (12 В, 9 В, 5 В, 3,3 В). В этой схеме используется комбинация регуляторов, а именно LM2940CT-12.0 для обеспечения бесперебойного выхода 12 В постоянного тока и LM2940CT-9.0 для выхода 9 В постоянного тока. Наряду с этими двумя в схеме используется LM2940CT-5.0 и LM1086-3.3 Для подачи 5 В и 3,3 В постоянного тока соответственно.
Требуемое оборудование
Для сборки этого проекта вам потребуются следующие детали.
[inaritcle_1]Номер контакта | Имя контакта | Описание |
---|---|---|
1 | ADJ | Отрегулируйте Vout, подключив резистор к цепи делителя. |
2 | OUT | Контакт выходного напряжения (Vout) |
3 | IN | Контакт входного напряжения (Vin) |
Принципиальная схема
Рабочее пояснение
Основная цель этой схемы — функционировать как комплексный и универсальный источник питания для различных контроллеров.Работа этой схемы очень проста, входной сигнал постоянного тока 15V / 1.5A — 2A служит входом для этой схемы. Этот сигнал параллельно распределяется на сглаживающие конденсаторы (10 мкФ) каждой цепи питания, чтобы удалить любой остаточный шум. Соответствующий сигнал постоянного тока затем поступает на регулятор IC каждой цепи питания.
Модуль регулятора обеспечивает регулируемый уровень напряжения (12 В, 9 В, 5 В, 3,3 В) при поддержании постоянного выходного тока. Выходные сигналы постоянного тока проходят через сглаживающий конденсатор емкостью 100 мкФ, прежде чем перейти к выходу.
Приложения
- Обычно служит стационарным источником питания для различных контроллеров, таких как Arduino UNO, Raspberry Pi, Teensy 2.0 и т. Д.
«Я работаю в сфере строительства тяжелых автомагистралей и начал поиск улучшенного метода удаленной связи и переключения между различными компонентами техники.Нам нужны были высокоскоростные датчики и связь, а также надежность, чтобы иметь возможность выдерживать экстремальные температуры, вибрацию и колебания напряжения , поскольку все это очень распространенные проблемы при работе с тяжелой строительной техникой.
Мы решили интегрировать протоколы связи CAN и rs485 в среду Rugged Circuits Arduino, и после того, как базовая схема и программирование были завершены, мы должны были убедиться, что системы будут в состоянии поддерживать элементы в полевых условиях.Чтобы исключить какие-либо механические дефекты в системах, мы продолжили подвергать эти платы Rugged Circuits очень долгому воздействию высоких (и низких) температур в диапазоне от -10 до +180 градусов по Фаренгейту и чрезмерному сотрясению и вибрации. Мы поместили подножки внутрь плоских окрашенных в черный цвет кожухов и эксплуатировали их 12+ часов в день под прямыми солнечными лучами , в то время как и установили кожухи на внешний кожух дизельных двигателей мощностью 800 л.с., где действовали вибрация и электромагнитные поля от больших гидравлических приводов на уровне наказания за любой электронный компонент. Мы даже зашли так далеко, что сняли защиту от обратного хода с различных сильноточных исполнительных соленоидов и заземлили эти клапаны для прямого слива через цепь заземления MEGA (на самом деле пытались приготовить один из MEGA , чтобы увидеть, где он выйдет из строя. в случае серьезной неисправности заземления). Даже когда скачки напряжения и электромагнитных помех достигают трехзначных цифр, MEGA устояли и не подвели.
Многие из компонентов внутри этих тестовых корпусов просто не могли выдержать пыток , и их пришлось модернизировать или заменять на соответствующие компоненты, однако у нас был 100% успех с вашими платами Rugged Circuits, и у нас не было единственная неисправная плата как в тестовых корпусах, так и в реальных рабочих системах в полевых условиях.На сегодняшний день у нас есть 7 систем, на которых установлено более 30 плат MEGA Rugged Circuits.
Итак, после года + оценки добавления вашего микроконтроллера MEGA в мой дизайн для удаленной связи и управления оборудованием, я решил навсегда добавить их в окончательный проект и с нетерпением жду многолетнего сотрудничества с Rugged Circuits ».
Винс П. Стритсборо, Огайо.
НОВИНКА Отзывы профессионалов отрасли (нажмите здесь)
Учебное пособие: Как создать свою собственную плату микроконтроллера — Часть 1
Это первая из двух частей руководства, где вы узнаете, как создать свою собственную плату микроконтроллера.
Первоначально мы собираемся сосредоточиться только на самом микроконтроллере, чтобы вы могли легче понять процесс проектирования, не перегружая себя сложностью схемы. ВНИМАНИЕ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
В этом первом руководстве вы узнаете, как спроектировать систему и принципиальную схему. Затем во второй части вы узнаете, как разложить печатную плату (PCB) и заказать прототипы.
Это краткое введение в бесплатное руководство от PredictableDesigns.com. См. Полную и самую последнюю версию этого руководства по здесь [включает обучающее видео] .
Я разделю процесс проектирования на три основных этапа:
ШАГ 1 — Проектирование системы
ШАГ 2 — Проектирование схем
ШАГ 3 — Проектирование макета печатной платы
Система / Предварительная подготовка ДизайнПри разработке новой схемы первым шагом является проектирование системы высокого уровня (которое я также называю предварительным проектом). Прежде чем вдаваться в подробности проектирования полной принципиальной схемы, всегда лучше сначала сосредоточиться на общей картине всей системы.
Проектирование системы состоит в основном из двух этапов: создание блок-схемы и выбор всех критических компонентов (микрочипов, датчиков, дисплеев и т. Д.). Системный дизайн рассматривает каждую функцию как черный ящик.
В инженерии черный ящик — это объект, который можно рассматривать с точки зрения его входов и выходов, но без каких-либо сведений о его внутренней работе. При проектировании системного уровня основное внимание уделяется взаимодействию и функциональности более высокого уровня.
Блок-схемаНиже приведена блок-схема, с которой мы будем работать в этой серии руководств.Как я уже упоминал, в этом первом руководстве мы сосредоточимся только на самом микроконтроллере. В будущих уроках мы расширим дизайн, чтобы включить все функции, показанные на этой блок-схеме.
Блок-схема должна включать в себя блок для каждой основной функции, взаимосвязи между различными блоками, определенные протоколы связи и любые известные уровни напряжения (входное напряжение питания, напряжение батареи и т. Д.).
Позже, когда все компоненты были выбраны и требуемые напряжения питания известны, я хотел бы добавить напряжения питания к блок-схеме.Включая напряжение питания для каждого функционального блока, он позволяет легко определить все напряжения питания, которые вам понадобятся, а также любые переключатели уровня.
В большинстве случаев, когда два электронных компонента обмениваются данными, им необходимо использовать одно и то же напряжение питания. Если они питаются от разных напряжений, вам обычно потребуется добавить переключатель уровня.
Рисунок 1: Блок-схема системного уровня. Блоки желтого цвета включены в это начальное руководство. Другие блоки / функции будут добавлены в будущих уроках.
Теперь, когда у нас есть блок-схема, мы можем лучше понять необходимые требования к микроконтроллеру. Пока вы не наметили все, что будет подключаться к микроконтроллеру, невозможно выбрать подходящий микроконтроллер.
Выберите микроконтроллерПри выборе микроконтроллера (или любого другого электронного компонента) мне нравится использовать веб-сайт дистрибьютора электроники, такой как Newark.com. Это позволит вам легко сравнивать различные варианты на основе различных спецификаций, цен и наличия.Это также простой способ быстро получить доступ к таблице данных компонента.
Если вы регулярно читаете этот блог, то знаете, что я большой поклонник микроконтроллеров Arm Cortex-M. Микроконтроллеры Arm Cortex-M — самая популярная линейка микроконтроллеров, используемых в коммерческих электронных продуктах. Они используются в десятках миллиардов устройств.
Микроконтроллеры Microchip (включая Atmel) могут доминировать на рынке производителей, но Arm доминирует на рынке коммерческих продуктов.
На самом деле Arm не производит чипы напрямую.Вместо этого они разрабатывают архитектуры процессоров, которые затем лицензируются и производятся другими производителями микросхем, включая ST, NXP, Microchip, Texas Instruments, Silicon Labs, Cypress и Nordic.
Arm Cortex-M — это 32-битная архитектура, которая является фантастическим выбором для более ресурсоемких задач по сравнению с тем, что доступно на более старых 8-битных микроконтроллерах, таких как ядра 8051, PIC и AVR.
МикроконтроллерыArm бывают разных уровней производительности, включая Cortex-M0, M0 +, M1, M3, M4 и M7.Некоторые версии доступны с блоком с плавающей запятой (FPU) и обозначены буквой F в номере модели, например Cortex-M4F.
Одним из самых больших преимуществ процессоров Arm Cortex-M является их низкая цена при требуемом уровне производительности. Фактически, даже если для вашего приложения достаточно 8-битного микроконтроллера, вы все равно должны рассмотреть 32-битный микроконтроллер Cortex-M.
Доступны микроконтроллеры Cortex-M по ценам, очень сопоставимым с некоторыми из старых 8-битных чипов.Основание вашего дизайна на 32-битном микроконтроллере дает вам больше возможностей для роста, если вы захотите добавить дополнительные функции в будущем.
Рисунок 2: STM32 от ST Microelectronics — моя любимая линейка микроконтроллеров Arm Cortex-M.
Хотя многие производители микросхем предлагают микроконтроллеры Cortex-M, мне больше всего нравится серия STM32 от ST Microelectronics. Линия микроконтроллеров STM32 довольно обширна и предлагает практически любые функции и уровень производительности, которые вам когда-либо понадобятся.
Подсерия STM32F — это их стандартная линейка микроконтроллеров (в отличие от подсерии STM32L, которая специально ориентирована на более низкое энергопотребление). STM32F0 имеет самую низкую цену, но также и самую низкую производительность. На шаг впереди идут подсерии F1, за которыми следуют F3, F2, F4, F7 и, наконец, H7.
Для этого урока я выбрал STM32F042K6T7, который поставляется в 32-выводном корпусе с выводами LQFP. Я выбрал свинцовый пакет в первую очередь потому, что он упрощает процесс отладки, потому что у вас есть легкий доступ к контактам микроконтроллера.В то время как в безвыводном корпусе, таком как QFN, контакты спрятаны под корпусом, что делает доступ невозможным без контрольных точек.
Пакет с выводами также позволяет легко заменить микроконтроллер в случае его повреждения. Наконец, безвыводные корпуса стоят дороже, чтобы припаять их к печатной плате, поэтому они увеличивают затраты как на прототипирование, так и на производство.
Я выбрал STM32F042, потому что он предлагает умеренную производительность, хорошее количество контактов GPIO и различные последовательные протоколы, включая UART, I2C, SPI и USB.Это микроконтроллер STM32 довольно начального уровня, всего с 32 контактами, но с большим набором функций. Более продвинутые версии поставляются с 216 контактами, что было бы довольно сложно для вводного руководства.
Прочтите оставшуюся часть этой статьи здесь .
П.С. Загрузите бесплатную шпаргалку «15 шагов по разработке нового электронного оборудования».
Микроконтроллеры великолепны — но не отказываются от традиционной электроники
Микроконтроллерывеликолепны, особенно те, что представлены сегодня на рынке.Они позволяют легко управлять устройствами и собирать информацию от других с помощью простых программ и схем. Однако не каждому приложению он нужен, но часто они используются в проекте без надобности. Например, микросхемы часто используются для выполнения таких простых задач, как мигание светодиода. Хотя это может быть хорошо для микроконтроллера, но это излишне. Это синоним использования настольной пилы, чтобы отрезать кусок бумаги, когда стандартные ножницы отлично справятся с этой задачей.
Многие новички в изучении микроконтроллеров упускают из виду основы электроники и не понимают, что могут достичь той же цели, используя обычные методы.Используя обычную электронику, а не микро, вы можете использовать еще несколько резисторов и конденсаторов, но ваш проект, вероятно, в конечном итоге обойдется вам дешевле. Кроме того, вам не нужно будет писать программу, и вы узнаете немного больше об основах электроники.
Я покажу вам два примера схем, которые не используют микроконтроллер, но часто построены с ним. Я также кратко объясню некоторую логику и теорию этих схем. Надеюсь, вы сможете использовать их в том виде, в каком они есть, или, по крайней мере, они дадут вам идеи, на которые можно опираться.Эти примеры могут заменить микроконтроллер в простом проекте, но также могут быть полезны для снятия нагрузки с вашего микроконтроллера в большом проекте.
Много маленьких огней
В каждом проекте должно быть несколько — если не много — мигающих светодиодов. Мигание светодиода — это, вероятно, первое, что вы сделали, когда научились использовать свой микроконтроллер. К счастью, без него тоже легко обойтись. Давайте посмотрим, как поочередно мигать двумя светодиодами, используя всего несколько компонентов.
Вьетнамки и RC-схемы
Есть много разных способов сделать это, но один из самых простых — использовать так называемый триггер. Триггеры регулярно используются почти во всех цифровых интегральных схемах, включая микроконтроллеры. Триггер принимает состояние выхода из одной логической схемы и подает его на вход другой. Затем этот выход подается на вход первой схемы. Таким образом, выход каждой логической схемы зависит от предыдущего состояния другой.Есть много разных типов шлепанцев. Поиск в Интернете легко найдет много информации о различных типах и о том, как они используются.
Помимо триггера, вам нужен способ его запуска, например, с помощью RC-цепи. Сами по себе конденсаторы имеют ограниченное применение и хороши для таких вещей, как фильтрация напряжения переменного тока (и шокирование ваших друзей), но — при использовании в сочетании с резистором — они становятся очень полезными. Соедините эти два устройства вместе, и вы сможете создать RC-цепь.
RC-цепи бывают двух типов: интеграторы и дифференциаторы. Когда напряжение подается на RC-цепь, конденсатор «наполняется» энергией. Затем, когда напряжение снимается, резистор «разряжает» конденсатор. Время, необходимое для «заполнения» и «слива» конденсатора, может быть измерено в секундах и называется постоянной времени RC. Изменение номиналов конденсатора или резистора позволяет регулировать постоянную времени RC. Настоящая разница между интегратором и дифференциатором заключается в том, как ведет себя выходной сигнал.Эти различия показаны на рис. 1 .
РИСУНОК 1. Различия между интегратором и дифференциатором.
Используя триггер и RC-схему, вы можете создать базовую схему, которая будет попеременно мигать двумя светодиодами. Я использовал тип RS (RESET – SET), потому что это самый простой триггер и он идеально подходит для моих нужд. Я использовал RC-схему дифференциатора, потому что она имеет лучший выход для запуска цифровых логических схем.Если вы добавите несколько светодиодов и больше резисторов, у вас будет схема, которая будет попеременно мигать двумя светодиодами. Эта схема показана на рис. , рис. 2 .
РИСУНОК 2. Триггер, попеременно мигающий двумя светодиодами.
NAND Gates
Логические схемы, которые я использовал для создания триггера RS, являются вентилями NAND. Вы можете узнать больше о вентилях NAND, а также о многих других основах цифровой электроники здесь . На данный момент, однако, достаточно понять, что выход логического элемента И-НЕ становится высоким только тогда, когда его два входа имеют низкий уровень.Итак, когда вы впервые подаете питание на схему (, рис. 2, ), один из двух вентилей NAND (в зависимости от того, какой из них быстрее) установит высокий уровень на выходе.
Это подает питание на дифференциатор, подключенный к выходу первого логического элемента И-НЕ. Это отправит цифровую «1» на оба входа другого логического элемента И-НЕ, тем самым сделав его выход низким (выключив второй светодиод). Первый светодиод будет гореть до тех пор, пока выходное напряжение дифференциатора не упадет почти до нуля. В это время на выходе второго логического элемента И-НЕ будет высокий уровень (включение второго светодиода), тем самым отправив выходы первого элемента И-НЕ на низкий уровень (выключение первого светодиода).Этот процесс будет продолжаться до тех пор, пока подается питание и ничего в цепи не разрывается.
Использование схемы
Чтобы настроить время мигания светодиодов, вы можете поэкспериментировать с разными значениями для двух конденсаторов. Более высокие значения увеличивают задержку, а более низкие значения уменьшают задержку. Если вы хотите, чтобы оба светодиода горели равное время, используйте одинаковые значения для обоих конденсаторов. Попробуйте разные значения и посмотрите, какие результаты они дают. Вы также можете попробовать использовать разные значения для своих резисторов, чтобы увидеть, какие эффекты они могут иметь.
Создание такой схемы с микроконтроллером вряд ли потребует каких-либо внешних компонентов, но вам придется отказаться от двух выходных контактов микроконтроллера. В большом проекте два контакта могут быть довольно дорогостоящими, и, даже если вам может понадобиться несколько дополнительных деталей, эта схема сэкономит эти два контакта. Если все, что вам нужно, это попеременно мигать светодиодами (например, на знаке железнодорожного переезда для вашей модели железнодорожного пути), то эта схема идеально подходит для вас и, вероятно, будет стоить вам всего пару долларов.Кроме того, вы не будете переводить микроконтроллер в спящий режим.
Реле температуры
Получение показаний температуры — обычное дело для любого любителя электроники. Предположим, у вас есть проект, в котором вы хотите, чтобы звуковой сигнал срабатывал, если температура в морозильной камере превышает определенную температуру, или вы можете узнать, станет ли что-то слишком горячим (например, внутри ящика). Это легко сделать с помощью микроконтроллера, но вы также можете сделать то же самое с некоторыми обычными электронными деталями.
Датчик температуры
Первое, что вам нужно для считывания конкретной температуры, — это датчик температуры. Температурные датчики обычно могут считывать диапазон от -50 ° F до более 300 ° F. Большинство из них дает выходное напряжение, линейно пропорциональное температуре зонда. Эти датчики уже откалиброваны и имеют гарантированную точность. Некоторые читают температуру по Фаренгейту, а другие по Цельсию. Я решил поэкспериментировать с LM34DZ. Он может работать при напряжении питания от 5 до 30 вольт и измерять температуру от 32 ° F до 212 ° F.Каждая степень изменения изменяет выходную мощность на 10 мВ.
Компаратор
LM34 будет выдавать определенное напряжение для каждого градуса температуры. Чтобы определить определенное напряжение на LM34, вам понадобится компаратор. Я использовал счетверенный компаратор LM339, потому что он очень распространен и у меня был один, но вы можете использовать любой из многих, имеющихся сегодня на рынке. На самом деле LM339 имеет четыре компаратора на плате, так что вы можете делать с ним какие-нибудь причудливые вещи, если хотите, но я использовал только один из компараторов для своей схемы.
Компаратор имеет два входа и один выход. Один из входов задается как опорное напряжение, а другой вход — это напряжение, которое вы хотите сравнить с опорным напряжением. Если входное напряжение достигает опорного напряжения, он устанавливает высокий уровень на выходе. Например, предположим, что вы хотите знать, когда определенный вход достигает шести вольт или более.
В этом случае вы должны установить свой компаратор в неинвертирующий режим, а опорное напряжение — на шесть вольт. Затем, когда ваш вход достигнет шести вольт или более, компаратор установит на выходе высокий уровень.Теперь вы можете прочитать этот вывод и запустить другую цепь, например, сигнал тревоги, светодиод и т. Д.
Собираем вместе
Вы можете соединить эти два устройства, и у вас будет действительно отличный переключатель температуры. Полный коммутатор показан на рис. , рис. 3 . Его очень просто построить и легко использовать.
РИСУНОК 3. Цепь реле температуры.
После подачи питания на схему вы можете узнать, какое напряжение на выходе (вывод 2) LM34.Для этого можно использовать вольтметр. Подключите положительный щуп от вольтметра к контакту 2 LM34, а отрицательный щуп заземлите. Это даст вам выходное напряжение, соответствующее комнатной температуре, и станет хорошей точкой отсчета для определения того, каким будет напряжение для данной температуры. На LM34 изменение температуры на каждый градус изменяет выходное напряжение на 10 мВ. Используйте это соотношение для определения необходимого вам эталонного напряжения на основе желаемой эталонной температуры.
Теперь вы можете настроить потенциометр так, чтобы опорное напряжение на выводе 4 LM339 было равным желаемому опорному напряжению (которое соответствует определенной температуре). Если вам нужна более высокая точность регулировки напряжения, вы можете использовать потенциометр с более высоким значением. Вы можете прекратить регулировку опорного напряжения, как только прочтете желаемый уровень. Если опорное напряжение не будет изменяться, вы можете заменить потенциометр подходящими постоянными резисторами.
Пример
Вот пример того, как это сделать.Допустим, вы хотите знать, когда он достигает 100 ° снаружи. Первым делом нужно прочитать вывод LM34 при комнатной температуре. Допустим, ваш вольтметр показывает 2,34 вольт при температуре 72 °. Теперь представьте разницу между двумя температурами, которая составляет 28 °. Умножьте это число на 0,01 (изменение 10 мВ для каждой степени изменения), и вы получите 0,28. Затем добавьте это число к 2,34, и вы получите 2,62. Это то, на что должно быть установлено ваше опорное напряжение. Регулируйте потенциометр, пока на выходе не будет 2.62 вольта, а затем остановитесь. Ваш переключатель температуры готов к работе.
Пробуем
После калибровки переключателя температуры на определенную температуру вы можете проверить его, нагревая LM34 феном. Вы можете подключить светодиод к выходу (Vout). Как только температура достигнет указанного значения, ваш светодиод должен загореться и оставаться включенным до тех пор, пока температура снова не упадет.
Так же, как и мигающие светодиоды, эту схему легко построить без микроконтроллера.Вы можете использовать его как есть или модифицировать для любых целей. Вы также можете многое узнать о том, как работают компараторы. По крайней мере, это подстегнет другие идеи о том, как заставить компараторы работать на вас.
Просто как пирог
Эти два примера схем могут использоваться как автономные схемы или вместе с другими. Они могут полностью заменить использование микроконтроллера или, по крайней мере, значительно снизить нагрузку на ваш проект, основанный на микроконтроллере.Приведенные здесь примеры — это лишь небольшой образец того, что доступно любителям электроники; это всего лишь пара идей и, конечно же, много других.
Мой совет любому, кто только начинает заниматься микроконтроллерами и электроникой, — взять макет, несколько основных электронных компонентов (возьмите одну или две сумки) и начните экспериментировать.
Для начала прочтите книгу Nuts & Volts и возьмите пару книг по основам электроники. Некоторые из лучших, которые я нашел для начинающих, — это книги Форреста Мима.Мой старый и побитый, но когда я экспериментирую, он всегда рядом. Как я уже сказал в начале статьи — микроконтроллеры — это здорово! Старайтесь не использовать их как костыль, а вместо этого используйте обычную электронику, которая существует уже много лет.
Удачного строительства проекта! NV
Об авторе
С тех пор, как мне было около 10 лет, я интересовался электроникой. Я пошел в школу, чтобы стать инженером-электронщиком, но вместо этого решил сохранить интерес к электронике в качестве хобби, поэтому я занялся компьютерным программированием.В настоящее время я веб-разработчик, и мне нравится то, что я делаю. Мое любимое электронное устройство — микроконтроллер, потому что он связан с двумя моими увлечениями (электроникой и программированием).
10 лучших микроконтроллерных плат для инженеров и гиков
Вы, должно быть, слышали о микроконтроллерных платах, даже если вы новичок в программировании и электронике. Плата микроконтроллера считается небольшим компьютером, построенным на микросхеме из металлооксидного полупроводника. Все типы микроконтроллеров состоят из одних и тех же основных частей корпуса: центрального процессора (ЦП), памяти и периферийных устройств ввода / вывода (программируемых).
Согласно Википедии, микроконтроллеры используются в автоматически управляемых продуктах и устройствах, таких как системы управления автомобильными двигателями, имплантируемые медицинские устройства, пульты дистанционного управления, оргтехника, бытовая техника, электроинструменты, игрушки и другие встроенные системы.
Инженеры, энтузиасты и программисты также используют одни и те же платы микроконтроллеров для создания проектов DIY (сделай сам) и в учебных целях. Мы исследовали и составили список «10 лучших микроконтроллерных плат для инженеров и компьютерщиков», давайте посмотрим на платы!
# 1 Плата микроконтроллера Arduino Uno R3
Плата микроконтроллера Arduino Uno R3Электронно-технологическая компания Arduino выпустила версию R3 Arduino Uno в 2011 году.Он основан на чипе под названием ATmega328P (плата с открытым исходным кодом). Плата имеет различные контакты ввода / вывода, с помощью которых вы можете подключать ее к другим платам и схемам. Имеются различные подключенные порты, включая порт USB-подключения, четырнадцать контактов ввода-вывода, заголовок ICSP, подключение к источнику питания и кнопку сброса. Его можно легко подключить напрямую к вашему персональному компьютеру или ноутбуку через USB-кабель.
Плата Arduino Uno R3, основанная на IoT, является самой дешевой, готовой к подключению платы к различным доступным онлайн-библиотекам и ресурсам.
В наличии на Amazon!
# 2 Teensy 4.0
Teensy 4.0Микроконтроллерная плата Teensy 4.0 (процессор 600 МГц) является последней и самой быстрой платой, доступной на сегодняшний день. Она имеет небольшие размеры по сравнению с другими досками и может использоваться для выполнения различных типов проектов своими руками. Все команды подаются на плату через два порта USB. Teensy 4.0 можно запрограммировать с помощью Arduino IDE с помощью небольшого дополнения.
Микроконтроллер можно подключить к ПК или ноутбуку с помощью кабеля USB. Он имеет 1024 КБ ОЗУ по сравнению с 16 КБ в Arduino Uno для более современных приложений.
В наличии на Amazon!
# 3 Arduino Pro Mini 328
Arduino Pro Mini 328Arduino Pro Mini 328 — еще одна лучшая плата микроконтроллера от технологии Arduino. Эта мини-плата предназначена только для небольших приложений с напряжением до 5 вольт. Плата Arduino Pro Mini 328 имеет загрузчик на 16 МГц. На плате нет встроенных разъемов и портов, поэтому вам, возможно, придется паять соединение самостоятельно. Однако, если у вас небольшой бюджет, эта плата микроконтроллера — хороший выбор для вас.
В наличии на Amazon!
# 4 Плата микроконтроллера ESP32
Плата микроконтроллера ESP32Плата микроконтроллера ESP32 представляет собой комбинацию Bluetooth и Wi-Fi на однокристальной плате (2,4 ГГц) со сверхнизким энергопотреблением. Плата считается лучшим выбором для приложений, где требуется лучшая производительность RF.
Плата немного дороговата, но за ее мощность приходится расплачиваться. Плата микроконтроллера ESP32 используется для проектов DIY, таких как умный дом и проекты на основе Интернета вещей.
В наличии на Amazon!
# 5 Raspberry Pi 4
Raspberry Pi 4Выпущенная в 2019 году Raspberry Pi 4 — самая быстрая плата микроконтроллера, доступная на сегодняшний день. Благодаря 4 ГБ оперативной памяти вы можете создавать мощные и продвинутые электронные проекты. Raspberry Pi 4 может обеспечивать ток до 1,2 А для USB-устройств. Доступны различные варианты оперативной памяти от 1 ГБ до 4 ГБ. Дополнительные функции включают встроенную беспроводную локальную сеть, Bluetooth 5.0, два порта USB 2.0 и USB 3.0, два порта Micro HDMI и порт Gigabit Ethernet.
В наличии на Amazon!
# 6 MBED LPC1768
MBED LPC1768Плата микроконтроллера MBED LPC1768 в основном предназначена для создания прототипов. Он включает в себя встроенный программатор USB FLASH. Плата построена на 32-битном ядре ARM M3 NXP LPC1768. ОЗУ составляет 32 КБ, флэш-память 512 КБ.
Он состоит из периферийных устройств ввода-вывода, порта USB и встроенного Ethernet. Для новых разработчиков и инженеров у MBED есть несколько онлайн-сообществ для обмена библиотеками и ресурсами, которые могут быть легко доступны любому пользователю для создания прототипов решений.
В наличии на Amazon!
# 7 BeagleBone Black
BeagleBone BlackBeagleBone Black — одна из самых дешевых доступных плат для разработки. Вы можете начать разработку всего за пять минут, подключив свой компьютер с помощью простого USB-кабеля. Он состоит из 512 МБ ОЗУ и флэш-памяти 4G. Он имеет 46 × 2 контактов заголовка, Ethernet, 2 порта USB. Большее количество контактов ввода / вывода делает его более подходящим для проектов в области электроники. Он также имеет пониженное энергопотребление без потребности в радиаторах.
В наличии на Amazon!
# 8 Плата микроконтроллера ESP8266
Плата микроконтроллера ESP8266ESP8266 имеет небольшие размеры по сравнению с другими микроконтроллерами, поддерживающими IoT. Он имеет очень низкую стоимость (около 3,0 долларов США). Его можно использовать для проектов умного дома своими руками, включая Интернет вещей. Эту доску также можно использовать для создания ваших личных помощников, таких как Кортана или Алекса. Он включает в себя 128 КБ ОЗУ и 4 МБ флэш-памяти, но что делает ESP8366 лучше, так это то, что его можно использовать для создания собственной сети для подключения к нему других устройств.
В наличии на Amazon!
# 9 Quark D2000
Quark D2000Микроконтроллер Quark D2000 является одним из самых надежных микроконтроллеров и имеет больше элементов управления вводом-выводом, чем другие микроконтроллеры. Он основан на семействе микроконтроллеров Intel × 86. Это 32-битный микроконтроллер, работающий на частоте 32 МГц с 8K SRAM и 32K FLASH. Он чрезвычайно универсален, поскольку требует питания постоянного тока всего до 3,3 В.
В наличии на Amazon!
# 10 Launchpad MSP430
Launchpad MSP430Launchpad MSP430 наиболее полезен для применения встроенной эмуляции Energy Trace и отладки.Это также микроконтроллер со сверхнизким энергопотреблением и 4 КБ ОЗУ, который можно использовать в качестве альтернативы для Arduino Uno R3. Он имеет специальное программное обеспечение для программирования (IDE), используемое для кодирования и отладки, которое называется Energia, оно более удобное для пользователя и похоже на IDE Arduino.
В наличии на Amazon!
Обновления:
21 января 2021 года Raspberry Pi представила свою первую плату микроконтроллера ARM — Pico, мы добавили Pico в список ниже. Мы будем обновлять список по мере того, как наши читатели будут предлагать другие микроконтроллеры.
# 11 Raspberry Pi Zero W
Raspberry Pi Zero WRaspberry Pi нельзя отнести к категории микроконтроллеров, однако его можно использовать как микроконтроллер. Raspberry Pi Zero W расширяет семейство микроконтроллеров Pi Zero и поставляется с добавленной беспроводной локальной сетью и возможностью подключения по Bluetooth. Он обладает всеми функциями оригинального Pi Zero. Он имеет одноядерный процессор с тактовой частотой 1 ГГц и 512 МБ оперативной памяти. Raspberry Pi Zero W — отличный выбор для создания собственных проектов встраиваемого Интернета вещей (IoT). Это очень экономично и стоит около 10 долларов США.
В наличии на Amazon!
# 12 Raspberry Pi Pico
Raspberry Pi Pico, изображение предоставлено Raspberry Pi FoundationRaspberry Pi Foundation вчера анонсировала Raspberry Pi Pico, первый микроконтроллер компании. Как и другие продукты Raspberry Pi, новый Raspberry Pi Pico невероятно доступен по цене всего 4 доллара, но он оснащен первым специализированным чипом Foundation: RP2040.
Raspberry Pi Pico — это крошечная, быстрая и универсальная плата, построенная с использованием RP2040, нового микроконтроллерного чипа, разработанного Raspberry Pi в Великобритании.Разработанный Raspberry Pi, RP2040 оснащен двухъядерным процессором Arm Cortex-M0 + с внутренней оперативной памятью 264 КБ и поддержкой до 16 МБ внешней флэш-памяти.