умножитель частоты три канала

narhit
Offline
Зарегистрирован: 11.05.2021
Добрый вечер!
Прошу помощи, чего то ковырялся в инете не чего подходящего не нашел
я когда учился уроки С++ прогуливал, больше люблю паять, но чего то подходящего не могу быстро придумать 
 
нужен умножитель частоты т.е
есть базовая частота с генератора(стационарного), поступает на вход ардуино(у меня мега2560)
далее умножается на 3 , выводится на один пин, потом на 6 на другой пин, и на 10.
 
ниже код который я осилил, то есть я время восокого уровня и низкого уровня, теперь поидеи эту пременную  поставить в оператор delay(Ttime) и через digitalWrite...но так не работает:((((
частота нужна от 1 герц до 1000ГЦ, с сотыми долями
 
int Htime;       // целочисленная переменная для хранения времени высокого логического уровня
int Ltime;       // целочисленная переменная для хранения времени низкого логического уровня
float Ttime;     // переменная для хранения общей длительности периода
void setup()
{
  pinMode(8,INPUT);
  pinMode(7,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(5,OUTPUT);
}
   void loop()
   {
   Htime=pulseIn(8,HIGH);    // прочитать время высокого логического уровня
   Ltime=pulseIn(8,LOW);     // прочитать время низкого логического уровня
    
    Ttime = Htime+Ltime;
  
rkit
Offline
Зарегистрирован: 23.11.2016

Не взлетит. Дико сложная задача. Вполне вероятно, невозможная. Смотря как интерпретировать невнятное описание.

Morroc
Offline
Зарегистрирован: 24.10.2016

narhit пишет:
частота нужна от 1 герц до 1000ГЦ, с сотыми долями
Слишком красиво хотите, вряд ли сами такое осилите. Добавьте еще в ТЗ как быстро вы хотите на выходе получить умноженную частоту с сотыми долями, а то может это и невозможно вовсе.

Какие то генераторы с ФАПЧ возможно или один с последующим делением.

То, что вы использовали и 1Гц не даст точности при 1000Гц, не то что "с сотыми долями".

Частота то от внешнего генератора будет меняться, надеюсь ? А то вдруг мы что то не так поняли.

nik182
Offline
Зарегистрирован: 04.05.2015

https://www.analog.com/ru/parametricsearch/10722#/

Не благодари, а посмотри на цену, диапазоны, и коэффициент умножения. Это то что люди могут в цифре. А вообще такие вещи делают в аналоге на одну входную частоту. 

Можно конечно в Китай оглянуться http://kazus.ru/datasheets/pdf-data/5166070/ICST/ICS601-01.html и цена интереснее и коэффициент подобрать можно но, все равно процессору места нет.  

Morroc
Offline
Зарегистрирован: 24.10.2016

Если у нас все время мира, то можно забацать частотомер, полчаса мерить, потом посчитать табличку синусов и выдать на ЦАП из резисторов... или что то на таймере замутить, где то что то близко к реализуемому, но непросто.

SLKH
Offline
Зарегистрирован: 17.08.2015

Morroc пишет:

Если у нас все время мира, то можно забацать частотомер, полчаса мерить, потом посчитать табличку синусов и выдать на ЦАП из резисторов... или что то на таймере замутить, где то что то близко к реализуемому, но непросто.

не было в задаче синуса.

и вообще никаких форм сигналов - ни входного, ни выходных. 

narhit
Offline
Зарегистрирован: 11.05.2021

Всем спасибо что откликнулись! отвечаю на вопросы:

1. Форма сигнала входная меандр, выходные тоже меандр.

2. Быстрота выхода сигнала не важна! (например 1 -3 секунды)

3. Входной меандр с генератора будет меняться, (но в ручную)

4. Хотелось выходной меандр получить с сотыми долями, если так не выйдет то можно с десятыми

 

Если сложно с умножением , то можно с делением. 

 

На цифровых микросхемах если что то собирать то делитель 2 4 8 16 , либо фиксированное умножение.

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

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А для какой цели это все нужно?

narhit
Offline
Зарегистрирован: 11.05.2021

исследовательской, можно конечно купить 3-6 генератора, но на ардуино думаю дешевле будет

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Дел

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

narhit пишет:

Всем спасибо что откликнулись! отвечаю на вопросы:

1. Форма сигнала входная меандр, выходные тоже меандр.

Иди в "Ищу исполнителя". Моя телега - @wdrakula. Сделаю тебе то, что ты просишь. "До сотых"  - реально насмешил!. На частотах 10К даже до 1Гц не будет. ;)) Это не от меня зависит, а от тактовой частоты контроллера ;)). Я правильно понял, что на разных ногах нужно х3,х6 и х10 исходной частоты?

2К рублисов. И то потому, что почти всё у меня есть готовое  от другого проекта. Бонусом может быть синхронизация фронта всех сигналов, это осталось от упомянутого проекта ;)).

nik182
Offline
Зарегистрирован: 04.05.2015

На ардуине не так кошерно. На блюпиле - stm32f1 можно сделать делением на таймерах любой коэффициент деления входной частоты с шагом в 1. Там как раз 4 таймера, можно не мучаться, а сразу выдавать то что надо. 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

nik182 пишет:

На ардуине не так кошерно. На блюпиле - stm32f1 можно сделать делением на таймерах любой коэффициент деления входной частоты с шагом в 1. Там как раз 4 таймера, можно не мучаться, а сразу выдавать то что надо. 

3, 6 и 10 -  общеее кратное 30, генерить частоту х30 и выдавать, по достижению TOP, каждый 10, каждый 6 и каждый 5 импульс. Если выдавать тоггль, то не х30, а х60. Очень просто. Измерять частоту через ICR1, на 16 битном таймере, а генерить на тамер2 - 8ми битном.

Если денег ТС не пожалеет, то выложу потом сюда коды готовые и для кепча и для генерации на таймере2, я уже делал это. До 5-6 КГц входных - ну просто очень красиво на осциллографе, а потом АВР не успевает уже, но работает.

nik182
Offline
Зарегистрирован: 04.05.2015

Согласен. На частотах до 1 кГц всё это можно и на AVR сделать. Меня интересует только один вопрос. Фаза выходных импульсов должна быть как то привязана к входным импульсам или нет? Т.е. достаточно только частоты сгенерить кратные входной или ещё заморачиваться на привязку фазы?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

от 1 до 10 герц и с десятыми будет проблематично видимо?

nik182
Offline
Зарегистрирован: 04.05.2015

ua6em пишет:

от 1 до 10 герц и с десятыми будет проблематично видимо?

Нет не будет никаких проблем. Это для тебя 1 или 10 какие то сакральные цифры. Для процессора что 10 что 11 это просто интервал времени в тиках, которому приписывают 1 или 10.    

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я вот тоже не понял, что наш друг имел ввиду. Таймер измеряет период с точность до 1/16 мкс, потом пересчитывая это в частоту с хххх знаками после точки.

narhit
Offline
Зарегистрирован: 11.05.2021

wdrakula пишет:

narhit пишет:

Всем спасибо что откликнулись! отвечаю на вопросы:

1. Форма сигнала входная меандр, выходные тоже меандр.

Иди в "Ищу исполнителя". Моя телега - @wdrakula. Сделаю тебе то, что ты просишь. "До сотых"  - реально насмешил!. На частотах 10К даже до 1Гц не будет. ;)) Это не от меня зависит, а от тактовой частоты контроллера ;)). Я правильно понял, что на разных ногах нужно х3,х6 и х10 исходной частоты?

2К рублисов. И то потому, что почти всё у меня есть готовое  от другого проекта. Бонусом может быть синхронизация фронта всех сигналов, это осталось от упомянутого проекта ;)).

То есть ты хочешь мне сделать за 2000р, генератор которой даже в десятые доли не укладывается. Зачем такое советовать? Если не возможно так и скажи Ардуино этого не позволяет. Я куплю ещё гинератор за 3 рубаса

SLKH
Offline
Зарегистрирован: 17.08.2015

"Не думай о десятых долях герца свысокаа...":

Половина периода частоты 999,9 герц - 500050 наносекунд.

Половина периода частоты 1000 герц - 500000 наносекунд.

Разница 50 наносекунд. Один такт 328  - 62,5 наносекунд.

Как-то так.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

narhit пишет:
wdrakula пишет:

narhit пишет:

Всем спасибо что откликнулись! отвечаю на вопросы:

1. Форма сигнала входная меандр, выходные тоже меандр.

Иди в "Ищу исполнителя". Моя телега - @wdrakula. Сделаю тебе то, что ты просишь. "До сотых"  - реально насмешил!. На частотах 10К даже до 1Гц не будет. ;)) Это не от меня зависит, а от тактовой частоты контроллера ;)). Я правильно понял, что на разных ногах нужно х3,х6 и х10 исходной частоты?

2К рублисов. И то потому, что почти всё у меня есть готовое  от другого проекта. Бонусом может быть синхронизация фронта всех сигналов, это осталось от упомянутого проекта ;)).

То есть ты хочешь мне сделать за 2000р, генератор которой даже в десятые доли не укладывается. Зачем такое советовать? Если не возможно так и скажи Ардуино этого не позволяет. Я куплю ещё гинератор за 3 рубаса

это если измерять период, а если измерять частоту, то от 10герц и далее входящей в десятичную уложится вполне...

b707
Offline
Зарегистрирован: 26.05.2017

narhit][quote=wdrakula пишет:

 То есть ты хочешь мне сделать за 2000р, генератор которой даже в десятые доли не укладывается. Зачем такое советовать? Если не возможно так и скажи Ардуино этого не позволяет. Я куплю ещё гинератор за 3 рубаса

смешной... а ты думал кто-то тебе этот генератор за 500 рублей подгонит? Тебе 2000 предложили ТОЛЬКО ПОТОМУ, что у Исполнителя эта задача уже решена. Разработка этого с нуля под твой заказ стоила бы в несколько раз дороже. Индивидуальная работа всегда дороже серийной, поэтому если у тебя есть возможность решить свой вопрос готовым устройством всего за 3К рублей - покупай и не трахай никому мозг

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

narhit пишет:
Я куплю ещё гинератор

;)) Найдешь гИнератор - конечно покупай! ;))))

-----------------------------

Пусть и грешно смеяться над АшиПками, но тут мы видим не ошибки, а полное невежество. Чтобы задать частоту в диапазоне 10Кгц с точностью до герца нужно задать период с точностью до 1/ 100 000 000 сек. Не до десятой герца, а до одного герца. То есть нужен таймер с тактовой 100МГц. "..ищите и обящете, толците и да отверзется вам" (Мтф. 7:7)

b707
Offline
Зарегистрирован: 26.05.2017

wdrakula пишет:

Чтобы задать частоту в диапазоне 10Кгц с точностью до герца нужно задать период с точностью до 1/ 100 000 000 сек.

переведи...

 

nik182
Offline
Зарегистрирован: 04.05.2015

Как там у классика - инженерное невежество наиболее ярко проявляется в погоне за не достижимой точностью?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

b707 пишет:

 Тебе 2000 предложили ТОЛЬКО ПОТОМУ, что у Исполнителя эта задача уже решена.

Помнишь зимой или в начале весны был человек с "пачками импульсов" и сомнения, что это вообще можно сделать на АВР?

Вот я и сделал для прикола. После 7000 Гц входной частоты стали ощутимо (до 2-3мкс) уплывать фронты "пачки". Там была задача в положительный полупериод входного сигнала уложить пачку из неизвестного числа импульсов от 2 до 8, причем их число можно изменять на ходу. И оба фронта пачки согласовать с входящим сигналом.

По сути  - примерно то же самое. Измерил входную длительность на Таймере1 - генерируешь от нее расчетную частоту пачки таймером2, запускаешь по фронту и гасишь по спаду входного сигнала.

Я тогда просто ради интереса написал. Теперь подумал, что продать нужно! ;)))) Меня очень веселят люди с идиотскими требованиями по точности и погрешности. Такие хрен себе микрометром измеряют, вероятно. ;)) Прежде, чем писать херню про "до сотых", калькулятором нельзя воспользоваться? Или "жертвы ЕГЭ" на калькуляторе считать уже тоже не умеют?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

b707 пишет:

wdrakula пишет:

Чтобы задать частоту в диапазоне 10Кгц с точностью до герца нужно задать период с точностью до 1/ 100 000 000 сек.

переведи...

 

Выше уже был расчет про десятые. ;))

два сигнала 10000Гц и 10001Гц какая разница в длине периода? Сам сосчитаешь? 10 ns.

SLKH
Offline
Зарегистрирован: 17.08.2015

Просматривается 2 варианта:

1. STM32

2. ГУН+ФАПЧ + делители + нано/мини, которая достаточно грубо измеряет частоту входного сигнала и упомянутые делители  переключает.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

SLKH пишет:

Просматривается 2 варианта:

1. STM32

2. ГУН+ФАПЧ + делители + нано/мини, которая достаточно грубо измеряет частоту входного сигнала и упомянутые делители  переключает.

 

Оно, конечно, так. Но реально ли веришь, что ГУН+ФАПЧ даст "сотые" герца? ;))) То есть единицы наносекунд по длительностям. Гыыыыы! Не, такие есть, конечно! ...в сотовых телефонах.

SLKH
Offline
Зарегистрирован: 17.08.2015

wdrakula пишет:

SLKH пишет:

Просматривается 2 варианта:

1. STM32

2. ГУН+ФАПЧ + делители + нано/мини, которая достаточно грубо измеряет частоту входного сигнала и упомянутые делители  переключает.

 

Оно, конечно, так. Но реально ли веришь, что ГУН+ФАПЧ даст "сотые" герца? ;))) То есть единицы наносекунд по длительностям. Гыыыыы! Не, такие есть, конечно! ...в сотовых телефонах.

да какая разница? на 8-значном индикаторе ещё и не то покажет. А требований к точности ТС не формулировал.

К тому же у нас всё равно нет путного частотомера для входного сигнала.

=============

Когда-то я лепил в режиме "народное творчество" на рассыпухе генератор 1 мгц для предварительной настройки кварцев частотомерных, с фапч - синхронизация была по строчной развертке телевидения. Работало достаточно прилично.