(098) 067-12-26 Киевстар (098) 067-12-26   Киевстар
(066) 142-24-48 Vodafone (066) 142-24-48   Vodafone
(098) 067-12-26 Lifecell (063) 642-36-59   Lifecell
 info@arduino.ua
График работы магазина:
Пн-Пт: 9.00 - 19.00
Сб: 10.00 - 19.00
Вс: выходной
г. Киев, ул. Васильковская, 30
ст.м. "Васильковская"
Каталог

Краткое руководство по конфигурационному файлу config.txt мини-компьютера Raspberry Pi. Часть - 1

В первой части цикла статей по настройке конфигурационного файла config.txt мини-компьютера Raspberry Pi, мы кратко опишем опции управления температурным контролем процессора (SoC), настройки его тактовых частот и напряжения питания.

Як приучити дитину спати без світла і не боятись темноти

Як приучити дитину спати без світла і не боятись темноти? Малі діти не можуть спати без світла, бо бояться темноти. Але ж спати в темноті ліпше, ніж при світлі. Мій проект - лампа на пульті дозволить рішити питання.

Микроконтроллеры семейства STM8

Компания STMicroelectronics выпускает 2 основные линейки микроконтроллеров (далее МК): 8ми разрядные STM8 и 32х разрядные STM32 (на ядре Cortex).МК семейства STM8 обладают меньшей производительностью чем STM32, но при этом обладают следующими

Лазерний гравер на базі кульмана

Іноді постає питання в гравіюванні великої площі. Для вирішення цієї задачі і було затіяно даний проект при відносно не великій його вартості. В інтернеті легко знайти багато готових проектів плотерів, лазерних граверів і навіть 3д принтерів на базі

Светодиодное освещение рабочего стола на Arduino

Хороший свет на рабочем месте всегда был одним из главных “пунктиков” для меня. Особенно когда сидишь ночью в темноте и пишешь курсач или кодишь в VS - из-за высокой контрастности, между светлым монитором и темным задним фоном, глаза сильно
Напиши статью и получи скидку!

Датчику кольору TCS230 в системі сортування за кольором на Arduino

2020-07-29

Все статьи →

Андрій Назаренко

Колись на виконанні дипломного проекту мені запропонували реалізувати свою ідею на реальному прототипі, сенс даної системи в тому, що вона автоматично сортує предмети на відповідні лінії, як продукцію на підприємстві але за кольором цього предмету.

Ідея

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

Вибір сенсору для розпізнавання кольору

Найбільшу увагу в цій системі було приділено датчику кольору, так як це основний сенсор, мій вибір пав на TCS230 він простий у використанні і як для прототипу, на мою думку, є чудовим і сумісний з платформою Arduino (у
проекті використано Arduino Mega).

Схему датчика і його підключення можна знайти в інтернеті або в даташиті на сенсор. Нижче наведено приклад підключення до Arduino.

  • VCC – 5В
  • GND – GND
  • S0 – пін 5
  • S1 – пін 6
  • S2 – пін 7
  • S3 – пін 8
  • Out – пін 9

Датчик слід розташовувати на малій відстані до об’єкту, у описі датчика зазначено, що оптимальна відстань для коректної роботи повинна становити 10 мм. Якщо є бажання ознайомитися з роботою сенсору, то
можна скористатися даташитом.

Налаштування і програмна реалізація

Була поставлена задача, що сенсор повинен аналізувати три кольори, синій, червоний і зелений. Найбільша проблема при налаштуванні сенсору виникала при перевірці, а саме велика погрішність розпізнавання кольорів, іноді замість зеленого розпізнавався, як синій і тому подібне. Для того щоб налаштувати правильні діапазони необхідно відкрити монітор порту (додати у програмі виведення у порт), швидкість 9600 бод, і після того підносити до датчика по черзі об’єкти, у порті відображатимуться значення, що відповідають певному кольору, а після ці значення записати. Іноді ці значення можуть відрізнятися від необхідних, тому їх слід відредагувати. Нижче наведені мої значення вже кореговані. При використанні інших сенсорів цього типу значення можуть відрізнятися.

redColor = map(redFrequency, 25, 72, 255,0);
greenColor = map(greenFrequency, 30, 90, 255, 0);
blueColor = map(blueFrequency, 25, 70, 255, 0);

Оголошення деректив для датчика кольору TCS230

#define S0 5
#define S1 6
#define S2 7
#define S3 8
#define sensorOut 9

Змінні для збереження частоти і даних при зчитуванні кольору

int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;
int redColor = 0;
int greenColor = 0;
int blueColor = 0;

Ініціалізація датчика кольору в функції setup

pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);


Маштабування для датчика кольору 20% в функції setup (для Arduino доцільно використовувати 20%)

digitalWrite(S0,HIGH);
digitalWrite(S1,LOW);

Після ініціалізації датчика у цикл loop необхідно додати наступний код, він відповідає за виконання процесу аналізу і збереження даних кольору.

зчитування з датчика кольору для червоного діапазону

digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
redFrequency = pulseIn(sensorOut, LOW);
redColor = map(redFrequency, 25, 72, 255,0);
_delay_ms(100);

зчитування з датчика кольору для зеленого діпазону

digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
greenFrequency = pulseIn(sensorOut, LOW);
greenColor = map(greenFrequency, 30, 90, 255, 0);
_delay_ms(100);

зчитування з датчика кольору для синього діапазону

digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);
blueFrequency = pulseIn(sensorOut, LOW);
blueColor = map(blueFrequency, 25, 70, 255, 0);
_delay_ms(100);


Для використання функції _delay_ms(…); необхідно додати бібліотеку #include <util/delay.h>, але можна використати стандартну delay з набору Arduino IDE.

Наступна частина коду відповідає за дії, які необхідно виконати відповідно при визначенні певного кольору, реалізується у вигляді оператору if і логічних операторів “>” та “&&” .

Якщо виявлено червоний колір

if(redColor > greenColor && redColor > blueColor){

}

Якщо виявлено зелений колір

if(greenColor > redColor && greenColor > blueColor){

}

Якщо виявлено синій колір

if(blueColor > redColor && blueColor > greenColor){

}

Висновки

В результаті прототип працює без нарікань, інші частини системи можливо і доречно було б оптимізувати, але датчик кольору при роботі помилок не видавав. Цей прототип є лише невеликим прикладом для застосування датчика кольору TCS230.

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Пока нет отзывов на эту статью.
оплата картами Visa и MasterCard