Генератор меандра на 2 канала.
- Войдите на сайт для отправки комментариев
Здравствуйте.
Я совсем новичек в ардуино конструкциях и программировании. Возможно ни когда не взялся за этот контроллер если бы не нужда. На базе любой из плат: Мега, уно, микро, нужно создать генератор прямоугольных импульсов на 2 канала, с частотой до 2-4 МГЦ по каждому. Это еще не все. Требуется возможность регулировки скважности по обоим каналам. Програмно, или переменными резисторами.. Удобство одного метода относительно второго еще не знаю. И это еще не все. Нужно запрограммировать возможность сдвига по времени открывания одного сигнала относительно второго. По умолчанию оба канала выхода открываются одновременно, секунда в секунду. Выходы ардуино будут управлять мосфет транзисторами. Спасибо.
"Миссия невыполнима!"(с).
Понятно. Спасибо большое. Значит и вопросов больше не имеется. Всего доброго.
Почему не выполнима? Если включить PPL то такт таймра 64 МГц. Поделить на 16 вот и 4 МГц И даже скважность можно поменять. Правда шагов будет только 15 . При меньшей частоте соответственно и шагов больше. Таймер справится.
сдохля. мне вот интересно, ну а если бы это было возможно, то что? Вы бы попросили написать для Вас такую программу, или стали бы учить СИ, что б через пару-тройку лет написать самому? ))
Здравствуйте dimax.
Попросил бы естественно помощи в написании такой программы.Частоту можно опустить до 1 МГЦа. Я занимаюсь саморазвитием. Приобрел литературу по программированию ардуино. Мой проект не коммерчесский, для личного пользования.
Програмирование Ардуино не поможет в решении данной задачи. Учить надо програмирование микроконтроллера и таймеров в часности.
сдохля, помочь начинающему написать программу -это всё равно что помочь одеться годовалому малышу. Мало того, что сделаешь всё сам, так он ещё и мешать тебе будет )) И потом то, про что вы говорите - это серьёзная работа, которая стоит денег. Посмотрите в теме проектов -там мой одноканальный генератор с аналогичными характеристиками , даже на первую версию я убил порядка 5 дней рабочего времени, т.к. писал с чистого листа, без каких-либо шаблонов и наработок. Сколько стоит пять дней программиста? ))
Я без малейшего понятия сколько может стоить 5 дней программиста! Ответы в моей теме столь противоречивы, что даже и не знаю - стоит ли продолжать сию ветку!?
Почему противоречивы? Их все можно свести и простому - сделать можно, но для того что бы сделать самостоятельно надо иметь определённый опыт, который можно приобрести за какое то конечное время, учась на более простых задачах. Если нужно срочно можно сходить в тему Ищу исполнителя.
Генератор меандра на 2 канала.
...
Требуется возможность регулировки скважности ...
Скважность меандра не может регулипроваться, она всегда равна 2 и другой не бывает.
Потому и невыполнима, см. мой пост №10.
Спасибо за ответ nik182. Вы дали ответ на один из имеющихся у меня вопросов - на базе ардуино это возможно! Что уже хорошо. Над вопросом в тему "Ищу исполнителя" я задумаюсь.
Я без малейшего понятия сколько может стоить 5 дней программиста!
"без малейшего понятия" означает "не знаю" или "не знаю и знать не хочу"?
Если первое - простейшие оценки сделать довольно просто:
1. Нужно знать среднюю зарплату по стране - можно воспользоваться доступными стстистическими данными.
2. Учитывая, что профессия программиста требует квалификации и, кроме того, востребована в настоящее время, можно предположить, что она выше средней. Т.е. нужно ввести коэффициент заметно больше единицы.
3. Квалификация у программистов тоже бывает разная. В данном конкретном случае пллучаем еще один коэффициент существенно больше единицы.
4. Ну и dimax скромно умолчал, что первая версия его генератора не умела изменять скважность. Так что потребовалась переделка, на что было затрачено дополнительное время. Т.е. имеем третий коэффициент больше 1.
5. Ну а теперь нужно вспомнить, чему учили в начальной школе, и перемножить среднюю зарплату за указанный промежуток времени на 3 коэффициена, каждый из которых больше 1.
Ответы в моей теме столь противоречивы, что даже и не знаю - стоит ли продолжать сию ветку!?
Отнюдь.
Все ответы сводились к одной мысли: Вам эта задача не по зубам. И еще долге будет не по зубам.
От себя добавлю: IMHO можно написать программу, которая будет формально удовлетворять всем перечисленным Вами условиям*. Но вполне вероятно, что когда начнутся уточнения, касающиеся шага перестройки частоты или скважности, задача может выйти за пределы возможностей указанных контроллеров.
PS. Особенно умилило то, что для мегагерцовых генераторов требуется задать синхронность с точностью до секунды.
* Примечание: разумеется, кроме "меандра переменной скважности".
Евгений! Вы формально правы. У меандра скважность всегда двойка. Если изменить скважность это будет уже не меандр. Но всё же импульс останется прямоугольным импульсом как и меандр. Тем более, что в описании задачи слово меандр не фигирирует, фигурирует именно прямоугольный импульс. Т.е. название темы не соответствует Т.З. Но если разделить название от ТЗ, то и первую и вторую задачу решить можно. Можно сделать меандр. Можно сделать прямоугольный импульс с регулируемой скважностью, частным случаем мы получим меандр.
Почитал тему и прошу разрешения принять участие.
Я бы на таких частотах решал задачу комбинированно.
То есть задаюший генератор - на контроллере, на таймере.
А вот задержки и скважность - всю целиком на компараторах и RC, а вот задаюшие смещения для всех задержек на RC - формировал бы цифровым образом на контроллере.
Так можно глубину регулирования сделать такой, какую позволит ЦАП, если это ШИМ и фильтр от Ардуино - то 256 шагов, если это и2с ЦАП внешний - то еще точнее.
добавлю - AD8611 компаратор фронты даст в 2-4 нс и зареджку срабатывания в 4 нс, что на частоте 1-2 МГц - вполне приемлемо (1-2% от периода).
Для формирования задержки и длительности импульса нужно просто взять хорошие прецизионники для R и C. И, конечно, откалиброваться по осцилографу, при настройке.
---------------------------------
вообще готов собрать полностью рабочий макет... на в другой теме на этом форуме. И "это обойдется папаше Дорсету...." далее по тексту ;). (с) -О.Генри, если что, а то современная молодежь уже классику не читает....
Приветствую. Ниже, рабочий скетч генератора на 3 сигнала с регулировкой сдвига фаз, регулировкой частоты, регулировкой скважности. Благодарностей не надо! Люди должны помогать друг другу. Не все в этой жизни должно быть построено на денежных отношениях! Скетч:
рабочий скетч генератора на 3 сигнала с регулировкой сдвига фаз, регулировкой частоты, регулировкой скважности.
2-4 МГц, как ТС просил, тянет, чи що?
Люди должны помогать друг другу. Не все в этой жизни должно быть построено на денежных отношениях!
Так выпьем же за взаимопомощь!
Нет, 2-4 МГЦ не тянет. Достаточно корректно ведет себя до 1500 герц. Человек попросил скетч, рабочую сборку я выложил. При соответствующей доработке имеется возможность довести эту программу до необходимых частот. Вы же тут специалисты!
гость, а вы знаете толк в юморе. "При соответсвующей доработке" конечно можно. Делов то всего ничего - МК взять побыстрее, из 32-битных, да и программу под него совсем другую написать. :)
При соответствующей доработке имеется возможность довести эту программу до необходимых частот.
Ну-ну, как Высоцкий писал: "Жаль, сады стерегут ..."
Делов то всего ничего
Дык, известно ж: "В кедах можно даже по небу летать, если к ним ещё приделать вертолёт".
"Миссия невыполнима!"(с).
ну почему? у ардуино DUO тактовая позволяет
Dimax. Судя по ответам человеку в этой ветке, у вас даже это просто так невозможно получить! Надеюсь, что автору создавшему первый пост моя информация окажется полезной. Удачи вам - специалисты...
Можно сделать генератор с частотами до 8 МГц для прямоугольного сигнала (меандра). Пример реализации есть в проекте AVR DDS2 (искать в сети). Правда там один канал. Для двух и боллее каналов нужно будет изменить ассемблерный код.
Я когда-то пробовал этот генератор, но меня интересовали только периодические сигналы произвольной формы.
П.С. Прочитал про регулировку скважности. Это будет сделать сложнее.
П.С2. Ассемблерный код - это для сигнала произвольной формы. Простой меандр генерируется таймером.
Dimax. Судя по ответам человеку в этой ветке, у вас даже это просто так невозможно получить! Надеюсь, что автору создавшему первый пост моя информация окажется полезной. Удачи вам - специалисты...
Не поможет! Для этого процессор должен иметь тактовую частоту в 2000 раз больше
Вот код формирования меандра из проекта AVR DDS2:
П.С. Ассемблерная вставка в исходниках используется для формирования периодического сигнала произвольной формы, тут это не поможет. Как видно, для меандра используется таймер. Скважность в этом случае менять не получится, разве что в очень грубых пределах, если я правильно помню режимы работы таймеров.
Задачу вашу нужно уточнять, т.е. прямо совсем точно описать. Если вам нужны регулировки скважности или ещё что-то в таком духе на 8 МГц, то сделать это нельзя, т.к. шаг по времени в avr контроллерах измеряется тактовой частотой. Соотв-но изменения сигнала на выводах контроллера можно делать с точностью до периода тактовой частоты.
"Миссия невыполнима!"(с).
ну почему? у ардуино DUO тактовая позволяет
А вот сами попробуйте и потом расскажите.
Задачу вашу нужно уточнять, т.е. прямо совсем точно описать. Если вам нужны регулировки скважности или ещё что-то в таком духе на 8 МГц, то сделать это нельзя, т.к. шаг по времени в avr контроллерах измеряется тактовой частотой. Соотв-но изменения сигнала на выводах контроллера можно делать с точностью до периода тактовой частоты.
Если мерзкий джиттер в +- километр не пугает, вдобавок к мозговыносящему коду, то нет преград. Но в целом это будет выглядеть уныло.
А откуда джиттер? Кто таймер остановит?
Ещё есть вариант использовать какой-нить настоящий DDS генератор вроде AD9850, я видел на картинках, что там есть 2 дискретных выхода (в модуле на их основе).
uni, к чему ваш пример? Вы читали первое сообщение ТС? Вы не видите разницы просто в генерировании высокой частоты, и регулировки скважности этой частоты? Это огромная разница. Регулировка скважности для частоты n эквивалентна умножению частоты n на количество градаций регулировки скважности. А в некоторых режимах ещё и дополнительно умножить на 2. Т.е. например что бы регулировать скважность на частоте 2МГц в пределах всего 100 шагов -нужно что бы МК работал на частоте минимум 200 MГц, а лучше 400.
Где про 100 шагов в посте написано?
Я может быть чего-то не помню, но что нам мешает выставить порог и на максимальной частоте запустить таймер-счётчик? 100 шагов мы не получим, но скважность будет регулироваться на мегагерцах (грубо, но будет). Вы уже проверили, что это не так?
Можно не использовать таймер, есть другой способ - зациклить набор команд управления выводом (почему нет?). Неужели я не смогу при этом разделить 1 мкс на 16 частей? Что мне помешает управлять уровнем на выводе на каждом из этих интервалов?
uni, что нужно проверять? Я на таймерах собаку съел, мне уже ничего проверять не нужно, давно всё считаю в уме. Количество шагов регулировки скважности = F_CPU/ частота и /2 Значит на 2 мегагерцах максимум 4 шага.
Можно сделать генератор с частотами до 8 МГц для прямоугольного сигнала (меандра). Пример реализации есть в проекте AVR DDS2 (искать в сети).
Да, 8-то можно. И примеры далеко искать не надо, вон он на нашем форуме в три строчки валяется - дело-то. Беда в том, что 8 можно, а вот 6 уже проблематично. Следующий после 8 - только 4. Во как :(
, разве что в очень грубых пределах, если я правильно помню режимы работы таймеров.
Неправильно помните. При 8 мегагерцах ничерта Вы не поменяете, т.к. длительность высокого (и низкого) сигнала всего один такт. При 4 - длительность 2 такта, уже можете менять :))))
завязывайте. мужики, очевидно же всё ... Курам на смех. Уже авторы блинков начали сомнения высказывать, что мы с Вами на блинк способны :)
Что мне помешает управлять уровнем на выводе на каждом из этих интервалов?
На мегагерцах? Что-нибудь да помешает. Если Клапауций не запретит, так Камасутра вмешается.
Вы такты на пальцах посчитайте. И скажите какова будет разрядность Вашего ШИМа. Какова на 8МГц, на 4МГц, на 2МГц, на 1МГц? Посчитайте разряды на пальцах, а потом уж управляйте.
Ну, а про зацикленные команды, тут ещё смешнее. Просто посчитайте такты и скажите какую частоту Вы на них получите.
Здравствуйте dimax.
Попросил бы естественно помощи в написании такой программы.Частоту можно опустить до 1 МГЦа. Я занимаюсь саморазвитием. Приобрел литературу по программированию ардуино. Мой проект не коммерчесский, для личного пользования.
Для указанного 1 МГц мы можем выдавать на все выводы порта B прямоугольный сигнал с регулируемой скважностью. Регулировать можно программно, если принудительно переходить на setup() из какого-нибудь прерывания. Длительность импульса можно изменять от 62.5 нс до 13 * 62.5 нс с дискретом 62.5 нс (период равен 1 мкс).
Да uni! Ногодрыгом можна сделать все, что только можна. Налепить таких фрагментиков, за 16 тактов поменять состояния на 2-х пинах 2 раза и выполнить переход на начало как раз получится. Даже с проверкой условия генерируем или уходим на код регулирования параметров.
Так провалилась очередная рекламная акция в исполнении эсэсовца ;) Быстрей надо было предлагать, то что обычно предлагаете ;)
сдохля, а для каких таких прикладных целей Вы решили мосфеты на 1МГц использоват?
В далёком прошлом, когда народ только осваивал AT90S2313 я писал только на avr ассемблере. Кое-какие знания остались (собак не ем). Может кто помнит, в AT90S1200 вообще был аппартный трёхуровневый стек. Так вот "впихивать невпихуемое" меня заставляла жизнь.
Я хотел лишь показать, что в принципе можно всякое, но всё равно нужно закладывать ресурсы под задачу.
Ногодрыгом можна сделать все, что только можна. Налепить таких фрагментиков, за 16 тактов поменять состояния на 2-х пинах 2 раза и выполнить переход на начало как раз получится. Даже с проверкой условия генерируем или уходим на код регулирования параметров.
Да не вопрос! Пиши уже свой код ногодрыжный, а я поржу с тебя. ))))))))))))))
Ногодрыгом можна сделать все, что только можна. Налепить таких фрагментиков, за 16 тактов поменять состояния на 2-х пинах 2 раза и выполнить переход на начало как раз получится. Даже с проверкой условия генерируем или уходим на код регулирования параметров.
Да не вопрос! Пиши уже свой код ногодрыжный, а я поржу с тебя. ))))))))))))))
Ты и так ржеш по жизни, чего тебя в истерику вгонять. Усцышся еще.
А ты не припадай губами к фонтанчику. )))))))))))))))
Осталось реализовать всё остальное. Могёшь? Дерзай, а не дерзи! )))))))))))))))))
Ну, вот Вы всё и доказали. Всего-то 1.25МГц при убогих 14 градациях ШИМ и удлиннённом низком сигнале за счёт накладных расходов цикла. Да ещё и при целиком засранном порте (но от этого-то избавиться можно).
Что Вам тут и объясняли.
Ну и при каких мегагерцах Вы собрались рулить скважность? При одном с 14 градациями?
Я тут единственный, кто смог предложить работающий код, увы.
Евгений, человек попросил 1 МГц, 2 одновременно срабатывающих вывода, управление скважностью. Если хотите смещать положение импульсов относительно друг друга, то можно выдавать в порт другие константы. Остальное уже зависит от схемы и уточнения ТЗ.
Зачем сюда ШИМ приплетать? И причём тут засранный порт? Это инженерная задача и она имеет плюсы и минусы. Плюс в том, что out в отличие от sbi/cbi работает за 1 цикл. Вроде очевидно, что я хотел получить более широкий диапазон регулирования, используя особенности системы команд. Мы жертвуем выводами порта, это минус, но зато можно регулировать относительное положение импульсов на выводах порта.
Ограничения на дискретность изменения длительности импульса заданы не были.
Ну, вот Вы всё и доказали. Всего-то 1.25МГц при убогих 14 градациях ШИМ и удлиннённом низком сигнале за счёт накладных расходов цикла. Да ещё и при целиком засранном порте (но от этого-то избавиться можно).
Что Вам тут и объясняли.
Вот-вот!
2Logik
А вот как примерно это будет выглядеть на СТМ32. 3 х энкодера, всё аппаратно, 3 х таймера для двух сигналов и генерации сдвига между ними, всё аппаратно, 2 х таймера и ДМА для крупненького ТФТ для вывода всей информации, если нет ФСМЦ, по сути тоже аппаратно. Остальные хотелки по остаткам ресурсов. Ну там частотомер на несколько каналов, фоторамка, чего ТФТэшнику зря простаивать, ФМ-приёмничек можно притулить, температура и влажность по вкусу и пр.
Работы на 2-3 вечера и неспеша, под сигарету и кофе. Дизайн и корпус могут отнять времени больше.
Мы жертвуем выводами порта, это минус, но зато можно регулировать относительное положение импульсов на выводах порта.
Вы жертвуете большим - временем и нервами. Когда начнёте это всё совмещать, путаться в тактах, тогда и поймёте.
Может покажите где я в тактах ошибся? Или расскажите что такое удлинённый низкий сигнал? :)
Попробуйте сформировать видеосигнал при помощи avr, потом будете мне советы давать.
Я тут единственный, кто смог предложить работающий код, увы.
В том, что Вы тут самый умный, никто не смоневается.
человек попросил 1 МГц, 2 одновременно срабатывающих вывода
А вот это некрасиво! Ну, зачем лгать коллегам, тем более, что в самом начале темы чёрным по белому написано
нужно создать генератор прямоугольных импульсов на 2 канала, с частотой до 2-4 МГЦ по каждому.
Нехорошо!
Ограничения на дискретность изменения длительности импульса заданы не были.
Да? ну, а как инженер Вы считаете такую дискретность приемлемой? Если так, то это я принимаю Ваш аргумент.
Может покажите где я в тактах ошибся? Или расскажите что такое удлинённый низкий сигнал? :)
Да, не вопрос.
1. Ваш цикл совем не занимает времени на свои накладные расходы? Или он таки сколь-то тактов кушает? Вы эти такты учли, я надеюсь?
2. Если Вы посидите возле своего творения с осциллографом, Вы обнаружите странное явление. Некоторые сигналы вдруг становятся шире остальных. Иногда это низкие сигналы, иногда высокие - как повезёт. И происходит это каждые
16 микросекунд4 микросекунды (виноват, бес попутал). Поисследуйте, посмотрите. Найдите объяснение этому феномену.А советов я Вам не даю, Боже упаси. Просто обсуждаю Ваше творение. Могу прекратить в любой момент, если поступит от Вас такая просьба.