Проект tinyAVR 8. Вольтметр

November 24, 2014 by admin Комментировать »

Этот проект (и следующие два также) построен на стандартной элементной базе, состоящей из семисегментного индикатора на две с половиной цифры и восьмиконтактного микроконтроллера. Семисегментные индикаторы часто применяются в приборах. Обычная конфигурация индикатора — три с половиной цифры (три полных цифры и ’’половинка", в которой при необходимости может высвечиваться "1"). Такой индикатор может показать значение от 0 до 1999. Если он отображает и символ "минус”, то диапазон значений от -1999 до 1999. Индикаторы, имеющие четыре с половиной цифры, отображают диапазон от 0 до 19999 или от -19999 до 19999, что в десять раз превышает диапазон индикатора с тремя с половиной цифрами. Однако для многих приложений вполне достаточно индикатора в две с половиной цифры. Семисегментный индикатор можно собрать из отдельных светодиодов. Преимущество такого индикатора в том, что для него можно выбрать светодиоды любого цвета и размера. На рис. 3.30 показано, как можно сделать семисегментный индикатор из отдельных светодиодов. Каждый сегмент индикатора (за исключением десятичной точки) делается из трех параллельных светодиодов. Вспомним из предыдущей главы, что для управления параллельными светодиодами нужны сопротивления, ограничивающие ток. Однако мы не собираемся этого делать и подключим по три светодиода параллельно в каждом из семи сегментов. Было бы неплохо рассортировать эти светодиоды по интенсивности (хотя это придется делать вручную и займет много времени).

Рис. 3.30. Семисегментный индикатор, выполненный из отдельных светодиодов

Каждый семисегментный индикатор имеет восемь сегментов. Восьмиконтактный микроконтроллер имеет два контакта питания и шесть контактов вво- да/вывода.’При помощи пяти контактов мы можем управлять 20 светодиодами (по методу Чарли). То есть мы можем подключить наш индикатор на две с половиной цифры к восьмиконтактному микроконтроллеру при помощи пяти контактов вво- да/вывода. Шестой контакт можно задействовать для других целей, например, для считывания внешнего аналогового напряжения или цифрового входного сигнала. Двадцать управляемых по методу Чарли светодиодов образуют два семисегментных индикатора (для этого нужно 16 светодиодов). Остальные четыре светодиода служат для отображения десятичной точки и знака "минус" (рис. 3.31).

Рис. 3.31. Управление индикатором от микроконтроллера

Спецификация проекта

Цель проекта— создать однодиапазонный вольтметр на основе восьми контактного микроконтроллера. Индикатор в две с половиной цифры реализован при помощи мультиплексирования методом Чарли (как объяснялось в предыдущем разделе). Микроконтроллеры AVR серии Tiny имеют несколько 10-разрядных АЦП. Это позволит различить 1024 уровня. Индикатор в две с половиной цифры может отобразить лишь 200 значений. Поэтому разрядность АЦП не является ограничением для вольтметра. Мы выбрали диапазон от 0 до 12 В, что дает на нашем индикаторе точность в 0,1 В. Внутреннее опорное напряжение микроконтроллера составляет 2,56 В, поэтому для получения диапазона в 12 В добавлен внешний делитель напряжения 1:4,9. Коэффициент деления можно легко изменить, если вам требуется другой диапазон.

Описание устройства

На рис. 3.32 и 3.33 изображены принципиальные схемы устройства. В проектах 8, 9 и 10 используется эта же схема. С1 — развязывающий конденсатор для удаления помех, возникающих в цепи (он припаивается возле контактов питания контроллера). Выбранный микроконтроллер— ATtiny45. Стабилизатора напряжения нет, поэтому напряжение питания может варьироваться лишь от 4,5 до 5,5 В. Отсутствует и конденсатор для фильтрации выбросов напряжения, поэтому рекомендуется питать устройство от батарей. Двадцать светодиодов организованы в виде двух полных семисегментных индикаторов (по семь светодиодов для каждой цифры и по одному на десятичную точку), одного индикатора на полцифры (два светодиода для отображения 0 или 1 и один — для десятичной точки) и одной горизонтальной черточки (один светодиод), которая обозначает знак "минус". Поскольку сегменты цифр семисегментного индикатора длиннее, чем размер трехмиллиметрового светодиода, то для каждого сегмента параллельно соединены три светодиода. Это может привести к разному току светодиодов сегментов и точки. Для выравнивания тока добавлен резистор, подключенный последовательно к светодиоду точки.

Рис. 3.32. Принципиальная схема вольтметра (термометра, частотомера) с автоматическим диапазоном (часть 1)

Рис. 3.33. Принципиальная схема вольтметра (термометра, частотомера) с автоматическим диапазоном (часть 2)

Двадцать светодиодов управляются посредством мультиплексирования по методу Чарли при помощи пяти контактов ввода/вывода микроконтроллера. SL1 — это трехконтактный разъем для подачи входного сигнала на АЦП контроллера. Входной сигнал в.проектах 8, 9 и 10 разный. Вторая часть схемы (рис. 3.44) служит для подачи на контроллер разных входных сигналов (путем подключения разъема SL1 к клеммам VOLT, LM35 или SIGNAL). Для данного проекта на вход поступает напряжение с SL2. Затем оно снижается в 4,9 раз и подается на вход АЦП через разъем VOLT.

Программа считывает отсчет с выхода АЦП, преобразует его в напряжение, выполняет округление и отображает результат на семисегментном дисплее.

Конструкция

Компоновку платы в программе EAGLE (и принципиальную схему) можно скачать по ссылке: www.avrgenius.com/tinyavrl.

Основная (первая) печатная плата сделана двухсторонней. На второй плате перемычек нет, она односторонняя. На рис. 3.34 и 3.35 показаны верхняя и нижняя стороны основной платы. На рис. 3.36 изображена собранная плата разъемов (вторая).

Рис. 3.34. Основная (первая) плата (сторона компонентов)

Рис. 3.35. Основная (первая) плата (сторона печатных проводников)

Рис. 3.36. Собранная плата входных разъемов (вторая)

Программирование

Откомпилированный исходный код (вместе с файлом MAKEFILE) можно скачать по ссылке: www.avrgenius.com/tinyavrl.

Тактовая частота равна 8 МГц. В данном случае контакт сброса РВ5 микроконтроллера служит входом АЦП. Поэтому функцию сброса этого контакта необходимо отключить, установив fuse-бит RSTDISBL. Для программирования контроллера был использован STK500 в режиме HVSP. Рассмотрим самые важные фрагменты кода.

while(1)

voltage = read_adc();

//Здесь напряжение в 100 раз больше реального //Определение диапазона и масштабирование результата if(voltage<=199)

{

point = 1;

}

else if(voltage<1995)

{

if(voltage%10>=5)

{

voltage = voltage +10;

}

voltage = voltage/10; point = 2;

}

else

{

if(voltage%100>=50)

{

voltage = voltage+100;

}

voltage = voltage/100; point = 3;

}

c=voltage/100; voltage = voltage%100; d= voltage/10; voltage = voltage%10; e = voltage; display(ο,ά,e,point,0); _delay_ms (100) ;

}

Листинг 3.5 — это главный бесконечный цикл программы. Сначала он читает отсчет АЦП (при помощи функции read_adc, которая выдает значение, в 100 раз превышающее входное напряжение). Разрядность АЦП равна 10; опорным служит внутреннее напряжения 2,56 В (для повышения точности). Поскольку имеется делитель напряжения 4,9 : 1, то измеряемое входное напряжение может варьироваться в пределах от 0 до 2,56 · 4,9 = 12,544 В (примерно 12 В).

После того как считан результат АЦП, выполняется его округление (сначала нужно выбрать положение десятичной точки, а затем округлить значение до трех цифр). Затем цифры извлекаются и передаются в функцию отображения (которая ставит им в соответствие массив statusonof f). Назначение этого массива такое же, что и в проекте 7.

Работа устройства

Входное напряжение подается на клеммы VOLT, а его значение отображается на семисегментном дисплее.

Источник: Гадре, Д., Занимательные проекты на базе микроконтроллеров tinyAVR / Дхананья Гадре, Нигул Мэлхотра: Пер. с англ. — СПб.: БХВ-Петербург, 2012. — 352 с.: ил. — (Электроника)

Оставить комментарий

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