С развитием и широким распространением однокристальных ЭВМ, чаще именуемых микроконтроллерами (МК), появляется возможность сравнительно быстрой разработки цифровых измерительных приборов различного назначения и класса точности. Например, даже на базе самых простых моделей распространенных МК семейства AVR фирмы Atmel можно создать вольтметр со встроенным в МК 10-разрядным АЦП. Задача отображения измеряемой величины также легко решается, например, с применением распространенных знакосинтезирующих
жидкокристаллических (ЖК) дисплеев, на основе контроллера Hitachi HD44780. Многие МК имеют развитые таймеры-счетчики, с помощью которых становится также легко реализуемым низкочастотный частотомер, пригодный для учебных задач или радиолюбительской практики.
Разработка комбинированного измерительного прибора на базе МК позволит получить большой опыт по схемотехнике цифровых интерфейсов и программированию МК. Результаты разработки могут быть применены в учебном практикуме по микроконтроллерам и измерительным приборам.
Цель работы: разработка измерительного прибора на основе AVR- микроконтроллера (МК) для измерения напряжения и частоты.
Поставленная цель потребовала решения следующих задач:
1) изучить архитектуру 8-разрядных микроконтроллеров семейства AVR на примере отладочной платы Arduino Nano с МК ATmega168A;
2) изучить среду разработки CodeBlocks, компилятор avr-gcc, библиотеку языка Си avr-libc, а также средство загрузки микропрограммы avrdude;
3) разработать библиотеку для управления ЖК дисплеем по последовательному интерфейсу I2C;
4) разработать подпрограмму для измерения напряжения на основе встроенного в МК АЦП;
5) разработать подпрограмму для измерения частоты на основе встроенных в МК таймеров и счетчиков.
1. Изучена архитектура 8-разрядного AVR-микроконтроллера ATmega168A (МК), а также средства разработки: отладочная плата Arduino Nano, компилятор avr-gcc, библиотека языка Си avr-libc, средство загрузки микропрограммы avrdude, среда разработки CodeBlocks.
2. Разработана библиотека для управления жидко-кристаллическим дисплеем типа HD44780 по двухпроводному интерфейсу TWI (I2C) через адаптер PCF8574. Функции работы с модулем TWI в режиме ведущего (без использования прерываний) выделены в виде отдельной вспомогательной библиотеки.
3. Разработана подпрограмма для измерения напряжения на основе встроенного в МК аналого-цифрового преобразователя (АЦП). Диапазон измеряемого напряжения составляет 0..1000 мВ. Разрядность преобразования — 10 бит.
4. Разработана подпрограмма для измерения частоты. Для подсчета подаваемых импульсов используется счетчик таймера T1, для выдержки интервала измерения 1000 мс — таймер T2. Диапазон измеряемой частоты составляет 1..2 000 000 Гц.
1. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. — М.: ДМК Пресс, 2015. — 588 с.
2. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL, 5-е изд., стер. — М.: Издательский дом «Додэка-XXI», 2008 г. — 560 с.
3. Atmel 8-bit microcontroller with 4/8/16/32 kb in-system programmable flash. Datasheet. Полное описание микроконтроллеров ATmega48A/88A/168A/328A фирмы Atmel. ATMEL, 2014. — 657 с. http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller- ATmega48A-48PA-88A-88PA-168A-168PA-328-
328P datasheet Complete.pdf
4. ЖК-дисплеи на основе контроллера HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver). Техническое описание. — Hitachi, 1999. — ADE-207-272(Z) 99.9, Rev. 0.0. — 60 с. https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
5. Алфавитно-цифровые индицирующие ЖК-модули на основе контроллера HD44780. Описание применения. — Консультационно-технический центр по микроконтроллерам. — 14 с. http://www.cec- mc.ru/techinfo/list/#item 694
6. Интегрированная среда разработки CodeBlocks. Руководство пользователя. —
http://wiki.codeblocks.org/index.php/User documentation
7. Стандартная библиотека языка Си AVR-LIBC для компилятора AVR- GCC. Руководство программиста. http://www.nongnu.org/avr-libc/user- manual/index.html
8. Набор утилит разработки AVR-GCC. Официальный сайт. https://gcc.gnu.org/wiki/avr-gcc
9. Утилита загрузки и выгрузки для микроконтроллеров AVRDUDE. Руководство пользователя. http://www.nongnu.org/avrdude/user- manual/avrdude.html