Вы вошли на сайт, как Гость
Регистрация

Использование аналого-цифрового преобразователя

Использование аналого-цифрового преобразователя (A/D)
(Example №4)

В этом примере используется A/D конвертер микроконтроллера PIC16F887. Переменный аналоговый сигнал подается на канал AN2, в то время как 10-битные результат преобразования показана на портах B и D (8 младших разрядов порта D и 2 старших бит порта B). Земля используется в качестве отрицательного опорного напряжения Vref-, в то время как положительное опорное напряжение подается на вывод AN3. Это позволяет шкалы напряжения измерение "растягивать и сжимать". Другими словами A/D конвертер всегда генерирует 10-битный двоичный результат, который имеет 1024 уровня напряжения. Разница между двумя уровнями напряжения не всегда та же самая. Чем меньше разница между Vref + и Vref-, тем меньше разница между двумя из 1024 уровней. Как видно, A/D конвертер способен реагировать на незначительные изменения напряжения.

/*Header******************************************************/

unsigned int temp_res;

void main() {
    ANSEL = 0x0C;               // Выводы AN2 и AN3 настроены как аналоговые 
    TRISA = 0xFF;               // Все входы порта A настроены как входы
    ANSELH = 0;                 // Осталльные выводы настроены как цифровые
    TRISB = 0x3F;               // Для порт B входы RB7 и RB6 настроены на вывод
    TRISD = 0;                  // Все входы порта A настроены как выходы
    ADCON1.F4 = 1 ;             // Установить опорное напряжение с RA3
    
    do {
        temp_res = ADC_Read(2); // Результат преобразования заносится в temp_res
        PORTD = temp_res;       // 8 разрядов отображены в порт D
        PORTB = temp_res >> 2;  // 2 разряда в битах RB6 и RB7 порта B
    } while(1);                 // Бесконечный цикл
}

Для того, чтобы этот пример работал правильно, необходимо поставить галочку в библиотеке АЦП в Library Manager до компиляции.