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

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
tower64
Родился
Сообщения: 5
Зарегистрирован: Пт ноя 20, 2009 17:59:19

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

Сообщение tower64 »

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

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

Сообщение Meteor »

Можно пойти с другой стороны.
Если вдруг известны конечные значения частот и они не превышают нескольких сотен Гц.
То можно подобрать такую тактовую частоту, которая будет в 10000 раз выше требуемой.
Ради удовлетворения любопытства ответьте, зачем надо генерить частоты с такой точностью (4 знака)? Есть чем в дальнейшем проверить результат своей кропотливой работы?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
tower64
Родился
Сообщения: 5
Зарегистрирован: Пт ноя 20, 2009 17:59:19

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

Сообщение tower64 »

По поводу частоты х10000 я тоже думаю, хочу попробовать при каждом фронте входа генерить 10000 импульсов а потом их делить
задумка пока в процессе.
Может я не понятно выразился, это устройство будет работать как "электронный редуктор" поэтому коэффициенты деления нужны очень точные иначе будет набегать ошибка, т.е. на одном валу энкодер далее делитель а на другом валу шаговый двигатель.
Важно не точность частоты, а коэффициент деления -количество входных и выходных импульсов
Сейчас реализовано на STM, но на больших оборотах есть пропуски импульсов.
viiv
Грызет канифоль
Сообщения: 280
Зарегистрирован: Чт ноя 06, 2014 13:09:06

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

Сообщение viiv »

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

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

Rs может иметь дробную часть (число с фиксированной точкой) - выбирай число бит в дробной части и частоту генератора исходя из своих требований.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

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

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

Что считаете под большими оборотами?
У каждого шагового двигателя есть параметр частота приемистости. Он показывает какую частоту импульсов способен без потерь отработать ШД находящийся в статике (при моменте нагрузки ниже или равном моменту на валу). Ваши пропуски могут быть следствием либо нагрузки либо высокой частоты исходных испульсов.
В свое время, мне хватило обеспечить двуступенчатую регулировку импульсами (разгон - работа- торможение) через простой счетный триггер и мультиплексор. Разгон и торможение отрабатывались на пониженной в два раза рабочей частоте.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
tower64
Родился
Сообщения: 5
Зарегистрирован: Пт ноя 20, 2009 17:59:19

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

Сообщение tower64 »

to viiv:
Идея интересная, спасибо, буду пробовать реализовать в железе.
Правда хотел с ПЛИС поупражняться :)
to Meteor:
Пропуски импульсов не в моторе а в контроллере, он не успевает обрабатывать за один фронт импульса с энкодера
5000 имп/об. Х2, оборотов 2500 макс итого на входе имеем ~400 кГц, времени на обработку очень мало, поэтому и хочу реализовать на ПЛИС.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Что за двигатель такой, у которого почти 5000 имп/оборот и при этом он отрабатывает 2500 об/с?
В минуту если брать 2500 оборотов, то f=208,3 кГц, но и это 41 об/с, что не каждому ШД под силу.
Обычно при таких малых угловых шагах частота вращения получается совсем ничтожной
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
tower64
Родился
Сообщения: 5
Зарегистрирован: Пт ноя 20, 2009 17:59:19

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

Сообщение tower64 »

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

Вернуться в «ПЛИС»