Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

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

Сб ноя 26, 2011 17:23:33

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

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

Сб ноя 26, 2011 18:45:25

Первое что приходит в голову - это PLL.
Хотя всё зависит от частоты. Если частота не очень велика, и требования по точности не очень велики, то можно и на микроконтроллере попробовать.

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

Сб ноя 26, 2011 18:51:42

На сколько я понимаю... Это фазовая подстройка? Мне кажется это слишком сложно круто для такой задачи....

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

Сб ноя 26, 2011 19:06:32

Зависит от частоты. У вас какой диапазон частот на входе?

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

Вс ноя 27, 2011 01:16:49

Тут микроконтроллер нужен как рыбе велосипед.

Div1_25.JPG
(9.03 KiB) Скачиваний: 5901


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

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

Вс ноя 27, 2011 01:44:18

Jack_A писал(а):Тут микроконтроллер нужен как рыбе велосипед.ИзображениеИ не на 1,25, а в 1,25 раза уменьшить частоту

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

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

Вс ноя 27, 2011 04:20:46

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

По фазе и пр. требований нет? Частоты какие? Скважность постоянная?

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

Вс ноя 27, 2011 07:52:45

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

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

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

Вс ноя 27, 2011 13:11:24

От ТС ни слова не прозвучало по поводу частоты.

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

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

Вс ноя 27, 2011 14:00:56

К@Т писал(а):
Jack_A писал(а):Тут микроконтроллер нужен как рыбе велосипед.

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


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

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

Вс ноя 27, 2011 15:10:52

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

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

Вс ноя 27, 2011 15:16:23

Вопрос вырос из этой темы? viewtopic.php?f=20&t=42091

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

Вс ноя 27, 2011 15:21:55

Вот и родилась идея как бы растянуть шкалу до 10000 тыс.
Так Вам, как я понял, нужно наоборот увеличить частоту. Т.е., при 8000 об/мин. , прибор должен показывать 10000 ?

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

Вс ноя 27, 2011 15:22:49

akl писал(а):Вопрос вырос из этой темы? viewtopic.php?f=20&t=42091

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

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

Вс ноя 27, 2011 15:24:41

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

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

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

Вс ноя 27, 2011 15:27:01

Т.е. прибор, уже при 400Гц, показывает максимум, а движок может ещё быстрее крутить ? И вы просто растянете шкалу до 1000.

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

Вс ноя 27, 2011 15:31:46

Аlex Совершенно верно. Тоесть за место 8000 тыс рисуем 10000 и ужимаем шкалу. Ну это если так.... по простому написать....
Ответить