Цифровий вимірювач інтенсивності світла
Мета цього проекту продемонструвати техніку побудови цифрового вимірювача інтенсивності світла за допомогою LDR датчика.
Вимірювання інтенсивності світла відіграє дуже велику роль у таких галузях, як фізика, техніка, різні виробництва. Наприклад, у сфері машинобудування такі види вимірювань необхідні для розробки оптимальних умов освітлення в приміщенні. При фотографуванні інтенсивність світла гарантує хорошу якість зображення. Фототранзистор або фоторезистор з аналоговим LED вольтметром, як на lm3914, так і на мікроконтроллері та АЦП, є простим вимірювачем інтенсивності світла. Недолік саморобного пристрою в тому, що він вимірює міру відносної інтенсивності світла і не здатний надавати вимірювання за абсолютною шкалою. Проте, знаючи характеристику LDR датчика, можна знайти зв'язок зі стандартною одиницею вимірювання інтенсивності світла. У випадку, якщо характеристики датчика невідомі, то можна провести калібрування датчика за допомогою змінного джерела світла. Цей проект на мікроконтроллері з LDR датчиком для вимірювання інтенсивності світла в Люксах. Люкс - це одиниця вимірювання освітленості (в СІ), а також міра освітленості Люмен на квадратний метр (lm/m2). У проекті використовується мікроконтроллер Atmel ATmega8L.
Дана схема не потребує пояснення через її простоту. Я використав 28 контактну AVR демонстраційну плату, яка забезпечує всі необхідні інтерфейси. LDR використовується як датчик світла. Звичайно, я міг би використовувати передові світлові датчики, такі як TSL257 або TSL230, але вони досить дорогі та рідкісні. Фототранзистор також хороший варіант, але фототранзистори і фотодіоди сильно реагують на швидко змінювані сигнали, що небажано тут. Крім того, звичайні фототранзистори і фотодіоди більш специфічні для певної довжини хвилі і, отже, не можуть бути однаково чутливими до тієї ж інтенсивності з різними довжинами хвиль. Згідно зі схемою, показаною нижче, LDR і точність аналогової форми залежать від дільника напруги. На виході цього дільника аналоговий фільтр нижніх частот (ФНЧ) 3-го порядку. ФНЧ тут необхідний для зниження шуму і небажаних високочастотних переходів у зв'язку з раптовими спалахами, мерехтінням, бликами, пульсуючими джерелами світла та іншими.
Вихід з ФНЧ подається на перший канал аналогового перетворювача АЦП0 (pin C0). Додаткове формування сигналу виконується всередині мікроконтроллера, виконуючи середньоквадратичне усереднення вибірок АЦП. Таким чином, виконується як аналогова, так і цифрова фільтрація. Результатом такої подвійної фільтрації є висока ступінь обробки сигналу, яка є достатньо надійною та точною, ніж при прямому підключенні АЦП. Однак труднощі виникають як на апаратному, так і програмному забезпеченні. Інші процеси після формування сигналу відбуваються всередині AVR мікроконтроллера. 16 × 2 буквено-цифровий ЖК-дисплей підключений до PORT B на AVR мікроконтроллері, який показує виміряний рівень освітленості в люксах. Слід зазначити, що AVR працює на 8.0 МГц, отриманих від внутрішнього генератора.
Прошивка для ATmega8L писалася в MikroC Pro для AVR, компілюється вона компілятором Мікроелектроніка. Внутрішній RC генератор на 8 МГц використовується в якості джерела синхронізації для ATmega8L. Чіп був запрограмований з найменшим байтовим значенням 0xE4 і найбільшим значенням 0xC9. Байти блокування не використовувалися, оскільки вони були не потрібні. Основна програма спочатку ініціалізує необхідні змінні, регістри та бібліотечні функції. У основному циклі, значення RMS 512 зразків АЦП, які розраховуються на основі відповідності "if", далі визначається відповідне значення люкс і відображається на екрані.
Калібрування LDR датчика
Я відкалібрував вихід LDR датчика кратним 1600-та люксам за допомогою різних джерел світла. Я використовував фотометр LM631. В якості різних джерел світла я використовував білу лампу розжарювання з електронним регулятором, змінюючи напругу на лампі, змінюється інтенсивність світла. Фотометр і LDR розташовані на однаковій відстані від джерела світла. Я змінював інтенсивність світла в кроці 1600 люкс за допомогою світильника для читання.
Нижче ви можете завантажити вихідний код проекту та проект в Proteus
- AVRLuxMeter.zip (120 Кб)