Оглавление:
- Запасы
- Шаг 1. Ознакомьтесь с распиновкой вашего шагового драйвера
- Шаг 2: Подключите Arduino 5V / GND к макетной плате
- Шаг 3: Подключите +/- шины к VIO / GND
- Шаг 4: Подключите DIR / STEP к цифровым контактам на Arduino
- Шаг 5: Давайте добавим конденсатор …
- Шаг 6: Идите вперед и подключите этот GND
- Шаг 7: Подключите двигатель к драйверу
- Шаг 8: Подключите EN, MS1 и MS2 к "-"
- Шаг 9: припаяйте гнездовой разъем питания к двум проводам
- Шаг 10: Подключите недавно припаянный женский разъем
- Шаг 11: Подключите их к VM / GND
- Шаг 12: восхищайтесь своей работой
- Шаг 13: Необязательно - проверьте свой VREF
- Шаг 14: Кнопки
- Шаг 15: Добавьте плату микрофона
- Шаг 16: Это должен быть окончательный результат
- Шаг 17: Код
- Шаг 18: Установка и настройка колес
- Шаг 19: Окончательная настройка
Видео: Колыбель Arduino Rocker: 19 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Извините, я не мог устоять перед банально интенсивной музыкой, которую предлагал мой редактор видео.
У меня недавно родился первый ребенок, и у меня уже была деревянная колыбель, которую мой дядя (отличный столяр) сделал для моего племянника. Мой племянник давно перерос это, поэтому я был счастлив взять его и не тратить ВСЕ ДЕНЬГИ на любую люльку / люльку, которую мама-блоггер заставила мою жену упасть в обморок. Подставка имеет довольно простую конструкцию, в основном две стойки с болтами, которые крепятся через них, которые поддерживают корпус люльки. Есть съемный штифт, чтобы зафиксировать его на месте.
В течение нескольких недель мы обнаружили, что часто можем подавить легкую суетливость, немного покачивая колыбель, пока наш мальчик не успокоится. В ту ночь, когда мы это узнали, я провел несколько 10-минутных разминок поздно ночью, вытянув руку из-под одеяла, сонно покачивая его, счастлив, что нашел способ успокоить его, не вставая с постели. Утром я прикрепил веревку и маленький карабин, чтобы я мог раскачивать колыбель, не вытягивая руку.
На следующее утро я начал мозговой штурм, как заставить робота раскачать для меня этого ребенка. Войдите в Arduino…
Запасы
Хорошо, это был мой первый проект Arduino в истории, поэтому я провел несколько экспериментов, проб и ошибок, и я уверен, что в моем дизайне есть возможности для улучшения, но вот мой список деталей: Arduino Uno (13 долларов США) для управления всем комплект (10 $) для подключения проводов
Шаговый двигатель (14 долларов США). Это самая интересная вещь, потому что она выполняет всю работу. Я начал с драйвера с немного меньшим крутящим моментом, но потом получил этот, и он работает довольно хорошо. Не стесняйтесь покупать еще более мощный. Драйверы шагового двигателя (10-30 долларов США). Они находятся между Arduino и двигателем. Этот конкретный, по-видимому, может управлять двигателем тише, чем некоторые другие, поэтому я пошел с этим, поскольку двигатель будет в нескольких футах от моей (и моего сына) головы, пока мы спим. Первоначально я только что купил один драйвер TMC2209 примерно за 10 долларов, но в итоге купил пакет из 4, потому что сначала у меня были некоторые трудности и я хотел убедиться, что в какой-то момент я не поджарил плату. Я фактически убил 3 платы, что подводит меня к следующему пункту … Конденсаторы! (10 долларов) Вам действительно нужен только конденсатор емкостью 1 47 мкФ 50 В, так что эта коробка на 240 была излишней. Источник питания на 36 В (17 долларов) Первоначально я купил ничтожный источник питания 12 В, затем выяснил, что это был источник всех моих проблем и получил тот, который был ближе к максимальному напряжению, с которым мог справиться мой шаговый двигатель. Если вы используете другой двигатель или шаговый драйвер, убедитесь, что он может выдерживать напряжение (В) и что сила тока (А) источника питания не ниже пикового тока, потребляемого двигателем. 8 $) Это то, к чему подключается блок питания. Вам нужно будет припаять их к некоторым проводам, чтобы вставить их в макетную плату. Большой пакет перемычек (9 долларов США), чтобы я мог разместить элементы управления в любом месте комнаты.
Кнопки (8 долларов) для включения / выключения и т. Д.
Микрофонный усилитель (11 долларов) О, вы все тоже не знали, что это был звук?
Я использовал некоторые маленькие шкивные колеса (8 долларов), но, возможно, есть альтернативы получше. Подробнее об этом позже. Вам также обязательно понадобится паяльник и все, что вы хотите использовать для установки двигателя. Я лично просто сделал грубую коробку из 4-х скрепленных между собой деревянных кусков, а затем прикрутил их к другому куску дерева, ширина которого примерно равна ширине моей опоры колыбели. А пока я просто держу его зажатым, потому что не знаю, хочу ли я испортить колыбель моего дяди.
Шаг 1. Ознакомьтесь с распиновкой вашего шагового драйвера
В программе моделирования, которую я использовал, не было этой конкретной платы драйвера, поэтому вам придется ссылаться на это изображение. Я расположил все в той же ориентации, что и на этом изображении.
Шаг 2: Подключите Arduino 5V / GND к макетной плате
Подключите провод от Arduino 5V к шине «+» на одной стороне макета. Подключите провод от одного из GND Arduino к шине «-» на той же стороне макета.
(игнорировать
Шаг 3: Подключите +/- шины к VIO / GND
Подключите провод от шины «-» к GND в нижнем левом углу платы шагового драйвера. Подключите провод от шины «+» к VIO.
Шаг 4: Подключите DIR / STEP к цифровым контактам на Arduino
Подключите выводы DIR и STEP платы шагового драйвера к двум цифровым выводам на Arduino. Я использовал контакты 2 и 3 соответственно, но это не имеет значения, если вы установите контакты в своем коде позже.
Шаг 5: Давайте добавим конденсатор …
Я сжег 2 платы шаговых драйверов, потому что у меня не было конденсатора, поэтому давайте продолжим и добавим конденсатор 47 мкФ 50 В к контактам VM / GND на плате драйвера. Убедитесь, что контакт «-» на конденсаторе находится в контакте GND на макете (на соответствующей стороне конденсатора будет «-»).
Шаг 6: Идите вперед и подключите этот GND
На GND, к которому вы только что добавили конденсатор, подключите его к той же «-» шине, что и другой GND.
Шаг 7: Подключите двигатель к драйверу
Какой штифт и куда пойдут, будет зависеть от двигателя, который вы купили, но тот, который я перечислил, имеет электрическую схему в списке Amazon.
Для моего мотора -
Подключите зеленый и черный к M2B и M2A
Подключите красный и синий к M1A и M1B Примечание: если по какой-либо причине у вашего двигателя нет схемы, вы можете легко определить, какие провода образуют цепь, если у вас есть мультиметр. Установите мультиметр на низкий уровень ампер и отключите двигатель. Прикоснитесь к одному из выводов мультиметра к одному из проводов двигателя, а затем попробуйте каждый из других проводов с другим проводом. Если вы получили показание сопротивления, то эти два провода образуют одну цепь, а два других - другую.
Шаг 8: Подключите EN, MS1 и MS2 к "-"
Я не совсем уверен, что это необходимо, но я считаю, что он устанавливает меньший микрошаг для мотора на драйвере TMC2209. Вы можете соединить их с ближайшей к ним «-» рейкой, так как мы подключим ее к другой стороне позже.
Шаг 9: припаяйте гнездовой разъем питания к двум проводам
Я не лучший пайщик в мире, так что вам придется поискать это где-нибудь в другом месте, но я так и сделал. Я согнул концы проводов так, чтобы они плотно прилегали к выводам разъема, затем припаял провод к выводу. У меня не было термоусадочного материала для шнура, поэтому я просто обернул их изолентой.
Шаг 10: Подключите недавно припаянный женский разъем
Пожалуйста, пока не подключайте свой настоящий блок питания. Красный провод к «+», черный к «-»
Шаг 11: Подключите их к VM / GND
Подключите эти «+» и «-» шины к виртуальной машине и заземлению рядом с ней. Те, на которых есть конденсатор.
Шаг 12: восхищайтесь своей работой
Хорошо, теперь у вас полностью настроены двигатель и драйвер! С этого момента мы будем просто контролировать. Кстати, забегая вперед:
- Если вы отключили драйвер по какой-либо причине, не пытайтесь подключить его, пока подключено питание 36 В. Я убил свою третью плату драйвера вот так.
- Подключите питание 36 В. перед подключением питания Arduino. Я лично не жарил Arduino, но по пути видел много предупреждений об этом.
Шаг 13: Необязательно - проверьте свой VREF
TMC2209 имеет потенциометр, который контролирует ток двигателя. Если у вас тот же драйвер, что и у меня, вы можете прочитать об этом здесь. Если вы хотите отрегулировать настройку:
- Отключите все питание и отсоедините провода двигателя от драйвера.
- Отсоедините провод от контакта EN (включение) на драйвере. Это булавка в верхнем левом углу.
- Подключите источник питания двигателя (36 В)
- Используя мультиметр, установленный на 20 В, прикоснитесь одним выводом к источнику GND (я использовал провод, подключенный к моей «-» шине), а другой вывод - к выводу VREF. Пожалуйста, не касайтесь провода ни к чему другому, вы МОЖЕТЕ закоротить свой драйвер, если вы это сделаете.
- Используйте небольшую отвертку, чтобы аккуратно отрегулировать винт потенциометра. Для моей платы против часовой стрелки = больше мощности. Мой VREF лично читает ~ 0,6 В.
Шаг 14: Кнопки
Затем подключите ваши кнопки вот так. Им не нужна сила.
- Подключите «-» шину макетной платы к одному из GND Arduino. Вы также можете просто прикрепить его к другой планке «-» макета, если хотите.
- Подключите по одному выводу каждой кнопки к «-» рейке.
- Подключите другой контакт каждой кнопки к цифровому контакту на Arduino.
Я использовал 4 кнопки: вкл / выкл мотора
Мотор продолжить
Микрофон включен
Микрофон выключен
Подробнее об этом, когда мы перейдем к коду, но я использовал отдельные кнопки микрофона просто потому, что у меня не было светодиодов, чтобы я знал, включен или выключен микрофон, поэтому наличие отдельных кнопок включения / выключения сделало его надежным.
Шаг 15: Добавьте плату микрофона
Это просто, и здесь у Adafruit есть хорошие инструкции (и основы пайки!).
- Подключите «-» к GND
- Подключите GND на плате микрофона к «-» (вы можете напрямую подключить GND к GND и пропустить предыдущий шаг, правда)
- Подключите VCC к источнику питания 3,3 В на Arduino. Это важно, так как этот источник питания менее "шумный", чем 5 В, что приводит к лучшим показаниям микрофона.
- Подключите OUT к контакту ANALOG IN на Arduino. Я использовал A0.
Шаг 16: Это должен быть окончательный результат
Теперь все должно быть готово. Вот изображение окончательной схемы и моей путаницы проводов на самом деле. Давайте посмотрим на код!
Шаг 17: Код
Хорошо, посмотрим на код! Это не самая чистая моя работа, но она выполняет свою работу. Я добавил комментарии, чтобы объяснить все здесь, но терпите меня. Я использовал Arduino IDE для всего этого (доступно для Windows и Mac бесплатно). Суть заключается в следующем: установите скорость двигателя и расстояние для поворота.
Установите количество камней (качелей), которые нужно сделать.
Поверните установленное расстояние на 1 мах. Качайте заданное количество раз.
Между всем этим следите за нажатием кнопок или слушайте микрофон, чтобы увидеть, должен ли мотор включиться. Вам нужно будет отрегулировать значения скорости, расстояния и чувствительности микрофона. Скорость мотора будет влиять на громкость и крутящий момент. Чем быстрее работает мотор, тем он громче и тем меньше крутящий момент. Моя в настоящее время почти бесшумна, поэтому можно заставить ее работать без особого звука.
#include // "стандартная" библиотека шаговых двигателей
// # define DEBUG 1 // раскомментируйте это, когда вы хотите настроить уровни микрофона // Настройка кнопок - они соответствуют тому, где цифровые контакты вы подключили к кнопкам const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Настройка микрофона - A0 - аналоговый вход для микрофона. Окно выборки указано в миллисекундах. Int micPin = A0; const int sampleWindow = 1000; беззнаковый образец int; bool micEnabled = false; двойная микрочувствительность = 0,53; // вам, вероятно, придется это изменить // Для меня около 0,5 было достаточно, чтобы не срабатывать при слабом воркании // но срабатывать при слабом возгласе int stepsPerRevolution = 3200; // измените это, чтобы соответствовать количеству шагов на оборот для вашего двигателя // Мой двигатель 200 шагов / оборот // Но я установил драйвер на 1/16 микрошага // поэтому 200 * 16 = 3200 … честно говоря, не знаю, если это это правильный способ // сделать это Stepper myStepper (stepsPerRevolution, 2, 3); // 2 и 3 - контакты DIR и STEP int stepCount = 0; int motorSpeed = 95; // вам нужно будет отрегулировать это в соответствии с вашей колыбелью и весом ребенка int numSteps = 90; // Расстояние, на которое будет двигаться мотор. // Вам нужно будет отрегулировать это в зависимости от радиуса колеса, // которое вы прикрепите к мотору. Это и скорость, скорее всего, будет методом проб и ошибок. // Примечание - более высокая скорость на шаговых двигателях = более низкий эффективный крутящий момент // Если у вас недостаточно крутящего момента, ваш двигатель будет пропускать шаги (не двигаться) int oldmotorButtonValue = HIGH; bool enabled = false; // мотор включен? int loopStartValue = 0; int maxRocks = 100; // сколько раз вы хотите, чтобы он качался перед выключением int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // для ведения журнала отладки #endif pinMode (motorEnablePin, INPUT_PULLUP); // Это настройка для работы кнопок без питания pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // устанавливает скорость двигателя равной указанной ранее} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead просто считывает значения кнопок int continueValue = digitalRead (continuePin); // Это обнаруживает нажатие кнопки мотора и предотвращает срабатывание более одного раза за щелчок if (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Если мотор выключен, а микрофон включен, слушаем детский плач if (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } если (включено) {stepsPerRevolution = stepsPerRevolution * -1; // обратное направление // с моей установкой более эффективно развернуться на // первом колебании. Вы можете поместить это после цикла, // если это не так для вашего // вращающего двигателя расстояние, указанное выше для (int i = loopStartValue; i <numSteps; i ++) {// проверка выключения int tempmotorButtonValue = digitalRead (motorEnablePin); если (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Следующие две строки «сохраняют» положение двигателя, поэтому в следующий раз, когда вы его включите, // он продолжит движение, как если бы вы его не выключали. Это предотвращает сбрасывание // вашего расстояния перемещения loopStartValue = i; // сохраняем позицию stepsPerRevolution = stepsPerRevolution * -1; // сохраняем направление oldmotorButtonValue = tempmotorButtonValue; перерыв; } checkContinue (continueValue); // проверяем, была ли нажата кнопка продолжения micCheck (); myStepper.step (stepsPerRevolution / 50); // сколько шагов нужно сделать на цикл, // вам может потребоваться отрегулировать это // убедитесь, что мы продолжаем полное расстояние цикла, если цикл завершился // это вступает в игру, если вы сами выключили двигатель и он «сохранил» позиция if (i == numSteps - 1) {loopStartValue = 0; }}} задержка (100); // пауза 100 миллисекунд перед выполнением следующего камня. Вам нужно будет это отрегулировать. если (включено) checkComplete (); oldmotorButtonValue = motorButtonValue; // это используется для предотвращения двойных щелчков} // Этот код взят непосредственно из Adafruit. двойной getMicReading () {беззнаковый длинный startMillis = millis (); беззнаковое int peakToPeak = 0; // размах без знака int signalMax = 0; unsigned int signalMin = 1024; в то время как (millis () - startMillis <sampleWindow) {micCheck (); если (digitalRead (motorEnablePin) == LOW) включен = true; sample = analogRead (micPin); если (образец signalMax) {signalMax = sample; // сохраняем только максимальные уровни} else if (sample
for (int i = loopStartValue; i <numSteps / 2; i ++) {
myStepper.step (stepsPerRevolution * -1 / 50); // шаг 1/100 оборота:
}
} }
Шаг 18: Установка и настройка колес
Для меня это все еще WIP, потому что, как я уже сказал, я еще не уверен, что хочу ввинчивать винты в свою подставку. Я установил свой следующим образом:
- Поместите зажим, чтобы он действовал как рука, выходящая из опоры, чтобы мое колесо могло тянуть по прямой
- Прикрутил грубую коробку для установки двигателя и прикрутил ее к опорной плите, которую я прижал к ножке люльки.
- Изготовлен на заказ деревянное колесо шкива с отверстием для небольшого шагового колеса шкива внутри. Я сделал центральное отверстие очень плотно и просто заколотил ступенчатый шкив. Я просверлил отверстие в колесе до середины, чтобы я мог получить доступ к винту на металлическом шкиве колеса, чтобы затянуть его на шаговом двигателе.
- Провела веревку от люльки «рука» до колеса. Я закрепил тетиву, пропустив ее через просверленное отверстие и просто приклеив ее на место.
Лучшее решение для третьего шага - сначала просто купить шкив большего диаметра. У меня в канавке диаметр чуть меньше 3 дюймов, и он отлично подходит для моей конкретной люльки.
В моей первой версии вместо колеса использовалась рука. Это не сработало так хорошо, потому что сила не применялась в постоянном направлении, и он также был действительно подвержен сбрасыванию, если исходное положение было неправильным. Использование колеса решает эти проблемы. Я также развлекался, используя небольшую систему шкивов, но в конечном итоге в этом не было необходимости, потому что мое колесо давало мне достаточный крутящий момент.
Шаг 19: Окончательная настройка
Установите микрофон близко к ребенку, но в таком месте, где он не будет задевать провода. Поместите кнопки в любом месте, если у вас достаточно проводов, чтобы добраться до конечного пункта назначения. Вы также можете просто заменить кнопки настройкой Wi-Fi на Arduino, но я еще не углубился в это. Удачи вам!
Рекомендуемые:
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: 7 шагов (с изображениями)
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: я планирую использовать этот Rapsberry PI в кучу забавных проектов еще в моем блоге. Не стесняйтесь проверить это. Я хотел вернуться к использованию своего Raspberry PI, но у меня не было клавиатуры или мыши в моем новом месте. Прошло много времени с тех пор, как я установил Raspberry
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
LED Rocker Game: 7 шагов (с изображениями)
LED Rocker Game: LED Rocker Game - это простая игра для Arduino. В основном он состоит из 9 светодиодов (8 синих светодиодов и 1 красный светодиод посередине), 1 кнопки, 1 динамика и 1 ЖК-панели. Цель этой игры - нажать кнопку, когда мигает красный светодиод. Начинается с того, что мигают 9 светодиодов
Игра Arduino Rocker: 4 шага
Arduino Rocker Game: это игра для Arduino, в ней 11 светодиодных фонарей, светодиодные фонари будут светиться по узору. Когда загорится средний светодиод, нажмите кнопку. У вас есть три жизни, каждый раз, когда вы нажимаете кнопку, когда индикатор не горит посередине, вы теряете жизнь. После
Arduino LED Rocker Game!: 4 шага (с изображениями)
Arduino LED Rocker Game !: Это простая игра для Arduino, довольно простая, но безумно захватывающая. Он основан на примере мигания без задержки на веб-сайте Arduino. Чтобы играть, просто откройте Serial Monitor и нажмите кнопку, когда загорится средний светодиод. Вы получите три жизни