Почему библиотека Servo ограничивается 12 шт для NANO ?

vde69
Offline
Зарегистрирован: 10.01.2016

библиотека Servo ограничивается на NANO

Везде пишут, что ограничение в 12 сервоприводов и это это связано с количеством цифровых пинов.

А разве аналоговые пины не могут работать как цифровые? 

Мне кажется, что должны работать

14 цифровых + 8 аналоговых - 2 UART = 20 шт...

 

объясните где я ошибаюсь?

 

rkit
Offline
Зарегистрирован: 23.11.2016

Сделай лучше, раз такой умный

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

vde69 пишет:

библиотека Servo ограничивается на NANO

Везде пишут, что ограничение в 12 сервоприводов и это это связано с количеством цифровых пинов.

А разве аналоговые пины не могут работать как цифровые? 

Мне кажется, что должны работать

14 цифровых + 8 аналоговых - 2 UART = 20 шт...

 

объясните где я ошибаюсь?

Везде. Считай сколько можно сделать шимов, а не ноги.

Upper
Offline
Зарегистрирован: 23.06.2020

vde69 пишет:

библиотека Servo ограничивается на NANO

Везде пишут, что ограничение в 12 сервоприводов и это это связано с количеством цифровых пинов.

объясните где я ошибаюсь?

Ограничение связано с временными параметрами. Период серво сигнала 20 мс. Максимальная длительность одного импульса 2,4 мс (так задано в библиотеке). Переполнение таймера происходит за 32мс с хвостиком (для 16 МГц). Чтобы период серво сигналов гарантированно был не больше 20 мс, серв должно быть не больше 20/2,4 = 8.33  Чтобы гарантированно не допустить переполнения таймера серв должно быть не больше 32/2,4 = 13. Может быть я ошибся в цифрах, но смысл точно такой.

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

rkit
Offline
Зарегистрирован: 23.11.2016

Переполнение таймера не играет никакой роли совершенно.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

vde69 пишет:

14 цифровых + 8 аналоговых - 2 UART = 20 шт...

Помимо прочего: не любой аналоговый пин может работать как цифровой, т.е.

14 цифровых + 6 аналого-цифровых - 2 UART = 18 шт...

Upper
Offline
Зарегистрирован: 23.06.2020

rkit пишет:

Переполнение таймера не играет никакой роли совершенно.

Отвечу вам в вашем стиле. Да неужели?

rkit
Offline
Зарегистрирован: 23.11.2016

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

lilik
Offline
Зарегистрирован: 19.10.2017

Если надо управлять с нано 20 приводами делаем как описано тут.

http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/arduino-pro-mini-i-17-servoprivodov

Upper
Offline
Зарегистрирован: 23.06.2020

To rkit

Я в своем первом сообщении довольно подробно написал причину. Вы же просто бросили реплику, для меня очевидно ошибочную. Балабол - это вы.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

Если надо управлять с нано 20 приводами делаем как описано тут.

http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/arduino-pro-mini-i-17-servoprivodov

интересно, качественные (цифровые) сервы имеют следующие параметры:
0 - 1000 мксек
90 - 1500 мксек
180 - 2000 мксек

как они себя на этой библиотеке ведут

 

lilik
Offline
Зарегистрирован: 19.10.2017

Не знаю, у меня дешевые SG90.

vde69
Offline
Зарегистрирован: 10.01.2016

спасибо всем, собственно стало немного понятнее моя проблема.

Собственно у меня 2 варианта

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

2. ставить две NANO и настраивать между ними синхронизацию

 

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Два специализированных 16-канальных сервоконтроллера не получится заюзать?

vde69
Offline
Зарегистрирован: 10.01.2016

sadman41 пишет:
Два специализированных 16-канальных сервоконтроллера не получится заюзать?

я программист а не электронщик, если есть готовая плата управления сервоприводами я ее осилю, но самому взять микросхему и куда-то ее впаять - это не мое.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ключевое слово - PCA9685

vde69
Offline
Зарегистрирован: 10.01.2016

sadman41 пишет:
Ключевое слово - PCA9685

 

:) только они стоят так-же как NANO, а вообще интересно, надо подумать 

rkit
Offline
Зарегистрирован: 23.11.2016

vde69 пишет:

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

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Только они не зависят от остального кода, как Servo.h, и не нужно ломать голову над синхронизацией.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Ключевое слово - PCA9685

классный модуль, как раз для этих целей!

lilik
Offline
Зарегистрирован: 19.10.2017

vde69 пишет:

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

Ходун (гексапод) на 18 сервах?

vde69
Offline
Зарегистрирован: 10.01.2016

lilik пишет:

vde69 пишет:

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

Ходун (гексапод) на 18 сервах?

паук, 6 лап, на каждую 3 сервы

lilik
Offline
Зарегистрирован: 19.10.2017

:-)

Тогда про мини 168 хватит и ещё на блютуз модуль для управления останется.