| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| зал [2021/10/30 18:42] – [Датчик температуры в TinkerCAD (TMP36)] serviko | зал [2021/12/07 19:31] (current) – [Задание для самостоятельной работы] serviko |
|---|
| |
| Для тестирования датчика TMP36, подключенного к порту A0, будем использовать светодиод, анод которого соединен с цифровым портом D3. Этот порт поддерживает широтно-импульсную модуляцию (ШИМ) и может выдавать значение от 0 до 255 для плавного изменения яркости свечения светодиода. | Для тестирования датчика TMP36, подключенного к порту A0, будем использовать светодиод, анод которого соединен с цифровым портом D3. Этот порт поддерживает широтно-импульсную модуляцию (ШИМ) и может выдавать значение от 0 до 255 для плавного изменения яркости свечения светодиода. |
| | |
| | <note important> |
| | В примере для упрощения схемы светодиод подключается без **токоограничивающего резистора**! Для устойчивой работы светодиода необходимо последовательно с анодом или катодом подключить резистор номиналом от 180 до 220 Ом. |
| | </note> |
| |
| {{ :wiki:praktika:zal:zal02.jpg }} | {{ :wiki:praktika:zal:zal02.jpg }} |
| | |
| | ---- |
| | |
| | ===Программный код=== |
| |
| Программный код, представленный на рисунке ниже, выводит во встроенный "Монитор последовательного интерфейса" два параметра: "данные температурного датчика на выводе" и данные "с аналогового вывода". | Программный код, представленный на рисунке ниже, выводит во встроенный "Монитор последовательного интерфейса" два параметра: "данные температурного датчика на выводе" и данные "с аналогового вывода". |
| Преобразует значение переменной из одного диапазона в другой. Например, значение переменной value, равное fromLow, будет преобразовано в число toLow, а значение fromHigh - в toHigh. Все промежуточные значения value масштабируются относительного нового диапазона [toLow; toHigh].</note> | Преобразует значение переменной из одного диапазона в другой. Например, значение переменной value, равное fromLow, будет преобразовано в число toLow, а значение fromHigh - в toHigh. Все промежуточные значения value масштабируются относительного нового диапазона [toLow; toHigh].</note> |
| |
| В блочном языке программирования TinkerCAD есть команда {{ :wiki:praktika:zal:map_.png}} | В блочном языке программирования TinkerCAD есть команда: {{ :wiki:praktika:zal:map_.png}} |
| Если использовать эту команду для преобразования "данных с аналогового вывода", то на выходе получаются значения: | Если использовать эту команду для преобразования "данных с аналогового вывода", то на выходе получаются значения: |
| * при диапазоне от 0 до 255 - от 4 до 89 | * при диапазоне от 0 до 255 - от 4 до 89 |
| * при диапазоне от 0 до 1024 - от 20 до 358 | * при диапазоне от 0 до 1024 - от 20 до 358 |
| |
| Опытным путем можно подобрать рабочий диапазон для команды. В этом случае на цифровой пин (к которому подключен светодиод) при температуре 20°C подается небольшое значение (порядка 40), то есть светодиод еле засветится, а при температуре 40°C подается максимальное значение 255, то есть светодиод будет светиться максимально ярко. | Опытным путем можно подобрать рабочий диапазон для команды: от -700 до 4550. В этом случае на цифровой пин (к которому подключен светодиод) при температуре 20°C подается небольшое значение (примерно 33), то есть светодиод еле засветится, а при температуре 40°C подается максимальное значение 255, то есть светодиод будет светиться максимально ярко. |
| | |
| | <note important>Мы выбрали диапазон температур исходя из того, что в дальнейшем arduino будет управлять не светодиодом, а двигателем (вентилятора, кондиционера и т.п.). Хотелось, чтобы реальный вентилятор начинал работать при небольшом превышении нормальной температуры и достигал своей максимальной производительности при жаре в 40°C. |
| | </note> |
| | |
| | Дополненный функцией **''map()''** - "**''СОПОСТАВИТЬ...''**" программный код управления светодиодом: |
| | |
| | {{ :wiki:praktika:zal:zal04.png }} |
| | |
| | ---- |
| | ---- |
| | |
| | ====Управление мощной нагрузкой==== |
| | Контроллер Arduino обычно выступает в роли логического (командного) устройства. Контроллер выдает команды, а другие, более сильные, более мощные устройства выполняют полезные действия. Представьте, как вы поворачиваете маленький кран рукомойника, а мощный насос продавливает по трубе под напором воду. И, чем больше вы поворачиваете кран, тем мощней струя воды. |
| | |
| | ===Транзисторный усилитель=== |
| | |
| | {{ :wiki:praktika:zal:zal05.png}}В электронных устройствах постоянного тока слабый управляющий (логический) сигнал превращают в сильный "усилители", которые строятся на основе [[https://ru.wikipedia.org/wiki/Транзистор|транзисторов]]. |
| |
| <note> | <note> |
| | **Транзистор** (от английских слов transfer — переносить и resistor — сопротивление) электронный полупроводниковый прибор, предназначенный для усиления, генерирования и преобразования электрических колебаний различных частот. |
| |
| | **Изобретен в 1948 г. американцами У.Шокли, У.Браттейном и Дж.Бардином** |
| </note> | </note> |
| | |
| | ---- |
| | |
| | ===Схема подключения=== |
| | На схеме к аналоговому порту A0 подключен датчик температуры TMP36, который определяет температуру окружающей среды. При достижении температуры выше 20°C, контроллер arduino начинает выдавать на цифровой порт D3 ШИМ-сигнал определенной величины. |
| | |
| | К порту D3 через резистор 100 Ом подключен контакт Gate (Затвор) полевого N-канального транзистора. К контакту транзистора Drain (Сток) подключен двигатель (вентилятора, кондиционера и т.п.). К другому контакту двигателя подключен мощный источник питания (в нашем случае на 5 вольт). Контакт Gate (Затвор) соединен с контактом arduino GND (Земля) через резистор 10 кОм. |
| | |
| | <note>//"Резистор на 100 Ом (можно ставить в диапазоне 100-500 Ом, мощность любая) выполняет защитную функцию: затвор полевика представляет собой конденсатор, в момент открытия затвора конденсатор начнёт заряжаться и в цепи пойдёт большой ток (практически короткое замыкание), который может повредить пин Ардуино. Резистор просто ограничивает ток в цепи пин-затвор и спасает пин от скачков тока"// (источник [[https://alexgyver.ru|AlexGyver]])</note> |
| | |
| | <note>//"Резистор на 10 кОм (можно ставить в диапазоне 5-50 кОм, мощность любая) выполняет подтягивающую функцию для затвора. Если случится так, что плата Ардуино выключена или сигнальный провод от неё отвалился – на затвор будут приходить случайные наводки и он может случайно открыться. Если в этот момент будет подключен источник питания – нагрузка тоже включится! Восстание машин начнётся именно с этого момента. Подтягивающий к GND резистор позволяет “прижать” затвор, чтобы он не открылся сам по себе"// (источник [[https://alexgyver.ru|AlexGyver]])</note> |
| | |
| | {{ :wiki:praktika:zal:zal06.png }} |
| | |
| | <note important>Обязательным условием устойчивой работы схемы является соединение контактов GND (земля) всех элементов вместе</note> |
| | |
| | ---- |
| | |
| | ===Программный код=== |
| | |
| | На рисунке выше температура датчика TMP36 25°C. При этом обороты двигателя 2846 rpm (обороты в минуты). С помощью программного кода сделаем так, чтобы двигатель начинал вращаться только при температуре выше 20°C и максимальные обороты набирал при температуре окружающей среды 40°C. При дальнейшем росте температуры, на пин D3 выдается значение 255 - максимальные обороты двигателя. |
| | |
| | **"TMP36_T"** и **"TMP36_A0"** - переменные для сохранения параметров, выдаваемых датчиком температуры TMP36. Заметьте так же, что, в соответствии с задачей, изменены параметры команды **''[СОПОСТАВИТЬ ... С ДИАПАЗОНОМ ... ОТ ... ДО ...]''** |
| | |
| | {{ :wiki:praktika:zal:zal07.png }} |
| | |
| | ---- |
| | ==== Задание для самостоятельной работы ==== |
| | === Уровень 1 === |
| | Если на arduino порты A0 и D3 заняты другим оборудованием. Что необходимо сделать для решения нашей задачи? Выполните необходимые действия и сохраните изменения в виде скриншотов. |
| | |
| | |
| | ---- |
| | [ [[start|На главную страницу]] ]. . . .[ [[спальня|Далее]] ] |