PSoC Курс: 3. ADC + LCD

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

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

1. CY8CKIT-042 PSoC 4 Pioneer Kit  

998

2. CPA 101 Shield – перехідна плата , яка використана для зручності, щоб уникнути з’єднань на макетній платі. На цій платі розміщені потрібні для роботи компоненти, роз’єм для дисплея, та потенціометр який буде змінювати значення напруги на вході ADC:

sam_0273

3. 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” не беруть участі в роботі схеми, а використовуються тільки для інформативності.

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

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

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

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

Демонстрація роботи