АЦП.РФ
разработка электроники

статьи

Работаем с АЦП на PIC

Аналого-цифровое преобразование играет большую роль. Цифровые системы часто имеют дело с аналоговыми сигналами: показания температуры, скорости, выход с микрофона и прочее. Прежде чем они будут прочитаны микроконтроллером, данные величины должны быть преобразованы в цифровой вид, который будет понятен микроконтроллеру. В этой статье я попробую продемонстрировать как прочитать выходной аналоговый сигнал, используя микроконтроллер PIC16F688 и вывести итог в виде цифрового сигнала на ЖК-дисплей.

Немного теории

Сначала качаем datasheet на PIC16F688. У испытуемого микроконтроллера имеется 10-битный АЦП с восемью входными каналами: RA0, RA1, RA2, RA4, RC0, RC1, RC2, RC3. При использовании АЦП они имеют специальные обозначения: AN0 - AN7. Данные выводы мультиплексированы в единый каскад выборки и удержания. Выход данного каскада соединён с входом АЦП. 10 – битный результат преобразования перемещается в специальные регистры АЦП: ADRESH (старший байт аналогово-цифрового преобразования) и ADRESL (младший байт аналогово-цифрового преобразования). Каждый из этих регистров является 8-битным. Работа аналого-цифрового преобразователя контролируется тремя регистрами: ANSEL, ADCON0 и ADCON1. Подробнее про эти регистры читайте в даташите.

Электрическая схема

Нижеприведённая схема демонстрирует 10-битное аналогово-цифровое преобразование используя микроконтроллер PIC16F688. Тестовое входное напряжение +5В для АЦП подаётся на RA2/AN2 через 5кОм потенциометр. Выбор напряжения в +5В обусловлен техническими характеристиками контроллера. 10-битный аналогово-цифровой преобразователь преобразует любую аналоговую величину в пределах от 0В до 5В, а в итоге мы получим цифровую величину от 0 до 1023. Данная величина будет отображена на жидкокристаллическом дисплее.

принципиальная схема

Тут вот уже реализованный проект

пример
плата

Програмное обеспечение

В программе необходимо настроить регистры ANSEL, ADCON0 и ADCON1. Т.к. RA2/AN2 используется как аналоговый вход, то необходимо это указать в регистре ANSEL. В регистре ADCON0 выбираем CHS1 и очищаем CHS0 и CHS2, делается это для того, чтобы канал AN2 был соединён с каскадом выборки и удержания. Очистка бита VCFG в регистре ADCON0 выбирает напряжение +5В в качестве опорного для АЦП. Регистр ADCON1 используется для выбора задающего генератора АЦП. Однако, в MicroC PRO для PIC имеется встроенная библиотечная функция ADC_Read(), которая по умолчанию использует внутренний RC генератор для работы АЦП. Вы не должны инициализировать регистр ADCON1. Ниже приведен пример программы.

Подключение LCD-дисплея смотрите в архиве. ADC.hex ; adc.txt

На рисунках ниже показаны цифровые значения при вращении потенциометра.

измерение 1
измерение 2
измерение 3

Разработка и производство электроники здесь

купить домен избранное

АЦП.РФ