Страница 1 из 4

Множитель/делитель на микроконтроллере

Добавлено: Сб ноя 26, 2011 17:23:33
Perevozchik707
Всем привет.
Вопрос в следующем. Есть прямоугольные импульсы на входе. На выходе нужно получить импульсы по количеству на 1,25 меньше чем на входе. Проще говоря нужен делитель частоты с дробным коэффициентом. Можно ли сделать такой на контроллёре или может есть какие нибудь микросхемы делители которые смогут помочь в решении этого вопроса? Пример: есть 50 импульсов, на выходе надо 40. Есть 100 импульсов, на выходе надо 80... И т.д.
Заранее спасибо за ответы.

Re: Как сделать делитель на контроллёре.

Добавлено: Сб ноя 26, 2011 18:45:25
Kavka
Первое что приходит в голову - это PLL.
Хотя всё зависит от частоты. Если частота не очень велика, и требования по точности не очень велики, то можно и на микроконтроллере попробовать.

Re: Как сделать делитель на контроллёре.

Добавлено: Сб ноя 26, 2011 18:51:42
Perevozchik707
На сколько я понимаю... Это фазовая подстройка? Мне кажется это слишком сложно круто для такой задачи....

Re: Как сделать делитель на контроллёре.

Добавлено: Сб ноя 26, 2011 19:06:32
Kavka
Зависит от частоты. У вас какой диапазон частот на входе?

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 01:16:49
Jack_A
Тут микроконтроллер нужен как рыбе велосипед.

Div1_25.JPG
(9.03 КБ) 6216 скачиваний


И не на 1,25, а в 1,25 раза уменьшить частоту.

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 01:44:18
К@Т
Jack_A писал(а):Тут микроконтроллер нужен как рыбе велосипед.ИзображениеИ не на 1,25, а в 1,25 раза уменьшить частоту

Как называетса то что Вы курили и где достать?

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 04:20:46
akl
Perevozchik707 писал(а): ...Можно ли сделать такой на контроллёре... Пример: есть 50 импульсов, на выходе надо 40. Есть 100 импульсов, на выходе надо 80...
Т.е. на каждые 5 входных импульсов схема должна генерировать 4 выходных. Может это попробуете, предварительно заложив в исходнике

Код: Выделить всё

CONST_M_N:
   .DB   4,5   ;M=4,N=5
;   .DB   12,13   ;M=12,N=13

viewtopic.php?p=658124#p658124

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 06:24:46
BCluster
По фазе и пр. требований нет? Частоты какие? Скважность постоянная?

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 07:52:45
Panda_Y2K
akl писал(а):
Perevozchik707 писал(а): ...Можно ли сделать такой на контроллёре... Пример: есть 50 импульсов, на выходе надо 40. Есть 100 импульсов, на выходе надо 80...
Т.е. на каждые 5 входных импульсов схема должна генерировать 4 выходных. Может это попробуете, предварительно заложив в исходнике

Код: Выделить всё

CONST_M_N:
   .DB   4,5   ;M=4,N=5
;   .DB   12,13   ;M=12,N=13

viewtopic.php?p=658124#p658124


Неееее так не пойдет. А если пришло 4 импульса или 3 на выходе не должна же быть пустота...
Тут таймер надо использовать, измерять период и генерировать свою последовательность синхронно с входной.

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 09:16:30
КРАМ
Panda_Y2K писал(а):Тут таймер надо использовать, измерять период и генерировать свою последовательность синхронно с входной.

Что Вы понимаете под термином СИНХРОННО? :)))
Разные нецельнократные частоты не могут быть синхронны по определению...
Решается задача ЭЛЕМЕНТАРНО.
Два независимых процесса, которые объединяет ОДНА переменная. Первый процесс создает ее значение (для него это функция). Второму процессу переменная приходится аргументом.
Т.е. делаем обычный периодомер с усреднением (длина буфера фильтра КИХ уточняется по потребности).
Далее делим период на 1,25 и присваиваем полученное значение нашей переменной.
В ЭТО ЖЕ САМОЕ ВРЕМЯ, совершенно асинхронно, второй процесс генерирует выходной период величиной в эту самую переменную.
Вот и вся проблема.

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 10:12:30
Аlex
От ТС ни слова не прозвучало по поводу частоты.
Его фраза была
На выходе нужно получить импульсы по количеству на 1,25 меньше чем на входе.
.
По этому, судя по словам ТС, ему смело можно предлагать вариант с подсчётом кол-ва импульсов и пропуском ненужных.
ТС не указал ни диапазон чаастот, не сказал нужно ли сохранять скважность на выходе, не уточнил максимальное время отклика выходного сигнала на входной, и т.д.... Просто, тупо, спросил - "Можно поделить ?".

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 13:11:24
otest
От ТС ни слова не прозвучало по поводу частоты.

А ТС здесь и не нужен. Только мешать будет.

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 14:00:56
Jack_A
К@Т писал(а):
Jack_A писал(а):Тут микроконтроллер нужен как рыбе велосипед.

Как называетса то что Вы курили и где достать?


Называется "Справочник по цифровым микросхемам". Достать можно в любой библиотеке. Если до библиотеки по тундре на оленях далеко, можно взять простейший симулятор - хоть WB, хоть любимый многими Противнус - и убедиться, что если блокировать каждый 5-й импульс, то это и будет деление числа импульсов на 1.25
1_25.JPG
(25.53 КБ) 953 скачивания

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:10:52
Perevozchik707
На работе был...
1) Действительно я ошибся написав на 1,25 меньше, конечно В 1,25 раза меньше....
2) Частота импульсов будет варьироваться от 0 до 400Гц
Что бы проще понять обьясню, для чего это нужно: Тюненгуется мотор. Установлен компьютер управления мотором позволяющий крутить его до 10000 об/мин и он крутиться до этого значения... Тахометра позволяющего поставить его на штатное место с показаниями до 10 тыс просто не бывает в природе. Были произведены замеры штатного тахометра. Так вот весь диапозон (а это до 8000 тыс об) он ложится при подачи на него 400 импульсов. При 50 импульсах показывает 1000 об... и т.д. Вот и родилась идея как бы растянуть шкалу до 10000 тыс. Графическую шкалу переделать - не проблема....

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:16:23
akl
Вопрос вырос из этой темы? viewtopic.php?f=20&t=42091

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:21:55
Аlex
Вот и родилась идея как бы растянуть шкалу до 10000 тыс.
Так Вам, как я понял, нужно наоборот увеличить частоту. Т.е., при 8000 об/мин. , прибор должен показывать 10000 ?

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:22:49
Perevozchik707
akl писал(а):Вопрос вырос из этой темы? viewtopic.php?f=20&t=42091

Чисто теоритически понимаю, что то устройство (viewtopic.php?f=20&t=42091) могло бы решить и эту задачу. Но к сажелению оно так и не заработало.( Сейчас же решаем вопрос именно по тахометру...

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:24:41
Perevozchik707
Аlex писал(а):
Вот и родилась идея как бы растянуть шкалу до 10000 тыс.
Так Вам, как я понял, нужно наоборот увеличить частоту. Т.е., при 8000 об/мин. , прибор должен показывать 10000 ?

Нет, нет. Именно уменьшить в 1,25. Ведь если 400 (а это уже конец шкалы на штатном тахометре) ещё и умножить на 1,25, то тахометр вообще тогда "завернётся" на второй круг....

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:27:01
Аlex
Т.е. прибор, уже при 400Гц, показывает максимум, а движок может ещё быстрее крутить ? И вы просто растянете шкалу до 1000.

Re: Как сделать делитель на контроллёре.

Добавлено: Вс ноя 27, 2011 15:31:46
Perevozchik707
Аlex Совершенно верно. Тоесть за место 8000 тыс рисуем 10000 и ужимаем шкалу. Ну это если так.... по простому написать....