Вольтметр на PIC16F676

Готовится обновление

В статье описан вольтметр, с пределом измерения 50 вольт, сделанный на PIC16F676 или как использовать АЦП этого микроконтроллера.

Схема вольтметра на PIC16F676

Схема (общий анод)

Схема вольтметра на PIC16F676

Схема (общий катод)

На резисторах R1 и R2 собран делитель напряжения, многооборотный построечный резистор R3 служит для калибровки вольтметра. Конденсатор C1 защищает вольтметр от импульсной помехи и сглаживает входной сигнал. Стабилитрон VD1 служит для ограничения входного напряжения на входе микроконтроллера, что бы вход МК не сгорел при превышении напряжения по входу.

На транзисторе VT1 (КТ3102 или SMD вариант BC847) и резисторах R11, R12 и R13 собран инвертирующий элемент, который зажигает точку на индикаторе вместе со вторым разрядом.

В схеме применён индикатор с общим анодом BA56-12GWA, который через токоограничивающие резисторы подключен к МК. Этот индикатор отличается низким потреблением тока. При использование более мощных (крупнее сегменты или другого цвета) индикаторов рекомендуется поставить ключи на аноды, как в присланной схеме от Владимира.

Часть исходника вольтметра, компилятор HI-TECH PICC 9.50:


void main()
{
int i,v;
unsigned char v1,v2,v3; 	//	Переменные для сегментов
low_init();				//	инициализация
while(1)
{
	GODONE=1;		//	Устанавливаем бит GO для того что бы сделать опрос АЦП
	for(i=0;i < 200;i++)	//	В ШИМе зажигаем все сегменты
	{
		seg7(v1,1); 	//	1 сегмент
		delay(10);
		seg7(v2,2); 	//	2 сегмент
		delay(10);
		seg7(v3,3); 	//	3 сегмент
		delay(10);
	}
	PORTA=0b00000000; 	//	Гасим индикатор
	PORTC=0b11111111;

	while(GODONE){}
	v=ADRESL;			//	читаем младший байт с АЦП
	i=ADRESH;			//	читаем старший байт с АЦП (а именно 2 байта с него)
	v=v+i*256;			//	складываем младший и старший байт АЦП

	v=(v*10/20)%1000; 	//	преобразуем
	v1=v/100;			//	разбиваем на сегменты
	v=v%100;
	v2=v/10;
	v3=v%10;
}
}

В бесконечном цикле постоянно происходит получение данных с АЦП, их преобразование и вывод на 7-ми сегментный индикатор в режиме ШИМа.

Печатка вольтметра на PIC16F676

Печатка (общий анод, старая версия)

Настройка вольтметра производиться с помощью подстроечного резистора R3 (желательно применить многооборотник).

Скачать исходник и печатку

Внимание

У некоторых программаторов была обнаружена проблема в порче микроконтроллеров. Это выражается в том, что они затирают заводскую калибровочную константу внутренней RC цепочки, после чего МК начинает работать некорректно или перестаёт работать вообще. Поэтому перед прошивкой микроконтроллера сначала прочитайте его память и выпишите последние слово (2 байта) из flash памяти контроллера. После прошивки проверьте, сохранилась ли значение, если нет, то прошейте контроллер, но уже с ранее выписанной калибровочной константой.

Благодарность за обнаружение этой проблемы: Валерию, Юрию.

Прошивки

Представляю вам новые от 10 апреля 2012 года, версии прошивок вольтметра V3.2. Убран первый разряд, если он равен 0 и в 100В версии установлено максимальное значение индикатора 99,9В. Прошивки нуждаются в проверке, на железе не проверялись.

Общий анод:
Скачать прошивку до 50В (R1=47кОм) V3.2
Скачать прошивку до 100В (R1=100кОм) V3.2
Общий катод:
Скачать прошивку до 50В (R1=47кОм) V3.2 общий катод
Скачать прошивку до 100В (R1=100кОм) V3.2 общий катод

Проверенная версия прошивки V3.1 — убрано мерцание индикатора.

Общий анод:
Скачать прошивку до 50В (R1=47кОм) V3.1
Скачать прошивку до 100В (R1=100кОм) V3.1
Общий катод:
Скачать прошивку до 50В (R1=47кОм) V3.1 общий катод
Скачать прошивку до 100В (R1=100кОм) V3.1 общий катод

Старые версии прошивок (общий анод):
Скачать прошивку до 50В (R1=47кОм)
Скачать прошивку до 100В (R1=100кОм)

Дополнительные материалы по вольтметру:

Статья обновлена 14.05.2014

171 комментарий »

Alex_EXE | 24.03.2011 | Микроконтроллеры | 79 162 просмотров

171 комментарий на « Вольтметр на PIC16F676»

  1. Назар пишет 17.11.2016 в 15:00 #

    Добрый день Alex Exe! Можете скинуть библиотеку с BA56-12GWA или исходник .DSN? Буду очень благодарен!

Комментарии RSS

Оставьте отзыв