PSoC Курс: 3. ADC + LCD

В цій частині я опишу як використати ADC для вимірювання, як конвертувати виміряні значення в значення напруги і вивести ці значення на LCD. 

Для цього прикладу використані наступні плати:

1. CY8CKIT-042 PSoC 4 Pioneer Kit  

998

 

2. SC1602AN – LCD дисплей

sam_0278

 

Практична частина

Як створювати проект показано в попередній частині, тому я не буду описувати цей етап. Після цього переходимо на TopDesign проекту і добавимо з бібліотеки компонентів  та змінимо їхні властивості:

1. Analog Pin – для зручності перенумеруємо його на Vin та дозволимо зовнішні з’єднання для цього піна щоб можна було підключити off-line компоненти для кращої інформативності:

2.Sequencing SAR ADC – зробимо коротку назву ADC, використовуємо 1 канал ADC, звичайний режим роботи з усередненням:

На вкладці General змінимо частоту дискретизації(sample rate), виберемо джерело опорної напруги (Vref), вимірювання відносно опорної напруги, оскільки вимірюваний сигнал однополярний (від 0 до Vref) – результат повинний бути беззнаковий (Unsigned), вихідний результат буде усередненим за 64 вибірки.

3.Character LCD – потрібно тільки перейменувати компонент для зручності

Всі компоненти налаштовані, можна переходити до створення схеми, тобто з’єднання компонентів між собою. В нас вийде наступна схема. Компоненти “Vdd”, “Vss”  та “R1” не беруть участі в роботі схеми, а використовуються тільки для інформативності.

Налаштуємо відповідності між схемою та виводами мікроконтроллера, потенціометр підключений до P2[0], а дисплей до P2[7:1]:

Після того як налаштована вся периферія і зроблені відповідні з’єднання, напишемо програму для роботи з нашою периферією:

програма дуже проста:  після ініціалізації і запуску ADC та LCD, відбувається циклічне читання результату ADC, перетворення його в mV за допомогою API функції

та відображення цього значення на дисплеї. Як видно більшу частину роботи складає проста конфігурація роботи компонентів. Можна покращити програму, зробивши читання і вивід на дисплей наприклад з періодичністю 1с, використавши для цього переривання апаратного таймеру.