АЦП на TINY13 і 16 світлодіодів

В один прекрасний осінній вечір застало скукотище, та ще й вдома. Лежали переді мною на столі 16 світлодіодів і маленька ATtiny13, та ще й без діла. Тут я згадав, як років так 5 тому складав у коледжі стенд для демонстрації вольтамперних характеристик, у якому прийшла ідея використовувати дешифратор 4х16 К555ИД3, хоча пізніше довелося робити на КР1533ИД3

Розпіновка КР1533ИД3

Виводи W0 і W1 називаються дозволяючими, якщо на обох виводах присутній лог. «0», то й на виводах 0-15 також присутній сигнал з таким рівнем, причому на якому конкретно залежить від рівнів напруги на входах 1-8. Наприклад, якщо лог. «1» присутня на вході 2 і 8, то лог. «0» буде присутній на виході 10, 10102 =10, якщо на всі входи 1-8 подати лог. «1», то лог. «0» з'явиться на виході 15, 11112=15. Звідси не складно здогадатися, що це простий двійково/десятковий перетворювач, причому перетворювач двійкових чотирьохрозрядних чисел (входів - всього 4).
Використовуючи мікроконтролер, можна досить легко ним управляти, тому я вирішив зібрати АЦП на tiny 13 і за його допомогою керувати 16-ю світлодіодами за допомогою даного дешифратора.

Програма для мікроконтролера, а також її налагодження проводилася в середовищі Flowcode v.4.3.6.61. Сама програма досить проста і виглядає наступним чином:

Програма в Flowcode

Спочатку ми зчитуємо дані з АЦП0, перший вихід мікроконтролера, і отримані дані прив'язуємо до змінної ADC0, далі цю змінну ділимо на 10 (можна і не ділити, можна ділити на більше число – від цього залежить кінцева змінна. А від неї залежить поведінка світлодіодів) і результат прив'язуємо до змінної PORT, яка в підсумку видає сигнали на виходи мікроконтролера PB0-PB3. Змінні ADC0 і PORT мають формат byte, тому максимальне їх значення не може перевищувати 255. А так як значення змінної PORT видається тільки на 4 виводи, то максимальне значення може бути рівно 15. У цьому і вся суть. Подавши на АЦП контролера сигнал з лінійного виходу, як у моєму випадку, виходить досить незвичайна «гра» світлодіодів, яка залежить від рівня напруги на вході і швидкості перетворення, а також часу затримки, в даному випадку вона дорівнює 10 мс.

Під час налагодження на рисунку видно, що значення змінної ADC0 дорівнює 107, а змінної PORT 10, значення якої також демонструють запалені світлодіоди, підключені до виводів  PB1, PB3, оскільки число 10102=10. Якщо цю комбінацію подати на входи раніше розглянутого дешифратора, причому PB0 з'єднати з входом 1, PB1 з входом 2, PB2 з входом 4, і PB 3 з входом 8, нуль з'явиться на виході з номером 10 (1 вивід мікросхеми).

Параметри АЦП налаштовані, як показано, на рисунку нижче:

Параметри АЦП

Середнє значення змінної ADC0 отримуємо протягом 100 циклів програми, швидкість перетворення дорівнює FOSC/128, в якості опорного використовується рівень напруги на виводі VDD.

Після налагодження пора зібрати схему:

Схема пристрою

Живлення подається на роз'єм J1, сигнал від аудіопристрою на J2, причому звертаю увагу на те, що вкрай не рекомендується подавати сигнал на АЦП мікроконтролера, якщо його рівень більший ніж Vdd, яке також має свої межі, не більше 5,5 вольт. Конденсатор С1 необхідний для усунення постійної складової вхідного сигналу, за допомогою змінного резистора можна змінювати ефект роботи світлодіодів.

Якщо на АЦП мікроконтролера планується подавати тільки постійне напруження, то ланцюг R1-C1 можна виключити.

Світлодіоди можна використовувати різних кольорів світіння, резистор R2 обмежує протікаючий через них струм.

При перевірці пристрою необхідно на верхній вивід резистора R1 подати напругу з виводу 8 мікроконтролера і змінюючи положення повзунка стежити за роботою світлодіодів, має вийти щось на зразок «біжучої стрічки» з реверсом, якщо повзунок обертати в різні сторони.

Мікроконтролер запрограмований за допомогою програматора ТРИТОН. Fuse біти виставлені на роботу від внутрішнього тактового генератора. Галочка позначає, що fuse біт запрограмований.

Конфігурація фьюзів

Для перевірки пристрій було зібрано за 10 хвилин на макетній платі SYB-120.

Фото готового пристрою

Джерела:

1. Гадре, Д. «Занимательные проекты на базе микроконтроллеров tinyAVR».
2. Євсеєв, А. Н. «Радіолюбительські пристрої для дому».

Нижче ви можете скачати вихідний код, прошивку та файл друкованої плати в форматі DipTrace

Список радіоелементів

Обозначення Тип Номінал Кількість Примітка
IC1 МК AVR 8-біт
ATtiny13
1 13-20PU
IC2 Мікросхема КР1533ИД3 1
С1 Конденсатор 1 мкФ 1
R1 Змінний резистор 10 кОм 1
R2 Резистор
100 Ом
1
HL1-HL16 Світлодіод 16
J1, J2 Роз'єм 2

Прикреплені файли:

Top