|
|
  |
FPGA based BLDC motor control |
|
|
|
Apr 24 2018, 07:03
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
Apr 24 2018, 07:34
|

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

|
Цитата нет никаких проблем реализовать все в VHDL В этом нет никаких сомнений, только зачем? Вы прикинули сколько нужно обвязки, ацп, компараторы, усилители, драйверы, и тд..
|
|
|
|
|
Apr 24 2018, 07:40
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
Apr 24 2018, 11:06
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Вообще не вижу проблемы. Особенно если добавить драйвер от Ti с датчиками тока. АЦП есть в MAX10. Используя кодогенерацию матлаба все делается вообще в два клика, условно говоря. Мои эксперименты выглядели так. Управлялось с платы Terasic DE10-Lite. Но с этой задачей STM32 справится проще и эффективнее имхо.
Сообщение отредактировал x736C - Apr 24 2018, 11:09
|
|
|
|
|
Apr 24 2018, 11:23
|
Профессионал
    
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Apr 24 2018, 12:49
|
Гуру
     
Группа: Свой
Сообщений: 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?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|