jenya7 0 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба Мне нужно сделать драйвер для 3-х двигателей. Двигатели обычные DC Motors 24V. Двигатели имеют энкодеры для отслеживания позиции. Хотелось чтоб энкодеры были апаратные. Обычно это делается на таймерах. Вот задумался какой контроллер выбрать. PWM+Encoders требуют таймера. К тому же на мои нужды нужно еще 3 таймера. У ST вроде нет контролеров заточенных под motion. У TI есть но что то не хочется связываться с TI. К тому же 3 двигателя. Есть контроллеры под такую задачу? Основная проблема - аппаратно обработать 3 энкодера. На атмеловских AVRках я пользовался внешними интераптами но это, как мне кажется, не очень хороший способ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба У ST есть всё для моторов и даже библиотека имеется(правда я не уверен что она бесплатна) http://www.st.com/content/ccc/resource/tec....CD00298474.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба У ST есть всё для моторов... Я б так уверенно не отвечал. Чтобы сделать одновременно 3-и даже простейших аппаратных 2-х входовых квадратурных декодера и 3-и трехканальных PWM (по 6 выходов каждый) не подойдет ни один STM включая STM32H7 и даже Kinetis. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
olegs_d 0 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба У семейства XMC4000 есть все что надо но только для двух моторчиков одновременно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба Кстати по ходу у ТСа коллекторные движки и там всё куда проще получится Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба Кстати по ходу у ТСа коллекторные движки и там всё куда проще получится Хм, действительно похоже на коллекторные. Тогда не интересно. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба Я щас тоже только что так подумал ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 июля, 2017 Опубликовано 2 июля, 2017 (изменено) · Жалоба У ST есть всё для моторов и даже библиотека имеется(правда я не уверен что она бесплатна) http://www.st.com/content/ccc/resource/tec....CD00298474.pdf мда. с FOC SDK как то все мутно. а камень мне посоветовали STM32F303 - там куча таймеров и все с функциями PWM + encoder. Advanced-control timers (TIM1/TIM8/TIM20) General-purpose timers (TIM2/TIM3/TIM4) Basic timers (TIM6/TIM7) General-purpose timers (TIM15/TIM16/TIM17) насколько я понял только TIM2/TIM3/TIM4 support quadrature encoders или я ошибаюсь? Я б так уверенно не отвечал. Чтобы сделать одновременно 3-и даже простейших аппаратных 2-х входовых квадратурных декодера и 3-и трехканальных PWM (по 6 выходов каждый) не подойдет ни один STM включая STM32H7 и даже Kinetis. На PWM мне нужно 4 вывода. Можно обойтись и двумя. У меня внешний Full Bridge Driver принимает два сигнала - PWM FORWARD, PWM REVERSE. Четыре на всякий случай, если буду использовать другой драйвер. Двигатели диси - подключены по мостовой схеме. Изменено 2 июля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EmbedElektrik 0 2 июля, 2017 Опубликовано 2 июля, 2017 · Жалоба параметры энкодера и частота вращения какие? при 10.000 имп\оборот и 1000 об\мин даже с одним движком будет та еще забава Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июля, 2017 Опубликовано 3 июля, 2017 (изменено) · Жалоба параметры энкодера и частота вращения какие? при 10.000 имп\оборот и 1000 об\мин даже с одним движком будет та еще забава я не помню точно, но не думаю что больше 1000 об/мин. На внешних прерываниях считывалось на ура, не думаю что на таймере будет хуже. Изменено 3 июля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба Ну так надо сначала ж выбрать энкодеры исходя из требуемой точности позициирования. Вам же подказали, что если вы выберете энкодеры, выдающие 10000 импульсов на один оборот и ваш двигатель разгонится до 1000об/мин то не сложно посчитать сколько импульсов вам будет прилетать в секунду. А ведь по ним придется принемать решения(т.е. обрабатывать их) вне зависимости от того будет ли там у вас таймер или не таймер.... Поэтому начать следует с постановки тех.задания и определения требуемых характеристик системы, а потом и процессор можно подобрать. А то как-то всё как обычно получается )))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба Ну так надо сначала ж выбрать энкодеры исходя из требуемой точности позициирования. Вам же подказали, что если вы выберете энкодеры, выдающие 10000 импульсов на один оборот и ваш двигатель разгонится до 1000об/мин то не сложно посчитать сколько импульсов вам будет прилетать в секунду. А ведь по ним придется принемать решения(т.е. обрабатывать их) вне зависимости от того будет ли там у вас таймер или не таймер.... Поэтому начать следует с постановки тех.задания и определения требуемых характеристик системы, а потом и процессор можно подобрать. А то как-то всё как обычно получается )))) А проблема в чем? В том что 16-битный таймер вылетит в оверфлоу не закончив хода двигателя? Так там прескейлер можно задать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба Проблема в том, что ваша система не должна допустить срыва регулирования во всем диапазоне скоростей и ускорений привода, которые могут случиться во время его работы. Вам просто подсказывают на что обратить внимание. А что там куда заоверфловится или кол-во прерываний не успеет обработаться - это вы уже просчитывайте, я не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба при 10.000 имп\оборот и 1000 об\мин даже с одним движком будет та еще забава Это получается всего-то 167кГц. При системной частоте в 72МГц таймер запросто справится. При помощи DMA данные можно сбрасывать в отдельную переменную, и вопрос "определить текущую скорость вращения вала" вообще будет решаться элементарно! Это ж не авр какой-нибудь допотопный, где ни таймеров нормальных не было, ни DMA! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба и вопрос "определить текущую скорость вращения вала" вообще будет решаться элементарно! Двигатели обычные DC Motors 24V. Двигатели имеют энкодеры для отслеживания позиции. Что может оказаться несколько сложнее отслеживания скорости вращения вала. Хотя это всё телепатия ибо задача полностью не озвучена Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться