Микроконтроллеры AVR

Подписаться на эту рубрику по RSS

Бинарные часы на DS1302 и микроконтроллере ATmega8

Просмотров: 16406Комментарии: 11
Электроника. СхемотехникаМикроконтроллеры AVR
Понравилась мне идея бинарных часов и решил сделать проект себе на будущее. Сразу решил, что отображаться и устанавливаться будут только минуты и часы. Так как эти часы буду делать только на показ или на подарок. Не буду углубляться в подробности, программа довольно простая. Приведу схему и краткие характеристики заложенные в эти часы. На схеме не ставил ограничительные резисторы на светодиоды. Понятное дело, что если собирать эти часы в железе, то нужно перед каждым светодиодом поставить ограничивающий резистор где-то на 200 Ом. В конце статьи можно скачать проект в Протеусе и программу на WinAVR.
Схема

Подключение внешнего АЦП по SPI к микроконтроллеру AVR

Просмотров: 29123Комментарии: 3
Электроника. СхемотехникаМикроконтроллеры AVR
Понадобилось мне тут недавно подключить к МК внешнее АЦП на 12 бит по SPI. И в этой статье решил рассказать, что из этого получилось. В первую очередь, хотелось чтобы это АЦП можно было подключить к МК в Протеусе и получить результат там. Покапавшись по интернету и посмотрев цены, остановился на 12-и битном одноканальном АЦП фирмы Microchip MCP3201. Самого MCP3201 в Протеусе нет, но есть 10-и битный MCP3001. Отличается он от MCP3201 лишь тем, что он 10-ти битный и поэтому есть небольшое отличие в обработке уже полученных данных, а получать с него данные также как с 12-и битного. Но обо всем по порядку.
Основные характеристики MCP3201
  • 12 бит
  • Интерфейс SPI
  • Диапазон напряжения питания: 2.7-5.5 В
  • Низкое энергопотребление
  • 100ksps при питании 5В
  • 50ksps при питании 2.7В
Далее...

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

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

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

Генератор пилообразного напряжения. Пример.

Обещался как-то привести пример на компаратор AVR, покапался по своему архиву и нашел генератор пилообразного напряжения. Вообще для реализации в железе этот генератор не из удачных, хотя если его доработать, то получится вполне приличный генератор. В свое время он был заброшен и, в итоге, так и остался в сыром виде. Но эта схема мне понравилась тем, что она хорошо подходит в качестве примера для работы с АЦП, Аналоговым Компаратором, SPI и внешними прерываниями в МК AVR . Вся эта периферия работает здесь самым простым образом, но при этом  связана друг с другом. Программу и пример в Proteus'e можно скачать в конце статьи, поэтому не буду приводить здесь куски этой программы, а приведу только схему и кратко опишу как это все реализовано и для чего используется в схеме. Но начну с того, что опишу какие возможности закладывались в этот генератор.
  1. Непрерывная генерация.
  2. Генерация пачек импульсов. Запуск пачки по синхроимпульсу.
  3. Регулировка частоты выходного сигнала (напряжение 0..5В).
  4. Регулировка длины пачки импульсов (напряжение 0..5В).
Далее...

Работа с графическим LCD WG12864C

Просмотров: 18143Комментарии: 2
Электроника. СхемотехникаМикроконтроллеры AVR
Когда-то сделал маленькую библиотеку для работы с графическим ЖКИ на ассемблере, немного порисовал в Proteus`e, а потом куда-то ее задевал и вот решил недавно подключить WG12864C и повыводить на него какие-нибудь данные и написать программу на С. Что из этого получилось опишу ниже. Итак, в этой статье можно найти как подключить, что куда подать и какими командами управлять WG12864C. Разрешение дисплея 128 на 64 точки. Управляет дисплеем два контроллера KS0108. Это связано с тем, что один контроллер может управлять дисплеем с разрешением 64 на 64 точки. Это  конечно вносит дополнительные сложности в управление этим дисплеем, но мы сможем все это решить. Выглядит дисплей так

Часы реального времени DS1302 и микроконтроллер AVR

Просмотров: 42386Комментарии: 16
Электроника. СхемотехникаМикроконтроллеры AVR
Часы реального времени - электронная схема, предназначенная для учета времени, даты, дня недели и др. В общем-то RTC (real time clock - часы реального времени) могут быть реализованы и без специализированных устройств, но использование отдельной микросхемы позволяет добиться более низкого энергопотребления, освободить ресурсы процессора для решения других задач и добиться более высокой точности. Почему выбрал из множества микросхем часов реального времени именно DS1302? Да, просто хотелось поработать с трех проводным интерфейсом и сделать подключение к любым портам МК. 
Итак, скачиваем даташит на микросхему DS1302 и начинаем изучать особенности микросхемы, команды и всю информацию, которая понадобится для работы с этими часами.

Характеристики:
  1. Считает секунды, минуты, часы, день недели, день месяца, месяц, год с учетом высокосных лет до 2100года
  2. Отображение времени в 12 или 24 часовом видах с отображением AM или PM
  3. Питание может находится в диапазоне 2.0 - 5.5В
  4. При 2В потребляет ток меньше 300нА
  5. Простой 3-х проводный интерфейс
  6. Рабочий диапазон температур: -40...+850С
Теперь посмотрим на распиновку микросхемы и описание функций ножек.

Велосипедный спидометр на микроконтроллере AVR

Просмотров: 24396Комментарии: 14
Электроника. СхемотехникаМикроконтроллеры AVR
Недавно нашел у себя в архивах программу спидометра на микроконтроллере. Года два назад ваял ее. И вот решил без особого разбора подробностей выставить ее. Если кто захочет думаю разберется без труда (тем более есть комментарии, а меню описал раньше), а если нет - отвечу на вопросыsmile. Программа написана на CodeVisionAVR. Пересматривая ее недавно, обнаружил некоторые вещи, которые хочу изменить, поэтому буду ее переделывать и писать теперь уже в WinAVR. Да, еще, в железе данное устройство пока не испытывалось, поэтому в случае чего могут обнаружиться какие-то глюки (см. обновление внизу). Если кто, испробует это устройство в железе, просьба написать о результатах. Экран спидометра у меня выглядит вот так

Электронный высотомер

В предыдущих статьях мы научились измерять атмосферное  давление и температуру. 


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

Выделение пунктов меню в микроконтроллерах AVR

Просмотров: 11895Комментарии: 0
Электроника. СхемотехникаМикроконтроллеры AVR
Для полного понимания всего написанного ниже желательно хотя бы вкратце просмотреть статьи:


Просто листать меню это конечно хорошо, но в конечном итоге оно служит для настроек чего либо и нам нужно видеть какой пункт в подменю в данный момент включен. Для реализации нам понадобится какая-то переменная в EEPROM. Я ее называю MDCR (Main Display Control Register) - регистр управления отображением, хотя название не важно. Итак, давайте по пунктам, что нужно сделать чтобы отметить пункт меню:

  1. Объявляем по одной переменной одного типа в EEPROM и в RAM (ОЗУ) - ee_MDCR и MDCR.
  2. В секторе инициализации (где-нибудь в начале функции main) читаем значение переменной из EEPROM в переменную в RAM - MDCR=eeprom_read_byte(&ee_MDCR).
  3. Теперь при выборе какого нибудь пункта меню мы изменяем значение MDCR и записываем его в EEPROM по адресу eeMDCR - eeprom_write_byte(&ee_MDCR, MDCR);
  4. Анализируем MDCR и ставим соответствующую метку (выбран или нет);

Матричная клавиатура 4х4

Когда писал об организации меню в МК использовал клавиатуру 2х2 и не описал какой принцип сканирования клавиатуры. Сейчас хочу исправить это упущение. 
Давайте подключим к МК клавиатуру 4х4. Каков же принцип работы такой клавиатуры? На самом деле все довольно просто:
  1. У нас есть биты порта настроенные на выход (в нашем случае будут биты 0-3 PORTD) и есть биты настроенные на вход (биты 4-7 PORTD).
  2. На выходах единица. На входах включен подтягивающие резисторы.
  3. Устанавливаем один из битов выхода в нуль и проверяем все входы порта на нуль. Если на входе везде единица, тогда устанавливаем следующий бит в нуль и снова проверяем входы на нуль и т.д. до последнего бита выхода, а затем начинаем заново. Если, например, мы установили бит 0 в нуль и при проверке входов на бите 4 обнаружен нуль, тогда мы считаем что была нажата кнопка и функция возвращает код кнопки. С которым мы дальше и работаем в основной программе.  
Далее...