реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> FPGA based BLDC motor control
Jenya7
сообщение Apr 24 2018, 06:10
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Может кто то встречал реализацию управление мотором на FPGA?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Apr 24 2018, 06:37
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Jenya7 @ Apr 24 2018, 09:10) *
Может кто то встречал реализацию управление мотором на FPGA?

А смысл? Там же сложные алгоритмы, по-любому потребуется процессор.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 24 2018, 07:03
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Timmy @ Apr 24 2018, 11:37) *
А смысл? Там же сложные алгоритмы, по-любому потребуется процессор.

нет никаких проблем реализовать все в VHDL. Комутация, PID, не говоря уже о энкодере и PWM. Единственно в чем была проблема - парсер команд с терминала. Но тут я вроде как сумел его сделать. Не знаю правда сколько места займет обработка всех команд.

вот пример. все реализованно в FPGA.

Сообщение отредактировал Jenya7 - Apr 24 2018, 07:10
Прикрепленные файлы
Прикрепленный файл  index.rar ( 4.51 мегабайт ) Кол-во скачиваний: 22
 
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Apr 24 2018, 07:34
Сообщение #4


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



Цитата
нет никаких проблем реализовать все в VHDL

В этом нет никаких сомнений, только зачем?
Вы прикинули сколько нужно обвязки, ацп, компараторы, усилители, драйверы, и тд..
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 24 2018, 07:40
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Vasily_ @ Apr 24 2018, 12:34) *
В этом нет никаких сомнений, только зачем?
Вы прикинули сколько нужно обвязки, ацп, компараторы, усилители, драйверы, и тд..


Не так уж много обвязки добавляется. Датчики тока и силовая часть остаются без изменений. Что нужно добавить - ADC. Сегодня есть вполне компактные ADC типа ADS7886.

Преимуществ куча. Во первых можно красиво развести плату и присвоить функциональность каждому пину как мне хочется. Счетчики на энкодер - да хоть 64-бит, я не привязан к STM-овскуму таймеру в 16-бит. Ну и так далее.
И что самое главное - исчезает парадигма прерываний.

Сообщение отредактировал Jenya7 - Apr 24 2018, 07:49
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Apr 24 2018, 08:03
Сообщение #6


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



Ок, будет очень интересно посмотреть что у вас получится.
Мы сейчас для этой цели потихоньку ковыряем TLE9879.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 24 2018, 09:48
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Vasily_ @ Apr 24 2018, 13:03) *
Ок, будет очень интересно посмотреть что у вас получится.
Мы сейчас для этой цели потихоньку ковыряем TLE9879.

как по мне TLE9879 и не туда и не сюда. контроллер он не заменит - не хватает пинов на все нужные функции.
Go to the top of the page
 
+Quote Post
x736C
сообщение Apr 24 2018, 11:06
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Вообще не вижу проблемы. Особенно если добавить драйвер от Ti с датчиками тока.
АЦП есть в MAX10.

Используя кодогенерацию матлаба все делается вообще в два клика, условно говоря.

Мои эксперименты выглядели так. Управлялось с платы Terasic DE10-Lite.

Но с этой задачей STM32 справится проще и эффективнее имхо.

Сообщение отредактировал x736C - Apr 24 2018, 11:09
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 24 2018, 11:23
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(x736C @ Apr 24 2018, 16:06) *
Вообще не вижу проблемы. Особенно если добавить драйвер от Ti с датчиками тока.
АЦП есть в MAX10.

Используя кодогенерацию матлаба все делается вообще в два клика, условно говоря.

Мои эксперименты выглядели так. Управлялось с платы Terasic DE10-Lite.

Но с этой задачей STM32 справится проще и эффективнее имхо.


у меня тоже DE10-Lite. halls, encoder, PWM я сделал. остается только комутация и PID.
Go to the top of the page
 
+Quote Post
_pv
сообщение Apr 24 2018, 11:30
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Jenya7 @ Apr 24 2018, 13:40) *
Преимуществ куча. Во первых можно красиво развести плату и присвоить функциональность каждому пину как мне хочется. Счетчики на энкодер - да хоть 64-бит, я не привязан к STM-овскуму таймеру в 16-бит. Ну и так далее.
И что самое главное - исчезает парадигма прерываний.

что-то перечисленные "радости" какие-то неубедительные, не нравится распиновка МК, ну возьмите lpc какой-нибудь с SWM где любая периферия мапится вообще на любую ногу, а переполнение даже 16ти разрядного счётчика энкодера явление не такое частое чтобы его дополнительная обработка на хоть что-то заметно повлияла.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 24 2018, 11:35
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(_pv @ Apr 24 2018, 16:30) *
что-то перечисленные "радости" какие-то неубедительные, не нравится распиновка МК, ну возьмите lpc какой-нибудь с SWM где любая периферия мапится вообще на любую ногу, а переполнение даже 16ти разрядного счётчика энкодера явление не такое частое чтобы его дополнительная обработка на хоть что-то заметно повлияла.

не знал что в lpc любая периферия мапится на любую ногу.
если большой пробег мотора и 8 ppr - 16-битный счетчик переполниться. это с чем я столкнулся. может быть не так часто надо обрабатывать переполнение, но зачем все эти прерывания если можно без них.

Сообщение отредактировал Jenya7 - Apr 24 2018, 11:43
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Apr 24 2018, 12:07
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Switch matrix не во всех lpc, а только в линейке lpc8XX.
Go to the top of the page
 
+Quote Post
_pv
сообщение Apr 24 2018, 12:49
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Jenya7 @ Apr 24 2018, 17:35) *
если большой пробег мотора и 8 ppr - 16-битный счетчик переполниться. это с чем я столкнулся.
может быть не так часто надо обрабатывать переполнение

даже 10000rpm * 8 даст переполнение через минуту.
заведите отдельную переменную pos, хоть на 128 разрядов и складывайте туда ваш переполняющийся счётчик, чуть почаще чем раз в минуту
pos += (int16_t)(enc_cnt - enc_cnt_prev)

Цитата(Jenya7 @ Apr 24 2018, 17:35) *
но зачем все эти прерывания если можно без них.

но с описанием каких-нибудь более хитрых алгоритмов управления двигателем на VHDL?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 24 2018, 13:29
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(_pv @ Apr 24 2018, 17:49) *
даже 10000rpm * 8 даст переполнение через минуту.
заведите отдельную переменную pos, хоть на 128 разрядов и складывайте туда ваш переполняющийся счётчик, чуть почаще чем раз в минуту
pos += (int16_t)(enc_cnt - enc_cnt_prev)


но с описанием каких-нибудь более хитрых алгоритмов управления двигателем на VHDL?

да все алгоритмы уже давно написаны. что я первый поднимаю этот вопрос? просто никто не хочет делиться sm.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016