Следующая версия | Предыдущая версия |
products:aruno:exp12 [2020/06/01 20:02] – создано alexnik | products:aruno:exp12 [2020/06/08 17:45] (текущий) – alexnik |
---|
===== Эксперимент 18. Люксметр ===== | ===== Эксперимент 12. Люксметр ===== |
| |
Люксметр (от лат. lux — «свет» и др.-греч. μετρέω «измеряю») — прибор для измерения освещённости, один из видов фотометров. В состав люксметра обязательно входит фоточувствительный элемент, например, изученный нами, фоторезистор. Построим простой люксметр на базе фоторезистора. Настоящий люксметр показывает результаты измерения в [[https://ru.wikipedia.org/wiki/%D0%9B%D1%8E%D0%BA%D1%81|люксах]], но в нашем эксперименте мы ограничимся условными единицами — результатом преобразования АЦП, которое и будем выводить в терминал пользователю. | Люксметр (от лат. lux — «свет» и др.-греч. μετρέω «измеряю») — прибор для измерения освещённости, один из видов фотометров. В состав люксметра обязательно входит фоточувствительный элемент, например, изученный нами, фоторезистор. Построим простой люксметр на базе фоторезистора. Настоящий люксметр показывает результаты измерения в [[https://ru.wikipedia.org/wiki/%D0%9B%D1%8E%D0%BA%D1%81|люксах]], но в нашем эксперименте мы ограничимся условными единицами — результатом преобразования АЦП, которое и будем выводить в терминал пользователю. |
| |
==== Схема эксперимента ==== | ==== Схема эксперимента ==== |
| {{ :products:ardu:exp12_sch.png?nolink |}} |
| |
{{ :products:esp-iot:exp7.5_sch.png?nolink |}} | |
//Рисунок 1. Электрическая принципиальная схема эксперимента// | //Рисунок 1. Электрическая принципиальная схема эксперимента// |
| |
Схема представляет собой обычный резисторный делитель напряжения, который мы [[products:laboratory_iot:exp14|рассматривали ранее]]. В верхнем плече делителя находится фоторезистор, а в нижнем постоянный резистор на 10 кОм. Когда фоторезистор находится в темноте он обладает большим сопротивлением, и ток через него маленький. Поэтому напряжение на средней точке делителя маленькое. Когда освещенность фоторезистора увеличивается, его сопротивление уменьшается, а ток через него растет. Фоторезистор "подтягивает" среднюю точку к напряжению питания и напряжение на средней точке увеличивается. Напряжение средней точки делителя мы измеряем с помощью АЦП. | Схема представляет собой обычный резисторный делитель напряжения, который мы [[products:aruno:exp8|рассматривали ранее]]. В верхнем плече делителя находится фоторезистор, а в нижнем постоянный резистор на 10 кОм. Когда фоторезистор находится в темноте он обладает большим сопротивлением, и ток через него маленький. Поэтому напряжение на средней точке делителя маленькое. Когда освещенность фоторезистора увеличивается, его сопротивление уменьшается, а ток через него растет. Фоторезистор "подтягивает" среднюю точку к напряжению питания и напряжение на средней точке увеличивается. Напряжение средней точки делителя мы измеряем с помощью АЦП. |
| |
{{ :products:esp-iot:exp7.5.png?direct&600 |}} | {{ :products:ardu:exp12.png?direct&600 |}} |
//Рисунок 2. Монтажная схема эксперимента// | //Рисунок 2. Монтажная схема эксперимента// |
| |
==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== |
<file python Exp18.py[enable_line_numbers="2", start_line_numbers_at="1"]> | <file cpp Exp12[enable_line_numbers="2", start_line_numbers_at="1"]> |
from machine import Pin | const int NbrLEDs = 5; |
import time | const int ledPins[] = {2, 3, 4, 5, 6};//массив с номерами пинов контроллера |
_init() | const int photocellPin = A0; |
| int sensorValue = 0; |
adc = machine.ADC(0) | int ledLevel = 0; |
| |
while True: | void setup() { |
value = adc.read() | //настраиваем пины контроллера на вывод сигнала с помощью цикла |
print(value) | for (int led = 0; led < NbrLEDs; led++) { |
time.sleep(1) | pinMode(ledPins[led], OUTPUT); |
| } |
| } |
| |
| void loop() { |
| sensorValue = analogRead(photocellPin); |
| ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); |
| for (int led = 0; led < NbrLEDs; led++) { |
| if (led < ledLevel ) { |
| digitalWrite(ledPins[led], HIGH); // turn on pins less than the level |
| } |
| else { |
| digitalWrite(ledPins[led],LOW); // turn off pins higher than |
| } |
| } |
| } |
</file> | </file> |
| |
В программе мы создаем объект АЦП и в бесконечном цикле считываем результат преобразования, который выводим в терминал. | В программе используем **массив** для хранения номеров пинов контроллера к которым подключены светодиоды. |
| Считываем значение сигнала и с помощью оператора **map** преобразуем в количество светодиодов которые будем зажигать в цикле. |
| |
==== Дополнительное задание ==== | ==== Дополнительное задание ==== |
<WRAP center round tip 60%> | <WRAP center round tip 60%> |
* Если постоянный резистор и фоторезистор поменять местами, то поведение схемы изменится. Как? | * Попробуйте увеличить количество светодиодов. |
| * Поменяйте фоторезистор на переменный резистор. |
</WRAP> | </WRAP> |
| |