Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:aruno:exp8 [2020/05/28 13:29] alexnikproducts:aruno:exp8 [2020/08/28 11:48] (текущий) alexnik
Строка 1: Строка 1:
 ===== Эксперимент 8. Диммер ===== ===== Эксперимент 8. Диммер =====
  
-Диммер — электронное устройство, предназначенное для изменения электрической мощности (регулятор мощности). Обычно используется для регулировки яркости света, излучаемого лампами накаливания или светодиодами.+Диммер — электронное устройство, предназначенное для изменения электрической мощности (регулятор мощности). Обычно используется для регулировки яркости света, излучаемого лампами накаливания или светодиодами.\\ 
 +Регулировку яркости светодиода будем производить при помощи переменного резистора, это устройство состоит из полукруглой пластины, 
 +покрытой веществом, имеющим электрическое сопротивление, 
 +и скользящего контакта с ручкой. У переменного резистора 
 +три вывода — по концам пластины и скользящий контакт. 
 +Сопротивление меняется в зависимости от длины отрезка 
 +резистивной пластины от ее начала до скользящего контакта. Чем 
 +больше этот путь, тем выше сопротивление.
  
-==== Схема эксперимента ====+{{ :products:esp-iot:varr.png?nolink |}} 
 +//Рисунок 1. Переменный резистор. Внешний вид, устройство и условное обозначение//
  
-{{ :products:esp-iot:exp7.1.png?nolink |}}+Переменный резистор можно представить как схему из двух резисторов 
 +{{ :products:esp-iot:varr.1.png?nolink |}} 
 + 
 +==== Делитель напряжения ==== 
 +С помощью переменного резистора будем получать аналоговый сигнал. 
 +Используем широко распространенную схему резисторного 
 +делителя напряжения. Резисторный делитель — это два 
 +последовательных участка цепи, называемых плечами, сумма 
 +напряжений на которых равна напряжению питания. Плечо между 
 +минусом питания и средней точкой называют нижним, а другое — 
 +верхним. 
 + 
 +{{ :products:esp-iot:varr.2.png?nolink |}} 
 + 
 +Резисторный делитель используется для деления напряжения. 
 +Например, если верхнее и нижнее плечи имеют одинаковые 
 +сопротивления, то напряжение на средней точке делителя равно 
 +половине напряжения питания. Такой делитель делит напряжение 
 +на 2. 
 +Подключим нижнее плечо с земле, а верхнее к напряжению питания. Тогда при вращении ручки переменного резистора на его средней точки напряжение будет изменяться от 0 до 5 в. Подключим среднюю точку ко входу аналого- цифрового преобразователя (на контроллере это A0...A5) и будем измерять напряжение на ней. 
 +<WRAP center round tip 60%> 
 +Микроконтроллеры Atmega, содержат шестиканальный [[theory:adc | аналого-цифровой преобразователь (АЦП)]]. Разрешение преобразователя составляет 10 бит, что позволяет на выходе получать значения от 0 до 1023. Основным применением аналоговых входов большинства платформ Arduino является чтение аналоговых датчиков. 
 +</WRAP> 
 + 
 +==== Схема эксперимента ==== 
 +{{ :products:ardu:adcexp_sch.png?nolink |}}
 //Рисунок 1. Электрическая принципиальная схема эксперимента// //Рисунок 1. Электрическая принципиальная схема эксперимента//
  
-{{ :products:esp-iot:7.2_m.png?direct&600 |}}+{{ :products:ardu:exp05.png?direct&400 |}}
 //Рисунок 2. Монтажная схема эксперимента// //Рисунок 2. Монтажная схема эксперимента//
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
  
-<file python Exp15.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file cpp Exp8[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from machine import Pin, PWM +const int analogPin = A0;//константа с номером пина для переменного резистора 
-_init()+const int ledPin = 3;//константа с номером пина(ШИМдля светодиода 
 +int inputValue = 0;//значение считанного аналогового сигнала 
 +int outputValue = 0;//коэффициент заполнения ШИМ сигнала
  
-LedPin = 15 +void setup() { 
-led = Pin(LedPin, Pin.OUT+ }
-pwmLed = PWM(led)+
  
-adc machine.ADC(0+void loop() { 
- +   inputValue analogRead(analogPin);//считываем аналоговый сигнал и записываем его в переменную 
-while True: +   outputValue map(inputValue,0,1023,0,255);//преобразуем считанные данные из интервала 0-1023 пропорционально в интервал 0 to 255 
-    value adc.read() +   analogWrite(ledPin,outputValue);//формируем ШИМ сигнал в соответствии с конвертированными данными 
-    pwmLed.duty(value)+ }
 </file> </file>
  
-В этой программе для нас нет ничего нового. Как обычно мы настроили вывод для светодиода, создали объект пина для него. Создали объект ШИМ. Создали объект АЦП. В бесконечном цикле считываем показания АЦП и передаем их в объект ШИМ как коэффициент заполнения.+Давайте посмотрим, как все работает.\\ 
 +в **строке 10** считываем аналоговый сигнал с пина к которому подключен переменный резистор и записываем его в переменную **inputValue**\\ 
 +''   inputValue = analogRead(analogPin);''\\ 
 +в **строке 11** с помощью функции **map()** конвертируем сигнал записанный в переменную **inputValue** из диапазона 0-1023 (аналогового сигнала) в диапазон 0-255 (ШИМ сигнала) и записываем его в переменную **outputValue**\\ 
 +''   outputValue = map(inputValue,0,1023,0,255);''\\ 
 +и в **строке 12** формируем ШИМ сигнал на пине к которому подключен светодиод с коэффициентом заполнения записанным в переменную **outputValue** ранее\\ 
 +''   analogWrite(ledPin,outputValue);''\\ 
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====