Датчик температуры с шаговым двигателем

Управление шаговым двигателем на Arduino с помощью температурного датчика DS18B20.

Те кто давно занимаются FLProg конечно скажут- неправильно. сделал, можно проще.

Я дам некоторые пояснения почему так сделал, этот проект предварительный, как основа климат контроля. Можно использовать как в теплице, так и в других проектах по управлению температуры.

Иногда хочется быстро попробовать и разобрать.

Хоть Arduino UNO и удобнее, но я решил для экспериментов использовать Pro Mini. если убью так не жалко.

Тем более в основном надо отработать всего один блок в какой нибудь программе.

Я человек немного ленивый, а в программаторе не оказалось сигнала DTR (китаец, за ногу его. прислал другой, без этого выхода) я в интернете нашёл как его сделать. Зачем он? Чтобы при каждой перепрошивке не тыкать на резет.

Буфером между Arduino и ШД использовал ULN2003A. Некоторые называют её почему-то драйвером ШД, хотя это не так. Это токовый драйвер общего назначения.

Из «клубковой» монтажной схемы видно что я использовал.

Функция блок схемы-

Температура (например в теплице) ниже заданной- ШД закрывает механизм проветривания. Температура в пределах нормы- ШД стоит на месте. Ну и температура выше- ШД открывает.

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

И да. ШД находится постоянно под напряжением, поэтому он будет сильно греться, чтобы небыло такого — надо программно сделать отключение питания ШД например с помощью реле или полевика.

Источник

Arduino.ru

железо для управления шаговым дв. по термодатчику.

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

Есть необходимость собрать привод из шагового двигателя для открытия створки теплицы по показаниям термодатчика.

Ранее с ардуино дел не имел — это мой первый проект, поэтому по аппаратной части вообще знаний никаких.

Подскажите пожалуйста, для решения моей задачи что нужно приобрести по железу? Какой именно ардуинки мне хватит (нано/уно)?

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

В качестве шаговика хочу попробовать поставить 28BYJ-48-5V. Думаю, его жолжно хватить.

По термодатчику есть вопрос — важ но ли расстояние от термодатчика до ардуины? (т.к. термодатчик хочу расположить в центре площади теплицы, а ардуину смонтировать поблизости от шаговика, т.е. расстояние неск. метров). И существует ли возможность термодатчик беспроводной использовать?

И еще вопрос — в процессе отладки, корректировки параметров, температуры срабатывания и пр. часто придеться корректировать код. Есть ли возможнсть заливать обновленную прошивку в ардуину, уже установленную на месте, по беспроводу (WIFI) — очень бы облегчило жизнь.

Источник

Как управлять шаговым двигателем через Arduino: схема подключения

Шаговый двигатель — один из основных компонентов роботехники, ЧПУ-станко, 3D-принетеров и других автоматических систем. В этой статье рассмотрим что это такое, как его подключить и как управлять шаговым двигателем с помощью Arduino.

Читайте также:  Как остановить расход масла в двигателе

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

Что такое шаговый двигатель?

Прежде чем перейти к статье, давайте сразу договоримся, что статья не направлена на специалистов, а её цель – донести любознательным любителям техники и технологий о таком устройстве, как шаговый двигатель и об основах работы с ними. Поэтому умников и критиков, жаждущих поговорить о великом многообразии управляемого и регулируемого электропривода, прошу идти общаться на тематические ресурсы по ЧПУ-станкам и 3D-принтерам.

Итак, для начала сформулируем определение. Согласно Википедии: « Шаговый электродвигатель — синхронный бесщёточный электродвигатель с несколькими обмотками, в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора».

Формулировка достаточно понятна, но её последнее предложение может вызвать некоторое недопонимание. Поэтому я предлагаю провести небольшое сравнение.

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

Ротор такого двигателя вращается просто вокруг своей оси без каких-либо ограничений, на 360 градусов, и остановится он в любом месте. Зафиксировать его положением можно только механически (тормозом). По этой причине не получится добиться точного позиционирования исполнительных механизмов, что требуется в робототехнике, ЧПУ-станках и другом автоматизированном оборудовании.

Но шаговые двигатели разработаны для применения в механизмах, где детали поворачиваются точно на требуемый угол.

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

Питание такого двигателя невозможно без системы управления, или как его еще называют, драйвера — он подаёт импульсы в нужные обмотки, чтобы повернуть ротор на нужный угол. Это наглядно иллюстрирует приведенная ниже анимация.

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

Рассматривать типы шаговых двигателей в пределах этой статьи мы не будем, лишь кратко перечислим, какими они бывают. По конструкции:

2. С постоянными магнитами.

По способу питания:

  1. Униполярные (однополярные — ток пропускают через обмотки только в одну сторону).
  2. Биполярные (ток пропускают через обмотки в обе стороны). Здесь драйвер должен подавать напряжение различной полярности, что несколько усложняет схемотехнику. При тех же размерах развивают бОльшую мощность по сравнению с униполярными.
Читайте также:  Сколько опор двигателя ваз 2108

В униполярном двигателе зачастую 5 проводов — 1 общий, от середины каждой из двух обмоток, и 4 от концов обмоток. Иногда говорят «4 обмотки» — это также правильно, поскольку фактически мы получаем 4 обмотки соединенных в общей точки.

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

Управление шаговым двигателем

Различают два способа управления шаговым двигателем:

1. Полношаговое .
Одновременно включается только пара обмоток (без перекрытия с другими). Достигается максимальный момент на валу, но точность установления угла меньше, чем в других способах.

2. Полушаговое .
В этом случае увеличивается количество шагов, соответственно повышается точность установки положения вала. На каждый первый шаг включается одна обмотка, на каждый второй шагами (полушаг) – пара обмоток. Но когда включена одна обмотка момент на валу снижается вдвое.

На анимациях ниже наглядно продемонстрировано

В некоторых источниках отдельно обозначают микрошаговое управление. Используется, когда необходимо максимальное количество шагов и точность управления. По способу управления оно похоже на полушаговый режим, между шагами включаются две обмотки, а отличие в том, что токи в них распределяются не равномерно. Главный недостаток такого подхода — усложняется коммутация (система управления).

Перейдем к практике

Теория всегда запутана и непонятна, чтобы разобраться, что и как, нужно брать и делать. Поэтому перейдем к практической стороне вопроса.

Итак, из рассмотренного ранее набора у меня есть:

  • Arduino UNO;
  • Модуль ULN2003;
  • Шаговый двигатель 28BYJ-48 5V DC;
  • Куча перемычек, бредборд и источник питания для него.

Модуль ULN2003 – предназначен для управления униполярным шаговым двигателем. Схематически это транзисторная сборка Дарлингтона с 7-ю каналами и, в принципе, ею можно управлять чем угодно. Технические характеристики приведены ниже:

  • Номинальный ток коллектора одного ключа — 0,5А;
  • Максимальное напряжение на выходе до 50 В;
  • Защитные диоды на выходах;
  • Вход адаптирован к разным видам логики;
  • Возможность применения для управления реле.

В модуле, кроме самой микросхемы ULN2003, есть светодиоды для индикации напряжения на выходе, колодка для подключения и перемычка для отключения питания.

Двигатель 28BYJ-48 5V DC подключается штатным разъёмом к белой колодке на плате. У него 5 проводов — красный общий, и 4 от обмоток.

  • 32 шага за один оборот ротора;
  • Встроенный редуктор с передаточным отношением 63.68395:1, благодаря этому вал делает 1 оборот за 2048 шагов, при полношаговом режиме и 4096 при полушаговом;
  • Cкорость вращения: номинальная 15 об/мин, максимальная 25 об/мин;
  • Напряжение питания 5 В;
  • Ток одной обмотки 160 мА;
  • Полный ток: в 4-шаговом режиме 320 мА, при быстром вращении 200 мА.
  • Коэффициент редукции: 1/63,68395
  • Угол шага ротора (без учета редуктора): при 4-ступенчатой последовательности сигналов управления 11,25 ° (32 шага на оборот); при 8-ступенчатой — 5,625 ° (64 шага на оборот)
  • Крутящий момент не менее: 34,3 мНм (120 Гц);
  • Тормозящий момент: 600–1200 гсм;
  • Тяга: 300 гсм;
  • Вес:33 г.

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

Значит, попробуем выдать такие сигналы с ардуино. Для этого я подключаю модуль ULN2003 по такой схеме (пин ардуино – контакт модуля)

Дальше напишем в Arudino IDE код, который будет подавать на выходы сигналы в соответствии с таблицей выше.

// назначим переменные с номерами портов

const int dl = 2; // переменная для задержки

// назначим указанные пины как выходы

Читайте также:  Внешняя скоростная характеристика двигателя mercedes

//сформируем сигналы для первого шага

delay(dl); //Задержка между шагами, чем она меньше — тем быстрее вращение вала.

//сформируем сигналы для второго шага

//сформируем сигналы для третьего шага

//сформируем сигналы для четвертого шага

Двигатель начнет вращаться, скорость вращения задаётся переменной dl. Я её ввёл только для того, чтобы в каждом шаге не вводить задержку вручную. Ниже я приложу видео и в нём для наглядности я показал как вращение с задержкой между шагами равной 2 мс (на 1 мс двигатель просто пищит и не вращается…), и с задержкой в полсекунды, что позволяет наглядно увидеть, в какой последовательности подаются сигналы на обмотки, что позволяет убедиться в том, что напряжение подаётся на две обмотки сразу, согласно таблице выше. При задержке в 2 мс светодиоды светятся как будто все вместе.

Перейдем к полушаговому управлению. В таблице ниже приведен порядок подачи сигналов на обмотки рассматриваемого двигателя для его реализации.

Тогда код будет таким:

// назначим переменные с номерами портов

const int dl = 2; // переменная для задержки

// назначим указанные пины как выходы

//сформируем сигналы для первого шага

delay(dl); //Задержка между шагами, чем она меньше — тем быстрее вращение вала.

//сформируем сигналы для второго шага

//сформируем сигналы для третьего шага

//сформируем сигналы для четвертого шага

//сформируем сигналы для пятого шага

//сформируем сигналы для шестого шага

//сформируем сигналы для седьмого шага

//сформируем сигналы для восьмого шага

Но на практике такой подход к управлению шаговым двигателем не используется. Для этого есть готовые библиотеки, в Arduino IDE есть встроенная «Stepper». Возьмем из библиотеки готовый пример «Stepper_oneRevolution» и изменим его под наш двигатель, код привожу ниже и в комментариях опишу основные особенности:

const int stepsPerRevolution = 2048; // изменить в соответствии с количеством

//шагов вашего двигателя. Вообще здесь задаём количество шагов, на которые повернется двигатель

// мы указали для 1 полного оборота

// назначаем пины, к которым подключен драйвер ШД

Stepper myStepper(stepsPerRevolution, 13, 12, 11, 10);

// указываем номинальную скорость 15 об.мин:

// включаем последовательный пор:

// делаем оборот по часовой стрелке:

Serial.println(«clockwise»); // сообщение в монитор порта

// делаем оборот против часовой стрелке:

Serial.println(«counterclockwise»); // сообщение в монитор порта

Первое что бросается в глаза – код занимает значительно меньше времени, количество шагов для полного оборота ротора задаётся первым аргументом функции Stepper, с её помощью объявляются пины, к которым подключен двигатель и количество шагов в полном обороте вала её синтаксис такой:

Stepper название (количество шагов в полном обороте, пин 1, пин 2, пин 3, пин 4).

Ну а когда нам нужно вращать сам двигатель мы обращаемся к двигателю название которого мы написали в Stepper с приставкой «.step», у нас это myStepper.step. В видео ролике я для наглядности вставил фрагмент, где по часовой стрелке двигатель делает пол оборота, а против – целый оборот. Он в самом конце. Код я для этого изменил следующим образом:

// делаем оборот по часовой стрелке:

Serial.println(«clockwise»); // сообщение в монитор порта

// делаем оборот против часовой стрелке:

Serial.println(«counterclockwise»); // сообщение в монитор порта

В мониторе порта микроконтроллер нам «говорит» в какую сторону вращается двигатель.

Ну и, наконец, предлагаю посмотреть видео, в котором демонстрируются работа всех примеров кода из этой статьи

Источник

Adblock
detector