Как я могу наблюдать «провалы напряжения», о которых говорит стартовый комплект в Проекте 5?
Проект 5 стартового комплекта Arduino book (стр. 63) включает подключение потенциометра для управления серводвигателем (см. схему). В книге также рекомендуется подключать развязывающие конденсаторы, как показано на схеме:
Когда серводвигатель начинает двигаться, он потребляет больше тока, чем если бы он уже был в движении. Это приведет к падению напряжения на плате. Поместив конденсатор емкостью 100 мкФ между питанием и землей рядом со штыревыми разъемами, как показано на рис. 1, вы можете сгладить любые изменения напряжения, которые могут возникнуть. Вы также можете разместить конденсатор между питанием и землей, входящими в ваш потенциометр.
Поскольку книга прямо не предостерегает от этого, я решил сделать весь этот проект без конденсаторов, просто чтобы посмотреть, что произойдет. Вроде нормально работает, никаких глюков не заметил. Могу ли я провести какой-нибудь эксперимент, чтобы измерить эти «провалы» напряжения?
Я подумал, что можно попытаться измерить падение напряжения на сервоприводе, поэтому я соединил его последовательно с резистором и подключил вывод АЦП A0 между сервоприводом и резистором. Я измерил падение, но сервопривод не работал... Я предполагаю, что ему не хватало мощности из-за резистора?
@Jack M, 👍1
1 ответ
Лучший ответ:
Я предполагаю, что ему не хватало мощности из-за резистора?
Да, вероятно, так и произошло (вы не указали номинал вашего резистора). Когда сервопривод пытается потреблять больше тока, больший ток должен проходить через резистор. Это означает большее напряжение на резисторе и меньшее на сервоприводе, которому тогда не хватает мощности или даже работы вообще (в зависимости от номинала резисторов).
Могу ли я провести какой-нибудь эксперимент, чтобы реально измерить эти "провалы" напряжения?
Вы пытались измерить провалы с помощью Arduino. Поскольку сервопривод подключен непосредственно к линии 5 В Arduino, то есть имеет собственный Vcc, вы не можете измерить его так же, как потенциометр. По умолчанию analogRead()
использует Vcc в качестве эталона, что означает максимальное значение. Вместо этого вы можете настроить его на использование внутреннего фиксированного источника 1,1 В (который не зависит от Vcc) (см. analogReference()
) и разделить Vcc с помощью делителя фиксированного напряжения (так, чтобы напряжение на аналоговом входе не превышало 1,1 В).
Хотя для того, чтобы увидеть провалы, вам все равно нужно измерять точки данных достаточно быстро, чтобы их уловить. Не зная, какой продолжительности могут быть провалы, трудно сказать, сможете ли вы легко их поймать. Существуют способы относительно быстрого выполнения аналоговых измерений, но для новичка (и особенно для книги для начинающих) это слишком много.
Более простое, но и более дорогое решение (с точки зрения инструментов) – измерить Vcc с помощью осциллографа. В качестве входа может подойти USB-осциллограф (в пределах 50 долларов). Если вы не хотите покупать, вы можете получить доступ к одному в следующем makerspace или университете. В некоторых школах также могут быть осциллографы.
Поскольку книга прямо не предостерегает от этого, я решил сделать весь этот проект без конденсаторов, просто чтобы посмотреть, что произойдет. Вроде нормально работает
Провалы в подаваемом напряжении могут привести к перезагрузке Arduino. Но это происходит только тогда, когда провал слишком большой. И это зависит от множества факторов:
- Сколько тока можно получить от вашего источника питания. Например, порты USB на ПК не дадут вам более 500 мА. А некоторые типы аккумуляторов имеют большое последовательное сопротивление, а это означает, что напряжение значительно упадет, если вы отберете от них слишком большой ток.
- Иногда при работе на макетной плате контакты также могут иметь значительное сопротивление. Это может привести к потере напряжения там.
- Насколько мощный двигатель. В стартовых комплектах обычно есть эти дешевые и маленькие микросервоприводы SG90. Обычно они не потребляют много энергии и не очень сильны.
- Сколько нагрузка на двигатель. Двигатель потребляет различное количество тока в зависимости от его нагрузки. Когда он работает, в настоящее время он самый маленький. Когда он запускается, ему нужно бороться с собственной инерцией, поэтому ему требуется больший ток. Наибольший ток используется, когда двигатель глохнет, потому что его мощности недостаточно, чтобы противодействовать нагрузке.
Последние два пункта влияют на ток двигателя, что может привести к падению напряжения, если источник питания не может обеспечить такой большой ток при указанном напряжении.
Конденсаторы в этом случае являются мерой предосторожности. Я думаю, что автор хотел объяснить это, чтобы убедиться, что это сработает для всех и что студенты уже знают об этом, переходя к более крупным и энергоемким проектам.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Пробовал резистор 10к и 220ом - с первым сервопривод не шевелился, со вторым как-то медленно дергался., @Jack M