16-канальный 12-битный PWM/Servo Shield проверьте, питается ли он от адаптера
Я использую 16-канальный 12-битный PWM/Servo Shield Adafruit с контроллером Arduino Uno
В setup()
у меня есть несколько позиций по умолчанию с ШИМ-командами для двигателей с подключением USB к ПК и включением
Я пытаюсь выяснить, как избежать команд setup()
или каких-либо других сигналов во время обработки сервоприводов, в случае, если шилд не питается от адаптера питания, который составляет 6 В 8 ампер. в моем случае, чтобы не посылать сигнал на сервопривод, пока он не запитан от источника питания
@lf80, 👍0
Обсуждение1 ответ
Лучший ответ:
Я бы предложил следующую схему:
Делитель напряжения (состоящий из резисторов) разделит 6 В на 5 В для цифрового входа Arduino. Значения не критичны, их можно сделать выше, но сохранить соотношение, чтобы все равно получить 5В. Диод предотвратит протекание тока из экрана в делитель напряжения, когда экран питается от других средств. Теперь вы можете просто выполнить digitalRead()
на соответствующем цифровом входном контакте вашего Arduino, чтобы проверить, было ли подано питание.
Обратите внимание, что диод немного снижает напряжение своим прямым напряжением (зависит от диода). Но это не должно быть большой проблемой.
Спасибо за ответ. Можете ли вы уточнить, если бы я мог таким образом контролировать питание сервоприводов, используя один из «цифровых входных контактов» с резисторным делителем, чтобы разделить его до 5 В или меньше для Arduino Uno, в чем разница от использования «аналогового контакта» в этом случае? В этом случае я нашел несколько подробных руководств: 1. [Измерение напряжения постоянного тока](https://startingelectronics.org/articles/arduino/measuring-voltage-with-arduino/) 2. [Батарея Arduino](https://www .instructables.com/id/Arduino-Battery-Voltage-Indicator/) 3. [Счетчик энергии](https://www.instructables.com/id/ARDUINO-ENERGY-METER/), @lf80
Из вашего вопроса я предположил, что вы используете обычный адаптер питания, а это значит, что 6В для шилда уже заранее отрегулированы. Я думаю о настенной бородавке. В этом случае есть только две возможности: 6В или отсутствие напряжения вообще. Тогда цифрового контакта достаточно. Если у вас подключена батарея и вы хотите также определить случай низкого напряжения, вы можете использовать аналоговый контакт., @chrisl
Здравствуйте, мне пока не удалось использовать эту схему для проверки результата. Что-то не так для конкретного щита. Схему я спаял точно так, как вы показали, 2 резистора 1,0 и 5,07, диод 1N4148. Без ничего на разъеме питания показывает 6,56В, шилд включается. По схеме напряжение скачет от 6,29 до 6,52В, шилд не включается, видимо напряжения не хватает., @lf80
Экран также должен работать при напряжении до 5В. Зеленый светодиод на щите горит? Будет ли работать, если замкнуть диод? Правильно ли он установлен? (Перевернутое положение заблокирует попадание напряжения на экран), @chrisl
Да, катод (полюс с черной линией), направленный выходным проводом на экран, должен препятствовать попаданию тока из экрана в делитель. Полюс анода направлен на резистор сопротивлением 1 кОм от плюса. Напряжение от VCC и GND составляет 6,18, 6,29, 6,52 В... Зеленый светодиод на щите не горит, шилд не работает. Без схемы прямой тест счетчика показывает 6,56В, горит зеленый светодиод, экран работает. Я не пробовал мостить диод, @lf80
Низкое напряжение не должно быть проблемой. Adafruit прямо заявляет, что вы можете использовать напряжение 5 или 6 В, и предлагает источники питания на 5 В. Проблема должна скрываться где-то в другом месте. Подключены ли в данный момент двигатели? Если да, попробуйте без подключенных двигателей. Если это работает, ток может быть слишком мал., @chrisl
Ваш диод имеет максимальный непрерывный прямой ток 300 мА. В зависимости от подключенных двигателей этого может быть недостаточно., @chrisl
Вы уверены, что диод нужен? Я использую только один источник мощности сервопривода. Кроме того, он довольно крошечный, я не уверен, рассчитан ли он на достаточный ток для управления сервоприводом., @lf80
Я внимательно посмотрел на схемы и обнаружил, что между Vcc и питанием сервопривода нет никакой связи. Тогда без диода было бы ок. Также вы можете проверить это: проверьте напряжение на контактах питания сервопривода, когда внешнее питание не подключено. Если есть 0 В, диод не нужен. Я обновлю ответ этим, @chrisl
Извини за поздний ответ. Да, без диода работает как надо. Спасибо за поддержку, @lf80
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Контакты ШИМ серводвигателей, Arduino Uno
- Проектирование роботизированной руки с помощью Arduino Uno
- Почему задержка более 64 миллисекунд останавливает вращение серводвигателя? Я не использую «Servo.h», вместо этого я просто управляю длиной импульса.
- Вращающийся серводвигатель с использованием Arduino
- Всегда HIGH линия на осциллографе, когда UNO Fast PWM TOP ICR1
- Могу ли я управлять функциями Arduino с помощью ШИМ?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
Вы думали об использовании входного контакта для измерения напряжения адаптера питания? Вам нужно только изолировать его от Vcc с помощью диода (если напряжение адаптера не выше, чем Unos 5V. В этом случае вам также понадобится делитель напряжения., @chrisl
@chrisl Привет, а какая в этом случае программная часть, так как мне нужно это условие в коде скетча. Было бы очень полезно найти более подробное руководство по этой задаче., @lf80
Единственный соответствующий код здесь — использовать
value = digitalRead(pin_number)
. Затем вы можете делать с этим все, что хотите, например, проверить в операторе if, является ли результатHIGH
илиLOW
, выполнивif(value){...} else {...}
. Я не знаю, что я должен написать там в своем ответе., @chrisl@chrisl Да, но я еще не мог использовать эту схему для проверки результата. Как я сказал ниже, при использовании диода не хватает напряжения., @lf80