Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Самое простое устройство на микроконтроллере

Микроконтроллеры / Создание устройств /

Разработка устройств на микроконтроллерах

Возможно, вы уже научились чему-то в теме программирования микроконтроллеров. Возможно, вы уже можете написать программу для простого устройства типа бегущих огней новогодней гирлянды. Однако аппетит приходит во время еды. И наверняка вам хочется чего-то большего. Наверняка вам хочется шагнуть на уровень профессионала. Ну хотя бы на первую ступеньку… Подробнее…

До сих пор я выдавал вам общие сведения о микроконтроллерах, отрывки из документации, иногда немного говорил о программировании. Но ещё ни разу не приводил примеров устройств на микроконтроллерах. А ведь именно в этом весь смысл обучения – в создании собственных устройств.

Так что с этой статьи я начинаю исправлять положение дел, и буду рассказывать именно о создании устройств с примерами схем, программ и т.п. Рассказы будут для начинающих. Как всегда буду стараться, чтобы понятно было даже людям, далёким от электроники и программирования. И первый пример будет настолько простым, насколько это вообще возможно…

Пример устройства на микроконтроллере

Итак, наше первое устройство на микроконтроллере будет не простым, а очень простым. И хотя сделать какой-то полезный прибор с наипростейшей схемой и наипростейшей программой крайне сложно, я всё-таки постараюсь. Конечно, эта полезность будет весьма сомнительной, но всё-таки применить это устройство можно будет не только для обучения, но и на практике (конечно, скорее как игрушку, но всё же).

Для опытов возьмём один из самых дешёвых микроконтроллеров – ATtiny13A, о котором я уже немало поведал на этом сайте.

Самая простая схема на микроконтроллере

Наше первое устройство, можно сказать, почти не будет делать ничего полезного. Но зато оно очень простое и новичкам будет проще разобраться как со схемотехникой, так и с программой микроконтроллера.

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

Конечно, это всё достаточно примитивно. Однако в давние времена, когда я занимался (в том числе) и обслуживанием систем сигнализации, мы использовали такие самодельные “датчики”. Например, обматывали решётку на окне тонким проводом и подключали его в шлейф прибора сигнализации. Если злодей выдернет решётку – провод порвётся и сигнализация сработает.

Ну а теперь к схеме.

Микроконтроллер ATtiny13A по умолчанию использует внутренний генератор на 9,6 МГц (это следует из документации, и я писал об этом здесь). И если нас такое решение устраивает (а нас оно устраивает), то это означает, что никаких внешних цепей для задания тактовой частоты нам не потребуется.

Микроконтроллер ATtiny13A выпускается в нескольких корпусах. Будем считать, что у нас корпус 8PDIP/SOIC (подробнее об этом здесь). Тогда схема будет такой:

Наверно вы знаете, что у этих МК есть встроенные подтягивающие резисторы. Но эти резисторы очень маломощные и могут перегореть, если их использовать с нагрузкой. Поэтому последовательно со светодиодом лучше ставить внешний резистор.

На схеме SA1 может быть либо охранным датчиком, либо просто тонким проводом, обмотанным, например, вокруг какого-то охраняемого предмета. При обрыве провода (или размыкании контакта) сигнализация “срабатывает” и светодиод загорается.

Конечно, это слишком несовершенная система. Но мы же только учимся. И в начале пути создания устройств на микроконтроллерах это лучшее решение, потому что оно самое простое.

Простая программа микроконтроллера

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

Итак, пройдём путь от создания проекта до написания программы.

Запускаем среду разработки AVRStudio 4 и видим окно:

Нажимаем кнопку NEW PROJECT. Откроется окно:

Здесь можно выбрать вид проекта – на ассемблере или на Си, задать имя проекта и выбрать каталог для файлов проекта.

ВНИМАНИЕ!
В пути к файлу не должно быть русских букв. То есть если вы сохраните проект в папку МОИ_ПРОГРАММЫ, то программа не скомпилируется, так как AVR Studio 4 может не понять путь с русскими буквами.

Мы будем писать программу на ассемблере. Проект назовём myprog.

Теперь можно нажать кнопку ДАЛЕЕ (NEXT).

В следующем окне надо выбрать отладочную платформу и тип микроконтроллера:

Выберем AVR Simulator. Ну и поскольку у нас микроконтроллер ATtiny13A, то выберем ATtiny13. Затем нажимаем FINISH.

Ну вот. Проект создан. Редактор исходного кода открыт. Теперь можно приступить к написанию программы. Она может быть примерно такой:


; Сообщить ассемблеру модель микроконтроллера
.device ATtiny13A
.nolist
; Подключить файл с объявлениями для ATtiny13A
.include "tn13def.inc"  
.list

; Инициализация
Init:
  ; PB0 - вход, остальные - выходы
  LDI R16,  0b11111110
  OUT DDRB, R16
  ; Включить подтяжку для PB0
  LDI R16,  0b00000001
  OUT PortB, R16

; Начало программы
Start:
  SBIS PinB,  0   ; Проверить датчик
  
SBI PortB, 1
; Если обрыв, то включить светодиод SBIC PinB, 0 ; Проверить датчик CBI PortB, 1 ; Если замкнут, то погасить светодиод RJMP Start ; Возвращаемся к началу программы

При инициализации мы определяем, какие выводы будут входами, а какие – выходами. Если в бит регистра DDRB записать 0, то соответствующий вывод порта В будет входом, если 1 – выходом.

У нас к выводу РВ0 подключен датчик, следовательно, РВ0 будет входом. К выводу РВ1 подключен светодиод, значит, РВ1 будет выходом. Неиспользуемые выводы лучше всегда делать выходами (хотя здесь у каждого свои предпочтения).

С помощью команды LDI мы записываем число в регистр R16, который используем как временную переменную. Это необходимо, потому что команда

OUT не может записать в регистр DDRB непосредственное значение.

Далее мы включаем подтягивающий резистор для вывода РВ0. Для этого в регистр PortB надо в соответствующий бит записать 1.

Ну а далее начинается программа.

Сначала выполняем команду SBIS. Эта команда проверяет указанный вход. И если на этом входе 1, то следующая команда НЕ БУДЕТ выполнена. То есть в этом коде:


SBIS PinB,  0 
SBI  PortB, 1 
SBIC ...

мы проверяем РВ0. Если там единица, то мы переходим к команде SBIC. Если же ноль (датчик разомкнут – сигнализация сработала), то выполняем команду SBI, которая устанавливает указанный выход (то есть в нашем случае зажигает светодиод, подавая напряжение на вывод РВ1).

Затем выполняем команду SBIC. Эта команда также проверяет указанный вход. Но если на этом входе 0, то следующая команда не будет выполнена. Если же 1 (контакты датчика замкнуты), то будет выполнена команда CBI, которая обнуляет указанный вывод. То есть на РВ1 будет подан 0, и светодиод погаснет.

Таким образам исполняется наш простой алгоритм: если датчик “не сработал” (контакт замкнут), то светодиод не горит. Если контакты разомкнулись, то светодиод светится.

На этом пока всё. Если что-то осталось непонятно – посмотрите видео в начале статьи.


Подписаться на канал в YouTube

Вступить в группу “Основы программирования”

Подписаться на рассылки по программированию


Микроконтроллеры для ЧАЙНИКОВ

Бесплатная рассылка о микроконтроллерах. Рассылка содержит как бесплатную информацию для начинающих, так и ссылки на платные продукты (книги, видеокурсы и др.) для тех, кто захочет вникнуть в тему более глубоко. Подробнее…


1.2. Разработка конструкций на микроконтроллерах . Микроконтроллеры AVR: от простого к сложному

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

Один из вариантов последовательности действий при разработке конструкций на микроконтроллерах приведен ниже.

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

2. Составить подробное описание конструкции так называемого верхнего уровня — на этом этапе еще неизвестно ни типа микроконтроллера, ни типа использованных микросхем и схемных решений, поэтому структурная схема представляет собой набор прямоугольников, подписанных наименованием узла, например АЦП. Составляется обобщенная блок-схема, описывающая работу программы. Если нужно — временные диаграммы.

3. Определиться с выбором аппаратных узлов (микросхем и т. д.) для схемы.

4. Выбрать тип микроконтроллера.

5. Убедиться в том, что микроконтроллер подходит для реализации схемы. Следует учитывать быстродействие микроконтроллера, наличие нужной периферии, число линий ввода/вывода, потребляемую мощность и другие, существенные для конкретной конструкции параметры. Не следует «бить из пушки по воробьям» — использовать более мощный микроконтроллер для простейшей задачи, с которой может справиться и более простой (и более дешевый). С другой стороны, не следует увлекаться слабыми микроконтроллерами, усложняя схему, добавляя схему увеличения числа выводов, так как достаточно часто (но не всегда) экономия, полученная за счет применения более дешевого микроконтроллера, полностью теряется из-за увеличившейся стоимости печатной платы (ведь ее размеры увеличились), стоимости дополнительных элементов и т. д.

6. Теперь следует определиться, какие инструменты (программы) будут использоваться для разработки программы для микроконтроллера. Это может быть транслятор языка ассемблер или компилятор языка высокого уровня, чаще всего С.

7. После того как стали известны используемые узлы микроконтроллера и внешние схемы, подключаемые к нему, можно приступать к написанию и отладке программы. Целесообразно разделить конструкцию на функциональные узлы и отлаживать их следующим образом: изготовить часть схемы, реализующей собой один из узлов, написать фрагмент программы, управляющей этим узлом, и отладить его. После этого аналогично работать со следующим узлом, и так до тех пор, пока все части схемы не будут отлажены отдельно друг от друга. При этом можно пользоваться уже отлаженными узлами для облегчения проверки правильности работы следующих, только отлаживаемых узлов. Например, для простого калькулятора можно выделить следующие узлы: индикатор, клавиатура. Отлаживая индикатор, можно написать программу, выводящую на индикатор какое-либо число. Затем, отлаживая клавиатуру, можно использовать индикатор для вывода, например, номера нажатой клавиши. И только убедившись, что оба узла работают верно, следует переходить к реализации программы собственно калькулятора.

8. Теперь следует объединить все части схемы воедино и отладить их работу совместно. Если в процессе объединения обнаружится, что какой-либо из узлов реализован не совсем удачно, следует вернуться в предыдущий пункт.

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

10. Заключительный этап относится к случаям, когда спроектированная конструкция будет производиться, — подготовка чертежей принципиальной электрической схемы, печатной платы, спецификаций в соответствии со стандартами, принятыми в месте, где будет осуществляться производство конструкции.

проектов микроконтроллеров AVR

Микроконтроллер AVR от ATMEL широко используется во встроенных приложениях. Приведенный ниже список учебных пособий по микроконтроллерам AVR и проектов AVR поможет вам изучить серию микроконтроллеров AVR от самого базового уровня до продвинутых приложений. Большинство этих проектов построены с использованием микроконтроллера ATmega16/Atmega32 и будут программироваться с использованием Atmel Studio . Все проекты и учебные пособия объясняются аккуратной принципиальной схемой, кодом и демонстрацией оборудования.

18 января 2023 г.

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

Мы в Circuitdigest работали над множеством проектов печатных плат, но постоянно сталкивались с…

30 декабря 2020 г. мега328P для повышения эффективности программирования Arduino

В этом уроке мы поговорим о предохранителях. Когда я учился в колледже и узнавал обо всех интересных вещах в…

30 сентября 2019 г.

GPS-модуль (uBlox Neo 6M) Взаимодействие с микроконтроллером AVR Atmega16/32

GPS-модули широко используются в электронных приложениях для отслеживания местоположения на основе координат долготы и широты. анс Система, использующая микроконтроллер Atmega32

По мнению исследователей из Пенского государственного университета, люди больше доверяют машинам, чем людям, что, вероятно,…

19 марта, 2019

Взаимодействие двигателя постоянного тока с микроконтроллером AVR Atmega16

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

13 марта 2019 г.

Как использовать датчик Холла с микроконтроллером AVR ATmega16

Датчики Холла работают по принципу эффекта Холла, предложенному Эдвином Холлом в 1869 году. Предлагаемое заявление гласит: «Зал…

6 марта 2019 г.

Понимание широтно-импульсной модуляции (ШИМ) в микроконтроллерах Atmega16/32 AVR

Широтно-импульсная модуляция (ШИМ) — это мощная технология, при которой ширина импульса изменяется при сохранении постоянной частоты.

4 марта 2019 г.

Взаимодействие ESP8266 NodeMCU с микроконтроллером Atmega16 для отправки электронной почты

Atmega16 — недорогой 8-битный микроконтроллер, который поставляется с большим количеством GPIO, чем его предыдущая версия микроконтроллеров…

1 марта , 2019

Цифровые настенные часы на печатной плате с использованием микроконтроллера AVR Atmega16 и DS3231 RTC

В каждых цифровых часах есть кристалл, который отслеживает время. Этот кристалл присутствует не только в часах, но и …

28 февраля 2019 г.

Робот следящего за линией с использованием микроконтроллера AVR ATmega16

Здесь мы будем строить еще один проект с микроконтроллером AVR Atmega16. Если вы новичок в микроконтроллерах AVR, то вы…

26 февраля 2019 г.

Как использовать АЦП в микроконтроллере AVR ATmega16

Одной из общих функций, которая используется почти во всех встраиваемых приложениях, является модуль АЦП (аналого-цифровой преобразователь). Эти …

19 февраля 2019 г.

Интерфейс шагового двигателя с микроконтроллером AVR Atmega16

Шаговые двигатели представляют собой бесщеточные двигатели постоянного тока, которые могут вращаться от 00 до 3600 с шагом. Шаговый двигатель использует электронные сигналы для…

15+ проектов микроконтроллеров AVR для студентов инженерных специальностей

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

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

Микроконтроллер AVR Проекты:
SNO
Название проекта 9 0101
1
Вентилятор постоянного тока с регулируемой температурой с использованием микроконтроллера : Основной принцип схемы заключается в включении вентилятора, подключенного к двигателю постоянного тока, когда температура превышает пороговое значение. процессор для уменьшения нагрева.
2
Биометрическая система посещаемости с использованием микроконтроллера : Эта система посещаемости на основе отпечатков пальцев разработана с использованием микроконтроллера AVR. Это может быть использовано в промышленности, школах, колледжах и т. д.
3
Управление скоростью двигателя постоянного тока на основе ШИМ с использованием микроконтроллера : Вот простая схема управления скоростью двигателя постоянного тока, разработанная с использованием микроконтроллера AVR. Здесь мы используем метод, называемый ШИМ (широтно-импульсная модуляция), для управления скоростью двигателя постоянного тока.
4
Система сигналов дорожного движения на основе плотности с использованием микроконтроллера : В этой системе мы используем ИК-датчики для измерения плотности движения. Мы должны установить по одному ИК-датчику на каждую дорогу; эти датчики всегда определяют движение на этой конкретной дороге. Все эти датчики сопряжены с микроконтроллером. На основе этих датчиков контроллер обнаруживает трафик и управляет системой трафика.
5
Роботизированная схема следования по линии с использованием микроконтроллера ATMega8: Этот робот следования по линии является базовым роботом, который следует по определенному пути, обозначенному линией определенной ширины.
6
Солнечная панель слежения за солнцем: В этой статье описывается схема, которая вращает солнечную панель. Эта солнечная панель слежения за солнцем состоит из двух LDR, солнечной панели, шагового двигателя и микроконтроллера ATMEGA8.
7
Уличные фонари, которые загораются при обнаружении движения автомобиля: В этой статье описывается схема, которая включает уличные фонари при обнаружении движения автомобиля и остается выключенным по истечении заданного времени. Эта система управляет уличным освещением, используя светочувствительный резистор и датчик PIR.
8
Автоматическое управление интенсивностью уличного освещения: Это простая схема, которая автоматически регулирует интенсивность уличного освещения, разработанная с использованием микроконтроллера и светодиодов.
9
Система учета рабочего времени на основе RFID: Эта простая система учета рабочего времени на основе RFID разработана с использованием микроконтроллера ATmega8 и в основном используется в учебных заведениях, отраслях промышленности и т. д., где требуется аутентификация.
10
Цифровой датчик температуры: Основной принцип этой схемы заключается в отображении цифрового значения температуры. Они в основном используются в экологических приложениях.
11
2-разрядный счетчик вверх-вниз: Основной принцип этой схемы заключается в увеличении значений на семисегментных дисплеях нажатием кнопки. Эта схема в основном может использоваться в табло.
12
Схема системы домашней автоматизации на основе DTMF : Это простая и очень полезная схема в нашей реальной жизни, называемая системой бытовой техники, управляемой DTMF. Это помогает управлять бытовой техникой с помощью технологии DTMF.
13
Индикатор уровня воды : Этот проект индикатора уровня воды использует простой механизм, который помогает обнаруживать и отображать уровень воды в верхнем баке или любом другом резервуаре для воды. Его можно использовать в отелях, фабриках, жилых домах, коммерческих комплексах, дренажных системах и т. д.
14
Интерфейс ЖК-дисплея 16X2 с микроконтроллером AVR : Это схема, которая помогает в интерфейсе ЖК-дисплея 16X2 с микроконтроллером AVR. Atmega16 принадлежит к семейству микроконтроллеров AVR.
15
Контроллер автоматических железнодорожных ворот с системой высокоскоростного оповещения : Основная цель этого проекта заключается в надлежащем управлении и управлении автоматическими железнодорожными воротами во избежание несчастных случаев на беспилотном железнодорожном переезде. .
16
Калькулятор булевой алгебры : Этот калькулятор булевой алгебры представляет собой интересный проект, который более полезен в нашей реальной жизни, работая в качестве портативного калькулятора для упрощения логического выражения на лету.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *