Проекты на AVR | MEGA-AVR
Вот и я добрался до карточек памяти, к слову давно еще были попытки но не было времени. Сейчас же предстояло хранить данные, а где их хранить как не на карте памяти! Это ведь замечательный и ёмкий накопитель для нашего AVR!
Continue reading →Автоматическое нажатие F1 через определенное время при запуске сервера.
Continue reading →GSM-контроллер выполняет функции автоматического/ручного регулирования/оповещения. Continue reading →
В статье приводится USB программатор микроконтроллеров AVR и AT89S, совместимый с AVR910 — с журнала Радио №7, 2008г. Continue reading →
Рассмотрим несколько способов генерирования случайных чисел на микроконтроллере. Continue reading →
Надоело таскать ключи в кармане, а без смартфона жизни нет, ПОЭТОМУ представляю Вашему вниманию кодовый замок на базе Bluetooth модуля HC-05. Continue reading →
Собственно библиотека реализует протокол 1-wire с возможностью подключить каждый датчик на свой порт. Continue reading →
Сегодня рассмотрим датчики DHT11 и DHT22, а также сделаем тестовый проект в котором будем измерять температуру и влажность. Continue reading →
Библиотека работы с дисплеем TOL091G-128×32 на контроллере ssd1306 в CVAVR по SPI интерфейсу. Continue reading →
Учебный проект AC/DC Вольтметр на Attiny13 с 7-сегментным дисплеем через 74ls595. Continue reading →
С НОВЫМ ГОДОМ дорогие читатели! В новом году хочу начать со статьи в которой приведу библиотеку для работы с OLED дисплеем SSD1306 для CodeVisionAVR. Continue reading →
Таймер разработан для включения нагрузки в одно время и выключения в другое, т.е. работа нагрузки в определенных рамках времени. Continue reading →
В этом проекте мы рассмотрим как подключить Attiny85(или другой AVR) через сдвиговый регистр 74HC595(8-разрядный сдвиговый регистр с защелкой на выходе).
Continue reading →
Проекты — AVR devices
В виду нехватки в хозяйстве термометров и в виду избытка халявных термодатчиков и еще кое-валяющихся без дела деталек, решил сбацать себе этот девайс. Как известно из прошлого поста, датчик измеряет не только температуру но и влажность. Для меня практическая польза от этой фичи сомнительна, но поскольку кому-то возможно пригодится — решил задействовать и её. Кстати это пожалуй один из самых моих долгих проектов: софт писался месяц(!). Разработка затянулась главным образом из-за нехватки свободного времени и глючности кое-какого компилятора от кое-какой фирмы. Но обо всём по-порядку.
Читать далее «Термометр на SHT21»
После того как NXP прислали мне кучу всяких микросхем с интерфейсом i2c, я начал их раскуривать некоторые из них. Как известно работа с i2c устройствами сводится к тому, чтоб записать или считать значения хранящиеся в определённых регистрах микросхемы. Обычно на время изучения какой либо микрухи я городил на своей отладочной плате небольшой макет из контроллера, программатора, RS232<-> UART преобразователя и непосредственно самой микросхемы. Через компьютер посылаются команды и контроллер что-то передаёт по шине i2c или наоборот читает, отправляет стартовые и стоповые посылки итд. Примерно таким же образом у меня происходит процесс изучение микросхем с интерфейсами SPI и 1-wire. Чтоб не городить каждый раз тестовый макет было принято решение собрать универсальный отладчик с поддержкой протоколов i2c SPI и 1-wire.
Читать далее «Отладчик i2c SPI 1-wire»
Что не говори, а человек существо ленивое. Иногда так не хочется вставать с кровати чтобы отрегулировать громкость во время просмотра фильма или еще чего. Сейчас конечно есть куча всяких девайсов вроде мышек и клавиатур соединенных с компом по радиоканалу, но меня дико душит жаба при виде негуманных цен. Да и зачем покупать все это если в доме есть не нужный ик пульт и в загашнике завалялся tiny2313. Итак, будем ваять usb ик приёмник.
Читать далее «USB ИК приёмник на AVR»
Вот представьте себе вы тихо-мирно набираете текст на компьютере. Постепенно начинаете замечать, что периодически на клавиатуре начинают нажиматься случайные буквы. Сначала это не особо напрягает, но через некоторое время начинает очень злить 🙂 Вы меняете клавиатуру на другую, но проблема не исчезает. Проверяете компьютер всеми возможными антивирусами но все усилия ни к чему не приводят и проблема не решается. В конце концов переустановка операционной системы. Но и после этого ничего не изменяется. Через некоторое время вы обнаруживаете подозрительную «флешку»
Читать далее «Маленькая USB пакость»
Акселерометр — прибор измеряющий ускорение. Если говорить простым языком, то ускорение это скорость изменения скорости чего-либо. К примеру лежит на столе предмет. Пока его ни кто не двигает ускорение равно нулю. Когда предмет начнут перемещать ускорение будет расти. После того как предмет будет перемещаться с постоянной скоростью ускорение вновь станет нулевым. При уменьшении скорости движения ускорение тоже будет расти но уже с отрицательным знаком. Однако этот акселерометр фиксирует даже незначительные изменения ускорения в зависимости от его положения в пространстве несмотря на то что сам находится в покое. Такие приборы нашли широкое применение в мобильных телефонах. Именно благодаря акселерометру, в телефонах есть возможно разворачивать дисплей в зависимости от того как повернут телефон. Еще говорят, что акселерометры можно встретить в некоторых моделях жестких дисков от ноутбуков. Поскольку ноутбуки эксплуатируются в самых разных условиях, то в случае резкой встряски или падения жесткий диск своевременно паркует головку. Это позволяет избежать повреждения поверхности диска внутри винчестера. Поскольку используются акселерометры в портативной технике, то их размер не внушает оптимизма — запаять такую мелкоту с первого раза не всегда просто. Без фена я бы даже не рискнул наверное 🙂 Смотрите сами:
Читать далее «Акселерометр MMA7455L»
Понадобился мне для одного из моих проектов блок питания. Да такой чтоб с небольшими габаритами и с приличными характеристиками. Мне требовалось напряжение 5 вольт и ток не менее двух ампер. Однозначно, что блок питания должен быть импульсным. Сейчас существует великое множество различных ШИМ контроллеров на которых можно сделать такой блок питания. Я решил остановится на микросхемах от Power Integrations а точнее на Top Switch. Выбор обусловлен популярность и низкой ценой при неплохих характеристиках.
Читать далее «Блок питания на TOP222Y»
Подобные датчики очень популярны в различных сигнализациях, предназначены они как не странно для обнаружения человека, а точнее его перемещения по охраняемой зоне. Сигнализацию я делать не собираюсь, этот девайс послужит в моем будущем роботе. Буду детектировать присутствие людей при помощи него. Разумеется можно сделать на этом датчике хоть сигнализацию, хоть автовключатель света в комнате. Сердцем данного устройства является пироэлектрический датчик
Читать далее «Датчик движения на PIS209S»
Данный пост написан в связи с огромным количеством вопросов по термометру на ds18b20, о котором я писал ранее. Вопросы были в основном где купить датчик и чем его можно заменить. Если не требуется большая точность измерений температуры и использование корпуса soic с 8-ю ногами приемлемо, то можно смело лепить термометр на датчике LM75AD. Это пожалуй самый дешевый цифровой термодатчик из всех что мне удалось найти в интернете. Но несмотря на его дешевизну и распространённость, он имеет неплохие характеристики и некоторые фишки, которых нет у других термодатчиков. Ну и конечно же ему присущи некоторые недостатки. Обо всем этом пойдет рассказ ниже.
Читать далее «Термометр на LM75AD»
Программатор это пожалуй один из основных инструментов разработчика устройств на микроконтроллерах. Ведь именно он позволяет вдохнуть жизнь в микросхему. Такой инструмент должен быть качественным и отвечать современным требованиям:
- Иметь интерфейс USB, а не устаревшие COM или LPT
- Поддерживаться популярными программами
- Поддерживать прошивку самых распространённых контроллеров
- Прошивать с высокой скоростью
Конечно программатор можно и купить, но у Atmel к сожалению слишком неадекватные цены на средства программирования и отладки. В сети очень много схем различных программаторов, но как правило вышеизложенным требованиям они не удовлетворяют. Особенно это касается интерфейса подключения к компьютеру. Например у USBasp интерфейс USB реализован программно, и гарантии что он будет работать на всех компьютерах нет. Так какой же программатор собрать? Я предлагаю аналог AVRISP mkII.
Читать далее «USB программатор для AVR»
Для преобразования цифрового сигнала в аналоговый, используют устройства под названием цифро-аналоговые преобразователи. Как правило, они существуют в виде отдельных микросхем которые порой труднодоставаемы. Если к ЦАПу не предъявляются серьёзные требования, то его можно сделать самостоятельно из обычных резисторов. Называется такой ЦАП — R 2R. Своё название он получил из-за номиналов применяемых в нём резисторов с сопротивлениями R и 2*R. Сопротивления по идее могут быть любыми, но в разумных пределах разумеется. Если поставить очень большие например по несколько мегаом, то нагрузка которая подключена к выходу, внесет существенные искажения в сигнал. Напряжение начнёт проседать. Я взял резисторы с сопротивлениями 1Ком и 2Ком (просто первое что попалось под руку). Читать далее «R 2R ЦАП. Практическое применение»
Возникла однажды у меня потребность в нормальном блоке питания. В таком, чтоб мог отдавать в нагрузку ток 4-5 ампера и чтоб напряжение регулировалось. Сказано — сделано. Нашел старинный блок AT блок питания от компа, перепаял. Напряжение регулируется, да вот только сколько там вольт на выходе не понятно. А каждый раз подключать мультиметр мне лень. Для этого спаял вот это чудо:
Читать далее «Вольтметр на AVR»
Когда перед разработчиком какого либо устройства, встает вопрос «Как получить нужное напряжение?», то обычно ответ прост — линейный стабилизатор. Их несомненный плюс это маленькая стоимость и минимальная обвязка. Но кроме этих достоинств, у них есть недостаток — сильный нагрев. Очень много драгоценной энергии, линейные стабилизаторы превращают в тепло. Поэтому использование таких стабилизаторов, в устройствах с батарейным питанием не желательно. Более экономичными являются DC-DC преобразователи. О них то и пойдёт речь.
Читать далее «DC-DC преобразователь на MC34063»
Иногда, программа зашитая в микроконтроллера работает совсем не так как надо её создателю. Тогда наступает стадия отладки (Отлаживать — избавлять программу от лажи 🙂 прим. автора) Кто-то использует для отладки USART, кто-то цепляет на свободную ногу мк светодиод, кто-то записывает отладочные данные в EEPROM итд. Одним словом вариантов тут масса. Но самым удобным способом отладки на мой взгляд, является отладка с использованием специальных устройств называемых отладчиками. Отладчик позволят построчно исполнять программу зашитую в микроконтроллер, ставить точки останова. В процессе отладки программисту доступны все регистры микроконтроллера. Так же с помощью него можно прошить микроконтроллер и изменить фьюзы.
Представляю вашему вниманию отладчик JTAG ICE:
Читать далее «Отладчик JTAG ICE»
Довольно долгое время у меня в заначке валялся старый, уже не выпускающийся контроллер AT90S2313. И в один прекрасный день, когда в очередной раз чайник на кухне убежал, я нашел применение этому контроллеру. Встречайте: Кухонный таймер!
Читать далее «Таймер на AT90S2313»
Несмотря на то что схем термометров в сети гуляет полно, я всё таки решил изобрести велосипед и сделать термометр своей мечты. 🙂
Читать далее «Термометр на DS18B20»
Проекты на AVR | MEGA-AVR
Хелпер в трёх частях по программе Proteus. Continue reading →
BMP085 — датчик абсолютного атмосферного давления. Область применения: измерение давления для барометров, метеостанций и приборов. Continue reading →
Универсальный терморегулятор Гелиос+ на 10 каналов с широкими возможностями и гибкими настройками. Continue reading →
Страниц: 1 2 3 4 5 6Бывают случаи когда портов AVR не хватает, а тратить деньги на более мощный мк не хочется — тут нам поможет микросхема 74HC165. Continue reading →
В этом проекте я реализовал управление RGB-лентой — цвета плавно меняются. Continue reading →
У меня дома много этих тинек валяется (лежит) поетому почему бы и не сделать вольтметр на ней). Заоодно испытать макетную плату которую я недавно приобрёл). Также ставилось целью испытать как ведёт себя измерительная часть если её нога будет ( в какойто момент времени) становится выходом для питания точки 7-сегментнного индикатора. Continue reading →
Дело было вечером — делать было нечего, ай думаю забацаю ШИМ который будет управляться сигналом с АЦП. Continue reading →
Поговорим о том как вывести float на дисплеи WINSTAR в CVAVR. Continue reading →
Прибор МРП3-3/1 предназначен для измерения, изучения или сбора небольшой статистики провалов напряжения, временных перенапряжения, а также отклонений напряжения. Continue reading →
В некоторых моделях микроконтроллеров таймер может работать в асинхронном режиме. Это даёт возможность нам построить часы без каких либо внешних спец-микросхем. Continue reading →
Нашёл у себя на компьютере экспериментальный проектик на часах DS1307. Continue reading →
Основное назначение этого таймера, для которого он разрабатывался, – периодическое включение и отключение водяного насоса скважины, но без всяких изменений он может использоваться где душе угодно! Continue reading →
Данная сенсорная кнопка может найти много применений, с её помощью можно коммутировать нагрузку постоянного тока, а с небольшим дополнением — нагрузку переменного тока. У меня данная кнопка в составе с небольшим дополнением использовалась для включения/выключения света в спальне. Своей простотой конструкции и лёгкостью повторяемости она может стать частью какого-то более серьёзного устройства. Continue reading →
Проекты на микроконтроллерах AVR — Аналогово-Цифровой Преобразователь (АЦП) и Bascom-AVR
Аналогово-Цифровой Преобразователь (АЦП)
Микроконтроллер — цифровой прибор, который понимает и работает только с цифровыми сигналами (нулями и единицами). Но вокруг нас все сигналы представлены в аналоговой форме — освещение, температура и давление, влажность, звуки — все это непрерывно меняющиеся физические величины.
Для того чтобы обрабатывать аналоговые сигналы, в большинство микроконтроллеров AVR встроен АЦП (ADC–analog digital converter) – аналого-цифровой преобразователь.
Аналогово-Цифровой Преобразователь служит для преобразования аналогового сигнала на входе в цифровую форму, понятную для МК. Практически во всех современных микроконтроллерах от AVR имеется 10 битный АЦП, позволяющий оцифровывать аналоговый сигнал с дискретностью 1024 значений. Этого достаточно чтобы, например, делать замеры напряжений (в разумных пределах), снимать показания с различных датчиков, таких как фотодиод и термопара, делать анализаторы спектра и многое другое.
Примерная работа преобразования приведена на рисунке ниже; через равные промежутки времени (ось X) происходит считывание значения напряжения на входе АЦП (ось Y). Так как АЦП имеет ограниченную разрешающую способность, появляется дискретность (дробление) значений.
Величина по оХ называется частотой дискретизации, чем больше частота тем точнее может быть полученная информация о сигнале. АЦП в мк AVR может работать на частотах дискретизации от 50 до 200 кГц, это значит что микроконтроллер может до 200-х раз в секунду считывать уровень напряжения на входе АЦП.
Для того чтобы начать работать с преобразователем его сперва необходимо сконфигурировать. В Bascom-AVR настройка АЦП сводится всего к одной строчке:
Config Adc = SINGLE , Prescaler = 128 , Reference = Avcc
здесь Adc — режим считывания значения: Single — единичное считывание, также может быть Free (режим постоянной работы преобразователя)
Prescaler = 128 — выбираем частоту дискретизации путем деления частоты кварца на определенное число (также может быть 2,4,8,16,32,64 или Auto). Если выбрать Auto, то компилятор сам выберет подходящую частоту работы АЦП
Reference – выбор источника опорного напряжения (ИОН), у этого параметра может быть несколько значений:
Aref – внешний источник, Avcc – напряжение питания схемы, Internal – внутренний стабилизатор на 2,56 вольт (или в некоторых микроконтроллерах, таких как ATmega48P — 1,1 вольт)
Для того чтобы посмотреть работу АЦП можно собрать вот такую простую схему на микроконтроллере ATmega8 (или на любом другом камне имеющем на борту цифро-аналоговый преобразователь).
В качестве опорного напряжения для АЦП будет использоваться встроенный стабилизатор, у Atmega8 этот стабилизатор выдает 2,56 вольт. А для того чтобы этот стабилизатор заработал нужно подать напряжение на ножку AVCC. Чтобы уменьшить шумы по питанию и увеличить качество работы стабилизатора, принято подавать питание на эту ножку через дроссель (L1) номиналом 10÷100 мкГн, а так же соединять с землей через керамический конденсатор 100 нанофарад (С1). Но для простого тестирования, конечно можно убрать эти элементы и соединить ножку AVCC напрямую с VCC.
Вход АЦП (ADC0) соединим с переменным резистором (потенциометр), таким образом получится делитель напряжения, который позволит менять напряжение на этой ножке.
тестовый исходник работы с АЦП в Bascom-AVR
$regfile = «m8def.dat» ‘микроконтроллер ATmega8
$crystal = 1000000 ‘частота работы 1МГц
$baud = 1200 ‘скорость передачи 1200 бод
‘конфигурируем АЦП
Config Adc = Single , Prescaler = 128 , Reference = Internal
Dim R As Word ‘переменная R в которую будем записывать показания с АЦП
Start Adc ‘запускаем пребразователь
‘этой командой на преобразователь поступает питание
‘работу преобразователя также можно остановить в любой момент
‘для этого пишем команду:
‘Stop Adc
Do ‘бесконечный цикл
R = Getadc(0) ‘считываем нулевой канал АЦП и записываем в переменную
Print R ‘печатаем значение в терминал
Waitms 500 ‘ждем полсекунды и повторяем
Loop
End
Изменяя напряжение на ножке ADC0 с помощью переменного резистора, мы увидим как меняется значение считанное с АЦП. На рисунке ниже показан скрин терминала с данными, которые получил с АЦП
При вращении ручки потенциометра можно заметить одну странность: если плавно увеличивать напряжение на входе АЦП, то в определенный момент показания перестанут расти, а значение переменной остановится на значении 1023. На самом деле это означает, что АЦП достиг максимального предела измерения. Если в этот момент измерить напряжение на входе АЦП то мы получим значение примерно 2,56 вольт, что равняется выбранному значению опорного напряжения. Отсюда можно сделать вывод, что АЦП измеряет напряжение на входе только в пределах от нуля до значения ИОН.
Так как изменение значения с АЦП меняются пропорционально напряжению на входе, для удобства можно пользоваться вот таким рисунком.
К примеру, получив значение c АЦП 599 можно примерно прикинуть сколько соответствует этому вольт на входе. А чтобы увеличить диапазон измеряемого напряжения, нужно использовать резисторный делитель.
Делаем меню для своего проекта на микроконтроллере — Проекты — AVR project.ru
Когда любой проект растет в функционале, и из простого показометра хочется сделать нечто большее, нужно придумать, как организовать удобную работу с устройством. Хорошо если в проекте задействован дисплей (графический, алфавитно-цифровой, да хоть семисегментный) тогда можно создать свое меню и рулить настройками оттуда. Вот и попробуем организовать несложное древовидное меню из небольшого списка, с возможностью выбора любого пункта. Для начала необходимо определится с организацией и количеством пунктов меню и нарисовать структурную схему. Например, сделаем меню из 4-х пунктов, в каждом из которых по 3 подпункта, такую вот:
Для микроконтроллера каждый пункт это всего лишь переменная (А), которая меняется при нажатии кнопок и в зависимости от значения которой, на дисплей выводится информация или выполняется то или иное действие. Кнопок, кстати всего 4: вверх (up), вниз (down), выбор (ok) и выход (esc). Сейчас подробно рассмотрим, что происходит с переменной при нажатии этих кнопок.
При старте программы (или при входе в меню), переменной А присваивается значение 10, это соответствует первому пункту меню. При нажатии кнопки «Вниз», к переменной прибавляется 10, и она становится равна 20, это соответствует второму пункту меню. Если еще раз нажать на эту кнопку, переменная станет равна 30, что будет соответствовать третьему пункту меню и так далее. Если нажать кнопку «Вверх» переменная будет уменьшаться на 10, до тех пор, пока не станет равна 10. Таким образом, организована навигация по главному списку меню.
Для примера остановимся на первом пункте, и войдем в подменю первого пункта нажав кнопку «Вход». При этом к переменной прибавляется единичка и переменная становится равна 11. Это соответствует первому подпункту первого пункта меню %) Теперь если нажать на кнопку «Вниз» переменная будет увеличиваться на 1, пока не станет равна 13 (всего у нас 3 подпункта меню). Если нажимать на кнопку «Вверх» переменная будет уменьшаться на 1, пока не достигнет значения 11. Вот и организовали навигацию по пунктам подменю. Теперь, находясь в подменю, к примеру на пункте 1.1, если нажать кнопку «Ввод» переменная умножается на 10 и становится равна 110.
При таком значении переменной вызывается подпрограмма 1.1, в которой совершаем какие нибудь действия. Выход организован проверкой значения переменной и присвоением переменной определенного значения.
Если все вышесказанное кажется бредом не совсем понятно, посмотри на рисунок ниже. Тут я на примере двух пунктов меню показал, как изменяется значение переменной и какие действия с ней происходят когда мы нажимаем на кнопки:
Под каждую кнопку задействовано свое внешнее прерывание. Обработка нажатия кнопок у меня выглядит следующим образом:
Код обработчиков внешнийх прерываний
Ok: ‘обработка нажатия кнопки «OK»If A = 11 Or A = 12 Or A = 13 Then
A = A * 10
End If
If A = 21 Or A = 22 Or A = 23 Then
A = A * 10
End If
If A = 31 Or A = 32 Or A = 33 Then
A = A * 10
End If
If A = 41 Or A = 42 Or A = 43 Then
A = A * 10
End If
If A = 10 Or A = 20 Or A = 30 Or A = 40 Then
Incr A
End If
Return
Esc: ‘обработка нажатия кнопки «ESC»
If A = 11 Or A = 12 Or A = 13 Then
A = 10
End If
If A = 21 Or A = 22 Or A = 23 Then
A = 20
End If
If A = 31 Or A = 32 Or A = 33 Then
A = 30
End If
If A = 41 Or A = 42 Or A = 43 Then
A = 40
End If
If A > 100 Then
A = A / 10
End If
Return
Down: ‘обработка нажатия кнопки «DOWN»
If A = 10 Or A = 20 Or A = 30 Then
A = A + 10
End If
If A = 11 Or A = 12 Then
Incr A
End If
If A = 21 Or A = 22 Then
Incr A
End If
If A = 31 Or A = 32 Then
Incr A
End If
If A = 41 Or A = 42 Then
Incr A
End If
Return
Up: ‘обработка нажатия кнопки «UP»
If A = 20 Or A = 30 Or A = 40 Then
A = A — 10
End If
If A = 12 Or A = 13 Then
Decr A
End If
If A = 22 Or A = 23 Then
Decr A
End If
If A = 32 Or A = 33 Then
Decr A
End If
If A = 42 Or A = 43 Then
Decr A
End If
Return
Такая логика дает во-первых жесткую привязку выполняемых действий при нажатии кнопки, в зависимости от предыдущего значения переменной. Что гарантирует точное выполнение кода. А во-вторых, легко добавить или убрать необходимые пункты и подпункты, подстраивая меню под свой проект.
В главном цикле программы, в зависимости от значения переменной, будет происходить отрисовка меню и выполняемых операций. Тут все зависит от фантазии и применяемого дисплея.
В своем примере я применил алфавитно-цифровой 4-х строчный дисплей и микроконтроллер Atmega64. Почему такой жирный камень? Просто в нем есть необходимое количество внешних прерываний, и с ним нормально работает протеус. А вообще программа получилась размером чуть больше 4 кб, поэтому можно использовать контроллеры со значительно меньшей флэш памятью. А если сделать принудительный опрос кнопок, то не обязательно будет использовать микроконтроллер с большим числом внешних прерываний. В общем, на вкус и цвет… Схема подключения дисплея и кнопок ниже:
Итак, при старте программы, переменная имеет значение 10. Это значение переменной соответствует первому пункту меню, нарисуем напротив этого пункта курсор. Например так:
Код отрисовки выделения первого пункта меню у меня такой:
Подпрограмма вывода на дисплей выделения курсором первого пункта меню
10: ‘подпрограмма отрисовки на дисплее выделения первого пунктаLcd «label 1 <»
‘в первой строке нарисовали курсор
Lowerline
‘пишем на второй строке
Lcd «label 2»
Thirdline
‘пишем на третьей строке
Lcd «label 3»
Fourthline
‘пишем на четвертой строке
Lcd «label 4»
Return ‘возвращаемся в основной цикл программы
Теперь жмем на кнопку «Down», переменная увеличивается, и нужно нарисовать движение курсора вниз: остановимся например на третьем пункте, при этом значение переменной будет А=30:
Подпрограмма вывода на дисплей выделения курсором третьего пункта меню
30: ‘подпрограмма при А=30Lcd «label 1»
Lowerline
Lcd «label 2»
Thirdline
Lcd «label 3 <»
‘курсор напротив третьего пункта
Fourthline
Lcd «label 4»
Return ‘возвращаемся в основной цикл программы
Вот что будет на дисплее:
При нажатии на кнопку «OK» переменная станет равна 31. На дисплее отобразится вход в подменю. В шапке отобразим родителя (пункт откуда пришли):
Подпрограмма вывода на дисплей выделения курсором третьего пункта меню
31: ‘подпрограмма при А=31Lcd » label 3″
Lowerline
Lcd «label 3.1 <«
Thirdline
Lcd «label 3.2»
Fourthline
Lcd «label 3.3»
Return ‘возвращаемся в основной цикл программы
При повторном нажатии кнопки «OK» переменная станет равна 310, и произойдет выполнение подпрограммы, какой угодно, например просто выведем надпись «Run program 3.1» на дисплей:
Lcd «RUN PROGRAM 3.1» ‘выводим надпись
Return ‘возвращаемся в основной цикл программы
При нажатии на кнопку «ESC» переменная изменится и произойдет выход из этой подпрограммы. Ну а дальше принцип думаю ясен. Как видишь, организовать свое меню, не такая уж непосильная задача как может показаться. Удачи!
Ниже можно скачать архив с моделью в Proteus, исходник и откомпилированный файл:
СКАЧАТЬ
UPD: если нет протеуса, то для просмотра работы меню сгодится симулятор самого bascom-avr, как его заюзать писалось ранее
Минитерминал V.3.0 — Проекты — AVR project.ru
Тема такого устройства как минитерминал, поднималась на этом сайте уже пару раз: первая версия, вторая версия. И за время использования второй версии, устройство показало себя отличным помощником при отладке во многих проектах. Единственное чего иногда не хватало, это возможности отправлять в отлаживаемое устройство своих команд. Поэтому разобравшись с работой большого цветного дисплея на контроллере ILI9325, решил сделать новую версию минитерминала на нём. К тому-же на этом дисплее уже есть сенсорная панель, благодаря которой можно организовать все управление, а также набор текста, не прибегая к подключению внешней клавиатуры.
У меня уже лежала распаянная под дисплей плата с микроконтроллером ATMega128a, ее я и использовал в качестве основы для устройства. Так как дисплей соединен с контроллером напрямую, схема предусматривает питание не более 3,3 вольта, если выше — есть вероятность что дисплей выйдет из строя. Сначала я хотел применить в качестве источника питания связку из двух батареек R20, у них очень большая емкость и они долго держат нужное напряжение. Но когда стал примеряться, выходило слишком громоздко. Поэтому был откопан, купленный несколько лет назад, модуль преобразователя на LM2577. А источником послужила Li-Ion батарея емкостью 2500мА/ч. Получилась очень годная связка, способная отдавать стабильные 3,3 вольта во всём рабочем диапазоне напряжений аккумулятора. Для подзарядки использован модуль на микросхеме TP4056. Его я давно применяю и он хорошо зарекомендовал себя, плюс очень низкая цена такого решения.
Чтобы иметь возможность подключать минитерминал к пятивольтовым устройствам не боясь спалить дисплей, порты UART развязаны через модуль согласования уровней. Я применил готовый, как раз имелся в наличии на 4 канала. Его можно собрать самому, схема элементарная. Кстати, почему нужно 4 канала? Дело в том что у ATMega128 целых два аппаратных UART интерфейса, и я подумал что неплохо бы использовать оба и сделать двухканальный терминал.
На разъемы, помимо Rx / Tx выведено питание, на случай если нужно будет запитать отлаживаемое устройство напряжением 3,3 вольта. В разрыв цепи запаян диод Шоттки, если вдруг по ошибке от испытуемого устройства в схему пойдет напряжение выше 3,3 вольт.
На плату также добавлен пьезодинамик для озвучивания действий и двухцветные светодиоды с ОК (общим катодом) для индикации работы. У меня это все напаяно поверх, но в конце можно будет скачать доработанную печатную плату.
В конечном виде схема выглядит так
Вариант корпуса для устройства, напечатанный на 3d принтере. Все элементы схемы и крышка корпуса будут фиксироваться на термоклей. Это самый простой вариант, но не самый технологичный для сборки/разборки. Поэтому надо бы доработать и добавить крепежные узлы.
А пока крепится все так: сначала фиксируется дисплей, затем кнопка включения и модуль зарядки, потом все остальное.
При программировании микроконтроллера необходимо запрограммировать фьюзы на работу от внешнего высокочастотного кварца, отключить совместимость с ATMega103 и отключить JTAG
В Khazama-AVR фьюзы выглядят так
После сборки и прошивки микроконтроллера особых настроек не требуется, нужно только с помощью подстроечного резистора R4 подогнать отображаемое на экране напряжение к реальному значению на аккумуляторе. Для этого рекомендую сперва выставить подстроечник в среднее положение и только после этого подавать питание, чтобы после включения на вход АЦП шло менее 3,3 вольта (опять же для того чтобы обезопасить дисплей).
Из настроек терминал имеет изменяемую частоту работы UART интерфейса, формат отображения принятых данных (ASCII и HEX) и их вид (DISP и LAST).
Чтобы было понятно, остановлюсь на последнем параметре: в обычном режиме DISP (Displacement) идет отображение всех последних принятых данных, и при заполнении экрана идет смещение, таким образом на экране помещается 22 строки. Очистка и перерисовка, при каждом новом приеме данных, занимает относительно много время и чтобы увеличить возможную скорость приема, введен режим LAST. В этом режиме на экране выводится только последний принятый пакет данных. В общем, что получили то и вывели.
При нажатии на кнопку CLEAR, происходит очистка дисплея. INFO — информация о версии прошивки и контактная информация. Кнопка STOP, как не трудно догадаться, останавливает прием данных (полезно когда данные идут сплошным потоком и нужно остановиться и разглядеть).
При первом включении скорость работы UART по умолчанию стоит 1200 бод. Её можно поменять на значения 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бод. Скорость сохраняется в энергонезависимой памяти и при следующем включении терминал будет работать на последней выбранной скорости.
Для набора текста использована клавиатура описанная чуть ранее, для того чтобы открыть клавиатуру нужно нажать на прямоугольник внизу экрана, в нем же будет отображаться последний набранный текст. Клавиатура позволяет напечатать любой текст в латинской раскладке, а также большинство дополнительных символов
Как я уже писал, в схеме я предусмотрел одновременную работу двух UART интерфейсов. Но в прошивке пока реализован только один канал — на аппаратном UART0. Второй — UART1, оставил как задел на будущее. Поэтому набранный текст улетает в Tx0.
Было упомянуто, что в режиме DISP на экран помещается 22 строки принятых данных, ограничение по длине принимаемого и отправляемого пакета составляет 30 символов. А если перевести отображение данных в HEX формат, тогда ограничение по длине пакета составит 10 символов. Ограничение обусловлено оставшимся на экране местом. Для простых задач, которые возложены на это устройство, этого должно хватить.
Ну и для примера достал не задействованную плату с распаянным GSM-модулем SIM900D, которая давно уже у меня лежит. Два запроса о версии прошивки модуля, первый в ASCII формате, второй с отображением данных в HEX формате:
И еще немного общения с этим модулем, на другой скорости:
В общем, девайс получился удобным и очень полезным. Рекомендую к повторению. Если что-то упустил оставляйте свои вопросы в комментариях.
Печатная плата (DipTrace)
Схема (DipTrace)
Исходники и прошивка
Модель корпуса
Ссылки на детали, использованные в проекте:
Дисплей
Преобразователь напряжения
Модуль конвертера уровней
Модуль заряда Li-Ion батареи
Микроконтроллер
AVR Идеи проектов для студентов-электронщиков
В настоящее время студенты, изучающие электронику и средства связи, пытаются развивать свои навыки и знания, разрабатывая проекты, особенно в области электроники и связи. Проекты ECE в основном включают проекты RFID, встроенных систем, Android, GSM, GPS и AVR. Итак, здесь мы предлагаем несколько проектов AVR для студентов, изучающих электронику и средства связи. Эти проекты очень полезны для студентов бакалавриата технических наук из различных областей, таких как EIE (Электроника и приборостроение), ECE (Электроника и коммуникационная техника) и EEE (Электротехника и электроника).
Микроконтроллер AVRМикроконтроллер AVR был разработан в 1996 году компанией Atmel, а архитектура микроконтроллера AVR была разработана Вегардом Волланом и Альфом Эгилем Богеном. Название AVR произошло от имени его разработчиков. AVR означает микроконтроллер Alf-Egil-Bogen-Vegard-Wollan-RISC, также известный как Advanced Virtual RISC Microcontroller. Первый микроконтроллер AT90S8515 был основан на архитектуре AVR, но первым микроконтроллером, появившимся на рынке, стал AT90S1200 в 1997 году.Скорость микроконтроллера AVR высока по сравнению с микроконтроллерами PIC и 8051.
Эти типы микроконтроллеров доступны в трех категориях: Tiny AVR, Mega AVR и Xmega AVR.
Типы микроконтроллеров AVRTinyAVR
Миниатюрный микроконтроллер AVR состоит из 6-32 контактов, а диапазон флеш-памяти составляет от 0,5 Кб до 8 Кб. Особенностью AVR является его небольшой размер, меньший объем памяти и он подходит только для более простых приложений.
MegaAVR
Этот тип микроконтроллера состоит из 28-100 контактов, а объем флэш-памяти составляет от 4 до 256 КБ. Эти типы микроконтроллеров подходят для умеренных и сложных приложений.
XmegaAVR
Микроконтроллер XmegaAVR состоит из 44-100 контактов, а объем флэш-памяти составляет от 16 до 384 КБ. Эти типы микроконтроллеров коммерчески используются для сложных приложений, требующих высокой скорости и большой памяти программ.
Лучшие 60+ проектов AVR
Эти типы проектов микроконтроллеров AVR могут стать хорошим справочником для студентов, изучающих электронику и инженеры связи. Ниже представлен список проектов микроконтроллеров AVR.
- Система контроля и мониторинга теплиц на базе микроконтроллера AVR
- Управление электрическими устройствами на базе микроконтроллера AVR с помощью мобильного телефона
- Управление автоматическим освещением помещения с помощью счетчика посетителей на базе микроконтроллера ATmega16
- Система контроля парковки на базе микроконтроллера AVR
- Детектор газа LPG На основе микроконтроллера AVR
- Мобильный управляемый робот на базе микроконтроллера AVR ATmega32
- Автомобиль дистанционного наблюдения на базе AVRATmega32 с камерой
- Система домашней безопасности на основе микроконтроллера AVR с использованием клавиатуры, датчика LPG, ИК-датчика или системы безопасности
- Цифровая метеостанция на базе микроконтроллера AVR или цифровая метеостанция Температура Влажный свет
- Робот для теплицы на базе микроконтроллера AVR
Проект на базе AT-mega от Edgefx Technologies
- AVR Счетчик людей на базе ATmega16 в двунаправленном режиме
- AVR Micro Регистратор данных на базе контроллера, включая датчик влажности, температуры и LDR
- Машина для электронного голосования на базе микроконтроллера AVR
- Система дверного замка на базе микроконтроллера AVR с использованием пароля
- Детектор пароля на основе микроконтроллера AVR и счетчик людей
- Система слежения за солнцем на микроконтроллере AVR ATmega16
- Контроль и мониторинг света и температуры на основе микроконтроллера AVR
- Система безопасности на основе микроконтроллера AVR с использованием технологии RFID
- BASCOM Компилятор микроконтроллера AVR
- Программатор микроконтроллера AVR на основе параллельного порта Программатор ISP
- Мигающий светодиод AVR на основе микроконтроллера
- Температура на микроконтроллере AVR DS1820 Индикатор
- Контроллер температуры DS1820 на базе микроконтроллера AVR
- Микроконтроллер AVR на основе матричного скроллера 8 × 8 светодиодный дисплей
- Умный дом на базе микроконтроллера AVR с использованием Bluetooth
- Мульти-шаблон Ходовой свет на основе микроконтроллера AVR
- Локатор системы глобального позиционирования на основе микроконтроллера AVR
- Проигрыватель WAV на базе микроконтроллера AVR с использованием карты MMC
- Вентилятор с регулируемой температурой на основе микроконтроллера AVR
- Индикатор температуры на основе микроконтроллера AVR с использованием SMT160
- Цифровая мелодия на основе AVR Плеер
- Управление шаговым двигателем на базе микроконтроллера Atmega16
- Простой калькулятор на основе микроконтроллера AVR
- Взаимодействие LM35 с микроконтроллером Atmega16
- Измерение отрицательной температуры на основе микроконтроллера AVR с использованием LM35
- Управление скоростью двигателя постоянного тока на основе микроконтроллера AVR с использованием широтно-импульсной модуляции
- Диктофон на базе микроконтроллера AVR с использованием ISD4004
- Термометр на базе микроконтроллера AVR с часами
- На основе микроконтроллера AVR Подключение двух микроконтроллеров через последовательный порт
- Научный калькулятор B На основе микроконтроллера AVR
- Контроллер светофора на базе микроконтроллера AVR
- Code Vision Компилятор AVR C
- Интерфейсная клавиатура PS2 на базе микроконтроллера AVR
- Микроконтроллер AVR на основе таймера Быстрая широтно-импульсная модуляция
- Часы на базе микроконтроллера AVR с использованием микроконтроллера DS1307
- Atmega8 Цифровой диммер на основе
- Измеритель индуктивности и емкости на базе микроконтроллера Atmega8
- Микроконтроллер Atmega16 Запись и чтение SD-карты
- Ультразвуковой дальномер на базе ATmega8515
- Таймеры микроконтроллера AVR Создание сигнала микроконтроллера
- Сопряжение GPS с ATmega8 Контроллер на основе устройства с использованием SMS
- Система домашней безопасности на основе GSM с использованием микроконтроллера AVR
- Микроконтроллер AVR с таймером Режим фазовой коррекции с широтно-импульсной модуляцией
- Встроенный аналоговый микроконтроллер AVR Компаратор
- Контроллер устройства Отправка и получение SMS с использованием микроконтроллера AVR
- Машина электронного голосования на базе EEPROM микроконтроллера AVR
- Интерфейс ЖК-дисплея на основе микроконтроллера AVR в 4-битном режиме
- Написание простого загрузчика на языке C для микроконтроллера AVR
- Взаимодействие последовательного ADC0831 с микроконтроллером AVR
- Использование двухпроводного интерфейса или I2C в микроконтроллере AVR
- Взаимодействие серводвигателя с микроконтроллером AVR
- На основе микроконтроллера AVR разного размера с последовательной связью USART
- Интерфейс на базе микроконтроллера AVR
- Внутренний АЦП на базе микроконтроллера AVR с использованием прерываний
- Взаимодействие ПК с микроконтроллером AVR с использованием протокола RS232
- Отображение текста на основе микроконтроллера ATmega16 на ЖК-дисплее 16 × 2
- Отображение на основе микроконтроллера ATmega16 пользовательских символов на ЖК-дисплее Дисплей
- Микроконтроллер AVR на основе встроенного аналогового компаратора
В качестве примера приведенного выше списка мы кратко упомянули здесь последний проект AVR для открывания ворот гаража с использованием микроконтроллера ATmega.
Блок-схема системы открывания гаражных воротНа рисунке показана блок-схема открывания гаражных ворот, где микроконтроллер ATmega действует как центральный контроллер, который принимает входные команды от пользователя для управления двигателем для открытия или закрытия двери. Здесь модем Bluetooth принимает входные сигналы пользователя и, соответственно, отправляет их на микроконтроллер.
Когда пользователь вводит правильный пароль в приложении Android через графический интерфейс пользователя (GUI) на любом смартфоне, модем Bluetooth, подключенный к цепи, получает его.Эти данные далее отправляются в микроконтроллер, где пароль, введенный пользователем, сравнивается с сохраненным в нем паролем. Когда этот пароль совпадает с паролем, микроконтроллер ATmega посылает управляющие сигналы на реле для работы двигателя, в противном случае он подает звуковой сигнал. На данном рисунке двигатель заменен ламповой нагрузкой для индикации.
Приведенный выше список проектов AVR предназначен для студентов, изучающих электронику и средства связи. Обратите внимание, что эти проекты предназначены для студентов, энтузиастов и любителей.Если у вас есть какие-либо сомнения относительно этих проектных идей, не стесняйтесь комментировать и спрашивать нас. Кроме того, просмотрите представленные комментарии, чтобы лучше понять темы проекта ЕЭК. Для получения более подробной информации о проектах в области электроники и связи, пожалуйста, посетите наш официальный сайт Edgefx Kits & solutions.
Фото:
.Проект цифрового ввода-выводана AVR® Xplained 328PB
Переключить навигацию
- Инструменты разработки
- Какие инструменты мне нужны?
- Программные средства
- Начни здесь
- MPLAB® X IDE
- Начни здесь
- Установка
- Введение в среду разработки MPLAB X
- Переход на MPLAB X IDE
- Переход с MPLAB IDE v8
- Переход с Atmel Studio
- Конфигурация
- Плагины
- Пользовательский интерфейс
- Проектов
- файлов
- Редактор
- Редактор
- Интерфейс и ярлыки
- Основные задачи
- Внешний вид
- Динамическая обратная связь
- Навигация
- Поиск, замена и рефакторинг
- Инструменты повышения производительности
- Инструменты повышения производительности
- Автоматическое форматирование кода
- Список задач
- Сравнение файлов (разница)
- Создать документацию
- Управление окнами
- Сочетания клавиш
- Отладка
- Контроль версий
- Автоматизация
- Язык управления стимулами (SCL)
- Отладчик командной строки (MDB)
- Создание сценариев IDE с помощью Groovy
- Поиск и устранение неисправностей
- Работа вне MPLAB X IDE
- Прочие ресурсы
- MPLAB Xpress
- MPLAB IPE
- Программирование на C
- Компиляторы MPLAB® XC
- Начни здесь
- Компилятор MPLAB® XC8
- Компилятор MPLAB XC16
- Компилятор MPLAB XC32
- Компилятор MPLAB XC32 ++ Охват кода
- MPLAB
- Компилятор IAR C / C ++
- Конфигуратор кода MPLAB (MCC)
- Гармония MPLAB v2
- Гармония MPLAB v3
- среда разработки Atmel® Studio
- Atmel СТАРТ (ASF4)
- Advanced Software Framework v3 (ASF3)
- Начни здесь
- ASF3 Учебники
- ASF Audio Sine Tone Учебное пособие
- Интерфейс ЖК-дисплея с SAM L22 MCU Учебное пособие
- Блоки устройств MPLAB® для Simulink®
- Утилиты Инструменты проектирования
- FPGA
- Аналоговый симулятор MPLAB® Mindi ™
- Аппаратные средства
- Начни здесь
- Сравнение аппаратных средств
- Средства отладки и память устройства
- Исполнительный отладчик
- Демо-платы и стартовые наборы
- Внутрисхемный эмулятор MPLAB® REAL ICE ™
- Эмулятор SAM-ICE JTAG Внутрисхемный эмулятор
- Atmel® ICE
- Power Debugger
- Внутрисхемный отладчик MPLAB® ICD 3
- Внутрисхемный отладчик MPLAB® ICD 4 Внутрисхемный отладчик
- PICkit ™ 3
- Внутрисхемный отладчик MPLAB® PICkit ™ 4
- MPLAB® Snap
- MPLAB PM3 Универсальный программатор устройств
- Принадлежности
- Заголовки эмуляции и пакеты расширения эмуляции
- Пакеты расширения процессора и отладочные заголовки
- Начни здесь Обзор
- PEP и отладочных заголовков
- Требуемый список заголовков отладки
- Таблица обязательных отладочных заголовков
- AC162050, AC162058
- AC162052, AC162055, AC162056, AC162057
- AC162053, AC162054
- AC162059, AC162070, AC162096
- AC162060
- AC162061
- AC162066
- AC162083
- AC244023, AC244024
- AC244028
- AC244045
- AC244051, AC244052, AC244061
- AC244062
- Необязательный список заголовков отладки
- Дополнительный список заголовков отладки — устройства PIC12 / 16
- Дополнительный список заголовков отладки — устройства PIC18
- Дополнительный список заголовков отладки — Устройства PIC24
- Целевые следы заголовка отладки
- Отладочные подключения заголовков
- SEGGER J-Link Решения для сетевых инструментов
- K2L
- Рекомендации по проектированию средств разработки
- Ограничения отладки — микроконтроллеры PIC
- Инженерно-технические примечания (ETN) [[li]] Встраиваемые платформы chipKIT ™
- Проектов
- Начни здесь
- Преобразование мощности
- AN2039 Четырехканальный силовой секвенсор PIC16F1XXX
- 8-битные микроконтроллеры PIC®
- 8-битные микроконтроллеры AVR®
- 16-битные микроконтроллеры PIC®
- 32-битные микроконтроллеры SAM
- 32-разрядные микропроцессоры SAM
- Разработка приложений SAM MPU с помощью MPLAB X IDE Примеры пакетов программного обеспечения
- SAM MPU
- Запланировано дополнительное содержание…
- Продукты
- 8-битные микроконтроллеры PIC
- 8-битные микроконтроллеры AVR
- Начни здесь Структура 8-битного микроконтроллера AVR®
- 8-битные периферийные устройства AVR®
- Осциллятор
- USART
- прерываний
- аналоговый компаратор и опорное напряжение
- Таймер / счетчики
- Внутренний датчик температуры
- Работа с низким энергопотреблением
- Сброс источников
- Начало работы с микроконтроллерами AVR®
AVR Projects — Juraś-Projects
Это мой первый AVR-проект на этой странице. DiSEqC-Tester позволяет тестировать DiSEqC-переключатели, использующие протоколы 1.0 или 1.1. (Коммутаторы DiSEqC с протоколом 2.0 и 2.1 имеют обратную совместимость с 1.0 и 1.1 соответственно и также могут быть протестированы). Устройство каждую секунду отправляет DiSEqC-сообщение, которое переводит переключатель в режим DiSEqC. Четыре светодиода предназначены для отображения включенного / выключенного состояния портов DiSEqC-коммутатора.
- Особенности:
- Источник питания — 12 В постоянного тока, макс 200 мА
- Количество портов для мониторинга — 4 (с использованием внутренних светодиодов)
- Поддержка протокола DiSEqC 1.0, DiSEqC 1.1 (запись групповых команд порта)
- Два уровня тона 22 кГц — 650 мВ, 300 мВ
- Частота переключения — 1 Гц или 2 Гц (в зависимости от версии прошивки)
- Индикация команд миганием светодиода и звуком
- Защита от короткого замыкания со звуковой индикацией
Для тестирования DiSEqC-коммутатора необходимо подключить красный провод к входу «Receiver» коммутатора, синий провод к корпусу, остальные желтые провода подключить к портам коммутатора в любом порядке.Выберите протокол, уровень тона, а затем включите питание. Если переключатель DiSEqC в порядке, синий светодиод тестера будет каждую секунду переключаться на другой синий светодиод с коротким миганием красного светодиода и звуковым сигналом. На следующем фото и видео видно, как это выглядит.
Подключение DiSEqC-Tester: DiSEqC-Tester с DiSEqC-switch 1.0 (видео):
Сердце DiSEqC-Tester — микроконтроллер AVR ATtiny13-20PI с синхронизацией от внутреннего RC-генератора на 4.8 МГц.
Принципиальная схема устройства:Увеличить изображение
(Старая схема)
Тестирование в Proteus с DiSEqC-Switch 1.1 Модель:
Устройство каждую секунду генерирует DiSEqC-сообщение длительностью 54 мс. Каждое сообщение состоит из 4 байтов. Байт составляет 8 бит + 9-й нечетный бит. Если используется протокол 1.0, то устройство отправляет следующие команды-последовательности: $ E01038C0, $ E01038C4, $ E01038C8, $ E01038CC, $ E01038C0 и так далее, иначе $ E01039F0, $ E01039F1, $ E01039F2, $ E01039F3, $ E01039F0… Эти команды называются «Группа портов записи N0» (38h) и «Группа портов записи N1» (39h) по протоколу DiSEqC. Полное описание DiSEqC-протокола можно найти на Eutelsat. интернет сайт. Например, DiSEqC-Message $ E01038C0 переключает порт «LNB1» DiSEqC-Switch 1.0 / 2.0 в активное состояние.
Пример сообщения DiSEqC на выводе PB0: Плата DiSEqC-Tester в P-CAD:
Вид платы DiSEqC-Tester:
Прошивка DiSEqC-Tester v1.0a (протоколы 1.0, 1.1; частота 1 Гц, без паузы после включения).
DiSEqC-Tester прошивка v1.0b (протоколы 1.0, 1.1; частота 2 Гц, пауза 0,5 с после включения).
Плата DiSEqC-Tester в формате P-CAD 2004
Новая версия DiSEqC-Tester с использованием ATtiny2313:
Принципиальная схема:Увеличить
DiSEqC-Tester_T2313_rev_A — DiSEqC 1.0 (4 порта), 1.1 (8 портов), 1.2 («запад», «восток»). После каждой 4-й / 8-й команды — большая пауза (для протоколов 1.0 и 1.1). Никаких больших пауз в режиме 1.2-протокола. В архиве есть схемы. Количество индикаторов портов может быть различным, например 8 или 10, и зависит от типа вашего DiSEqC-Switch.
DiSEqC-Tester + в Proteus (обозначения могут не совпадать):По сути, это устройство представляет собой DiSEqC-генератор, который генерирует стандартные DiSEqC-сообщения. Эта версия тестера может обеспечивать частоту 22 кГц между сообщениями, если это разрешено DIP-переключателем. DIP-переключатель предназначен для выбора необходимого протокола и режима.Также DiSEqC-Tester v2 имеет улучшенную защиту от короткого замыкания. Кроме того, поддержка тона 22 кГц позволяет тестировать переключатель 22 кГц. DIP-переключатель позволяет выбрать уровень DiSEqC, тип байта кадрирования и некоторые другие возможности (см. Принципиальную схему). Кнопка используется только в ручном режиме, когда тестер отправляет сообщение после нажатия кнопки.
DiSEqC-Tester v2 защита от короткого замыкания (видео): Схема:
Увеличить изображение
Печатная плата DiSEqC-Tester v2:
DiSEqC-Tester v2 в сборе:
Ведомость материалов (BOM) DiSEqC-Tester v2 | ||||
---|---|---|---|---|
Обозначение | Имя / Значение | Площадь основания | Описание | Кол-во |
A1 | LM78L05 | К-92 | 3-контактный стабилизатор положительного напряжения | 1 |
BZ1 | XCPT22A | д = 16.5 мм | Пьезоэлектрический / керамический преобразователь звука Green Electronics | 1 |
C1, C2, C4, C6, C7, C8 | 0,1 мк 25/50 В | SMD 0805 | Керамический конденсатор | 6 |
C3, C5 | 220u 16V | d = 8, h = 11,5 мм | Конденсатор серии CapXon LZ | 2 |
HL1-HL4 | светодиод | d = 3 мм | Синий светодиод | 4 |
HL5 | светодиод | d = 3 мм | Зеленый светодиод | 1 |
HL6 | светодиод | d = 3 мм | Красный светодиод | 1 |
MCU1 | ATtiny2313-PU / PI | DIP20 | 8-битный микроконтроллер с 2 Кбайт внутрисистемной программируемой флэш-памятью | 1 |
R1, R7 | 10к | SMD 0805 | Чип резистор | 2 |
R2 | 15 | SMD 0805 | Чип резистор | 1 |
R3 | 1к | SMD 0805 | Чип резистор | 1 |
R4, R8 | 100 | SMD 0805 | Чип резистор | 2 |
R5, R6 | 560 | SMD 0805 | Чип резистор | 2 |
R9, R10, R11, R12 | 2к | SMD 0805 | Чип резистор | 4 |
SW1 | 0605 | 6×6 | Switronic серии 06xx тактический переключатель | 1 |
SW2 | BS06GR | BS06 — 6 позиций | DIP-ПЕРЕКЛЮЧАТЕЛЬ серии BS | 1 |
VT1 | BCX53-16 | СОТ-89 | ПНП транзистор общего назначения | 1 |
VT2 | BC847B | СОТ-23 | Транзистор общего назначения NPN | 1 |
XP1 | ISP6CON | HDR2x3 | Стандартный 6-контактный штекерный разъем Atmel ISP | 1 |
XS1 | DC10A | DC10A | Монтажная плата Cliff PCB контактного / кольцевого типа с переключателем | 1 |
XT1, XT2 | 350-3 | 350-3 (3-контактный) | Клеммная колодка Degson серии 350 | 2 |
ZD1 | BZV55-C7V5 / 6V8 | SOD-80C | Диод регулятора напряжения серии BZV55 | 1 |
- ATtiny2313 ПРЕДОХРАНИТЕЛИ:
- SELFPRGEN = 1 (Самопрограммирование отключено)
- DWEN = 1 (Отладочный провод отключен)
- EESAVE = 1
- SPIEN = 0 (загрузка последовательной программы разрешена)
- WDTON = 1 (сторожевой таймер отключен)
- BODLEVEL = 100 (уровень 4.3В)
- RSTDISBL = 1 (PA2 — это СБРОС, а не вывод ввода / вывода)
- CKDIV8 = 1 (делитель на 8 отключен)
- CKOUT = 1 (тактовый выход на PD2 отключен)
- CKSEL = 0100 (внутренний RC-генератор 8 МГц)
- SUT = 10
Обратите внимание, что «1» означает, что предохранитель не запрограммирован.
Прошивка DiSEqC-Tester v2 (3512 загрузок)
Плата DiSEqC-Tester v2 (для принтера) (4575 загрузок)
DiSEqC-Converter предназначен для ПК DVB-карт, которые не поддерживают DiSEqC 1.2 уровень. Также некоторые карты могут плохо работать с DiSEqC 1.2. Устройство декодирует сообщения DiSEqC 1.0 и отправляет сообщения DiSEqC 1.2 на двигатель. Позиция соответствует порту DiSEqC 1.0. Возможны четыре позиции, поскольку это ограничение уровня DiSEqC 1.0. Преобразователь отправляет сообщение на двигатель, когда номер порта DiSEqC 1.0 меняется на другой.
- Особенности:
- Устройство с питанием от шины (12-20 В, 65 мА макс.)
- конвертирует DiSEqC 1.0 в DiSEqC 1.2
- имеет три режима: нормальный режим преобразования (по умолчанию), режим управления двигателем и прозрачный режим DiSEqC / 22 кГц.
- может управлять двигателем с помощью кнопок
- кнопки (слева направо): MODE, GO WEST, GO EAST, STORE POSITION (от 1 до 7), GOTO POSITION (от 0 до 7), SELECT POSITION (от 0 до 7 -> 0..)
- имеет дополнительный DIP-переключатель для «направления» команды «Port4» на Pos4, Pos5..Pos7 двигателя.
- имеет звуковой сигнал для подачи звукового сигнала при нажатии кнопки
- имеет 7-сегментный светодиодный дисплей для отображения выбранной позиции или декодированного порта DiSEqC 1.0
- имеет самовосстанавливающийся предохранитель для максимальной токовой защиты (0,5 А)
- DiSEqC-декодирующая часть:
- Байты кадрирования: 0xE0, 0xE1, 0xE2, 0xE3
- Байт адреса: 0x00, 0x10, 0x15
- Командный байт: 0x38
- DiSEqC-генераторная часть:
- Байт кадра: 0xE0
- Байт адреса: 0x31
- Командные байты: 0x60, 0x68, 0x69, 0x6A, 0x6B
Нажмите и удерживайте кнопку «GO WEST» или «GO EAST», чтобы запустить двигатель, и отпустите, чтобы остановить его.
Подключение DiSEqC-Converter:Устройство построено на базе микроконтроллера AVR ATmega8.
Схема:нажмите для увеличения
Печатная плата DiSEqC-Converter в программном обеспечении для проектирования:
Прототип DiSEqC-Converter:
Тестирование прототипа в конвертирующем режиме (видео):
Прошивка DiSEqC-Converter (2090 загрузок) — (в архиве также находятся файл настроек предохранителей, принципиальная схема и спецификация)
Плата DiSEqC-Converter (для принтера) (3139 загрузок)
Продолжение следует.Смотрите также форум
Устройство может генерировать любое DiSEqC-сообщение. Восемь DiSEqC-сообщений хранятся в EEPROM MCU. Длина сообщения может составлять от трех до шести байтов. Также генератор может выдавать тон 22 кГц.
DiSEqC-Generator (режим без тона 22 кГц, сообщение «0xE01039F3»)
DiSEqC-Generator (режим с тоном 22 кГц, сообщение «0xE01039F3»)
При использовании тона 22 кГц (A3 = 1) на диаграмме можно увидеть паузы в 15 мс до и после DiSEqC-сообщения.Паузы также присутствуют при отключении тона 22 кГц (A3 = 0).
Формат данных EEPROM:
- Сообщение №n (n = 1..8):
- Адрес EEPROM | Описание
- (n-1) * 8 + 0x00 — размер сообщения №n в байтах (size = 3..6)
- (n-1) * 8 + 0x01 — 1-й байт сообщения (байт кадра DiSEqC)
- (n-1) * 8 + 0x02 — 2-й байт сообщения (байт адреса DiSEqC)
- (n-1) * 8 + 0x03 — 3-й байт сообщения (байт команды DiSEqC)
- (n-1) * 8 + 0x04 — 4-й байт сообщения (1-й байт данных DiSEqC — необязательно, только если размер> 3)
- (n-1) * 8 + 0x05 — 5-й байт сообщения (2-й байт данных DiSEqC — необязательно, только если размер> 4)
- (n-1) * 8 + 0x06 — 6-й байт сообщения (3-й байт данных DiSEqC — необязательно, только если размер> 5)
- (n-1) * 8 + 0x07 — зарезервированный байт (любое значение, не влияет)
Например: 0x04,0xE0,0x10,0x38,0xCC, 0x00,0x00,0x00 — DiSEqC 1.0, длина сообщения 4 байта, переключит порт №4 DiSEqC-Switch 1.0 / 2.0. Номер необходимого DiSEqC-сообщения выбирается контактами A0..A2 MCU.
ECDG_T13_v1_rev_A.zip
ПРЕДОХРАНИТЕЛИ- ATtiny13:
- WDTON = 1 (сторожевой таймер отключен)
- CLKDIV8 = 1 (делитель на 8 отключен)
- RSTDISBL = 0 (контакт RESET в общем режиме входа-выхода)
- CKSEL = 01 (внутренний RC-генератор 4,8 МГц)
- SUT = 10
Обратите внимание, что «1» означает, что предохранитель не запрограммирован.
Если вы используете ISP-программатор, когда необходимо использовать RESET-контакт во время программирования, после того, как вы установите RSTDSBL FUSE в ноль, вы не сможете больше программировать свой MCU, только это будет возможно с помощью программатора высокого напряжения. Для предотвращения подобных ситуаций используйте упрощенное решение DiSEqC-Generator. Эта версия не использует контакт RESET в качестве общего вывода.
DiSEqC-Generator v.2 (режим без тона 22 кГц, сообщение «0xE01038C4»)
DiSEqC-Generator v.2 (режим с тональным сигналом 22 кГц, сообщение «0xE01038C0»)
Формат данных EEPROM такой же, как и в предыдущем случае, но только для 4 сообщений (следующие другие игнорируются).
ECDG_T13_v2_rev_A.zip
ECDG_T13_v2_rev_B.zip (паузы между сообщениями и тональным сигналом 22 кГц составляют 25 мс)
ПРЕДОХРАНИТЕЛИ- ATtiny13:
- WDTON = 1 (сторожевой таймер отключен)
- CLKDIV8 = 1 (делитель на 8 отключен)
- RSTDISBL = 1 (контакт RESET — нормальный сброс)
- CKSEL = 01 (Внутренний RC-генератор 4.8 МГц)
- SUT = 10
Обратите внимание, что «1» означает, что предохранитель не запрограммирован.
.Архив проектаAVR | Делайте это просто с ScienceProg
Во многих случаях джойстик-манипулятор является лучшим выбором для пользовательского ввода. Будь то игра, робот или летательный аппарат — джойстик — самый интуитивный способ управления ими. Вы действительно можете найти их в игровых контроллерах, таких как PlayStation или XBOX. Мы собираемся использовать джойстик для большого пальца, который я купил некоторое время назад в SparkFun. Они действительно дешевы и, как сообщают пользователи, практически такие же, как в XBOX 360, которые можно заменить, если они сломаются.Я не стал делать для него печатную плату — просто использовал для нее коммутационную плату, которую также можно найти на SparkFun. Проще говоря, этот джойстик представляет собой не что иное, как два потенциометра и одну кнопку. Он разработан так, что потенциометры ориентированы перпендикулярно, и, таким образом, перемещая ручку, вы можете управлять осями X и Y. Кнопка — это просто кнопка действия, которую можно активировать, нажав джойстик вниз. Таким образом, управление джойстиком — это вопрос аналогового считывания обоих потенциометров с входами АЦП микроконтроллера.
Читать далее
Микроконтроллеры ScienceProg AVR, Учебное пособие по электронике AVR Project, Учебное пособие по AVR, интерфейс джойстика для большого пальца руки 1FreeRTOS известна как операционная система реального времени. Наверное, было бы слишком смело называть это операционной системой реального времени, предпочтительно планировщиком реального времени, в котором приложения могут быть разделены на независимые задачи, которые разделяют все ресурсы процессора, быстро переключая их, похоже, что все функции выполняются параллельно.Эта функция называется многозадачностью. Существует множество споров об использовании RTOS на микроконтроллерах AVR, поскольку они, возможно, слишком малы для работающего планировщика. Основное ограничение — небольшой объем плунжера и повышенное энергопотребление. Если вы собираетесь использовать много задач в приложении
.