Подать нулевое напряжение на определенные серводвигатели за определенное время.
У меня есть робот, который использует 4 механические руки. Каждая механическая рука имеет 4 штанги READYTOSKY 30 кг. серводвигатели на них.
В какой-то момент мне нужно будет использовать абсолютную максимальную силу только двух механических рук (в то время как две другие останутся неподвижными). Хоть я и не меняю координаты двух других механических рук (которые я не использую), они потребляют напряжение и "забирают" энергию. весь потенциал силы двух других.
Есть ли способ остановить напряжение, потребляемое двумя другими рычагами, хотя бы на короткое время, используя код Arduino? Вскоре после этого они снова получат необходимое напряжение.
if(level==25)
{
pwm.setPWM(12, 0, 200);
pwm.setPWM(13, 0, 255);
pwm.setPWM(14, 0, 430);
delay(100);
pwm.setPWM(1, 0, 380);
pwm.setPWM(2, 0, 520);
delay(500);
pwm.setPWM(0, 0, 170);
delay(600);
stepperten.setCurrentPosition(0);
while (stepperten.currentPosition() != (-3*200))
{
stepperten.setSpeed(-600);
stepperten.runSpeed();
}
steppertwist.setCurrentPosition(0);
while (steppertwist.currentPosition() != (100))
{
steppertwist.setSpeed(200);
steppertwist.run();
}
stepper1.setCurrentPosition(0);
while(stepper1.currentPosition() != (30))
{
stepper1.setSpeed(200);
stepper1.run();
}
pwm.setPWM(1, 0, 295); // ЭТО МОМЕНТ, МНЕ НУЖНО ОТКЛЮЧИТЬ НАПРЯЖЕНИЕ ДЛЯ ДРУГИХ ОРУЖИЙ
pwm.setPWM(2, 0, 400); //И ПОЛУЧИТЬ МАКСИМАЛЬНО ВОЗМОЖНОЕ НАПРЯЖЕНИЕ НА ЭТИХ ДВУХ РУЧКАХ
delay(1500);
pwm.setPWM(12, 0, 125);
array1[25][0] = 170;
array1[25][1] = 295;
array1[25][2] = 400;
array1[25][3] = 153;
array4[25][0] = 125;
array4[25][1] = 255;
array4[25][2] = 395;
}
@Noy, 👍0
Обсуждение1 ответ
Если вы хотите отключить питание некоторых внешних компонентов, вы можете попробовать подать их питание через цифровые контакты. См. этот пример кода:
void setup(){
pinMode(YOUR_ARM_POWER_SUPPLY_PIN, OUTPUT);
// включаем руку
digitalWrite(YOUR_ARM_POWER_SUPPLY_PIN, ON);
}
void loop(){
if(armMustNotUseAnyPower()){
// выключаем руку
digitalWrite(YOUR_ARM_POWER_SUPPLY_PIN, OFF);
}
}
Имейте в виду, что цифровые контакты не могут выдавать такую же мощность, как VCC. Но поскольку вы управляете серводвигателями, я предполагаю, что они в любом случае получают питание извне. Возможно, вам придется добавить какой-нибудь транзистор или другой способ включения и выключения питания от большого источника питания. Надеюсь, это вам чем-то поможет.
- Шаговый двигатель работает не так, как ожидалось
- Какой-нибудь совет, который вы можете дать мне по моему коду шагового двигателя?
- Изменение ШИМ на Arduino Mega, контакты 9 и 10 на 20–25 кГц
- Шаговый двигатель не работает с платой A4988
- Как запустить шаговый двигатель через последовательную связь
- Шаговый двигатель работает медленно при чтении с датчика MPU 6050
- Справка по библиотеке AccelStepper - Одновременное управление двигателем
- Связь с Arduino Mega 2560 последовательных портов через x2 RS232
Вы имеете в виду, что они потребляют ток? Отключение мощности других сервоприводов также будет означать, что они не смогут удерживать свое положение против внешних сил (например, гравитации). Будет ли это проблемой? Вы можете управлять линиями питания сервопривода с помощью p-канального МОП-транзистора., @chrisl
Вы пытались отсоединить сервопривод, а затем снова присоединить его позже?, @Edgar Bonet
Chatgpt посоветовал мне использовать отсоединение и присоединение. Я думал, что это может не сработать во время кода, @Noy
Я подумал о том, чтобы приобрести трасформатор побольше. Тот, который я сейчас использую, — 6,5 [В] с 2,5 [А]. Сервопривод может получить напряжение 4,8–7,2 В. Какой оптимальный ток мне нужен для достижения лучших результатов? Модель "readytosky td-8130mg". Спасибо!, @Noy
Если вы хотите сохранить максимальную гибкость, сложите все токи срыва ваших сервоприводов. Если погуглить даташит TD-8130mg 2.1А для 4.8В и 2.7А для 7.2В. Таким образом, у вас будет ток срыва около 2,6А. Убедитесь, что ваш источник питания может выдерживать максимальный ток., @chrisl