Setting96.ru

Строительный журнал
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

OSBoy notes

OSBoy notes.

В одном из предыдущих примеров я уже показывал, как на ATtiny13 можно реализовать ШИМ регулятор с управлением потенциометром (изменением уровня сигнала на входе АЦП). Теперь, по просьбам трудящихся, усложним задачу и рассмотрим, как можно управлять ШИМ сигналом на выходе с помощью кнопок.
Сложность тут заключается в том, что при управлении кнопками, скважность ШИМ сигнала на выходе будет изменяться ступенчато при удерживании кнопки, а между этими «ступенями» необходимо реализовать определённые временные задержки для более или менее плавного изменения ШИМ сигнала. Кроме того, даже если мы будем управлять выходом более грубо, отдельными короткмим нажатиями кнопки, задержки всё равно потребуются — для устранения эффекта «дребезга» контактов при нажатии и отпускании кнопок. Но, так как на выходе у нас должен постоянно генерироваться ШИМ сигнал, то вносить задержки в основной цикл программы (например с помощью библиотеки delay) мы не можем, потому что при этом наш ШИМ сигнал будет прерываться во время выдержки каждой паузы. Поэтому для обработки нажатий на кнопки логично будет задействовать внешние прерывания, а временные задержки (паузы) организовать с помощью таймера. Тут вроде бы опять незадача: ведь таймер на борту у тини13 всего один, а он у нас уже задействован для формирования ШИМ сигнала. Но на самом деле всё совсем не так плохо. Ведь таймер, при желании, может выполнять и сразу несколько задач.

Все опыты я провожу на своей отладочной плате, соответственно код привожу применительно к ней:

Я взял код из предыдущего примера ШИМ регулятора и переделал его под нашу задачу — управление двумя кнопками: при нажатии на кнопку «+» (PCINT3) скважность ШИМ сигнала будет уменьшаться, а среднее значение сигнала при этом будет увеличиваться до тех пор, пока коэффициент заполнения не станет максимальным; а при нажатии на кнопку «-» (PCINT4) — соответственно, наоборот.

Теперь поподробнее рассмотрим ключевые моменты нашего кода.

Так как кнопок у нас будет две, то использовать аппаратное прерывание INT0 тут не катит, поэтому используем програграммное прерывание PCINT0, которому по маске PCMSK разрешаем использование ножек PCINT3 и PCINT4, к которым у нас подключены кнопки. В обработчике прерывания PCINT0_vect проверяем, какая из кнопок была нажата и присваиваем соответствующее значение глобальной переменной state. Таким образом мы, как бы, фиксируем факт нажатия кнопки и всё. Всю же остальную рутину, включая реализацию антидребезга, оставляем на откуп прерыванию по таймеру.

Итак, мы дошли до таймера, давайте разбираться с ним.
В данном случае таймер у нас настраивается для генерирования ШИМ сигнала на выходе OC0A. Изменяя значение регистра сравнения OCR0A, мы будем изменять скважность ШИМ сигнала. Но, пока таймер генерирует ШИМ сигнал, ничто нам не мешает, так же, использовать его прерывания. Тут нам доступны два прерывания по совпадению с регистрами сравнения: OCR0A (он у нас занят для генерирования ШИМ сигнала) и OCR0B. А так же, прерывание по переполнению счётчика — вот его мы и будем использовать для выполнения всей основной рутины. Чтобы разрешить прерывания по переполнению счётчика, выставляем бит TOIE0 регистра TIMSK0.
Таким образом, одним таймером мы убили сразу двух зайцев. И при этом, у нас ещё в запасе осталось прерывание по совпадению с OCR0B, на которое, при необходимости, тоже можно повесить выполнение какой-нибудь полезной работы!

Ну и, наконец, посмотрим, что же у нас происходит в обработчике прерывания по переполнению таймера TIM0_OVF_vect.
Каждый раз, при срабатывании, обработчик проверяет значение глобальной переменной state. Если значение state отлично от нуля, значит была нажата одна из кнопок, поэтому нужно выдержать некоторую паузу, в течение которой утихнет дребезг контактов, в данном случае 100мс. Для этого внутри обработчика, образно говоря, запускается свой счётчик, с каждым очередным прерыванием увеличивая значение глобальной переменной counter. Значение, до которого должен увеличиваться счётчик, определяется следующим образом:

counter = t* Fcpu / (8*2*T) = 0,1с*1200000Гц/(8*2*256) = 29,29

  • t — требуемое время отсчёта (100мс = 0,1с);
  • Fcpu — тактовая частота МК;
  • 8 — предделитель частоты, выставленный в TCCR0B;
  • T — период счёта таймера (от 0 до 255);
  • 2 — т.к. используется ШИМ с коррекией фазы, то переполнение счётчика будет наступать каждые 2 периода счёта.

Таким образом, для выдержки паузы в 100мс, прерывание по переполнению счётчика должно наступить примерно 29 раз.

Затем, проверив значение переменной state, обработчик проверяет, какая именно из двух кнопок была нажата и, соответственно, изменяет значение регистра сравнения OCR0A в ту или иную сторону. После этого остаётся только проверить, осталась ли кнопка нажатой: если да, то процесс повторяется (при этом паузы в 100мс будут играть роль задержек между «ступеньками» изменения ШИМ сигнала). Если же кнопка была отпущена, то значение state сбрасывается в 0 и при следующем срабатывании прерывания обработчик, проверив значение state, просто завершится, ничего больше не делая.

Прошивка PIC микроконтроллеров с «нуля».

Итак, пришло время изучать микроконтроллеры, а потом и их программировать, а так же хотелось собирать устройства на них, схем которых сейчас в интернете ну просто море. Ну нашли схему, купили контроллер, скачали прошивку….а прошивать то чем. И тут перед радиолюбителем, начинающим осваивать микроконтроллеры, встает вопрос – выбор программатора! Хотелось бы найти оптимальный вариант, по показателю универсальность — простота схемы — надёжность. «Фирменные» программаторы и их аналоги были сразу исключены в связи с довольно сложной схемой, включающей в себя те же микроконтроллеры, которые необходимо программировать. То есть получается «замкнутый круг»: что бы изготовить программатор, необходим программатор. Вот и начались поиски и эксперименты! В начале выбор пал на PIC JDM. Работает данный программатор от com порта и питается от туда же. Был опробован данный вариант, уверенно запрограммировал 4 из 10 контроллеров, при питании отдельном ситуация улучшилась, но не на много, на некоторых компьютерах он вообще отказался что либо делать да и защиты от «дурака» в нем не предусмотрено. Далее был изучен программатор Pony-Prog. В принципе, почти тоже самое что и JDM.Программатор «Pony-prog», представляет очень простую схему, с питанием от ком-порта компьютера, в связи с чем, на форумах, в Интернете, очень часто появляются вопросы по сбоям при программировании того, или иного микроконтроллера. В результате, выбор был остановлен на модели «Extra-PIC». Посмотрел схему – очень просто, грамотно! На входе стоит MAX 232 преобразующая сигналы последовательного порта RS-232 в сигналы, пригодные для использования в цифровых схемах с уровнями ТТЛ или КМОП, не перегружает по току COM-порт компьютера, так как использует стандарт эксплуатации RS232, не представляет опасности для COM-порта.Вот первый плюс!
Работоспособен с любыми COM-портами, как стандартными (±12v; ±10v) так и с нестандартными COM-портами некоторых моделей современных ноутбуков, имеющих пониженные напряжения сигнальных линий, вплоть до ±5v – еще плюс! Поддерживается распространёнными программами IC-PROG, PonyProg, WinPic 800 (WinPic800) и другими – третий плюс!
И питается это все от своего собственного источника питания!
Было решено – надо собирать! Так в журнале Радио 2007 №8 был найден доработанный вариант этого программатора. Он позволял программировать микроконтроллеры в двух режимах.
Известны два способа перевода микроконтроллеров PICmicro в режим программирования:
1.При включённом напряжении питания Vcc поднять напряжение Vpp (на выводе -MCLR) от нуля до 12В
2.При выключенном напряжении Vcc поднять напряжение Vpp от нуля до 12В, затем включить напряжение Vcc
Первый режим — в основном для приборов ранних разработок, он накладывает ограничения на конфигурацию вывода -MCLR, который в этом случае может служить только входом сигнала начальной установки, а во многих микроконтроллерах предусмотрена возможность превратить этот вывод в обычную линию одного из портов. Это еще один плюс данного программатора. Схема его приведена ниже:

Крупнее
Все было собрано на макетке и опробовано. Все прекрасно и устойчиво работает, глюков замечено небыло!
Была отрисована печатка для этого программатора.
depositfiles.com/files/mk49uejin
все было собрано в открытый корпус, фото которого ниже.


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

Итак, программатор собран, кабель тоже, наступил черед проверки всего этого хозяйства на предмет работоспособности, поиск глюков и ошибок.
Сперва наперво устанавливаем программу IC-prog, которую можно скачать на сайте разработчика www.ic-prog.com, Распакуйте программу в отдельный каталог. В образовавшемся каталое должны находиться три файла:
icprog.exe — файл оболочки программатора.
icprog.sys — драйвер, необходимый для работы под Windows NT, 2000, XP. Этот файл всегда должен находиться в каталоге программы.
icprog.chm — файл помощи (Help file).
Установили, теперь надо бы ее настроить.
Для этого:
1.(Только для Windows XP): Правой кнопкой щёлкните на файле icprog.exe. «Свойства» >> вкладка «Совместимость» >> Установите «галочку» на «Запустить программу в режиме совместимости с:» >>выберите «Windows 2000».
2.Запустите файл icprog.exe. Выберите «Settings» >> «Options» >> вкладку «Language» >> установите язык «Russian» и нажмите «Ok».
Согласитесь с утверждением «You need to restart IC-Prog now» (нажмите «Ok»). Оболочка программатора перезапустится.
Настройки» >> «Программатор

Читать еще:  120 вентилятор с регулировкой вращения

1.Проверьте установки, выберите используемый вами COM-порт, нажмите „Ok“.
2.Далее, „Настройки“ >> „Опции“ >> выберите вкладку „Общие“ >> установите „галочку“ на пункте „Вкл. NT/2000/XP драйвер“ >> Нажмите „Ok“ >> если драйвер до этого не был устновлен на вашей системе, в появившемся окне „Confirm“ нажмите „Ok“. Драйвер установится, и оболочка программатора перезапустится.
Примечание:
Для очень „быстрых“ компьютеров возможно потребуется увеличить параметр „Задержка Ввода/Вывода“. Увеличение этого параметра увеличивает надёжность программирования, однако, увеличивается и время, затрачиваемое на программирование микросхемы.
3.»Настройки» >> «Опции» >> выберите вкладку «I2C» >> установите «галочки» на пунктах: «Включить MCLR как VCC» и «Включить запись блоками». Нажмите «Ok».
4.«Настройки» >> «Опции» >> выберите вкладку «Программирование» >> снимите «галочку» с пункта: «Проверка после программирования» и установите «галочку» на пункте «Проверка при программировании». Нажмите «Ok».
Вот и настроили!
Теперь бы нам протестировать программатор в месте с IC-prog. И тут все просто:
Далее, в программе IC-PROG, в меню, запустите: Настройки >> Тест Программатора

Перед выполнением каждого пункта методики тестирвания, не забывайте устанавливать все «поля» в исходное положение (все «галочки» сняты), как показано на рисунке выше.
1.Установите «галочку» в поле «Вкл. Выход Данных», при этом, в поле «Вход Данных» должна появляться «галочка», а на контакте (DATA) разъёма X2, должен установиться уровень лог. «1» (не менее +3,0 вольт). Теперь, замкните между собой контакт (DATA) и контакт (GND) разъёма X2, при этом, отметка в поле «Вход Данных» должна пропадать, пока контакты замкнуты.
2.При установке «галочки» в поле «Вкл. Тактирования», на контакте (CLOCK) разъёма X2, должен устанавливаться уровень лог. «1». (не менее +3,0 вольт).
3.При установке «галочки» в поле «Вкл. Сброс (MCLR)», на контакте (VPP) разъёма X3, должен устанавливаться уровень +13,0… +14,0 вольт, и светиться светодиод D4 (обычно красного цвета).Если переключатель режимов поставить в положение 1 то будет светится светодиод HL3
Если при тестировании, какой-либо сигнал не проходит, следует тщательно проверить весь путь прохождения этого сигнала, включая кабель соединения с COM-портом компьютера.
Тестирование канала данных программатора EXTRAPIC:
1. 13 вывод микросхемы DA1: напряжение от -5 до -12 вольт. При установке «галочки»: от +5 до +12 вольт.
2. 12 вывод микросхемы Da1: напряжение +5 вольт. При установке «галочки»: 0 вольт.
3. 6 вывод микросхемы DD1: напряжение 0 вольт. При установке «галочки»: +5 вольт.
3. 1 и 2 вывод микросхемы DD1: напряжение 0 вольт. При установке «галочки»: +5 вольт.
4. 3 вывод микросхемы DD1: напряжение +5 вольт. При установке «галочки»: 0 вольт.
5. 14 вывод микросхемы DA1: напряжение от -5 до -12 вольт. При установке «галочки»: от +5 до +12 вольт.
Если все тестирование прошло успешно, то программатор готов к эксплуатации.
Для подключения микроконтроллера к программатору можно использовать подходящие панельки или же сделать адаптер на основе ZIF панельки (с нулевым усилием прижатия), например как здесь radiokot.ru/circuit/digital/pcmod/18/.
Теперь несколько слов про ICSP — Внутрисхемное программирование
PIC-контроллеров.
При использовании ICSP на плате устройства следует предусмотреть возможность подключения программатора. При программировании с использованием ICSP к программатору должны быть подключены 5 сигнальных линий:
1. GND (VSS) — общий провод.
2. VDD (VCC) — плюс напряжение питания
3. MCLR’ (VPP)- вход сброса микроконтроллера / вход напряжения программирования
4. RB7 (DATA) — двунаправленная шина данных в режиме программирования
5. RB6 (CLOCK) Вход синхронизации в режиме программирования
Остальные выводы микроконтроллера не используются в режиме внутрисхемного программирования.
Вариант подключения ICSP к микроконтроллеру PIC16F84 в корпусе DIP18:

1.Линия MCLR’ развязывается от схемы устройства перемычкой J2, которая в режиме внутрисхемного программирования (ICSP) размыкается, передавая вывод MCLR в монопольное управление программатору.
2.Линия VDD в режиме программирования ICSP отключается от схемы устройства перемычкой J1. Это необходимо для исключения потребления тока от линии VDD схемой устройства.
3.Линия RB7 (двунаправленная шина данных в режиме программирования) изолируется по току от схемы устройства резистором R1 номиналом не менее 1 кОм. В связи с этим максимальный втекающий/стекающий ток, обеспечиваемый этой линией будет ограничен резистором R1. При необходимости обеспечить максимальный ток, резистор R1 необходимо заменить (как в случае c VDD) перемычкой.
4.Линия RB6 (Вход синхронизации PIC в режиме программирования) так же как и RB7 изолируется по току от схемы устройства резистором R2, номиналом не менее 1 кОм. В связи с этим максимальный втекающий/стекающий ток, обеспечиваемый этой линией будет ограничен резистором R2. При необходимости обеспечить максимальный ток, резистор R2 необходимо заменить (как в случае с VDD) перемычкой.
Расположение выводов ICSP у PIC-контроллеров:

Эта схема только для справки, выводы программирования лучше уточнить из даташита на микроконтроллер.
Теперь рассмотрим прошивку микроконтроллера в программе IC-prog. Будем рассматривать на примере конструкции вот от сюда rgb73.mylivepage.ru/wiki/1952/579
Вот схема устройства

вот прошивка
Прошиваем контроллер PIC12F629. Данный микроконтроллер для своей работы использует константу osccal — представляет собой 16-ти ричное значение калибровки внутреннего генератора МК, с помощью которого МК отчитывает время при выполнении своих программ, которая записана в последней ячейке данных пика. Подключаем данный микроконтроллер к программатору.
Ниже на сриншоте красными цифрами показана последовательность действий в программе IC-prog.

1. Выбрать тип микроконтроллера
2. Нажать кнопку «Читать микросхему»
В окне «Программный код» в самой последней ячейке будет наша константа для данного контроллера. Для каждого контроллера константа своя!Не сотрите ее, запишите на бумажку и наклейте ее на микросхему!
Идем далее

3. Нажимаем кнопку «Открыть файл. », выбираем нашу прошивку. В окне программного кода появится код прошивки.
4. Спускаемся к концу кода, на последней ячейке жмем правой клавишей мыши и выбираем в меню «править область», в поле «Шестнадцатеричные» вводим значение константы, которую записали, нажимаем «ОК».
5. Нажимаем «программировать микросхему».
Пойдет процесс программирования, если все прошло успешно, то программа выведет соответствующее уведомление.
Вытаскиваем микросхему из программатора и вставляем в собранный макет. Включаем питание. Нажимаем кнопку пуск.Ура работает! Вот видео работы мигалки
video.mail.ru/mail/vanek_rabota/_myvideo/1.html
С этим разобрались. А вот что делать если у нас есть файл исходного кода на ассемблере asm, а нам нужен файл прошивки hex? Тут необходим компилятор. и он есть — это Mplab, в этой программе можно как писать прошивки так и компилировать. Вот окно компилятора

Устанавливаем Mplab
Находим в установленной Mplab программу MPASMWIN.exe, обычно находится в папке — Microchip — MPASM Suite — MPASMWIN.exe
Запускаем ее. В окне (4) Browse находим наш исходник (1) .asm, в окне (5) Processor выбираем наш микроконтроллер, нажимаем Assemble и в той же папке где вы указали исходник появится ваша прошивка .HEX Вот и все готово!
Надеюсь эта статья поможет начинающим в освоении PIC контроллеров! Удачи!

Шаг 4. Как выбрать нужный микроконтроллер.

Для создания робота нужно сделать правильный выбор микроконтроллера. Сначала нужно разобраться с понятием, что такое микроконтроллер и что он делает?

Микроконтроллер — это вычислительное устройство, способное выполнять программы (то есть последовательность инструкций).

Он часто упоминается как “мозг” или “центр управления” робота. Как правило, микроконтроллер отвечает за все вычисления, принятие решений и коммуникации.

Читать еще:  Как отрегулировать налив воды в бачке унитаза

Для того, чтобы взаимодействовать с внешним миром, микроконтроллер имеет ряд штырей или выводов для электрического распознавания сигнала. Так сигнал может быть включен на максимум (1/С) или минимум (0/выкл) с помощью инструкции программирования. Эти выводы также могут быть использованы для считывания электрических сигналов. Они поступают с датчиков или других приборов и определяют, являются сигналы высокими или низкими.

выбор микроконтроллера

микроконтроллер для робота

Большинство современных микроконтроллеров может также измерять напряжение аналоговых сигналов. Это сигналы, которые могут иметь полный диапазон значений вместо двух четко определенных уровней. Происходит это с помощью аналогового цифрового преобразователя (АЦП). В результате микроконтроллер может присвоить сигналу числовое значение в виде аналогового напряжения.Это напряжение не является ни высоким, ни низким и, как правило, находится в диапазоне 0 — 10 вольт.

Что может делать микроконтроллер?

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

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

микроконтроллер и светодиоды

микроконтроллер со светодиодами

Аналогичным образом, микроконтроллеры могут быть использованы для контроля других электрических устройств. В первую очередь таких как приводы (при подключении к контроллеру двигателя), устройства хранения (например, карты SD), WiFi или bluetooth-интерфейсы и т. д. Как следствие этой невероятной универсальностью, микроконтроллеры можно найти в повседневной жизни.

Практически в каждом бытовом приборе или электронном устройстве используется, по крайней мере, один микроконтроллер. Хотя часто используется и несколько микроконтроллеров. Например, в телевизорах, стиральных машинах, пультах управления, телефонах, часах, СВЧ-печах и многих других устройствах.

В отличие от микропроцессоров (например, центральный процессор в персональных компьютерах), микроконтроллер не требует периферийных устройств. Таких как внешняя оперативная память или внешнее устройство хранения данных для работы. Это означает, что хотя микроконтроллер может быть менее мощным, чем их коллеги ПК. Почти всегда разработка схем и продуктов, основанных на микроконтроллерах значительно проще и дешевле.Потому что требуется очень мало дополнительных аппаратных компонентов.

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

Какие существуют более специализированные функции микроконтроллера?

Специальное оборудование, встроенное в микроконтроллеры позволяет этим устройствам сделать больше, чем обычный цифровой ввод/вывод, базовые расчеты и принятие решений. Многие микроконтроллеры с готовностью поддерживает наиболее популярные протоколы связи, такие как UART (RS232 или другой), SPI и I2C. Эта функция невероятно полезна при общении с другими устройствами, такими как компьютеры, датчики, или другие микроконтроллеры.

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

rs232

rs232

Аналого-цифровые преобразователи (АЦП), используются для преобразования аналоговых сигналов напряжения в цифровые. Там количество пропорционально величине напряжения, и это число может затем использоваться в программе микроконтроллера. Для того, чтобы выходное промежуточное количество энергии отличается от высокого и низкого, некоторые микроконтроллеры имеют возможность использовать широтно-импульсную модуляцию (ШИМ). Например, этот способ позволяет плавно изменять яркость свечения светодиода.

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

Аналоговые или цифровые?

Какие нужно использовать входные и выходные сигналы зависит от поставленной задачи и условий. Например, если у вас стоит задача просто что-то включить или выключить, то вам достаточно чтобы сигнал на входном контакте микроконтроллера был цифровой.

Двоичное состояние переключателя 0 или 1. Высокий уровень сигнала может быть 5 вольт, а низкий 0. Если же вам нужно измерить, например, температуру, то нужен аналоговый входной сигнал. Далее АЦП на микроконтроллере интерпретирует напряжение и преобразует его в числовое значение.

Как программировать микроконтроллеры?

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

В настоящее время микроконтроллеры могут быть запрограммированы на различных языках высокого уровня. Это такие языки как C, C++, С#, Ява, Python, Basic и другие. Конечно, всегда можно написать программу на ассемблере. Хотя это для более продвинутых пользователей с особыми требованиями (с намеком на мазохизм). В этом смысле, любой должен быть в состоянии найти язык программирования, который лучше всего соответствуют его вкусу и предыдущему опыту программирования.

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

среда программирования Lego EV3

среда программирования Lego Education EV3

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

Почему не использовать стандартный компьютер?

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

системный блок компьютера

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

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

Как выбрать микроконтроллер правильно?

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

  • Ардуино
  • BasicATOM
  • BasicX
  • Lego EV3
  • и многие другие

Для того чтобы правильно выбрать микроконтроллер задайте себе следующие вопросы:

Какой микроконтроллер самый популярный для моего приложения?

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

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

Есть какие-то особенные требования у вашего робота?

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

Возможно другим контроллерам требуется специфическое оборудование (например, АЦП, ШИМ, и коммуникационный протокол поддержки). Также требования к памяти и скорости, а также число выводов должны быть приняты во внимание.

Какие компоненты доступны для конкретного микроконтроллера?

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

Читать еще:  Как отрегулировать пластиковые окна wintech

Большинство датчиков и компонентов может взаимодействовать напрямую со многими микроконтроллерами. Хотя некоторые комплектующие предназначены для взаимодействия с конкретным микроконтроллером. Возможно они будут уникальными и несовместимыми другими типами микроконтроллеров.

Что нас ждет в будущем?

Цена на компьютеры резко идет вниз, и достижения в области технологии делают их меньше и эффективнее. В результате одноплатные компьютеры стали привлекательным вариантом для роботов. Они могут работать с полноценной операционной системой (Windows и Linux являются наиболее распространенными).

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

Основные критерии выбора

Для того чтобы выбрать микроконтроллер составим список нужных нам критериев:

  • Стоимость микроконтроллера должна быть низкой
  • Он должен быть простым в использовании и хорошо поддерживаться
  • Важно наличие доступной документации
  • Он должен программироваться в графической среде
  • Он должен быть популярен и иметь активное сообщество пользователей
  • Так как наш робот будет использовать два двигателя и различные датчики, то микроконтроллеру понадобится как минимум два порта для управления двигателями и несколько портов для подключения датчиков. Также должна быть возможность для расширения количества подключаемых устройств в будущем.

Этим критериям соответствует модуль EV3 из набора Lego Mindstorms EV3.

Устройства на AVR

Светодиодный кулон на матрице 8×8 и ATmega328

  •  Печать 
  • E-mail

В сети есть несколько похожих проектов, где люди устанавливали микроконтроллер за светодиодной матрицей 5×7 точек. У всех них много общего: они просто показывают изображение или простую анимацию на дисплее путем включения или выключения определенных пикселей. Мне это показалось неинтересным, в действительности я хотел кулон, который мог бы реально сиять, поэтому я придумал схему и написал для него код. Кулон поддерживает 16 уровней яркости на пиксель и имеет размер дисплея 8×8. Используемый микроконтроллер — ATMega328p. В настоящее время используется не весь объем памяти, поэтому можно использовать ATmega88/168.

Таймер с счетчиком общего времени на ATtiny2313

  •  Печать 
  • E-mail

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

В выключенном состоянии на дисплее отображаются поочередно «тире» во всех разрядах и общее время работы(в часах), максимально 9999. При переполнении счетчик общего времени автоматически будет считать с нулевого значения. Для принудительного обнуления счетчика общего времени необходимо выключить питание прибора, установить перемычку S2 и включить питание, на дисплее будут мигать нули во всех разрядах, затем нужно опять выключить питание, снять перемычку и включить питание прибора.

Часы с синхронизацией по NTP на ATmega328

  •  Печать 
  • E-mail

Схема и программное обеспечение реализуют часы синхронизированные с NTP сервером, в качестве индикатора используются два классических светодиодных матричных дисплея HDLX2416, а для измерения температуры и влажности применен даичик DHT11.

Назначение динамического IP-адреса выполняется с помощью DHCP. DNS поиск используется для разрешения имени хоста NTP. Его можно настроить с помощью встроенного веб-сервера, который реализует методы GET и POST и базовую аутентификацию HTTP.

Параметры, настраиваемые через Интернет, хранятся в EEPROM.

USB генератор-частотомер на ATmega88 и AD9833

  •  Печать 
  • E-mail

Часто для настройки и тестирования аппаратуры появляется необходимость в точном генераторе функций. Кроме того полезно иметь под рукой частотомер в качестве простейшего(после вольтметра) анализатора сигнала. Сердцем генератора является отличная микросхема DDS(Direct Digital Synthesizer) от фирмы Analog Devices — AD9833.

Прелесть сей микросхемки в том, что она без «шума и пыли» может генерировать сигналы в полосе 0. 12.5МГц, 3-х форм с высокой точностью и шагом 0,1Гц. Также радует невысокая цена(порядка $2). Дальше все зависит от тех.задания. Можно выходной сигнал усилить/ослабить(например с помощью PGA вроде MCP6S21), сместить в «+» или «-«. Вплоть до FM или еще какой-нибудь модуляции. Словом очень полезная эта AD9833. В моем случае достаточно было привести выходной сигнал по амплитуде к напряжению питания.

Часы на ATmega8

  •  Печать 
  • E-mail

В хозяйстве давно пылилась плата от старых электронных весов, на ней были распаяны 6 семисегментных индикаторов и сдвиговые регистры 74HC595, я решил сделать из этой платы часы. Дополнительно сделал плату управления на микроконтроллере ATmega8 и написал программу, для точного хода использовал микросхему часов реального времени DS3231. Индикаторы и регистры питаются от напряжения 5 Вольт, ATmega8 и DS3231 от стабилизированного напряжения 3,3 Вольта. Датчик освещенности на фоторезисторе используется для автоматической регулировки яркости индикаторов.

Автоматическое зарядное устройство на ATtiny24

  •  Печать 
  • E-mail

Зарядное устройство контролирует процесс зарядки аккумулятора и устанавливает его оптимальные параметры. Весь цикл делится на 4 этапа, автоматически переключаемых в зависимости от степени заряда аккумулятора. Когда аккумулятор достигнет нужного напряжения, зарядка автоматически прекратится. Три светодиода показывают состояние батареи и уровень зарядки. Зарядное устройство позволяет регулировать зарядный ток, поэтому оно защищает от повреждения аккумулятора (слишком большой ток) и экономит время (слишком низкий ток).

  • зарядка 12-ти вольтовых свинцово-кислотных аккумуляторов емкостью 10 … 100 А/ч;
  • регулировка зарядного тока в диапазоне около 1 … 10 А;
  • защита аккумулятора от перезарядки;
  • многоступенчатый процесс зарядки;
  • источник питания: трансформатор 17 В.

Сканер шины I2C на ATtiny44

  •  Печать 
  • E-mail

Этот сканер отображает адреса всех подключенных устройств к шине I2C в виде таблицы. Выделенная ячейка таблицы показывает адрес подключенного устройства. Отображаемые значения сдвинуты на один бит влево и поэтому представлены как 8-битные. Столбцы показывают старший полубайт адреса, а строки — младший. Поскольку значение уже смещено, в нижнем полубайте находятся только четные числа.

Измеритель уровня звука на ATMega328/Arduino и OLED

  •  Печать 
  • E-mail

В данной статье представлен один из самых важных инструментов в микшировании звука. Измеритель уровня звука на основе микроконтроллера Arduino/AVR. Этот проект служит для демонстрации того, как знание электроники может быть применено для создания решений в любой части повседневной жизни.

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

Светодиодный 3D куб на ATmega32

  •  Печать 
  • E-mail

Я хотел бы похвастаться одной из своих работ, а именно разработки драйвера для светодиодного куба 8x8x8, его реализации, а также изготовления самого куба и программирования в целом.

Проект был полностью сделан, протестирован и включает в себя следующие компоненты:
— Светодиод красного цвета 5 мм(512 шт);
— зуммер;
— Микроконтроллер ATMega32;
— Сдвиговый регистр 74HC595(8 шт);
— Конденсатор 10 000 мкФ, 16 В;
— Импульсный преобразователь LM2576;
— Транзистор AP20T03GH-HF-3TR(8 шт);
— Монтажный провод 64 * 0,5 м(32 м);
и других мелких деталей.

Музыкальный Звонок на ATmega32 и MMC/SD карте

  •  Печать 
  • E-mail

Простые однотональные мелодии на сегодняшний день уже не могут вызвать восторга у благодарных слушателей. За примерами далеко ходить не надо – вспомним звонки для сотовых телефонов. Еще совсем недавно они были простые, а сегодня все MP3, MIDI да WAV. Иными словами – наступила эра полифонии.

Как оказалось – AVR довольно слабенький контроллер и программно воспроизводить MIDI или MP3 ему не по зубам. А вот WAV, точнее разновидность его PCM, да с небольшой частотой дискретизации он довольно неплохо воспроизводит. Вот только размер этих WAV файлов не внушает оптимизма. Памяти никакого AVR не хватит, чтобы хранить в ней аудиоданные. Хорошо, что умные дяденьки придумали флэш-карты, которые позволяют записать на них целую кучу полезной информации. Итак начнем:

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector