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

 
 
 
Reply to this topicStart new topic
> acceleration/deceleration step motor
Maverick
сообщение Oct 4 2017, 08:15
Сообщение #1


я только учусь...
******

Группа: Модераторы
Сообщений: 3 386
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Никто ничего не выкладывает на форум, ничем не делиться sm.gif
Ладно поделюсь я, может кому-то пригодиться...
Реализация разгона/торможения шагового двигателя (пока по трапециидальному закону, в дальнейшем можно встроить закон параболы и S образный закон, добавив дробный коеффициент для частоты reg_Fn).
Документ с описанием алгоритма, do файлы для моделсима, скриншот работы(jpg картинка), файлы описания, тестбенч - во вложении (архив 7z).
В общем:

Код
entity SMC is  -- Stepper_Motor_Controller
generic ( M : natural := 32 );
Port (
clk : in STD_LOGIC;
rst : in STD_LOGIC;
en     : in STD_LOGIC;  --enable work
dir     : in STD_LOGIC; --choice of direction acceleration/deceleration
Tmax : in STD_LOGIC_VECTOR (31 downto 0); -- maximum timing
Nsegment : in STD_LOGIC_VECTOR (7 downto 0); -- total segment acceleration/deceleration
T0 : in STD_LOGIC_VECTOR (31 downto 0); -- not used
Fmin : in STD_LOGIC_VECTOR (31 downto 0); --minimum  frequency
Fmax : in STD_LOGIC_VECTOR (31 downto 0); --maximum frequency
ena_work : out STD_LOGIC; --acceleration / deceleration time signal
out_shim : out STD_LOGIC );
end SMC;


Сильно не оптимизировал...
Конструктивная критика принимается.
Прикрепленные файлы
Прикрепленный файл  Stepper_Motor_Controller.7z ( 407.49 килобайт ) Кол-во скачиваний: 31
 


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 4 2017, 08:40
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 3 641
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Maverick @ Oct 4 2017, 11:15) *
Просто делюсь, может кому-то пригодиться...
Сильно не оптимизировал...
Конструктивная критика принимается.

Еще бы немного доделать...
Вы используете параметры, но только где-то "внутри", а надо бы все их вывести на "топ", потому как если кто-то захочет перестроить проект, ну например при симуляции, то не пришлось бы лезть в "дебри"... А в идеале - два набора параметров - для отладки и для железа. А еще рараметр "дебаг-релиз"...
Ну и полное отсутствие комментариев и заголовка с фамилией или хотя бы с ником автора - не красиво...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 4 2017, 09:39
Сообщение #3


я только учусь...
******

Группа: Модераторы
Сообщений: 3 386
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(iosifk @ Oct 4 2017, 11:40) *
Еще бы немного доделать...
Вы используете параметры, но только где-то "внутри", а надо бы все их вывести на "топ", потому как если кто-то захочет перестроить проект, ну например при симуляции, то не пришлось бы лезть в "дебри"... А в идеале - два набора параметров - для отладки и для железа. А еще рараметр "дебаг-релиз"...
Ну и полное отсутствие комментариев и заголовка с фамилией или хотя бы с ником автора - не красиво...

спасибо, исправлю.
дополнение к пояснениям - в строке 125 файла SMC.vhd
reg_n <= "00000000000001111101000000000000"; -- значение бралось с "потолка" для симуляции

это значение 1 для пересчета частоты в период шима, в тактах частоты ПЛИС

T=1/reg_Fn


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Tanya
сообщение Oct 4 2017, 10:48
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 522
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Maverick @ Oct 4 2017, 11:15) *
Никто ничего не выкладывает на форум, ничем не делиться sm.gif
Сильно не оптимизировал...
Конструктивная критика принимается.

Я с точки зрения правильной теории разгоняю так, чтобы энергия линейно росла или убывала от времени. И практика подтверждает эту правильность. Вот делюсь и критикую одновременно. Есть резонанс, который нужно учитывать.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 12 2017, 14:11
Сообщение #5


я только учусь...
******

Группа: Модераторы
Сообщений: 3 386
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



заметил баг(пока не знаю точно) в своей реализации:
если в тестбенче стоит Nsegment <= "00001111"; то вроде все коректно. смотреть значение reg_Fn (при разгоне оно должно быть максимально приблизиться к Fmax, при торможении к Fmin)
если меняю, например на Nsegment <= "00000111"; то некоректно - в конце участка торможения(в конце второго импульса reg_ena_work) не достигает Fmin (reg_Fn порядка 1000) и вначале при разгоне(в начале первого импульса reg_ena_work) есть сильный скачок в reg_Fn - первое 56 (Fmin), следующее порядка 4000
Участки разгона торможения можно видеть по reg_ena_work.
не могу понять причину.
прошу помощи....

upd объяснение этому можно дать, что это происходит, так как количество сегментов меньшее и соответственно приближение грубее...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Doka
сообщение Oct 16 2017, 14:16
Сообщение #6


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 078
Регистрация: 4-10-04
Из: Russia, Moscow
Пользователь №: 778



Цитата(Maverick @ Oct 4 2017, 11:15) *
Сильно не оптимизировал...
Конструктивная критика принимается.


не думали выложить на github.com ?
там удобнее отслеживать и развитие проекта (git) и связь с автором по найденным багам


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Oct 18 2017, 23:00
Сообщение #7


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

Группа: Свой
Сообщений: 1 009
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884



Цитата(Maverick @ Oct 4 2017, 12:15) *
Реализация разгона/торможения шагового двигателя

а как собираетесь траекторию пространственную исполнять ?
это должен planner просчитывать, или проект для такого не предназначен ?


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Вчера, 07:40
Сообщение #8


я только учусь...
******

Группа: Модераторы
Сообщений: 3 386
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(a123-flex @ Oct 19 2017, 02:00) *
а как собираетесь траекторию пространственную исполнять ?
это должен planner просчитывать, или проект для такого не предназначен ?

встроенный процессор для чего? sm.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Вчера, 18:36
Сообщение #9


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

Группа: Свой
Сообщений: 1 009
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884



Цитата(Maverick @ Oct 19 2017, 10:40) *
встроенный процессор для чего? sm.gif

Извиняюсь, а зачем тогда ПЛИС ?
Или вы хотите в режиме большого дробления работать ? Или специфический привод ?

В смысле ПЛИС и встроенный процессор это круто конечно, но при обычных условиях на обсчет траекторий и 300 команд сервиса достаточно процессора за 0.6$.
ПЛИС немного дороже)))


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th October 2017 - 12:37
Рейтинг@Mail.ru


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