визначник кольору

Продовжуємо вивчення датчика. Мікросхема має корпус SOIC-8. Один висновок - вихід для вимірювання частоти, перетвореної з інтенсивності кольору. Два висновки - плюс і мінус харчування. Ще один висновок служить для включення датчика (активний рівень - 0). Ну, і найцікавіше - це чотири виведення, що визначають режим роботи датчика - S0 - S3. Висновки S0, S1 визначають шкалу частоти (в залежності від комбінації високих і низьких потенціалів на цих висновках). Два висновки можуть дати чотири комбінації режимів:

  • 0 - відключити вихід частоти
  • 1 - шкала 2% від 600 кГц максимальної можливої ​​частоти
  • 2 - шкала 20% від 600 кГц максимальної можливої ​​частоти
  • 3 - шкала 100% від 600 кГц максимальної можливої ​​частоти

Далі два висновки S2, S3, вони визначають режим вимірювання кольору, також два висновки дають чотири комбінації режимів:

  • 0 - використовуються фотодіоди з червоним фільтром
  • 1 - використовуються фотодіоди з синім фільтром
  • 2 - використовуються фотодіоди без фільтра
  • 3 - використовуються фотодіоди з зеленим фільтром

Тепер, знаючи призначення і функціонал висновків датчика можна спокійно підключати його до мікроконтролеру і вимірювати кольори, керуючи датчиком. Таким чином, датчик працює наступним чином - висновки S2, S3 задають використовуваний фільтр фотодіодів, світло, відбите від поверхні предмета певного кольору потрапляє на фотодіоди датчика, далі інтенсивність світла конвертується в частоту (шкала частоти задана висновками S0, S1) і отримана частоти надходить на вихід датчика. Однак не все так просто, якщо просто виміряти частоту і прийняти її за кольору, то отримаємо швидше за все кашу. В документації на датчик є таблиця, яка визначає пропускну здатність фільтрів фотодіодів щодо певних довжин хвилі (як вам відомо, довжина хвилі визначає спектр видимих ​​кольорів). І щодо цих даних потрібно підібрати коефіцієнти для частот трьох кольорів фільтрів, щоб виміряні дані відповідали дійсності. Для зручності виміряні частоти можна перевести в формат R-G-B (від 0 до 255 за кожним з квітів). Для цього береться використовувана шкала (2%, 20% або 100%) і приймається за максимум, тобто за 255 (для шкали 20% значення 255 відповідатиме 120 кГц) і через пропорцію знаходимо поточне значення кольору щодо виміряної частоти. Але просто кольорова папірець володіє маленькою яскравістю, тому отримані дані можна просто помножити все на 5 чи інший зручний значення, інакше всі отримані кольору будуть близькі до сірих або темних відтінків, підсвічування при світлі дня не сильно допомагає, зате при відсутності світла якраз до речі. При вимірюванні кольору RGB світлодіоди домножать не буде потрібно, тому що випромінювання світлодіодів дають хорошу яскравість для нашого датчика кольору.

Параметри мікросхеми (датчика):

  • напруга живлення від 2,7 В до 5,5 В
  • високий вхідний рівень від 2 В до напруги харчування
  • низький вхідний рівень від 0 В до 0,8 В
  • температура використання від -40 до 70 градусів за Цельсієм
  • струм споживання від 1,4 до 2 мА
  • максимальна температура пайки 260 градусів за Цельсієм

Для побудови конструкції на мікроконтролері будемо використовувати готовий китайський модуль датчика на TCS3200 (TCS230):

визначник кольору

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

Схема пристрою визначника кольору представлена ​​нижче:

визначник кольору

Серцем схеми є мікроконтролер Atmega8. Даний мікроконтролер можна використовувати як в корпусі DIP-28, так і в СМД виконанні в корпусі TQFP-32. Резистор R3 необхідний для запобігання мимовільного перезапусканія мікроконтролера в разі появи випадкових перешкод на виведенні PC6. Резистор R3 підтягує плюс харчування до цього висновку, надійно створюючи потенціал на ньому. Для індикації використовується рідко кристалічний (РК або LCD) дисплей SC1602. Він має 2 рядки символів по шістнадцять штук в кожній з них. ЖК дисплей підключається до мікроконтролера по чотирьох бітної системі. Змінний резистор R2 необхідний для регулювання контрасту символів на дисплеї. Обертанням движка цього резистора добиваємося найбільш чітких для нас показань на екрані. Підсвічування РК дисплея організована через висновок "А" і "К" на платі дисплея. Підсвічування включається через резистор, що обмежує струм - R1. Чим більше номінал, тим тьмяніше буде підсвічуватися дисплей. Однак нехтувати цим резистором не варто, щоб уникнути псування підсвічування. Кнопка S1 здійснює скидання мікроконтролера (всієї схеми). Як тактового генератора використовується внутрішній генератор мікроконтролера на частоту 8 МГц. Проект даного пристрою розроблявся тільки для ознайомлення і навчання. Для більш точного вимірювання рекомендується використовувати зовнішній кварцовий генератор (хоча в нормальних умовах при нормальній кімнатній температурі особливої ​​різниці в точності можна і не помітити між внутрішнім генератором і кварцом).

Як датчик кольору використовується вище згаданий модуль.

Пристрій збиралося на макетної платі для мікроконтролера Atmega8:

визначник кольору

визначник кольору

Алгоритм роботи мікроконтролера наступний: коротко це на початку инициализируются всі налаштування, потім запускається дозвіл на переривання, по зовнішнім переривань вважається кількість імпульсів частоти від датчика, коли спрацює переривання по переповнення таймера певну кількість разів (щоб пройшла 1 секунда), переривання глобально забороняються і відбувається підрахунок частоти і її конвертація в потрібне значення, а також висновок цього значення на дисплей, потім використовуватимуться для іншого фільтра датчика кольору, по завершенні ці операцій переривання знову глобально вирішуються і відбувається підрахунок імпульсів за зовнішніми переривань і так далі по колу перебираючи все три фільтра фотодіодів. На екрані відображається три значення кольорів - червоного, зеленого і синього. Калібрувальні коефіцієнти підбиралися експериментально багаторазовими експериментами з показаннями і прошивкою мікроконтролера. Вихідний код додається нижче.

Для програмування мікроконтролера ATmega8 необхідно знати конфігурацію фьюз бітів (скріншот зроблений в програмі AVR Studio):

визначник кольору

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

Схожі статті