jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Может кто то встречал реализацию управление мотором на FPGA? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Может кто то встречал реализацию управление мотором на FPGA? А смысл? Там же сложные алгоритмы, по-любому потребуется процессор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба А смысл? Там же сложные алгоритмы, по-любому потребуется процессор. нет никаких проблем реализовать все в VHDL. Комутация, PID, не говоря уже о энкодере и PWM. Единственно в чем была проблема - парсер команд с терминала. Но тут я вроде как сумел его сделать. Не знаю правда сколько места займет обработка всех команд. вот пример. все реализованно в FPGA. index.rar Изменено 24 апреля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 42 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба нет никаких проблем реализовать все в VHDL В этом нет никаких сомнений, только зачем? Вы прикинули сколько нужно обвязки, ацп, компараторы, усилители, драйверы, и тд.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба В этом нет никаких сомнений, только зачем? Вы прикинули сколько нужно обвязки, ацп, компараторы, усилители, драйверы, и тд.. Не так уж много обвязки добавляется. Датчики тока и силовая часть остаются без изменений. Что нужно добавить - ADC. Сегодня есть вполне компактные ADC типа ADS7886. Преимуществ куча. Во первых можно красиво развести плату и присвоить функциональность каждому пину как мне хочется. Счетчики на энкодер - да хоть 64-бит, я не привязан к STM-овскуму таймеру в 16-бит. Ну и так далее. И что самое главное - исчезает парадигма прерываний. Изменено 24 апреля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 42 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Ок, будет очень интересно посмотреть что у вас получится. Мы сейчас для этой цели потихоньку ковыряем TLE9879. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Ок, будет очень интересно посмотреть что у вас получится. Мы сейчас для этой цели потихоньку ковыряем TLE9879. как по мне TLE9879 и не туда и не сюда. контроллер он не заменит - не хватает пинов на все нужные функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба Вообще не вижу проблемы. Особенно если добавить драйвер от Ti с датчиками тока. АЦП есть в MAX10. Используя кодогенерацию матлаба все делается вообще в два клика, условно говоря. Мои эксперименты выглядели так. Управлялось с платы Terasic DE10-Lite. Но с этой задачей STM32 справится проще и эффективнее имхо. Изменено 24 апреля, 2018 пользователем x736C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Вообще не вижу проблемы. Особенно если добавить драйвер от Ti с датчиками тока. АЦП есть в MAX10. Используя кодогенерацию матлаба все делается вообще в два клика, условно говоря. Мои эксперименты выглядели так. Управлялось с платы Terasic DE10-Lite. Но с этой задачей STM32 справится проще и эффективнее имхо. у меня тоже DE10-Lite. halls, encoder, PWM я сделал. остается только комутация и PID. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Преимуществ куча. Во первых можно красиво развести плату и присвоить функциональность каждому пину как мне хочется. Счетчики на энкодер - да хоть 64-бит, я не привязан к STM-овскуму таймеру в 16-бит. Ну и так далее. И что самое главное - исчезает парадигма прерываний. что-то перечисленные "радости" какие-то неубедительные, не нравится распиновка МК, ну возьмите lpc какой-нибудь с SWM где любая периферия мапится вообще на любую ногу, а переполнение даже 16ти разрядного счётчика энкодера явление не такое частое чтобы его дополнительная обработка на хоть что-то заметно повлияла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба что-то перечисленные "радости" какие-то неубедительные, не нравится распиновка МК, ну возьмите lpc какой-нибудь с SWM где любая периферия мапится вообще на любую ногу, а переполнение даже 16ти разрядного счётчика энкодера явление не такое частое чтобы его дополнительная обработка на хоть что-то заметно повлияла. не знал что в lpc любая периферия мапится на любую ногу. если большой пробег мотора и 8 ppr - 16-битный счетчик переполниться. это с чем я столкнулся. может быть не так часто надо обрабатывать переполнение, но зачем все эти прерывания если можно без них. Изменено 24 апреля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Switch matrix не во всех lpc, а только в линейке lpc8XX. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба если большой пробег мотора и 8 ppr - 16-битный счетчик переполниться. это с чем я столкнулся. может быть не так часто надо обрабатывать переполнение даже 10000rpm * 8 даст переполнение через минуту. заведите отдельную переменную pos, хоть на 128 разрядов и складывайте туда ваш переполняющийся счётчик, чуть почаще чем раз в минуту pos += (int16_t)(enc_cnt - enc_cnt_prev) но зачем все эти прерывания если можно без них. но с описанием каких-нибудь более хитрых алгоритмов управления двигателем на VHDL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба даже 10000rpm * 8 даст переполнение через минуту. заведите отдельную переменную pos, хоть на 128 разрядов и складывайте туда ваш переполняющийся счётчик, чуть почаще чем раз в минуту pos += (int16_t)(enc_cnt - enc_cnt_prev) но с описанием каких-нибудь более хитрых алгоритмов управления двигателем на VHDL? да все алгоритмы уже давно написаны. что я первый поднимаю этот вопрос? просто никто не хочет делиться :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться