Vikupautomsk.ru

Выкуп Авто МСК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Arduino для начинающих

Arduino для начинающих. Урок 9. Подключение датчика температуры и влажности DHT11 и DHT22

Продолжаем серию уроков “Arduino для начинающих”. Сегодня мы разберем подключение к Arduino датчиков температуры и влажности DHT11 и DHT22.

Датчики DHT11 и DHT22 не обладают высоким быстродействием и точностью, но зато просты, недороги и отлично подходят для обучения. Они выполнены из двух частей — емкостного датчика влажности и термистора. Чип, находящийся внутри, выполняет аналого-цифровое преобразование и выдает цифровой сигнал, который можно считать с помощью любого микроконтроллера.

Список деталей для сборки модели

Для сборки проекта, описанного в этом уроке, понадобятся следующие детали:

  • плата Arduino (подробнее, о том как выбрать Arduino здесь);
  • датчик DHT11 или DHT22 (можно купить, например, здесь или здесь);
  • Breadboard;
  • резистор на 10 кОм;
  • программа Arduino IDE, которую можно скачать с сайта Arduino.

Датчики DHT11 и DHT22

Чем отличаются датчики DHT11 и DHT22?

Две версии сенсоров DHT похожи друг на друга и имеют одинаковую распиновку. Их отличия в характеристиках. Спецификации:

Сенсор DHT11:

  • определение влажности в диапозоне 20-80%
  • определение температуры от 0°C до +50°C
  • частота опроса 1 раз в секунду

Сенсор DHT22:

  • определение влажности в диапазоне 0-100%
  • определение температуры от -40°C до +125°C
  • частота опроса 1 раз в 2 секунды

Таким образом, характеристики датчика DHT22 лучше по сравнению с DHT11, и поэтому он чуть-чуть дороже. Снимать показания чаще, чем раз в 1-2 секунды не получится, но, возможно, для вашего проекта более высокое быстродействие и не требуется.

Подключение сенсоров DHT к Arduino

Датчики DHT имеют стандартные выводы и их просто установить на breadboard.

Датчики DHT имеют 4 вывода:

  1. питание.
  2. вывод данных
  3. не используется.
  4. GND (земля).

Между выводами питания и вывода данных нужно разместить резистор номиналом 10 кОм.

Датчик DHT часто продается в виде готового модуля. В этом случае он имеет три вывода и подключается без резистора, т.к. резистор уже есть на плате.

Схема подключения датчика с резистором:

Схема подключения датчика DHT к Arduino

Arduino скетч

Воспользуемся библиотекой DHT.h, созданной специально для датчиков DHT. Ее можно скачать здесь. Для использования нужно поместить скачанную папку в в папку /libraries.

Пример программы для работы модели с датчиком DHT22 (можно просто скопировать в Arduino IDE):
#include «DHT.h»
#define DHTPIN 2 // номер пина, к которому подсоединен датчик
// Раскомментируйте в соответствии с используемым датчиком
// Инициируем датчик
DHT dht(DHTPIN, DHT22);
//DHT dht(DHTPIN, DHT11);
void setup() <
Serial.begin(9600);
dht.begin();
>
void loop() <
// Задержка 2 секунды между измерениями
delay(2000);
//Считываем влажность
float h = dht.readHumidity();
// Считываем температуру
float t = dht.readTemperature();
// Проверка удачно прошло ли считывание.
if (isnan(h) || isnan(t)) <
Serial.println(«Не удается считать показания»);
return;
>
Serial.print(«Влажность: «+h+» %t»+»Температура: «+t+» *C «);
>
При использовании датчика DHT11 закомментируйте строку:
DHT dht(DHTPIN, DHT22);
И раскомментируйте строку:
//DHT dht(DHTPIN, DHT11);
Загрузите скетч в контроллер и проверьте правильность работы при помощи Сервис->Монитор порта:

Показания температуры и влажности (Монитор порта)

Вы должны увидеть температуру и влажность. Изменения можно увидеть, например, выдыхая на датчик (как для затуманивания окна). Дыхание увеличивает влажность.

Посты по урокам:

  1. Первый урок: Светодиод
  2. Второй урок: Кнопка
  3. Третий урок: Потенциометр
  4. Четвертый урок: Сервопривод
  5. Пятый урок: Трехцветный светодиод
  6. Шестой урок: Пьезоэлемент
  7. Седьмой урок: Фоторезистор
  8. Восьмой урок: Датчика движения (PIR) и E-mail
  9. Девятый урок: Подключение датчика температуры и влажности DHT11 или DHT22

Все посты сайта “Занимательная робототехника” по тегу Arduino.

Наш YouTube канал, где публикуются видео-уроки.

Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

Термисторное управление напряжением Пельтье с помощью Arduino (для проекта холодильной камеры DSLR)

Я немного знаком с электроникой, в основном я играл с электроникой в ​​детстве. Это было очень давно, может быть, целых 20 лет назад. В настоящее время я работаю над «холодной» или «охлаждающей» коробкой для своего Canon 5D III, поэтому я могу поддерживать ее очень низкую и очень стабильную температуру для малошумной астрофотографии.

У меня есть общий дизайн для коробки, и я использую один 12 В 5.8 ампер Пельтье (TEC), прикрепленный непосредственно к медной коробке для охлаждения. Коробка в настоящее время изолирована экструдированной пенопластовой панелью, и нагревательная плита Пельтье будет охлаждаться с помощью водяного кулера из старого компьютерного комплекта.

Однако мой проект становится более амбициозным. Я хочу терморегуляции, чтобы поддерживать постоянную температуру, и я в конечном итоге хотел бы перейти на двухступенчатое охлаждение, чтобы достичь Delta-T ближе к -55-60 ° C по сравнению с окружающей средой (охлаждающая камера будет охлаждать камеры, поэтому датчик будет теплее, вероятно, на 10 ° C, чем температура меднения в самой коробке.) Я хочу использовать два основных режима:

  1. Режим быстрого охлаждения, работа Пельтье при напряжении 12 В или выше (максимальное напряжение составляет 15,4 В), чтобы быстро охладить коробку до целевой температуры.
  2. Регулируемый режим технического обслуживания, работа Пельтье при более низких напряжениях для поддержания постоянной температуры, превышающей максимальное потенциальное охлаждение, которое может обеспечить Пельтье (для запаса по высоте, так как напряжение регулируется в ответ на небольшие колебания температуры).

Я хотел бы поддерживать температуру в пределах 2-3 ° C, если это возможно. Я посмотрел на Arduino (и в прошлом я сталкивался с подобными вещами), и он, кажется, идеально подходит для этой задачи, за одним исключением: кажется, что он не справляется с тем типом тока, который мне нужен наивысшей мощностью одного Пельтье, и, конечно, не два.

Я провел некоторое исследование о том, как я мог бы достичь этого, но у меня не хватает понимания моей электроники. Я нашел двухрелейный «щит» для Arduino Uno, который может питать два устройства с напряжением до 8 ампер каждое и до 30 вольт каждое. Это можно контролировать из самого Arduino. Похоже, что в конструкции реле используется магнитная катушка для включения переключателя, который позволяет использовать независимый источник питания для питания таких компонентов, как двигатель, соленоид или, в моем случае, Пельтье. Однако я не нашел способа реально регулировать напряжение реле с Arduino.

Поэтому я продолжал исследовать и натолкнулся на некоторые схемы, которые показали, как использовать транзисторы, точнее, конкретные мосфеты, где база была подключена к выходу Arduino, а коллектор / эмиттер были подключены к силовой петле того, что нужно было питание от более высокого напряжения (не уверен насчет тока здесь), и это все еще позволяет контролировать напряжение.

Прошло так много времени с тех пор, как я испортил какой-либо из этих компонентов, у меня очень грубая память, и я не совсем понимаю, как все это работает. Я был бы счастлив с некоторыми ссылками на полные примеры питания и управления напряжением мощных устройств через Arduino, но если кто-то здесь может объяснить, как все это работает и почему, это было бы наиболее идеальным. Я предпочел бы понять концепции, поэтому я могу применить их позже, чем просто следовать шаблону.

Читать еще:  Асинхронные двигатели с тормозом схеме подключения

Хороший вопрос, но вы затронули разные вещи, которые требуют некоторого объяснения. Ответ не так прост, как вы, вероятно, надеялись, если вы хотите сделать это правильно. Есть ряд вопросов.

Обычно мощность модулируется ШИМ в наши дни. ШИМ означает широтно-импульсную модуляцию и означает, что вы быстро переключаетесь между включением и выключением. Если вы делаете это достаточно быстро, устройство, получающее питание, видит только среднее значение. Это настолько распространено, что в большинство микроконтроллеров встроены генераторы ШИМ. Вы устанавливаете оборудование с определенным периодом, и все, что вам нужно сделать, это записать новое значение в некоторый регистр, и оборудование автоматически изменит рабочий цикл., который является частью времени, в течение которого выход включен. Вы можете запустить щеточный двигатель постоянного тока с частотой 10 Гц ШИМ, и он не сможет определить разницу между этим и средним значением постоянного тока. Чтобы он не издавал слышимый скулящий звук, вы можете использовать его на частоте 24 кГц. Импульсные источники питания работают в основном по этому принципу и работают от высоких частот 10 кГц до 100 кГц под управлением процессора или свыше МГц от выделенного чипа.

Одним из больших преимуществ управления импульсами включения / выключения является то, что в коммутаторе не теряется мощность. Коммутатор не может рассеивать какую-либо мощность, когда он выключен, так как ток через него равен 0, или когда он включен, поскольку напряжение на нем равно 0. Транзисторы делают довольно хорошие переключатели для этого, и будут рассеивать мощность только при переходе между включенным и от штатов. Один из верхних пределов частоты ШИМ заключается в том, чтобы убедиться, что коммутатор проводит большую часть своего времени полностью включенным или выключенным и не так много времени между ними.

Вы можете подумать, что это звучит легко. Просто подключите нужный тип транзистора в качестве переключателя, чтобы подать питание на Пельтье, и подключите его к неизбежному ШИМ-выходу вашего микроконтроллера. К сожалению, это не так просто из-за работы Пельтье.

Мощность охлаждения Пельтье пропорциональна току. Однако у Пельтье также есть некоторое внутреннее сопротивление, которое нагревается из-за тока. Тепло, рассеиваемое резистором, пропорционально квадрату тока. Оба эти эффекта конкурируют в кулере Пельтье. Поскольку внутренний нагрев идет с квадратом тока, но мощность охлаждения пропорциональна только току, в конечном счете, возникает точка, в которой дополнительный ток вызывает больше нагревания, чем дополнительное охлаждение, от которого можно избавиться. Это максимальный ток охлаждения, который производитель должен сказать вам заранее.

Теперь вы, наверное, думаете, хорошо, я буду ШИМ между 0 и этим максимальным током охлаждения (или напряжением). Но это не так просто по двум причинам. Во-первых, максимальная точка охлаждения также является наименее эффективной (если вы достаточно умны, чтобы не превышать максимальную температуру охлаждения). Импульс в этой точке приведет к наибольшему энергопотреблению для охлаждения, что также означает наибольшее количество тепла, которое нужно избавиться от объема охлаждения. Во-вторых, большие тепловые циклы вредны для Пельтье. Все это дифференциальное сокращение и расширение в конечном итоге что-то ломает.

Итак, вы хотите запустить Пельтье при хорошем плавном напряжении или токе, изменяясь только медленно, чтобы соответствовать требованиям температуры. Это прекрасно работает для Пельтье, но теперь у вас проблемы с электроникой вождения. Хорошая идея о включении или выключении, не рассеивающем питание, больше не применяется.

Но подождите, это все еще может. Вам просто нужно вставить что-то, что сглаживает импульсы включения / выключения, прежде чем Пельтье их увидит. Фактически, это в основном то, что делают переключающие источники питания. Все вышеперечисленное было способом введения решения, которое, я чувствовал, не имело бы никакого смысла без фона. Вот возможная схема:

Это выглядит сложнее, чем потому, что там есть два ШИМ-переключателя. Я объясню почему в ближайшее время, но пока просто притворяемся, что D2, L2 и Q2 не существуют.

Этот конкретный тип N-канального полевого транзистора может управляться непосредственно с вывода микроконтроллера, что значительно упрощает управление электроникой. Всякий раз, когда ворота высокие, включается полевой транзистор, который замыкает нижний конец L1 на землю. Это создает некоторый ток через L1. Когда FET снова отключается, этот ток продолжает течь (хотя со временем он будет уменьшаться) через D1. Поскольку D1 привязан к источнику питания, нижний конец L1 будет немного выше, чем напряжение питания в это время. Общий эффект заключается в том, что нижний конец L1 переключается между 0 В и напряжением питания. Рабочий цикл сигнала ШИМ на затворе Q1 определяет относительное время, проведенное низко и высоко. Чем выше рабочий цикл, тем больше доля времени L1 приводится в движение на землю.

ОК, это просто основной ШИМ через выключатель питания. Тем не менее, обратите внимание, что это не связано напрямую с Пельтье. L1 и C1 образуют фильтр нижних частот. Если частота ШИМ достаточно высока, то очень мало пикового сигнала 0-12 В в нижней части L1 попадает в верхнюю часть L1. И сделать частоту ШИМ достаточно быстрой — это именно то, что мы планируем сделать. Я, вероятно, запустил бы это по крайней мере на частоте 100 кГц, может быть, немного больше К счастью, это не так сложно для многих современных микроконтроллеров с их встроенным оборудованием ШИМ.

Теперь пришло время объяснить, почему Q1, L1 и D1 дублируются. Причина в том, что у нас больше возможностей без разных типов деталей. Есть также побочное преимущество в том, что частоты ШИМ L1 и L2 вместе с C1 должны фильтровать вдвое больше, чем каждый переключатель. Чем выше частота, тем легче отфильтровать и оставить только среднее значение.

Вы хотите около 6А тока. Есть, конечно, полевые транзисторы и индукторы, которые могут справиться с этим. Тем не менее, типы полевых транзисторов, которые легко приводятся в движение непосредственно от вывода процессора, имеют некоторые внутренние компромиссы, которые обычно не допускают такого высокого тока. В этом случае я подумал, что стоит просто иметь возможность управлять двумя полевыми транзисторами непосредственно с выводов процессора, чем минимизировать абсолютное количество деталей. Один больший полевой транзистор с микросхемой драйвера затвора, вероятно, не сэкономит вам денег по сравнению с двумя полевыми транзисторами, которые я покажу, и катушки индуктивности будет легче найти. Например, Coilcraft RFS1317-104KL — хороший кандидат.

Обратите внимание, что оба вентиля управляются с помощью сигналов ШИМ на 180 ° в противофазе друг с другом. Возможность сделать это легко в аппаратном обеспечении не так распространена, как просто в генераторах ШИМ, но все еще есть много микроконтроллеров, которые могут это делать. В крайнем случае вы можете управлять ими от одного и того же ШИМ-сигнала, но тогда вы теряете преимущество частоты ШИМ, от которой требуется фильтр нижних частот, чтобы избавиться от удвоения частоты каждого из отдельных сигналов ШИМ. Обе половины цепи также будут требовать тока от источника питания одновременно.

Вам не нужно беспокоиться о том, какое именно напряжение или ток будут воздействовать на Пельтье при любом рабочем цикле ШИМ, хотя я выясню, что приводит к максимальной точке охлаждения, и никогда не установлю рабочий цикл выше, чем в микропрограмме. Если напряжение питания является максимальной точкой охлаждения, вам не нужно об этом беспокоиться, и вы можете перейти к 100% -ному рабочему циклу.

Читать еще:  Вибрация двигателя при работе кондиционера

На следующем уровне выше коэффициента заполнения ШИМ в микропрограмме вам понадобится контур управления. Если все сделано правильно, это автоматически сначала приведет к жесткому охлаждению кулера, а затем отключит его, когда температура приблизится к заданному значению. Есть много схем управления. Вероятно, вам следует изучить PID (Пропорциональный, Интегральный, Производный) не потому, что он лучший или наиболее оптимальный, а потому, что он должен работать достаточно хорошо, и там содержится много информации.

Здесь есть еще много чего, и настройка параметров PID сама по себе может быть целой книгой, но здесь уже очень долго ждать ответа, поэтому я остановлюсь. Задайте больше вопросов, чтобы получить более подробную информацию.

Фильтровать значения деталей

В основном я вытащил значения индуктивности и конденсатора из воздуха, но, основываясь на интуиции и опыте, эти значения были бы достаточно хорошими. Для тех, кто не привык к этим вещам, вот подробный анализ, который показывает, что пульсация ШИМ действительно ослаблена до забвения. На самом деле достаточно понизить его до нескольких процентов от среднего значения DC, но в этом случае они явно снижаются до уровня, который будет иметь значение.

Есть несколько способов посмотреть на LC-фильтр. Один из способов состоит в том, чтобы рассматривать две части как делитель напряжения, при этом импеданс каждой части зависит от частоты. Другой способ состоит в том, чтобы найти частоту спада фильтра нижних частот и посмотреть, во сколько раз выше частота, которую мы пытаемся ослабить. Оба эти метода должны привести к одному и тому же выводу.

Величина импеданса конденсатора и катушки индуктивности:

где C — емкость в Фарадах, L — индуктивность в Генри, ω — частота в радианах / секунду, а Z — величина результирующего комплексного импеданса в Ом. Обратите внимание, что ω можно расширить до 2πf, где f — частота в Гц.

Обратите внимание, что сопротивление цоколя уменьшается с частотой по мере увеличения сопротивления дросселя.

Частота спада низкочастотного фильтра — это когда две величины импеданса равны. Из приведенных выше уравнений, который выходит

f = 1 / (2π sqrt (LC))

что составляет 734 Гц со значением детали, показанным выше. Следовательно, частота ШИМ 100 кГц примерно в 136 раз больше этой частоты спада. Поскольку это далеко за пределами «коленной» области фильтра, он будет ослаблять сигнал напряжения на квадрат этого значения, что в данном случае составляет около 19 тыс. Раз. После ослабления основной волны прямоугольного сечения 12 В пост. Тока 19 000 раз, в этом приложении не останется никаких последствий. Оставшиеся гармоники будут ослаблены еще больше. Следующая гармоника в прямоугольной волне — третья, которая будет ослаблена еще в 9 раз больше основной.

Значение тока для индукторов является любым пиковым током, который они должны выдерживать. Я вижу, что я сделал ошибку там, теперь, когда я смотрю на это более внимательно. В типичном понижающем преобразователе пиковый ток индуктора всегда немного больше среднего. Даже в непрерывном режиме ток индуктора в идеале представляет собой треугольную волну. Поскольку среднее значение является общим выходным током, пики явно выше.

Однако эта логика не применима к этому конкретному случаю. Максимальный ток составляет рабочий цикл 100% ШИМ, что означает, что 12 В подается непрерывно непосредственно на Пельтье. В этот момент общий средний и максимальный токи индуктивности одинаковы. При более низких токах индуктивные токи представляют собой треугольник, но среднее значение также ниже. В конце концов, вам нужны только индукторы, чтобы выдерживать максимальный длительный выходной ток. Поскольку общий максимальный ток через Пельтье составляет около 6 А, каждый индуктор должен выдерживать только 3 А. Индукторы с номиналом 3,5 А все равно будут работать очень хорошо, но 3 А индуктивности также будут достаточно хороши.

Arduino и цифровой датчик температуры DS18B20

DS18B20 — это цифровой датчик температуры. Датчик очень прост в использовании.

Во-первых, он цифровой, а во вторых — у него всего лишь один контакт, с которого мы получаем полезный сигнал. То есть, вы можете подключить к одному Arduino одновременно огромное количество этих сенсоров. Пинов будет более чем достаточно. Мало того, вы даже можете подключить несколько сенсоров к одному пину на Arduino! Но обо всем по порядку.

Arduino датчик температуры DS18B20

DS18B20 имеет различные форм-факторы. Так что выбор, какой именно использовать, остается за вами. Доступно три варианта: 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92. Серфинг по eBay или Aliexpress показывает, что китайцы предлагают версию TO-92 во влагозащищенном корпусе. То есть, вы можете смело окунать подобное чудо в воду, использовать под дождем и т.д. и т.п. Эти сенсоры изготавливаются с тремя выходными контактами (черный — GND, красный — Vdd и белый — Data).

Различные форм-факторы датчиков DS18B20 приведены на рисунке ниже.

Модель DS18B20 во влагозащищенном корпусе:

DS18B20 удобен в использовании. Запитать его можно через контакт data (в таком случае вы используете всего два контакта из трех для подключения!). Сенсор работает в диапазоне напряжений от 3.0 В до 5.5 В и измеряет температуру в диапазоне от -55°C до +125°C (от -67°F до +257°F) с точностью ±0.5°C (от -10°C до +85°C).

Еще одна крутая фича: вы можете подключить параллельно вплоть до 127 датчиков! и считывать показания температуры с каждого отдельно. Не совсем понятно, в каком проекте подобное может понадобится, но подключить два сенсора и контролировать температуру в холодильнике и морозильной камере можно. При этом вы оставите свободными кучу пинов на Arduino. В общем, фича приятная.

Что вам понадобится для контроля температуры с помощью Arduino и DS18B20

Программное обеспечение

  • Естественно, вам необходима Arduino IDE;
  • Библиотека OneWire library, которая значительно облегчает работу с Arduino и датчиком DS18B20;
  • Скетч.

Скачать Arduino IDE можно с официального сайта Arduino.

Библиотеку OneWire Library можно скачать на OneWire Project Page (желательно скачивать последнюю версию библиотеки).

Оборудование

  • Как минимум один цифровой датчик температуры DS18B20;
  • Контроллер Arduino (в данном примере используется Arduino Uno);
  • 3 коннектора;
  • Монтажная плата (Breadboard);
  • USB кабель для подключения Arduino к персональному компьютеру.

Ссылки для заказа необходимого оборудования из Китая

USB кабель необходим для программирования нашего Arduino. После того, как вы «зальете» скетч на плату, можно подключать ее к отдельному источнику питания.

Подключение DS18B20 к Arduino

Датчик подключается элементарно.

Контакт GND с DS18B20 подключается к GND на Arduino.

Контакт Vdd с DS18B20 подключается к +5V на Arduino.

Контакт Data с DS18B20 подключается к любому цифровому пину на Arduino. В данном примере используется пин 2.

Единственное, что необходимо добавить из внешней дополнительной обвязки — это подтягивающий резистор на 4.7 КОм.

Схема подключения DS18B20 к Arduino показана ниже (в скетче, который будет приведен ниже, проверьте строки 10 и 65. В них указаны пины, к которым вы подключали контакт сигнала с датчика и режим питания!):

На рисунке ниже приведена фотография нашей простой схемы «в жизни».

Паразитное и обычное питание

Есть альтернативный вариант подключения — так называемое «паразитное» подключение. В этом случае мы не будем подключать пин +5V к пину Vdd на датчике DS18B20. Вместо этого мы подключим контакт Vdd с датчика DS18B20 к GND. Преимущества такого подключения очевидны: нам понадобится всего два коннектора!

Недостатком такого подключения является ограничение количества одновременно подключаемых сенсоров. Кабели для подключения должны быть максимально короткими!

Читать еще:  Все неисправности авто двигателя ваз 2107

В общем, с «паразитным» подключением надо быть аккуратнее и лучше его все-таки не использовать. Результаты (значения температур) могут оказаться самыми неожиданными.

Скетч для Arduino и сенсора DS18B20

Установливаем библиотеку OneWire Library

После того как вы скачали архив с библиотекой, ее надо импортировать. Для этого в Arduino IDE выберите пункт “Sketch” — “Import Library” — “Add Library” и выберите архив, который вы скачали. Если у вас возникли проблемы, с установкой библиотеки, ознакомьтесь с инструкцией по установке библиотек в Arduino.

Загружаем скетч на Arduino

Скетч, который представлен ниже, есть в библиотеке OneWire, в категории examples. Перейдите в “File” — “Examples” — “OneWire” и выберите пример “DS18x20_Temperature”. Код программы представлен ниже.

Данный пример использует библиотеку OneWire Library, для того, чтобы собрать данные со всех подключенных датчиков температуры DS28B20 (как подключить несколько сенсоров описано в конце статьи) и отобразить их в окне серийного монитора Arduino IDE.

В окне серийного монитора вы увидите примерно следующее:

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

Обычное или паразитное питание?

DS18B20 может работать в обычном или в так называемом «паразитном» режиме. В обычном режиме для подключения используется 3 коннектора, в «паразитном» режиме — в его лишь 2.

Вам надо настроить правильный режим в скетче, чтобы снять достоверные показания с датчика:

  • Для «паразитного» режима в строке 65 надо указать: ds.write(0x44, 1);
  • Для обычного режима в строке 65 указывается: ds.write(0x44);

Убедитесь, что вы указали корректные пины!

В строке 10, где указано “OneWire ds(2);” устанавливается пин, к которому подключен контакт data с сенсора.

В этом примере использован пин 2, но значения пина по умолчанию в примере OneWire стоит на 10. Можно использовать и его.

// пример использования библиотеки OneWire DS18S20, DS18B20, DS1822

OneWire ds(2); // на пине 10 (нужен резистор 4.7 КОм)

#29. Подключаем драйвер мотора MX1508 к Arduino.

Модуль двигателя MX1508, рассмотренный в этой статье, рекламируется на Aliexpress как «Двухканальная плата драйвера двигателя постоянного тока L298N, PWM Speed Dual H Bridge Stepper Module», однако присутствует микросхема MX1508 китайского производства. Также отличаются характеристики драйвера MX1508 от L298N. Давайте рассмотрим подробней данный драйвер и разберемся, как его подключить к Arduino и управлять моторами постоянного тока.

При управлении, например, с платой Arduino UNO, можно управлять двумя двигателями, при этом вращать в любом направлении каждый двигатель. Драйвер представляет из себя Н-мост с рабочим током 800 мА и пиковым током 2,5 А, а также, со встроенной системой контроля температуры.

Характеристики драйвера MX1508:

  • Напряжение питания модуля 2 — 9,6 В.
  • Диаметр монтажного отверстия: 2 мм.
  • Входное напряжение сигнала: 1,8- 7 В.
  • Ток для одного канала: 0,8 А.
  • Пиковый ток: до 2,5 А.
  • Ток в режиме ожидания: менее 0,1 мкА.
  • Схема защиты от перегрева: встроенная (TSD) с эффектом гистерезиса.
  • Размер: 24,7 х 21 х 7 мм.

Общие сведения о драйвере MX1508.

Основной чип модуля — это микросхема MX1508, состоящая из двух H-мостов (H-Bridge), один для выхода A, второй для выхода B, каждый канал рассчитан на 0,8 А с пиком 2,5 А. H-мост широко используется в электронике и служит для изменения вращения двигателя, схема H-моста содержит четыре транзистора (ключа) с двигателем в центре, образуя H-подобную компоновку. Принцип работы прост, при одновременном закрытии двух отдельных транзисторов, изменяется полярность напряжения, приложенного к двигателю. Это позволяет изменять направление вращения двигателя. На рисунке ниже, показана работа H-мостовой схемы.

Управлять двигателем можно низковольтным напряжением, ниже, чем напряжение на плате Arduino. Для управления скоростью используется широтно-импульсная модуляция (PWM).

Модуль MX1508 содержит разъем для подключения питания, два выхода A и B, и разъем управления, с назначением каждого можно ознакомиться ниже:

  • Вывод «+» и «-» — питание модуля и двигателей, от 2 до 9,6 В;
  • Выводы A1 и A2 — используются для управления направлением вращения двигателя A;
  • Выводы B1 и B2 — используются для управления направлением вращения двигателя B;
  • Выходы MOTOR A — разъем для двигателя A;
  • Выходы MOTOR B — разъем для двигателя B;

Подключение MX1508 к Arduino (коллекторный двигатель).

Необходимые детали:

  • Arduino UNO.
  • Драйвер мотора на MX1508.
  • Коллекторный двигатель.

Схема подключения MX1508 к Arduino, и коллекторного двигателя к MX1508.

Первым делом, необходимо подключить источник питания от 2 до 9,6 B к модулю (в примере используется 5 В. от Arduino). Далее, подключаем управляющие провода A1, A2, B1, B2 (встречается маркировка, как на L298: IN1, IN2, IN3, IN1) к цифровым выводам Arduino 10, 11, 5 и 6. Теперь, подключаем двигатели, один к клеммам MOTOR A , а другой к клеммам MOTOR B. Схема подключения приведена ниже.

Теперь подключаем Arduino к компьютеру и загружаем скетч ниже.

Описание скетча:

Скетч простой, не требует дополнительных библиотек. Первым делом, указываем, к каким выводам подключен модуль.

Управление скоростью осуществляется с помощью ШИМ, для удобства используем переменную speed, в которой указываем скорость двигателя. Значение «0» — значит остановка, а «255» равносильно напряжению питания, и двигатели крутятся на максимальной скорости.

Далее, мы указываем, что данные выводы используем как выход.

Направление вращения двигателя осуществляется с помощью выводов A1 и A2 — для первого двигателя, B1 и B2 — для второго двигателя, то есть, если подать на вывод A1 — 0B (LOW), а на A2 — 5B (HIGH), двигатель A будет вращаться вперед (так же и для двигателя B). Для вращения назад, необходимо подать на A1 — 5B (HIGH), а на A2 — 0B (LOW), двигатель A будет вращаться назад (так же и для двигателя B). На основании этого напишем небольшие функции, которые позволят вращать оба двигателя вперед, назад, в противоположном направлении, и останавливать вращение обоих двигателей.

Реализуем вывод в монитор порта информацию о направлении вращения двигателя в данный момент.

Это поможет определить, правильно ли мы всё подключили, или нет. Если двигатели будут вращаться не в том направлении, как выводится в мониторе порта, то необходимо поменять местами провода подключения двигателей, и повторить проверку. Эта информация позволит настроить минимальный код для создания радиоуправляемой машины. Вот такие машинки я делал на Arduino и ESP8266 с использованием драйвера L298:

  • Собираем Arduino машинку на Motor Shield L293D и ИК пульте.
  • Машинка на радиоуправлении. Arduino + nrf24l01 + пульт.
  • Самодельная Wifi машинка на NodeMCU. Машина делает дрифт.

Используя драйвер MX1508, собрать данные проекты не составит труда, так как код из проектов выше совместим с драйвером MX1508.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке.

Понравилась статья? Поделитесь ею с друзьями:

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector