Страница 1 из 1

Двигатели, насосы и исполнительные механизмы

Добавлено: 30 авг 2023, 16:17
Oleg
Ранее мы уже провели эксперимент с двигателем постоянного тока. Те основные положения, которые мы усвоим, имея дело с двигателями постоянного тока, применимы и при обращении со многими другими механизмами, которыми вы, возможно, захотите управлять с Arduino или Raspberry Pi. Именно электродвигатели позволяют работать различным полезным выходным устройствам - в частности, насосам и линейным исполнительным механизмам, с которыми мы и познакомимся.

На рисунке показана подборка двигателей постоянного тока. Как видите, эти устройства могут иметь всевозможные размеры и форму.
Разновидности двигателей постоянного тока
Разновидности двигателей постоянного тока
Как мы узнали из «Эксперимент: управление электродвигателем», управлять двигателем постоянного тока непосредственно с контакта Arduino или Raspberry Pi нельзя для этого нужен весьма сильный ток, поэтому мы и использовали транзистор, чтобы с его помощью получить возможность включать и выключать двигатель. Теперь нам предстоит научиться управлять скоростью его вращения.

КАК РАБОТАЮТ ДВИГАТЕЛИ ПОСТОЯННОГО ТОКА?

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

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

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

Управление скоростью двигателя постоянного тока

Добавлено: 30 авг 2023, 16:46
Oleg
Оборудование

В этом эксперименте используется то же самое оборудование, что и в разд. «Эксперимент: управление электродвигателем» viewtopic.php?p=633#p633, но здесь вы не просто включаете и выключаете двигатель, а еще и управляете его скоростью.

Если вы ранее еще не сделали этого, соберите схему из разд. «Эксперимент: управление электродвигателем» viewtopic.php?p=633#p633. В качестве напоминания компоновка макетной платы для этого эксперимента показана на рисунке
Компоновка макетной платы для экспериментов с электродвигателем
Компоновка макетной платы для экспериментов с электродвигателем
Подключение Arduino

Подключите макетную плату к Arduino, как показано на рисунке ниже: подсоедините заземление с макетной платы к разъему GND, а управляющий вывод с макетной платы к разъему D9.
Подключение макетной платы к Arduino
Подключение макетной платы к Arduino
Программа для Arduino

Скетч Arduino для этого эксперимента:

Для ввода коэффициента заполнения и задания нужной скорости вращения электродвигателя воспользуемся монитором последовательного интерфейса Arduino IDE:

Код: Выделить всё

const int controlPin = 9;

void setup() {                    // (1)
  pinMode(controlPin, OUTPUT);
  Serial.begin(9600);
  Serial.println("Enter Duty Cycle (0 to 100)");
}

void loop() {                     // (2)
  if (Serial.available()) {       // (3)
    int duty = Serial.parseInt();
    if (duty < 0 || duty > 100) {  // (4)
      Serial.println("0 to 100");
    }
    else {
      int pwm = duty * 255 / 100;
      analogWrite(controlPin, pwm);
      Serial.print("duty set to ");
      Serial.println(duty);
    }
  }
}
Уточним некоторые моменты скетча по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:
1. Функция setup определяет controlPin как выход, а также при помощи функции Serial.begin запускает последовательное соединение через USB отправлять значения коэффициента заполнения со своего компьютера теперь вы можете на Arduino.
2. Функция loop() при помощи Serial.available проверяет, есть ли в очереди какие-либо последовательные сообщения, которые могли поступить через USB.
3. Если есть сообщение, представляющее собой число, то это число считывается из потока символов и преобразуется в тип int при помощи parseInt. 4. Проверяем, находится ли полученное значение в диапазоне от 0 до 100:
• если оно выходит за его пределы, то напоминание об этом передается вам через USB на монитор последовательного интерфейса;
• если же число находится в диапазоне от 0 до 100, то оно преобразуется в число от 0 до 255, а затем функция analogWrite() выдает значение ШИМ. Такое преобразование необходимо, поскольку функция analogWrite() Arduino принимает значение коэффициента заполнения в диапазоне от 0 до 255, где 0=0%, a 255 = 100%.

ТЕКСТ И ЧИСЛА

Мы довольно часто будем считывать числа через монитор последовательного интерфейса, поэтому стоит разобраться, что именно делает функция parseInt и что происходит, когда мы передаем информацию на Arduino по USB

Ранее я упоминал, что один из способов взаимодействия с Arduino (и, если уж на то пошло, с Raspberry Pi) - работа через последовательный интерфейс. Arduino Uno обладает встроенным последовательным интерфейсом, подключенным к цифровым контактам D0 и D1. Эти контакты не следует использовать для обычного ввода/вывода, т. к. они предоставляют последовательный интерфейс между вашим компьютером и Arduino через интерфейсную микросхему USB, взаимно преобразующую последовательный вывод USB и прямой последовательный ввод, понятный Arduino.

Когда вы вводите сообщение в монитор последовательного интерфейса и отправляете его в Arduino, текст сообщения преобразовывается в поток битов (высоких и низких сигналов), которые на месте назначения вновь собираются в группы по восемь битов (т. е. в байты). Каждый из этих байтов соответствующий определенной букве латинского алфавита или цифре числовой код AЅСІІ (Американский стандартный код обмена информацией).

Когда работающая программа Arduino получает сообщение в виде такой последовательности, она может либо считывать по одному байту (букве) в единицу времени, либо использовать функцию parseInt, которая считывает символы и, если оказывается, что символ это цифра, составляет из цифр число. Например, число 154 было бы передано как три символа: 1, 5 и 4. Если после символа следует знак перехода на новую строку, пробел или символ, не являющийся цифрой, то функция parseInt "пони- мает", что все цифры из переданного числа уже получены, и возвращает значение 154 типа int. Впрочем, даже если после отправки последней цифры наступит не-большая задержка, этого хватит, чтобы parseInt зафиксировала конец числа.

Загружаем и выполняем программу

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

Далее вам будет предложено ввести значение коэффициента заполнения от 0 до 100. Попробуйте вводить разные значения и посмотрите, как это отразится на скорости электродвигателя. Когда вы решите остановить двигатель, просто обнулите коэффициент заполнения.

Обратите внимание: если спуститься до значений 10-20, то двигатель может не вращаться, а натужно выть, поскольку поступающей энергии будет недостаточно, чтобы преодолеть силу трения и начать вращение.

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

Управление двигателями постоянного тока при помощи реле

Добавлено: 30 авг 2023, 17:12
Oleg
Если вы собираетесь с помощью Arduino или Raspberry Pi лишь эпизодически включать и выключать двигатель, то можно воспользоваться реле. Хотя такой при ем считается довольно-таки старомодным, у него есть ряд преимуществ:
• он прост в реализации, и для него требуется минимальное количество компонентов;
•между двигателем, работающим под сильным током и создающим массу помех, и «нежной» конструкцией Pi и Arduino образуется исключительно хорошая изоляция;
•он позволяет работать с сильными токами (если реле подобрано правильно);
•существуют готовые релейные модули, которые можно использовать непосредственно с Raspberry Pi или Arduino.

Тем не менее, в работе с релейными модулями имеются и недостатки:
• они относительно громоздкие;
• позволяют лишь включать или выключать двигатель, но не позволяют управлять его скоростью;
поскольку реле - это электромеханические устройства, они, как правило, выдерживают не более 10 млн операций срабатывания, а затем в них что-то ломается.

ЭЛЕКТРОМЕХАНИЧЕСКИЕ РЕЛЕ

На рисунке показан, пожалуй, самый распространенный тип реле, так называемый кубик сахара, на который оно похоже по форме, но не по цвету, обычно такие реле черные.

Общий принцип работы подобных электромеханических реле таков: когда через ка тушку реле проходит ток (силой около 50 мА), она действует как электромагнит и при тягивает друг к другу два контакта так, что между ними возникает соединение. Эти контакты рассчитаны на высокое напряжение и сильный ток они могут переключать десятки ампер

Реле
Реле
Хотя мы будем при помощи реле управлять электродвигателем, само реле действует как обычный переключатель, поэтому с его помощью можно управлять практически чем угодно.

Подобные реле называются однополюсными переключателями (от англ. Single Pole Change Over, SPCО), т. к. у них не два контакта, которые могут быть замкнуты либо нет, а целых три: так называемый общий контакт (обычно обозначаемый СОМ) и еще два контакта: нормально открытый (NO) и нормально закрытый (NC). В данном контексте «нормально» означает «без подачи питания на катушку реле». Соответственно, контакты NO и COM будут открыты (не замкнуты), пока катушка не будет возбуждена. Нормально закрытый контакт действует противоположным образом, т. е. контакты NC и COM в нормальном виде будут замкнуты, но разъединятся, когда катушка окажется возбуждена.

В стандартных ситуациях только два контакта реле - NO и COM - для включения управляемого им устройства.

Использование реле с Arduino или Raspberry Pi

Если вы используете реле с Raspberry Pi или Arduino, то вам понадобится такое реле, катушка которого рассчитана на напряжение 5 В. Катушки реле потребляют слишком много тока (около 50 мА), поэтому ими нельзя напрямую управлять c Raspberry Pi или Arduino, так что в обоих случаях нам придется включить в схему небольшой транзистор, который позволит работать с катушкой реле на 5 В
Использование небольшого транзистора для переключения реле
Использование небольшого транзистора для переключения реле
Как уже было сказано, катушка реле рассчитана на работу под напряжением 5 В и требует около 50 мА тока, чего многовато для Arduino и чрезмерно много для GРІО-контакта Raspberry Pi. Поэтому, точно так же, как мы это делали в разд. «Эксперимент: управление электродвигателем», для управления двигателем мы воспользуемся транзистором, только сейчас катушка реле будет выступать в качестве «нагрузки» вместо двигателя.

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

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

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

Поскольку запитанное реле требует всего лишь около 50 мА тока, в нашем случае вполне подойдет бюджетный транзистор 2N3904

Релейные модули

Если у вас есть несколько устройств, которыми вы хотите управлять, и они удовле творяют отмеченному ранее ограничению, связанному с управлением от реле (воз- можно только включение/отключение), то было бы очень удобно обзавестись релейным модулем, - типа такого, что изображен на рис. 7.9.
8-канальный релейный модуль
8-канальный релейный модуль
Эти модули можно очень дешево приобрести на Али, в их состав входят и сами реле, и транзисторы для управления ими, а также небольшие свето- диоды, помогающие определить, какое конкретное реле активировано. Учитывая такую их обвязку, подобные релейные модули можно подключать непосредственно к Raspberry Pi или Arduino.

Релейные модули могут содержать различное количество реле: от одного реле до восьми и более. Как правило, релейные модули имеют такие контакты:

GND - заземление:
ѴСС или 5Ѵ - соедините этот контакт с разъемом 5 В на Raspberry Pi или Arduino, и когда вы его активируете, он сможет подавать напряжение на релейные катушки;
Data pins (информационные контакты) — каждый информационный контакт управляет одним из реле. Иногда эти контакты могут находиться в состоянии active high- это означает, что тот GPIO-контакт, к которому они подключены, будет включать реле при переходе в состояние high. В других случаях информационный контакт может находиться в состоянии active low при этом катушка реле будет активироваться, когда соответствующий GPIO-контакт находится в состоянии low.

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

Эксперимент: управление двигателем постоянного тока при помощи релейного модуля

Добавлено: 30 авг 2023, 17:35
Oleg
В этом эксперименте мы будем просто включать и выключать электродвигатель при помощи реле.

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

Комплектующие

В этом эксперименте для работы с Arduino и Raspberry Pi понадобятся следующие

комплектующие:
Небольшой двигатель постоянного тока с напряжением питания 6 В
Релейный модуль
Батарейный отсек 4 АА (6 В)
Перемычки, подходящие к релейному модулю

Некоторые релейные модули подключаются к Arduino или Raspberry Pi при помощи разъемов, а другие- при помощи штырьков, поэтому, выбирайте подходящие перемычки. Это означает, что для подключения релейного модуля к Arduino при помощи штырьков вам понадобятся перемычки «мама-папа», а для подключения его к Raspberry Pi перемычки «мама-мама».

Схема эксперимента

Схема этого эксперимента показана на рисунке ниже. Релейные контакты действуют в качестве переключателей, каждый из которых может находиться в одном из двух положений. Как уже отмечалось, контакты бывают общие, нормально открытые и нормально закрытые. Когда катушка реле не возбуждена, общий контакт замкнут на нормально закрытый. Когда на катушку подается питание, положение переключателя меняется, и общий контакт замыкается на нормально открытый.
Схема для управления двигателем постоянного тока при помощи релейного модуля
Схема для управления двигателем постоянного тока при помощи релейного модуля
Программы этого эксперимента для Arduino и Raspberпу Рі практически идентичны тем, с которыми мы имели дело в разд. «Эксперимент: управление электродвигателем» viewtopic.php?p=633#p633. Единственное различие возникнет, если у вашего модуля будет логика active low, как у того, с которым работал я.

Программа для Arduino

Программа включит реле (и, следовательно, электродвигатель) на 5 секунд, потом выключит на 2 секунды, затем операция повторится:

Код: Выделить всё

const int controlPin = 9;

void setup() { 
  pinMode(controlPin, OUTPUT);
}

void loop() { 
  digitalWrite(controlPin, LOW);   // (1)
  delay(5000);
  digitalWrite(controlPin, HIGH);
  delay(2000);
}
В строке, обозначенной комментарием 1, код точно такой же, что и в разд. «Эксперимент: управление светодиодом», за тем исключением, что в функциях
digitalWrite значения LOW и HIGH поменяны местами. Если вы обнаружите, что при запуске программы двигатель включается на 2 сек. и выключается на 5, то это означает, что логика вашего релейного модуля - active high, и вы должны оставить значения LOW и HIGH в том порядке, в котором они были в разд. «Эксперимент: управление светодиодом» viewtopic.php?p=632#p632.

Программа для Raspberry Pi

Код: Выделить всё

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

control_pin = 18

GPIO.setup(control_pin, GPIO.OUT)

try:         
    while True:
        GPIO.output(control_pin, False)  
        time.sleep(5)                 
        GPIO.output(control_pin, True) 
        time.sleep(2)                 
        
finally:  
    print("Cleaning up")
    GPIO.cleanup()

Выбор двигателя

Добавлено: 31 авг 2023, 15:07
Oleg
Двигатели постоянного тока бывают всевозможных форм и размеров, и для своего проекта вам важно подобрать достаточно мощный. О двигателе следует знать две основные характеристики: какую силу вращения он позволяет развивать (крутящий момент) и как быстро он вращается.

Если он вращается быстрее, чем вам нужно, но не обладает достаточным крутящим моментом, то можно скомпенсировать этот недостаток, воспользовавшись редуктором.

Крутящий момент

Грубо говоря, крутящий момент - это сила вращения двигателя. Чем больше крутящий момент двигателя, тем с большим усилием может вращаться его вал (ротор).

С научной точки зрения крутящий момент определяется как сила, умноженная на расстояние, где сила измеряется в ньютонах (Н), а расстояние - в метрах (м). В более практическом контексте силовая составляющая крутящего момента зачастую выражается как сила, необходимая для подъема определенного веса в килограммах (или унциях) на расстояние, измеряемое в сантиметрах (или дюймах).

Расстояние присутствует в уравнении потому, что с увеличением расстояния от оси ротора двигатель способен прикладывать к грузу все меньшую и меньшую силу. Например, если указано, что крутящий момент двигателя составляет 1 кгс/см (ки- лограмм силы на сантиметр), то на расстоянии 1 см от оси ротора двигатель сможет удерживать вес в 1 кг т. е. не справится с более значительным весом, но, в то же время, груз с указанным весом не упадет. При этом на расстоянии 10 сантиметров от оси ротора он сможем удерживать вес всего 100 г (10 см х 100 г = 1 кгс/см). Соотношение между весом и расстоянием от оси двигателя проиллюстрировано на рисунке ниже

1 см
Суть крутящего момента
Суть крутящего момента
Скорость вращения

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

Передачи

Хотя замедлять скорость двигателя можно с помощью ШИМ, при этом уменьшается подаваемая на двигатель энергия, поэтому генерируемый им крутящий момент также снижается. Эффективно замедлять вращение двигателей позволяют передачи, а в качестве побочного эффекта при этом усиливается крутящий момент. Так, если вы воспользуетесь редуктором 5:1 (рис. ниже) с 50-ю зубцами на одной шестерне и с 10-ю на другой, то на каждые пять оборотов двигателя будет передаваться всего один оборот из редуктора, но крутящий момент на выходе из редуктора окажется в 10 раз сильнее, чем мы получили бы непосредственно от двигателя.
Передачи
Передачи
Редукторные электродвигатели

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

Самыми дешевыми являются редукторные электродвигатели с пластиковыми шестернями. Они работают, но служат не так долго и не дают столь сильного крутящего момента, как редукторные электродвигатели с металлическими шестернями.

Насосы

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

Любители часто пользуются насосами двух распространенных типов: шланговыми или динамическими
Шланговый насос (слева) и динамический насос (справа)
Шланговый насос (слева) и динамический насос (справа)
Насосы обоих типов приводятся в движение от двигателей постоянного тока, но свойства их весьма различны: если вам требуется медленный размеренный ход. берите шланговый насос, если быстрый и бурный - то динамический.

Шланговые насосы

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

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

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

ОБЪЕМНЫЙ РАСХОД

Объемный расход - это количество жидкости, которое насос может прокачивать в единицу времени. Для измерения этого объема и времени применяются различные единицы. Объемный расход небольшого шлангового насоса может составлять 50 мл/мин (миллилитров в минуту). Динамический насос, предназначенный для поливки сада, может иметь объемный расход 5 л/мин (литров в минуту).

Динамические насосы

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

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

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

Проект: домашняя поливальная установка

Добавлено: 31 авг 2023, 16:14
Oleg
В этом простом проекте для Arduino при помощи шлангового насоса заданный объем воды ежедневно подается на комнатные растения (это удобно, когда вы, например, в отпуске).
Домашняя поливальная установка
Домашняя поливальная установка
Таймер, который позволял бы задать, когда поливать растения, здесь не применяется. Вместо этого устройство измеряет интенсивность дневного освещения, и полив происходит, как только начинает темнеть.

Схема проекта

Принципиальная схема этого проекта приведена на рисунке ниже. Транзистор МРЅА14 используется Arduino для включения и выключения двигателя насоса. Диод DI обеспечивает защиту от отрицательных скачков напряжения.

В левой части схемы мы видим фоторезистор и постоянный резистор они образуют делитель напряжения для измерения интенсивности света на аналоговом контакте А0 платы Arduino. Чем больше света попадает в фоторезистор, тем ниже его сопротивление, поэтому на контакте А0 напряжение возрастает вплоть до 5 В.

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

В этом проекте для работы с Arduino вам понадобятся следующие комплектующие:

Arduino Uno
Q1 - Составной транзистор МРЅА14
R1, R3 - Резистор 1 кОм
R2 - Фоторезистор 1 кОм
D1 - Диод 1N4001
Шланговый насос 12 В
400-точечная беспаечная макетная плата
Перемычки "папа-папа" (только для Arduino)
Трубка для вставки в насос, 1 м
Источник питания 12 В 1 А
Большая емкость для воды
Монтажные провода, припаиваемые к двигателю насоса

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

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

Сборка проекта

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

Шаг 1. Припаиваем провода к двигателю
Припаиваем монтажные провода к контактам двигателя насоса, если, конечно, их там еще нет. Провода должны быть достаточно длинными и доставать от насоса до макетной платы и Arduino. Вполне хватит полуметровых проводов.

Шаг 2. Собираем макетную плату
Устанавливаем компоненты проекта на макетной плате, как показано на рисунке. Убедитесь, что транзистор и диод установлены правильно.
Компоновка макетной платы для сборки домашней поливальной установки
Компоновка макетной платы для сборки домашней поливальной установки
Шаг 3. Прикрепляем трубку к насосу
Нам понадобятся два отрезка трубки. Один должен погружаться в емкость с водой на всю ее глубину и доставать от посадочного отверстия для насоса, расположенного в верхней части емкости, до самого ее дна. Второй должен доставать от выходного отверстия насоса до того растения, которое вы собираетесь поливать. На рисунке крупным планом показаны насос и трубки.

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

Код: Выделить всё

const int lightPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int lightReading = analogRead(lightPin);
  Serial.println(lightReading);
  delay(500);
}

Скетч Arduino для этого проекта:

Код: Выделить всё

const int motorPin = 9;   // (1)
const int lightPin = A0;

const long onTime = 10 * 1000; // 60 seconds  (2)
const int dayThreshold = 200;              // (3)
const int nightThreshold = 70;

boolean isDay = true;                      // (4)

void setup() {
  pinMode(motorPin, OUTPUT);
}

void loop() {        // (5)
  int lightReading = analogRead(lightPin);
  if (isDay && lightReading < nightThreshold) { // it went dark (6)
    pump();
    isDay = false;
  }
  if (!isDay && lightReading > dayThreshold) {   // (7)
    isDay = true;
  }
}

void pump() {   // (8)
  digitalWrite(motorPin, HIGH);
  delay(onTime);
  digitalWrite(motorPin, LOW);
}
Уточним некоторые моменты скетча по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:

1. Скетч начинается с определения констант для двух используемых контактов Arduino: контакта для управления двигателем и аналогового входа (lightPin), на котором для измерения интенсивности света используется фоторезистор.

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

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

3. Чтобы было проще различать ночь и день, определяем две константы dayThreshold u nightThreshold. Вероятно, эти значения потребуется откорректировать в зависимости от того, где стоит вазон с растением, и насколько чувствителен ваш фоторезистор. Принципиальная идея такова: если текущее значение освещенности выше dayThreshold, то сейчас день, а если ниже nightThreshold , то сейчас ночь. Может возникнуть вопрос: почему здесь две константы, а не всего одна? Дело в том, что в сумерках, когда только начинает темнеть, уровень освещенности может некоторое время колебаться возле порогового значения, и тогда аппарат сработает несколько раз.

4. Булева переменная isDay содержит ответ на вопрос, день сейчас или нет. Если isDay равно true, то с точки зрения поливальной установки сейчас день.

5. Логика решения о том, наступило ли время для полива, заключена в функции loop. Она принимает значение освещенности.

6. Если сейчас день, но значение освещенности оказалось ниже nightThreshold, это означает, что только что стемнело - поэтому вызывается функция чтобы полить растение. После этого переменная isDay получает значение false, и это означает: наступила ночь, полив пока следует прекратить.

7. Второй оператор іf в цикле loop проверяет, ночь ли сейчас (isDay), и не превышает ли уровень освещения значение dayThreshold. Если оба условия соблюдены, то isDay получает значение true.

8. Наконец, функция pump включает насос, выжидает период, указанный в onTime, а затем выключает насос.

Загружаем и выполняем программу

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

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

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

Удвойте полученное значение и задайте результат в качестве nightThreshold. Обратите внимание: nightThreshold должен быть существенно ниже, чем dayThreshold. Возможно, при оценке двух этих значений потребуются какие-то компромиссы.

Теперь можно изменить значения dayThreshold и nightThreshold в реальном

скетче и загрузить его в Arduino.

Сымитировать наступление сумерек можно снова прикрыв фоторезистор пальцем - насос должен сработать и действовать в течение заданного периода.

Насос, с которым я работал, нагнетал около 90 мл/мин. Чтобы определить, сколько времени должен длиться полив, воспользуйтесь секундомером и мерным ковши ком. Так вы узнаете объемный расход вашего насоса и откорректируете значение onTime, чтобы растение получало ровно столько воды, сколько нужно.

Линейные исполнительные механизмы

Добавлено: 31 авг 2023, 16:31
Oleg
Линейные исполнительные механизмы преобразуют вращение двигателя постоянного тока в линейное движение. Такие устройства часто применяются для дистанционного открытия и закрытия окон и дверей.
В линейных исполнительных механизмах основным элементом является резьбовой ведущий стержень на него навинчена своеобразная гайка, которая не может про- кручиваться, но свободно движется вверх-вниз по стержню, когда он вращается, перемещая рабочую часть исполнительного механизма (вал) вперед-назад. На рисунке показано, как это происходит.
Принцип работы линейного исполнительного механизма
Принцип работы линейного исполнительного механизма
Линейные исполнительные механизмы двигают вал довольно медленно, поскольку резьбовой стержень и гайка фактически действуют как редуктор, а со стороны двигателя обычно устанавливается и обычный редуктор. Поскольку скорость невелика, а двигатель постоянного тока весьма мощный, линейный исполнительный механизм, как правило, дает довольно сильную тягу или толчок. Механизм, показанный на рисунке, развивает силу 1500 Н (ньютонов) - это аналогично подъему груза в 150 кг. Под полной нагрузкой двигатель подобного линейного исполнительного механизма вполне может принимать ток 5 А при напряжении 12 В.
Линейный исполнительный механизм
Линейный исполнительный механизм
Как правило, двигатель линейного исполнительного механизма получает энергию через Н-мост с максимальной силой тока не менее 5 А, благодаря чему может вращаться в обоих направлениях. Чтобы линейный исполнительный механизм не повредился, когда гайка дойдет до одного из концов резьбового стержня, такие устройства обычно оснащены концевыми выключателями, которые автоматически отключают питание, как только гайка упрется в один из концов. При этом управление двигателем упрощается, т. к. можно просто настроить Н-мост так, чтобы он запитывал двигатель при ходе в любом направлении лишь на некоторое ограниченное время достаточное, чтобы механизм мог пройти весь путь назад или вперед.

Соленоиды

Добавлено: 31 авг 2023, 16:39
Oleg
Соленоиды часто используются совместно дверными щеколдами и несложными водяными клапанами. Подобно линейным исполнительным механизмам, они обеспечивают линейное движение находящегося внутри них штока (плунжера), но соленоид - гораздо более простое устройство. Фактически, это электромагнит, который и обеспечивает поступательное движение штока. Путь его в соленоиде обычно очень короток, доли сантиметра.

Под действием тока катушка соленоида возбуждается, и магнитные силы выталкивают шток, преодолевая сжатие пружины. Когда же на катушку питание поступать перестает, шток под действием пружины свободно возвращается в исходное положение. Принцип работы соленоида показан на рисунке ниже.
Принцип работы соленоида
Принцип работы соленоида
Сконструированный на основе соленоида регулирующий водяной клапан, показанный на рисунке ниже, предназначен для переключения подачи водопроводной воды, нагнетаемой под давлением. Когда на клапан не подается питание, вода через него не течет, но при возбуждении катушки плунжер отходит назад, и вода свободно течет через клапан, пока он запитан.
12-вольтовый регулирующий водяной клапан
12-вольтовый регулирующий водяной клапан
Это 12-вольтовое устройство обычно применяется в бытовых стиральных машинах. Можно встретить модели таких клапанов для работы и с переменным током 120 В или 220 В, они также используются в хозяйстве. Работать с большим напряжением при контакте с водой опасно, поэтому в ваших проектах я настоятельно рекомен дую ограничиться 12-вольтовыми насосами и клапанами.