|
AVR
|
|
| admin | Дата: Четверг, 08.09.2016, 09:40 | Сообщение # 1 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Микроконтро́ллер (англ. Micro Controller Unit, MCU) — микросхема, предназначенная для управления электронными устройствами.
Типичный микроконтроллер сочетает на одном кристалле функции процессора и периферийных устройств, содержит ОЗУ и (или) ПЗУ. По сути, это однокристальный компьютер, способный выполнять относительно простые задачи.
Отличается от микропроцессора интегрированными в микросхему устройствами ввода-вывода, таймерами и другими периферийными устройствами.
AVR — семейство восьмибитных микроконтроллеров фирмы Atmel.
Микроконтроллер AVR содержит: быстрый RISC-процессор, два типа энергонезависимой памяти (Flash-память программ и память данных EEPROM), оперативную память RAM, порты ввода/вывода и различные периферийные интерфейсные схемы.
Устройство микроконтроллеров семейства ATmega

Семейство микроконтроллеров на AVR atmega не заканчивается и не начинается, их большое множество:
MCS 51 (Intel) MSP430 (TI) ARM (ARM Limited) ST Microelectronics STM32 ARM-based MCUs -Atmel Cortex, ARM7 и ARM9-based MCUs -Texas Instruments Stellaris MCUs -NXP ARM-based LPC MCUs -Toshiba ARM-based MCUs -Analog Devices ARM7-based MCUs -Cirrus Logic ARM7-based MCUs -Freescale Semiconductor ARM9-based MCUs AVR (Atmel) -ATmega -ATtiny -XMega PIC (Microchip) STM8 (STMicroelectronics) С8051F34x RL78 (Renesas Electronics) и т.д.
|
| |
| |
| admin | Дата: Четверг, 08.09.2016, 09:44 | Сообщение # 2 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Ну собственно поделюсь своими экспериментами в этой области пока на примере Atmel atmega32L
ATmega32, ATmega32L - 8-битные AVR микроконтроллеры с 32К Байт внутрисистемно программируемой FLASH памяти.
Характеристики: Высокопроизводительные, мало потребляющие AVR 8- битные микроконтроллеры Развитая RISC архитектура: - 131 исполняемых команд, большинство за один машинный такт - 32 рабочих регистра общего назначения - полностью статический режим работы - производительность до 16 MIPS при 16 МГц - встроенный 2-х тактовый умножитель Энергонезависимая память программ и данных - 32К байт внутрисистемно самопрограммируемой FLASH памяти с количеством циклов перепрограммирования до 10 000. - Опционно загрузочная область памяти с независимыми ключевыми битами, внутрисистемное программирование встроенной загрузочной программой, правильное чтение в процессе записи. - 1024 байт EEPROM с допустимым количеством циклов стирания записи до 100 000. - 2К байт внутренней SRAM - программируемый ключ защиты программ JTAG (IEEE1149.1 совместимый) интерфейс - Сканирование памяти в соответствии с JTAG стандартом - Встроенная поддержка отладчика - Программирование FLASH, EEPROM, охранных и ключевых бит через JTAG интерфейс Периферийные функции - два 8-битных таймера/счётчика с программируемым предделителем и режимом сравнения - один 16-битный таймер/счётчик с программируемым предделителем, режимом сравнения и захвата - счётчик реального времени с программируемым генератором - четыре ШИМ генератора - 8-и канальный, 10-и битный АЦП - байт- ориентированный, двухпроводный интерфейс - программируемый USART - Master/Slave SPI последовательный интерфейс - Программируемыи Watchdog таймер с программируемым генератором - Встроенный аналоговый компаратор Специальные функции - Reset по включению питания и выключение при снижении напряжения питания - Внутренний калиброванный RC генератор - Внешние и внутренние источники прерывания - Шесть экономичных режимов: Idle, подавления шумов АЦП, экономичный, режим Выкл. , режим ожидания и режим расширенного ожидания. 32 программируемых вывода вход-выход и 1 вход 40 выводной корпус PDIP, 44 выводной корпус TQFP, и 44 контактный MLF Напряжение питания: - 2.7 В до 5.5 В для ATmega32L - 4.5 В до 5.5 В для Atmega32 Тактовая частота: 0-8 МГц Atmega32L - 0-16 МГц Atmega32
Блок-схема:

Данный МК выпускается в двух корпусах PDIP и TQFP/MLF Распиновка:
|
| |
| |
| admin | Дата: Четверг, 08.09.2016, 09:56 | Сообщение # 3 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Ну и не посредственно немного практики
Спаял программатор (USBasp), написал прошивку, прошил МК и заставил его мигать светодиодами
Программатор USBasp был ранее заказан как конструктор, его оставалось только спаять правильно и испытать. Испытание программатора как видим прошло успешно :) Слева на видео программатор, справа тестовая плата с контроллером JY-MCU JY-MEGA32-DEMO V1.3 , минимальной обвязкой. Программатор подключен к ПК, тестовая платка с МК в свою очередь подключена к программатору. На плате без прошивке горит 1 красны светодиод сигнализирующий о питании, на программаторе аналогично. Далее на ПК нажимаю кнопку прошить МК, на программаторе загорается зеленый светодиод (что сигнализирует об обмене ПК программатора и МК), на плате с МК в процессе прошивки тоже помигивают первые светодиоды, по завершении процесса прошивки зеленый светодиод на программаторе тухнет, и на плате с МК начинают мигать светодиоды согласно прошитой в него программы.
|
| |
| |
| admin | Дата: Четверг, 08.09.2016, 09:59 | Сообщение # 4 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Продолжил я свои эксперименты с микроконтроллерами. Состав практичсеки не изменился, программатор USBasp, мк atmega32l и добавился ультразвуковой излучатель и приемник HC-SR04.
atmega32l генерирует импульс длительностью 10 мс и отправляет его на излучатель, после отправки сигнала начинает слушать уз приемник, как только в уз приемнике появится отраженный сигнал начинается расчет в МК растояния замерив разницу во времени и зная скорость распространения УЗ вол в воздухе, получает значение растояния, после чего зажигает нужный светодиод, нет объекта в зоне видимости все светодиоды потушены, чем ближе объект тем больше светодиодов горит. Можно конечно вывести конкретное значение растояния до объекта например в см на ЖК экран, но его под рукой не оказалось. На видео сначала прошивка, как тухнет зеленый светодиод на программаторе запускается уже прошитая прога в МК, несколько секунд в качестве диагностики мигают светодиоды, потом тухнут ну и начинается демонстрация. Прога чуть нетокаллиброванна, но принцип думаю понятен
Чем ближе объект, тем больше светодиодов горит, чем дальше тем меньше, нет объекта в зоне видимости, светодиоды не горят. Далеко отодвинуть объект не удавалось, так как одной рукой снимал, второй отодвигал объект. Впринципе все работает.
|
| |
| |
| admin | Дата: Среда, 21.09.2016, 13:12 | Сообщение # 5 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Нашел в инете распиновку JY-MCU JY-MEGA32-DEMO V1.2 (обратите внимание версия 1.2) я использую JY-MCU JY-MEGA32-DEMO V1.3 (версия 1.3) распинвка чуть отличается, по крайней мере заметил что у меня кнопка SW4 подключена к PD6 а не к PD7 как в версии платы 1.2 На версии 1.3 кнопки подключены к PD3 - PD6
|
| |
| |
| admin | Дата: Среда, 21.09.2016, 18:26 | Сообщение # 6 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Поэкспериментировал с обработкой нажатия кнопочек, как индикатор нажатия воспользовался имеющимися светодиодами.
Нажимаем на кнопку загорается светодиод, ещё раз нажимаем тухнет, такой алгоритм прописан на все 4 кнопки подключенные к PD3-PD6
Ну а тут чуть попроще, соответствующий светодиод просто вспыхивает при нажатии на кнопку.
В обоих случаях подтягивающие резисторы для кнопок использовались внутренние, т.е. программно активированные из состава самой меги
|
| |
| |
| admin | Дата: Четверг, 20.10.2016, 08:40 | Сообщение # 7 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Несколько слов о подключении USB to TTL конвертера к AVR board JY-MCU JY-MEGA32-DEMO V1.3 Исходя из распиновки МК конвертер подключаем к 9 и 10 пину PD0(RXD), PD1(TXD) Пин ковертера RXD к пину МК TXD, пин ковертера TXD к пину МК RXD
Описание касательно используемого мной конвертера YP-02 USB to TTL на CH340

Мало ли, так на всякий случай обратил на это внимание. В других конвертерах может быть несколько иная распиновка в плане RXD и TXD пинов
Данный конвертер может служить для программирования arduino pro min так как у них на плате отсутствуют какие либо железные возможности для этого, также используется для обмена данными между МК и например ПК через терминал ну и т.д.
|
| |
| |
| admin | Дата: Четверг, 20.10.2016, 11:23 | Сообщение # 8 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Немного поигрался с 3х осевым магнитометром HMC5883L (GY-271)
Магнитометр — это прибор, который измеряет напряженность магнитного поля. Все современные электронные магнитометры изготавливаются по технологии МЭМС и позволяют проводить измерения сразу по трем перпендикулярным осям. А углом проекций этих осей будет угол направления на север.
На рисунке изображен простой случай, когда компас расположен горизонтально поверхности земли на экваторе. Красной стрелкой отмечено направление к северному полюсу. Пунктиром отмечены проекции этой стрелки на соответствующие оси.

На этом пока закончу, ибо рассуждения о магнитных волнах, магнитизме, полюсах, направлении, особенностях земного шара и т.д. - очень обширная тема. Данный прибор сам по себе измеряет магнитное поле, в комплексе с другими в сочетании с акселерометром и/или гироскопом представляют собой инерциальную систему, способную точно определять местоположение в трехмерном пространстве и т.д.
Теперь о самом магнитометре HMC5883L HMC5883L может измерять магнитное поле в диапазоне от –8 до +8 гаусса. Благодаря изменяемому коэффициенту усиления (GN) чувствительность датчика может варьироваться от 0.73 мГс/LSB (милигаусс на младший значащий разряд) до 4.35 мГс/LSB при изменении GN от 0 до 7, соответственно. Настройка и считывание данных происходит по шине I2C. Всего имеется 12 восьмиразрядных регистров. Два регистра настройки (Register A и Register позволяют изменять частоту выдачи данных, режим измерения, количество выборок за время одного замера и коэффициент усиления. С помощью регистра режима <br / Mode Register) можно выбрать режим функционирования датчика: либо он будет измерять непрерывно (Continuous-Measurement Mode), либо проведет измерение один раз и перейдет в режим ожидания (Single-Measurement Mode). В шесть регистров, расположенных по адресам с 0x03 по 0x08, помещаются результаты измерений. На одну ось выделяется по два регистра <br / Output Register A и Output Register , причем регистр A является старшим по отношению к регистру B. Полученное значение представляется 12-разрядным числом. Регистр статуса (Status Register) имеет всего два бита – бит готовности (RDY) и бит «защелки» (LOCK). Бит готовности устанавливается после того, как данные будут записаны во все шесть выходных регистров. Для осуществления не программного, а аппаратного опроса, его функция дублируется выводом DRDY. Бит «защелки» устанавливается, когда данные из одного или нескольких (но не из всех) выходных регистров были считаны, либо когда был считан регистр режима. Оставшиеся три регистра представляют собой идентификационные регистры <br / Identification Registers), позволяющие управляющему устройству при необходимости определить этот датчик. Доступ к магнитометру осуществляется по шине I2C. Запись производится по адресу 0x3C, а чтение – 0x3D. Для удобства считывания данных имеется функция автоматического инкремента адреса выходных регистров с последующим переходом на адрес 0x03 (старший регистр оси X) по завершении считывания данных из всех выходных регистров. Необходимо также отметить, что выходные регистры расположены в «неправильном» порядке, то есть при последовательном считывании сначала будут взяты данные оси X, затем оси Z, и в последнюю очередь оси Y. Это необходимо учитывать в программе. На этом также тормозну, ибо дальше мы опять перейдем к физике, математике и другим наукам.
Теперь практика. Собственно что имеем: 3х осевой магнитометром HMC5883L (GY-271) AVR board на atmega32L работающую от внешнего кварца на 16мГц программатор USBasp UART USB to TTL конвертер для вывода полученной информации в терминал ПК
Всё это соответственно нужным образом подключено, программа управления для AVR board расчитывающая и интерпретирующая значения магнитного поля по осям написана и зашита в МК, ну и собственно все запущено
Результат
Скрин терминала

В терминале видны поступающие значения магнитной напряженности по 3м осям, а так же угол проэкции по осям, так называемое направления на север (Азимут). Вместо терминала инфу можно вывести на ЖК экран и т.д.
|
| |
| |
| admin | Дата: Понедельник, 24.10.2016, 10:14 | Сообщение # 9 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Поэкспериментировал сегодня с модулем датчика DHT11 (цифровой датчик температуры и влажности)
Характеристики- Напряжение питания: 3–5 В
- Потребляемый ток при запросе данных: 2,5 мА
- Потребляемый ток в ожидании: 100 мкА
- Диапазон температур: 0–50 °С
- Погрешность температуры: ±2 °С
- Диапазон влажности: 20–90%
- Погрешность влажности: ±5%
В процессе столкнулся с некими кривотолками при его подключении. Вкратце, если подключаем просто датчик (имеет 4 пина) на прямую к МК, то нужно использовать подтягивающий резистор, как собственно везде и описано, если же подключаем модуль с датчиком DHT11(имеет 3 пина) то подтягивающий резистор не нужен, он уже имеется на плате.
|
| |
| |
| admin | Дата: Среда, 23.11.2016, 10:21 | Сообщение # 10 | habaroved.net |
 Главный админ
Группа: Администраторы Имя:Евгений
Сообщений: 5916
| Решил я для своих экспериментов с микроконтроллерами обзавестись дисплейчиком, посимпатичнее, более наглядно и более удобочитаемо воспринимать разного роду инфу от мк, плюс комп не нужен для вывода информации.
Выбор пал на компактный графический OLED дисплей (симпатичный, приятнее воспринимается информация, возможность отображение графики и т.д.). Вот и приехал он ко мне OLED дисплеем 128х64 работающий по шине I2c на SSD1306 На плате дисплея имеется вот такая надпись GM009605 Фото конкретного экземпляра (их большая куча разновидностей)


Стал разбираться... Для работы понадобилось две библиотеки: glcdSSD1306-I2C.lib (для дисплея) i2c_twi.lbx (для шины I2C) ну и набор шрифтов, можно самим шрифты изготовить, а можно взять готовые font6x8.font (я использовал 6х8) В общих чертах разобрался, написал программу для микроконтроллера, прошил МК, ну и все как сказать заработало, результат на видео ниже
Мерцание на дисплее - результат видео съемки, глазом нет никакого мерцания
В архиве I2C_SSD1306_Lib_Font.rar библиотеки и шрифт
|
| |
| |