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

Поклонники продукции Microchip Technology Inc тусуются тут.
Perevozchik707
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср фев 02, 2011 20:02:40

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

Сообщение Perevozchik707 »

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

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

Сообщение Kavka »

Первое что приходит в голову - это PLL.
Хотя всё зависит от частоты. Если частота не очень велика, и требования по точности не очень велики, то можно и на микроконтроллере попробовать.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Perevozchik707
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср фев 02, 2011 20:02:40

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

Сообщение Perevozchik707 »

На сколько я понимаю... Это фазовая подстройка? Мне кажется это слишком сложно круто для такой задачи....
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Зависит от частоты. У вас какой диапазон частот на входе?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

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

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


И не на 1,25, а в 1,25 раза уменьшить частоту.
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

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

Сообщение К@Т »

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

Как называетса то что Вы курили и где достать?
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение 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
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

По фазе и пр. требований нет? Частоты какие? Скважность постоянная?
Аватара пользователя
Panda_Y2K
Грызет канифоль
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО
Контактная информация:

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

Сообщение 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 на выходе не должна же быть пустота...
Тут таймер надо использовать, измерять период и генерировать свою последовательность синхронно с входной.
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Panda_Y2K писал(а):Тут таймер надо использовать, измерять период и генерировать свою последовательность синхронно с входной.

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

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

Сообщение Аlex »

От ТС ни слова не прозвучало по поводу частоты.
Его фраза была
На выходе нужно получить импульсы по количеству на 1,25 меньше чем на входе.
.
По этому, судя по словам ТС, ему смело можно предлагать вариант с подсчётом кол-ва импульсов и пропуском ненужных.
ТС не указал ни диапазон чаастот, не сказал нужно ли сохранять скважность на выходе, не уточнил максимальное время отклика выходного сигнала на входной, и т.д.... Просто, тупо, спросил - "Можно поделить ?".
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

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

Сообщение otest »

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

А ТС здесь и не нужен. Только мешать будет.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

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

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


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

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

Сообщение Perevozchik707 »

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

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

Сообщение akl »

Вопрос вырос из этой темы? viewtopic.php?f=20&t=42091
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Вот и родилась идея как бы растянуть шкалу до 10000 тыс.
Так Вам, как я понял, нужно наоборот увеличить частоту. Т.е., при 8000 об/мин. , прибор должен показывать 10000 ?
Perevozchik707
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср фев 02, 2011 20:02:40

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

Сообщение Perevozchik707 »

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

Чисто теоритически понимаю, что то устройство (viewtopic.php?f=20&t=42091) могло бы решить и эту задачу. Но к сажелению оно так и не заработало.( Сейчас же решаем вопрос именно по тахометру...
Perevozchik707
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср фев 02, 2011 20:02:40

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

Сообщение Perevozchik707 »

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

Нет, нет. Именно уменьшить в 1,25. Ведь если 400 (а это уже конец шкалы на штатном тахометре) ещё и умножить на 1,25, то тахометр вообще тогда "завернётся" на второй круг....
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Т.е. прибор, уже при 400Гц, показывает максимум, а движок может ещё быстрее крутить ? И вы просто растянете шкалу до 1000.
Perevozchik707
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср фев 02, 2011 20:02:40

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

Сообщение Perevozchik707 »

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

Вернуться в «PIC»