Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Делитель с дробным коф. и предварительной установкой

Пн окт 26, 2015 17:50:42

Привет котам.
Подскажите как на ПЛИС сделать делитель с коф. деления от 1 до 150, но коэффициенты дробные
к примеру 1.0895, 34.4532 и т.д. после запятой 4 знака.
Нужно управлять шаговиком от энкодера, коэффициент будет будет грузится с МК.
Пробовал реализовать на МК но скорости не хватает
Со схемой обработки квадратурного сигнала проблем не возникло, а вот делитель... не знаю с чего начать
С ПЛИС раньше дел не имел, но светодиодом поморгать удалось :)
пишу только на С, VHDL не знаю.
Нужна любая помощь или хотя бы идея как такой делитель реализовать, и можно ли схематически.
ПЛИС есть XCS30,40

Re: Делитель с дробным коф. и предварительной установкой

Вт окт 27, 2015 18:21:56

Можно пойти с другой стороны.
Если вдруг известны конечные значения частот и они не превышают нескольких сотен Гц.
То можно подобрать такую тактовую частоту, которая будет в 10000 раз выше требуемой.
Ради удовлетворения любопытства ответьте, зачем надо генерить частоты с такой точностью (4 знака)? Есть чем в дальнейшем проверить результат своей кропотливой работы?

Re: Делитель с дробным коф. и предварительной установкой

Ср окт 28, 2015 17:34:23

По поводу частоты х10000 я тоже думаю, хочу попробовать при каждом фронте входа генерить 10000 импульсов а потом их делить
задумка пока в процессе.
Может я не понятно выразился, это устройство будет работать как "электронный редуктор" поэтому коэффициенты деления нужны очень точные иначе будет набегать ошибка, т.е. на одном валу энкодер далее делитель а на другом валу шаговый двигатель.
Важно не точность частоты, а коэффициент деления -количество входных и выходных импульсов
Сейчас реализовано на STM, но на больших оборотах есть пропуски импульсов.

Re: Делитель с дробным коф. и предварительной установкой

Чт окт 29, 2015 14:50:02

tower64, для примера ("на пальцах", чтобы понять идею):
Есть генератор Fоп=16777216Hz (0x1000000), есть регистр (Rs)- скорость шагового двигателя(pps), есть аккумулятор (Ra), при каждом импульсе генератора к содержимому Ra добавляется Rs.
23 разряд Ra -> на шаговый двигатель. Ra - это "положение" шагового двигателя (24 младших разряда - дробная часть): нетрудно прикинуть, при заданном Rs, через секунду, значение Ra увеличится на 16777216 * Rs, т.е. целая часть "положения" шагового двигателя увеличится на Rs (при этом на шаговый двигатель за эту секунду поступит Rs импульсов), а дробная часть останется токой же как и секунду назад.

Далее, "получив" импульс с энкодера микроконтреллер "узнает" желаемое "положение" шагового двигателя в данный момент, а в регистре Ra - реальное "положение" шагового двигателя - микроконтроллер вычисляет рассогласование и управляет скоростью (задает Rs).

Rs может иметь дробную часть (число с фиксированной точкой) - выбирай число бит в дробной части и частоту генератора исходя из своих требований.

Re: Делитель с дробным коф. и предварительной установкой

Сб окт 31, 2015 16:52:33

tower64 писал(а):...устройство будет работать как "электронный редуктор" поэтому коэффициенты деления нужны очень точные иначе будет набегать ошибка, т.е. на одном валу энкодер далее делитель а на другом валу шаговый двигатель.
Важно не точность частоты, а коэффициент деления -количество входных и выходных импульсов

А Вы считали за какое время набежит эта ошибка и сколько оборотов или шагов необходимо сделать для отклонения от заданного хотя бы на единицу?
Мне кажется, Вы сильно усложняете себе работу.
tower64 писал(а):Сейчас реализовано на STM, но на больших оборотах есть пропуски импульсов.

Что считаете под большими оборотами?
У каждого шагового двигателя есть параметр частота приемистости. Он показывает какую частоту импульсов способен без потерь отработать ШД находящийся в статике (при моменте нагрузки ниже или равном моменту на валу). Ваши пропуски могут быть следствием либо нагрузки либо высокой частоты исходных испульсов.
В свое время, мне хватило обеспечить двуступенчатую регулировку импульсами (разгон - работа- торможение) через простой счетный триггер и мультиплексор. Разгон и торможение отрабатывались на пониженной в два раза рабочей частоте.

Re: Делитель с дробным коф. и предварительной установкой

Вс ноя 01, 2015 19:47:10

to viiv:
Идея интересная, спасибо, буду пробовать реализовать в железе.
Правда хотел с ПЛИС поупражняться :)
to Meteor:
Пропуски импульсов не в моторе а в контроллере, он не успевает обрабатывать за один фронт импульса с энкодера
5000 имп/об. Х2, оборотов 2500 макс итого на входе имеем ~400 кГц, времени на обработку очень мало, поэтому и хочу реализовать на ПЛИС.

Re: Делитель с дробным коф. и предварительной установкой

Пн ноя 02, 2015 06:26:03

Что за двигатель такой, у которого почти 5000 имп/оборот и при этом он отрабатывает 2500 об/с?
В минуту если брать 2500 оборотов, то f=208,3 кГц, но и это 41 об/с, что не каждому ШД под силу.
Обычно при таких малых угловых шагах частота вращения получается совсем ничтожной

Re: Делитель с дробным коф. и предварительной установкой

Вт ноя 03, 2015 17:29:00

to Meteor: Вы читаете? .... Импульсов с энкодера 5000... при чем тут мотор??? потом эти импульсы делим, на мотор гораздо меньше. Проблема с входными импульсами, контроллер не успевает, мотор то тут при чем?
Ответить