Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Микроконтроллер для сервопривода подскажите
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Электрические машины, Электропривод и Управление
Страницы: 1, 2, 3, 4
Methane
Цитата(Rst7 @ Mar 19 2009, 00:44) *
Почему бы благородным донам не поточить лясы. Я вот, например, сегодня целый день в квартусе кнопки пропедалил, хочу отвлечься от Verilog'а. А вчера писал прогу в очередном программерском контесте, тоже ниче так. Чистой воды функциональное программирование, никаких микроконтроллеров, тактов и прочей байды. Все в терминах O(log n), всякие красночерные деревья и т.д. Вполне себя нормально чувствую. А вот Ваш кругозор, видимо, на ковбойских камнях и закончился. И думаете, что Вы тут кого-то сможете задеть оскорблениями вида "выбрали трехколесный велосипед". Поверьте, благородные доны, собравшиеся тут выберут оптимальное транспортное средство smile.gif Начнем с того, что мы тут уговаривали топикстартера не переделывать уже готовое железо. А Вы пришли сюда и начали кричать "нет бога кроме..." (цэ)

Если уже сделана глупость, то нужно это глупость не усугублять, а исправить. А автор, с упорством достойным лучшего применения самозабвенно топчется по собственным граблям.
Я не советую взять ПЛИС за десяткок килобоксов, и ваять на ней свой процессор, свой квадратурный декодер, итд. Я советую взять микросхему из того же ценового диапазона что и AVR, но которая специально заточена под такого рода задачи. У которое есть не только квадратурные декодеры но и нормальный ШИМ, нормальная математика. итд. К примеру есть у avr специальный вход, который позволяет загасить выходы в течении одного такта (к примеру перегрузка по току) а у TI она есть, потому что контроллер специально заточен под такого рода задачи.
Уверен что после этой битвы с тактами, начнется "где взять еще 100 тактов, на PID регулятор" или еще что-то похожее.
Мы пока что еще не в СССР живем снова. Процессоры быстро развиваются. Оптимизировать что либо по тактом сейчас явная глупость: через год появится что-то раза в два быстрее, и оптимизация окажется не нужной.
Rst7
Цитата
Если уже сделана глупость


Никакой глупости сделано не было. А вот переделывать топикстартеру железо в пожарном порядке с полным переписыванием софта - вот это будет глупость.
Methane
Цитата(Rst7 @ Mar 19 2009, 10:02) *
Никакой глупости сделано не было. А вот переделывать топикстартеру железо в пожарном порядке с полным переписыванием софта - вот это будет глупость.

Удачи ему.
_Pasha
Цитата(Methane @ Mar 19 2009, 12:08) *
Удачи ему.

Особенно если тиньку отдельно довесить на энкодеры и связать с ней контроллер более удобным, чем квадратура, способом. А после уже и Чухас Экскрементс изучать.
Rst7
Цитата
Особенно если тиньку отдельно довесить на энкодеры и связать с ней контроллер более удобным, чем квадратура, способом.


Кстати да. Решение имеет право на жизнь. Центов 80 всех делов. Заодно, можно и умный WDT на нем смастерить.
PhX
Я думаю, что спор стал бесполезен после фразы:
Цитата(Огурцов @ Mar 18 2009, 19:09) *
Авр - наше все! (с)
Rst7
Цитата
Я думаю, что спор стал бесполезен после фразы:


Да не волнуйтесь. Это шутка smile.gif
Iptash
Какую же максимальную частоту можно обработать тинькой без потерь импульсов?
arisov
Цитата(Iptash @ Mar 19 2009, 12:33) *
Какую же максимальную частоту можно обработать тинькой без потерь импульсов?

250кГц с кварцем 24МГЦ. http://www.embeddedtronics.com/uhuservo.html
Rst7
Цитата
Какую же максимальную частоту можно обработать тинькой без потерь импульсов?


При каких условиях? Сколько энкодеров?

Цитата
с кварцем 24МГЦ


Первую заповедь эмбеддера знаете? Не за.у.айся smile.gif 20МГц и хватит.
Iptash
Цитата(Rst7 @ Mar 19 2009, 12:53) *
При каких условиях? Сколько энкодеров?



Первую заповедь эмбеддера знаете? Не за.у.айся smile.gif 20МГц и хватит.


Один энкодер, пусть кварц 20мгц.
Rst7
Цитата
Один энкодер, пусть кварц 20мгц.


Ну? 22 такта на энкодер. Пусть будет 3хкратный оверсемплинг. и 25% свободного времени CPU хотелось бы оставить. Значит, 22*3=66, 66*1.25=82.5, далее 20МГц/83=240кГц.

Вроде насчет 3х выборок не погорячился.
arisov
Реально, на форуме cnczone.com пишут, что выше 150кГц не получается. 250кГц - это при идеальных условиях, так сам автор разработки пишет. Он их продал больше тысячи по всему миру и замечаний насчёт нестабильности работы от кварца на 24Мгц я нигде не встречал. Единственное - для устойчивого возбуждения кварц должен запускаться на первой (основной) гармонике.
Rst7
Цитата
и замечаний насчёт нестабильности работы от кварца на 24Мгц я нигде не встречал.


Это не повод.
arisov
Цитата(arisov @ Mar 19 2009, 13:21) *
Он их продал больше тысячи по всему миру...

Это тоже не повод, так мелочь по 100Евро... smile.gif
_Pasha
Цитата(arisov @ Mar 19 2009, 14:21) *
Реально, на форуме cnczone.com пишут, что выше 150кГц не получается.


Правильно, потому что он еще занимается и своим основным делом. А здесь - чистокостыль. Поэтому можно скан делать, и поэтому можно сформировать  выходные сигналы в удобной форме +/- 1 попугай на каждый энкодер. Энкодеры принимать с одного порта. Получиццо... а вот это позже. Убегаю smile.gif

Кварец на 24МЭ - это некрасиво smile.gif при 20МГц специфицированных.
ЗЫ: а где это тама у нас топик-стартер спрятался? Пришли к чему-нить ? а то мы тут любую тему затрещим smile.gif
Iptash
В идеале даже если 250кГц, то если у меня датчик на 2500 имп./оборот, то получается максимально 6000об/мин, но это без учетвирения, надо учетвирять т.к. если допустим
шаг винта на оборудывании 10мм то получится тиоретически микронная точность, поэтому в идиале если 6000/4=1500об/мин, уже маловато будет. Наверное я непонятно выразился.
arisov
250кГц - там как бы не совсем килогерцы, по ссылке которую давал, написано Up to 250,000 steps/second for fast motor RPM. Это число шагов в секунду, так что это вроде уже с учетверением.
Iptash
Цитата(arisov @ Mar 19 2009, 13:52) *
250кГц - там как бы не совсем килогерцы, по ссылке которую давал, написано Up to 250,000 steps/second for fast motor RPM. Это число шагов в секунду, так что это вроде уже с учетверением.

Тогда запас есть. Но...
Mahagam
Luminary Micro слепила кучу контроллеров на ядре кортекс с QE, который кроме собственно позиции ещё и какую-то инфу по скорости даёт, и даже прерывание генерит при превышении скорости, или изменении направления. софта - тьма. кода - толстые либы от той же люминары. за три-четыре дня можно отладить простой код по считыванию этих QE.

аппаратный QE избавляет от многих проблем. как, собственно, и всё остальное аппаратное.
Iptash
Дык, автор, что решил?
_Pasha
Цитата(Mahagam @ Mar 19 2009, 15:20) *
Luminary Micro


LM3S9B95 эх! еслиб они еще были бы... написано 2009 второй квартал - пойдут сэмплы.
Огурцов
Цитата(PhX @ Mar 19 2009, 10:12) *
Я думаю, что спор стал бесполезен после фразы:

Васька слушает, да ест (с) Типа, пока веских доводов в пользу замены каменя не приведено.
arisov
У меня сейчас в серве цепи энкодера работают вот по такой схеме. (Описывал не много здесь http://electronix.ru/forum/index.php?s=&am...t&p=542678).
Подпрограмма обработки прерывания от INT0 (можно от INT1 или PCINTn) настроенного по любому изменению логического состояния на входе. Алгоритм - адаптированный для этой схемы от Чена http://elm-chan.org/works/smc/report_e.html (исходник smc2 - http://elm-chan.org/works/smc/smc.zip ) 24-х разрядный результат в_PosL, _PosM, _PosH.
Прерываний надо в два раза меньше, чем если бы по каждому входу А и В. И прерывания происходят только по «правильным» переходам, т.е. лишний раз МК не «отвлекается».
Но как максимальную частоту замерить – до сих пор не знаю http://electronix.ru/forum/index.php?showtopic=59827
Mahagam
Цитата(_Pasha @ Mar 19 2009, 16:22) *
LM3S9B95 эх! еслиб они еще были бы...

что-то из люминары есть на дижикее. пользуем LM3S6965. но он дорог для энкодерного приложения.
хорошие камни. только жрут многовато.

Цитата(_Pasha @ Mar 19 2009, 16:22) *
LM3S9B95 эх! еслиб они еще были бы...

что-то из люминары есть на дижикее. пользуем LM3S6965. но он дорог для энкодерного приложения.
хорошие камни. только жрут многовато.
Iptash
Цитата(arisov @ Mar 19 2009, 15:25) *
У меня сейчас в серве цепи энкодера работают вот по такой схеме. (Описывал не много здесь http://electronix.ru/forum/index.php?s=&am...t&p=542678).
Подпрограмма обработки прерывания от INT0 (можно от INT1 или PCINTn) настроенного по любому изменению логического состояния на входе. Алгоритм - адаптированный для этой схемы от Чена http://elm-chan.org/works/smc/report_e.html (исходник smc2 - http://elm-chan.org/works/smc/smc.zip ) 24-х разрядный результат в_PosL, _PosM, _PosH.
Прерываний надо в два раза меньше, чем если бы по каждому входу А и В. И прерывания происходят только по «правильным» переходам, т.е. лишний раз МК не «отвлекается».
Но как максимальную частоту замерить – до сих пор не знаю http://electronix.ru/forum/index.php?showtopic=59827

А, что если по этой схеме http://electronix.ru/forum/index.php?showt...60502&st=45, у него когда в одну сторону движение учетверенные сигналы
на одном выходе, когда в др. сторону на др. выходе. Сигналы очень четкие. Один вых. подкл. на один вх. счетчика МК, второй на др. вх. счетчика МК.
И по программе эти два счетчика пересчитывать между собой. Тогда никаких потерь не будет и быстродействие хорошее.
khach
Цитата(Iptash @ Mar 19 2009, 14:41) *
Дык, автор, что решил?

Прочитал, много думал, купил девборду на STM32F103, развязал датчик тока моста с помощью ACS713ELCTR-30A (холловский датчик с изоляцией в 2 кв в обычном SO8 корпусе и полосой в 50 кгц),мост был развязан еще раньше, сижу разбираюсь с аппаратными счетчиками енкодеров АРМа.
_Pasha
Три энкодера в +/-. Цикл опроса 28 тактов. Тинька2313.

положил сюда http://electronix.ru/forum/index.php?showt...st&p=565167

Поскольку это как-бы законченное нечто, прикрутил GPL smile.gif

С извращениями и небольшой асимметрией выхода можно смело 26 тактов делать.

С четырьмя энкодерами сколько да под 8-битный входной порт? Ответ готов: 28 тактов smile.gif

20МГц да на 28 = 714 с носом  кГц

Ы-Ы-Ы! biggrin.gif
arisov
Цитата(Iptash @ Mar 19 2009, 20:22) *
А, что если по этой схеме http://electronix.ru/forum/index.php?showt...60502&st=45, у него когда в одну сторону движение учетверенные сигналы
на одном выходе, когда в др. сторону на др. выходе. Сигналы очень четкие. Один вых. подкл. на один вх. счетчика МК, второй на др. вх. счетчика МК.
И по программе эти два счетчика пересчитывать между собой. Тогда никаких потерь не будет и быстродействие хорошее.

В микрочиповском AN696 http://ww1.microchip.com/downloads/en/AppNotes/00696a.pdf так и сделано.
Такой вариант «прокатит» только с МК у которой много таймеров-счётчиков. Но по цене они уже близки со «встроенными» аппаратными обработчиками сигналов от энкодера.
У тиньки или простой меги мало счётчиков. 16 разрядный обычно "идёт" на ШИМ. Остаются 8 разрядные, во первых мало разрядности, во вторых таймеры обычно уже чем то другим заняты, в третьих в некоторых сервоконтроллерах нужен ещё счётчик задания шагов (Step), который тоже должен «пополняться или убавляться» также быстро как и от энкодера, т.е. по прерываниям или 2 счётчика.

Есть PICи у которых по 2 модуля Quadrature Encoder Interface (QEI) http://www.microchip.com/ParamChartSearch/...=10&lang=en

Кстати давно ищу ответ на вопрос, хотел даже отдельную тему открыть.
Есть ли МК у которых имеются реверсивные 16 разрядные счётчики с внешним выводом (входом) задания направления счёта?
Если применить PIC с двумя Quadrature Encoder Interface, то можно ли использовать один из них для Step/Dir?
Iptash
Цитата(arisov @ Mar 19 2009, 23:34) *
В микрочиповском AN696 http://ww1.microchip.com/downloads/en/AppNotes/00696a.pdf так и сделано.
Такой вариант «прокатит» только с МК у которой много таймеров-счётчиков. Но по цене они уже близки со «встроенными» аппаратными обработчиками сигналов от энкодера.
У тиньки или простой меги мало счётчиков. 16 разрядный обычно "идёт" на ШИМ. Остаются 8 разрядные, во первых мало разрядности, во вторых таймеры обычно уже чем то другим заняты, в третьих в некоторых сервоконтроллерах нужен ещё счётчик задания шагов (Step), который тоже должен «пополняться или убавляться» также быстро как и от энкодера, т.е. по прерываниям или 2 счётчика.

Есть PICи у которых по 2 модуля Quadrature Encoder Interface (QEI) http://www.microchip.com/ParamChartSearch/...=10&lang=en

Кстати давно ищу ответ на вопрос, хотел даже отдельную тему открыть.
Есть ли МК у которых имеются реверсивные 16 разрядные счётчики с внешним выводом (входом) задания направления счёта?
Если применить PIC с двумя Quadrature Encoder Interface, то можно ли использовать один из них для Step/Dir?

Тогда напрашивается ответ, нужно ставит реверсивные счетчики, а лучше это все сделать на CPLD без всяких замарочек. Программа на Verilog в ~60
строчек вмещается.
По поводу использования одного QEI в качестве Step/Dir, то наверное нужно этот Step/dir преобразовать в квадратуру, а иногда в ЧПУ помоему
выход настраивается на тип сигнала. Возможно я ошибаюсь. Но преобразовать Step/Dir в квадратуру легко!
_Pasha
Гнем свою линию. 

При небольшой проработке распиновки датчиков получаем частоту поллинга 16 тактов. При этом выдается чистый toggle. Это раз.

В свой сервак внесу чуть модифицированный свой вариант обработки, но с настоящим 4-х режимом. Полных 23 такта вместе со входом/ выходом, но там еще таймер висит. Это два.
Огурцов
Цитата(Iptash @ Mar 19 2009, 21:24) *
CPLD без всяких замарочек. Программа на Verilog в ~60 строчек вмещается.

Нескромно: а сколько стоит CPLD под 60 строчек и о четырех ногах ?


Цитата(_Pasha @ Mar 19 2009, 18:49) *
Три энкодера в +/-. Цикл опроса 28 тактов. Тинька2313.

20МГц да на 28 = 714 с носом  кГц

Собственно, про это я и писал в первом посте. Только тиньку взять восьмилапую, spi + один-два энкодера.
arisov
Цитата(Iptash @ Mar 20 2009, 00:24) *
Тогда напрашивается ответ, нужно ставит реверсивные счетчики, а лучше это все сделать на CPLD без всяких замарочек. Программа на Verilog в ~60
строчек вмещается.

Mariss Freimanis сейчас в своём новом G380 http://www.cnczone.com/forums/showthread.php?t=75035 так и делает. В отличии от предыдущих G320 и G340, которые были на мелкой логике и операционниках http://www.geckodrive.com/products.aspx?n=388858 .

Цитата(Огурцов @ Mar 20 2009, 02:24) *
Собственно, про это я и писал в первом посте. Только тиньку взять восьмилапую, spi + один-два энкодера.
Если к ней ещё подключить внешний кварц, то 8 лап для второго энкодера не хватит.
А зачем изобретать лясипед, когда есть готовые Incremental Interfaces Encoders http://www.lsicsi.com/encoders.htm.

А «систему на кристалле» http://www.cypress.com/?id=1028&resour...esourceTypeID=5
http://www.cypress.com/psoc2/?id=1353 никто для электропривода не пробовал использовать?


Цитата(Iptash @ Mar 20 2009, 00:24) *
По поводу использования одного QEI в качестве Step/Dir, то наверное нужно этот Step/dir преобразовать в квадратуру, а иногда в ЧПУ помоему
выход настраивается на тип сигнала. Возможно я ошибаюсь. Но преобразовать Step/Dir в квадратуру легко!

Вот пара похожих схемок. Можь кому сгодиться.
Rst7
Цитата
Нескромно: а сколько стоит CPLD под 60 строчек и о четырех ногах ?


Бакс. Ну полтора. Только ног 44, а не 4 smile.gif
Огурцов
Цитата(arisov @ Mar 20 2009, 07:25) *
Если к ней ещё подключить внешний кварц, то 8 лап для второго энкодера не хватит.

Для spi кварц не нужен.


Цитата(Rst7 @ Mar 20 2009, 07:34) *
Бакс. Ну полтора. Только ног 44, а не 4 smile.gif

Жирно, в данном случае это минус, а не плюс.
_Pasha
Цитата(Огурцов @ Mar 20 2009, 10:04) *
Для spi кварц не нужен.

Имхо, Вы не там копаете. По SPI пойдет большой поток. Лучше +/-
arisov
Цитата(Огурцов @ Mar 20 2009, 10:04) *
Для spi кварц не нужен.

А обработку энкодера тогда на 1МГц вести?
Огурцов
Цитата(arisov @ Mar 20 2009, 07:27) *
А обработку энкодера тогда на 1МГц вести?

ATtiny25 может и повыше ;


Цитата(_Pasha @ Mar 20 2009, 07:20) *
Имхо, Вы не там копаете. По SPI пойдет большой поток. Лучше +/-

SPI аппаратный, а +/- придется считать программно. Вообще, +/- от квадратурного не сильно отличается ;
Iptash
Цитата(Огурцов @ Mar 20 2009, 10:04) *
...Жирно, в данном случае это минус, а не плюс.

Если цена, то квадратурный декодер со счетчиками, буферами и выборкой да с огромной вх. частотой, 60р. это не дорого. Если ног, то у него параллельные данные, самое оно. Я на CPLD много КИПов переделал. Работают как часики и в зной и стужу.

Цитата(Огурцов @ Mar 20 2009, 10:04) *
...Жирно, в данном случае это минус, а не плюс.

Если цена, то квадратурный декодер со счетчиками, буферами и выборкой да с огромной вх. частотой, 60р. это не дорого. Если ног, то у него параллельные данные, самое оно. Я на CPLD много КИПов переделал. Работают как часики и в зной и стужу.
Огурцов
Цена нормальная, тинька во столько же встанет. А вот ног в десять раз больше, чем нужно. Или придется собирать все входы со всех энкодеров в одном месте.
_Pasha
Цитата(Огурцов @ Mar 20 2009, 17:31) *
Вообще, +/- от квадратурного не сильно отличается ;

3 такта без входа/выхода smile.gif
Огурцов
Цитата(_Pasha @ Mar 21 2009, 06:00) *
3 такта без входа/выхода smile.gif

Несколько больше потребуется только на выделение фронта
_Pasha
Цитата(Огурцов @ Mar 21 2009, 17:11) *
Несколько больше потребуется только на выделение фронта

smile3009.gif  Не-е, так не пойдет. Вы скажите, на какой чудо-меге делать контрол и сколько энкодеров в системе. Тогда, если у Вас не хватит прерываний по перепаду и счетчиков событий, только после этого Вы станете правы. Такшта...
ЗЫ: я говорил про тиньку и цикл опроса 16 тактов. Выкладывать или сами догадаетесь?
Огурцов
Согласен, если с прерываниями. Просто со входом и выходом это займет гораздо больше тактов, чем то же самое поллингом, когда на восемь концов достаточно около восьми тактов ) Но еще раз, spi справится с тем же успехом, а плюс-минус можно и внутри байта кодировать. Либо 2*4 малдших бита от текущего положения.
_Pasha
Цитата(Огурцов @ Mar 21 2009, 18:49) *
Но еще раз, spi справится с тем же успехом, а плюс-минус можно и внутри байта кодировать. Либо 2*4 малдших бита от текущего положения.


А че, можно! И непрерывный поток по SPI не перекосит временнЫе измерения. Если это система многоосевая, то - вполне крутое решение. Хоть до чего-то договорились. smile.gif
arisov
Чем отличаются AT90PWM2/3 от AT90PWM216/316? Нашёл только, что объёмом памяти, но тогда почему DS для каждого свой?
Огурцов
Цитата(arisov @ Apr 2 2009, 15:23) *
Чем отличаются AT90PWM2/3 от AT90PWM216/316? Нашёл только, что объёмом памяти, но тогда почему DS для каждого свой?

На m8 и m88 тоже отличаются. Значит еще что-то есть. Технология новая, например, а с этим все диаграммы другие. Как минимум. А может еще чего добавили/изменили. Апнот по переходу с одной на другую еще не пявился ?
arisov
m8 и m88 даже при беглом осмотре DS видно отличие, а для этих никаких отличий кроме памяти не нашёл. Если только ей и технологией, зачем ещё одну "бумажку" написали, скоректировали бы старую. Или всё таки я плохо искал. Аппноута по переходу нет.
Тогда другой вопрос - какой (PWM3 или 316) лучше? А то хочу купить, только выбрать не могу - какой заказывать (память роли не играет, в цене - мало отличаются)?
VladimirYU
Цитата(arisov @ Apr 2 2009, 20:07) *
Тогда другой вопрос - какой (PWM3 или 316) лучше? А то хочу купить, только выбрать не могу - какой заказывать (память роли не играет, в цене - мало отличаются)?

В PWM3 норвеги накосячили в режиме PLL Central mode. В исполнении PWM3B эту проблему убрали. ИМХО, если помещаетесь в объемы 8К и 512 берите PWM3B, а если что откатитесь на более дорогой 316, полностью совместимый по лапам и софту.
regular1
Всем добрый день. Все пытаются запихнуть весь сервоконтроллер в один процессор. А если сделать разделение функций и применить два процессора и разделить между ними операции? Специально искал в Интернете что-нибудь подобное. И нашел!!! http://www.mcselec.com/index.php?option=co...1&Itemid=57 Здесь основные функции выполняет Мега32, а обработку енкодера выполняет специальная микросхема HCTL2032. Причем это на два двигателя. Микросхему думаю можно заменить еще одним микроконтроллером. Кстати на этом же сайте есть пример обработки енкодера http://www.mcselec.com/index.php?option=co...9&Itemid=57.
А вот еще один сайтик http://www.picservo.com, а точная ссылка http://www.picservo.com/psdata.pdf. Здесь сервоконтроллер выполнен на двух PIC контроллерах. Но в новых версиях сервоконтроллера применен уже один PIC контроллер 18серии.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.