Работа с компаратором PIC16F628A

Компаратор (аналоговых сигналов) – электронная схема, принимающая на свои входы два аналоговых сигнала и выдающая логическую «1», если сигнал на прямом входе («+») больше чем на инверсном входе («-»), и логический «0», если сигнал на прямом входе меньше чем на инверсном входе.

компаратор

Многие микроконтроллеры содержат встроенные модули компараторов.

В микроконтроллере присутствует также источник опорного напряжения, задача которого разделить напряжение питания до нужного значения.

Настройка компаратора

Регистр CMCON позволяет настраивать работу компаратора. В большинстве схем компаратор не нужен и его лучше отключить, что бы он не занимал выводы контроллера, для этого нужно в этот регистр записать значение – 7, для остальных же случаев, когда компаратор нужен, регистр CMCON может принимать следующие значения:

регистр CMCON

  • Бит 7 – C2OUT – выход компаратора 2
  • Бит 6 – C1OUT – выход компаратора 1
  • Бит 5 – инверсный выход компаратора 2 (1 — инвертировать)
  • Бит 4 – инверсный выход компаратора 1 (1 — инвертировать)
  • Бит 3 – CIS мультиплексирование входов компараторов (случаи: CM2:CM0=010 и CM2:CM0=001)
  • Биты 0-2 – режим работы компараторов

биты 2-0 регистра CMCON

Настройка опорного напряжения

Микроконтроллер позволяет использовать как внешний источник опорного напряжения, так и внутренний.

регистра VRCON

Биты VR3:VR0 при напряжении питания 5 В, см. таблица ниже

Биты VR3:VR0

VRCON опорные напряжения

Пример работы компаратора

Будет рассмотрено 2 примера: первая схема — один компаратор с внешним источником опорного напряжения и на второй схеме компаратор с внутренним источником опорного напряжения. Так же ещё один пример применения компаратора приведён в одной из статей – датчик хлопка.

Использован микроконтроллер PIC16F628A, т.к. был в наличие. Два переменных резистора (или во втором случае один) по 10кОм для задания опорного напряжения и напряжения входа компаратора, два светодиода – HL2 для индикации результата компаратора и HL1 для индикации смены состояния компаратора.

#include <pic .h>
__CONFIG(0x03D58);

//	логические операции
#define SetBit(x,y) (x|=(1< <y))
#define ClrBit(x,y) (x&amp;amp;amp;=~(1<<y))

void low_init()		//	инициализация МК
{
CMCON = 0b00100101;		//	Выход 2 инвертирован, используется только второй компаратор
VRCON = 0b11101100;		// 	Внутренний источник опорного напряжения, опорное напряжение = 2,5В
//	VRCON = 0b00000000;		//	Внешний источник опорного напряжения
TRISA = 0b00000110;		// 	RA1 и RA2 - выводы компаратора
TRISB = 0b00000000;		//	Все выходы
PORTA = 0b00000000;
PORTB = 0b00000000;
}

void main()
{
char p=0;
low_init();
CMIF=0;
while(1==1)
{
if(CMIF)
{
if(p=!p)
SetBit(PORTB,6);
else
ClrBit(PORTB,6);

if(C2OUT)
SetBit(PORTB,7);
else
ClrBit(PORTB,7);
CMIF=0;
}

}
}

Схема 1

Схема с внешним источником опорного напряжения

Схема с внешним источником опорного напряжения

VRCON = 0b00000000;		//	Внешний источник опорного напряжения

Опорное напряжение выставляется переменным резистором R1 на входе RA2 микроконтроллера. Когда напряжение, выставленное резистором R2 на входе RA1, выровняется с напряжения на входе RA2 – компаратор сменит своё состояние, что отобразит диод HL2 и на выходе компаратора выставиться единица, загорится светодиод HL1. При уменьшении напряжения на RA1 или увеличение на входе RA2 произойдёт тоже самое, но в обратном порядке, т.е. на выходе компаратора появится ноль, HL1 погаснет. В примере установлен бит C2INV (5 бит регистра CMCON), что приводит к инвертированию результатов, без него, если U на RA1>U на RA2 = 0.

Схема 2

Схема с внутренним источником опорного напряжения

Схема с внутренним источником опорного напряжения

VRCON = 0b11101100;		// 	Внутренний источник опорного напряжения, опорное напряжение = 2,5В

Отличие этой схемы в том, что опорное напряжение выставляется программно внутри контроллера, а не снаружи. В этом примере тоже установлен инвертирующий бит C2INV. Внутреннее напряжение установлено равное 2,5В. Когда напряжение на входе RA2 превысит опорное напряжение то загорится светодиод HL2, также смену состояния регистра компаратора просигнализирует диод HL1.

Макет схемы с внутренний источник опорного напряжения

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

Осциллограмма метаний компаратора

Осциллограмма метаний компаратора

Скачать проект для Proteus 7.6

9 комментариев на « Работа с компаратором PIC16F628A»

  1. Павел пишет 20.03.2011 в 23:51 #

    приветствую всех
    у меня скорей вопрос, можно ли эту конструкцию использовать
    как эл. схему самой рулевой машинки, предположим большей
    мощности естественно после доработки

  2. Alex_EXE пишет 21.03.2011 в 09:31 #

    Схему то использовать можно, но машинка плавно поворачивать не будет. Плюс нужна другая прошивка.
    При добавлении ключей для моторов и ШИМа в прошивку МК машинкой можно будет управлять с переменника.

  3. Павел пишет 21.03.2011 в 16:23 #

    я просто долго ищу схему рулевой машинки на
    PICe, но к сожалению результаты нулевые, поэтому цепляюсь за всё,
    что мало мальски напоминает работу сервы,
    сам к сожалению в программировании даже не юзер
    вот и возник вопрос, спасибо.

  4. Garic_ пишет 19.03.2012 в 01:09 #

    Затронуло высказывание-(Многие микроконтроллеры содержат встроенные модули компараторов.).
    Что вы можете посоветовать из микроконтроллеров, для использования аналогового видео сигнала (АЦП)?

  5. Lee пишет 19.03.2012 в 09:46 #

    Здравствуйте! У меня наверно дилетантский вопрос но, он его решение очень важно. Есть тензо-датчик веса, каких уйма на рынке у них у всех есть 4 контакта — Питание, Земля, Сигнал + и Сигнал —
    Соответственно между Сигнал + и Сигнал — при изменении давления на тензодатчик — возникает разница напряжения как правило милли/микровольты. Так вот вопрос — Есть ли способ завести эти 2 контакта на какую либо схему и уже на одном контакте получать разницу? То есть использовать компараторы или сумматоры или делители? Я не специалист в этом поэтому и прошу консультации.

  6. Alex_EXE пишет 20.03.2012 в 23:43 #

    Garic_
    По этому вопросу нечего подсказать не могу.
    Lee
    Если не ошибаюсь – смотрите в сторону операционных усилителей.

  7. Алексей пишет 26.05.2012 в 22:41 #

    В Протеусе второй светодиод ничего не сигнализирует…

  8. ИЛЬЯ пишет 04.08.2013 в 18:10 #

    Спасибо за объяснение «Работа с компаратором» ,я просто не знал как с ним работать в mikroPascal PRO for PIC,но всё понял.

  9. ил пишет 21.06.2014 в 20:39 #

    спасибо за инфу помогло мерить напряжение борт сети

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

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