ВЧ генератор
- Войдите на сайт для отправки комментариев
Втр, 25/08/2015 - 14:10
Здравствуйте! Столкнулся с необходимостью сделать генератор с регулируемой частотой от 1 до 2 МГц и возможностью изменения формы сигнала (меандр, пила/обратная пила, синус, треугольник). Пока вожусь с AD9833 и ОУ NE5532, но сигнал после усилителя сильно зашумлён. На днях наткнулся на код:
#define myOutputPin 13
int toggle = 0;
void setup()
{
pinMode(myOutputPin, OUTPUT);
cli();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 8;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
sei();
}
ISR(TIMER1_COMPA_vect)
{
digitalWrite(myOutputPin, toggle == 0 ? HIGH : LOW);
toggle = ~toggle;
}
void loop(){}
Который с лёгкостью генерирует Прямоугольный сигнал частотой 1МГц
На фото сигнал без нагрузки. Так что не обращайте внимания на круглый фронт.
Так как я не очень силён в программировании и насколько хватает моего скромного разумения это не совсем wiring c++ прошу помощи советом или готовым кодом или просто где можно почитать - можно ли получить сигнал другой формы и большей частоты.
Заранее спасибо!
https://onedrive.live.com/embed?cid=543B82515E3378FA&resid=543B82515E3378FA%21211157&authkey=AMdoRaGOeFUI_JI
Сорри - не удаётся вставить фото-(
MuckS, ардуина способна генерировать только меандр. Из самых верхних частот это 8.0, 4.0, 2.6, 2.0, 1.6, 1.3, 1.1 , 1.0, 0.8 MHz итд (делите 16Mhz на 2 и ещё раз на целочисленные делители, начиная от 1 )
Дружище! Ознакомься, пожалуйста с фото по ссылке во втором сообщении. Это генерирует arduino mega 2650. Это прямоугольник. За частоты спасибо, но как это реализовать практически? Можете ли посоветовать - какие, может, переменные или команды в вышеопубликованном коде овечают за частоту сигнала?
MuckS, я его сразу посмотрел. Что там такого, на то нужно обратить внимание? "Прямоугольник" это разговорное названия меандра. Код тот, что вы привели - классический "быдлокод". Рулить выходом на таких частотах из прерывания -уже моветон, а использовать digitalWrite это уже клинический случай. Вот то-же самое, но правильно:
void setup() { pinMode (9,OUTPUT); //9 нога для Уно/нано/мини. Для Меги будет 11 нога TCCR1A=1<<COM1A0; //oc1a enable TCCR1B=(1<<WGM12)|(1<<CS10); // Mode4(CTC), divider=1 OCR1A=2; //значение задаёт частоту 0 -8mHz 1 -4mHz, 2 -2,6mhz и так далее.. } void loop() { }Мовитон так мовитон. Будь по Вашему. По мне - главное, чтобы работало. Спасибо. Сейчас попробую.
P.S. ццц-) "быдлокод"-)
Увы. Ваш код выдаёт шум-( Но за комментарии спасибо. Теперь понятно куда копать. Если что выйдет - выложу.
MuckS, он не может выдавать шум. Вы с 11 пина сигнал снимали?, указали его как output?
С кодом всё в порядке.
Шума нет и не совсем меандр, но похоже.
MuckS, сейчас пересматривал тему. Вы не заметили, и я тоже не обратил внимания, что ваш осциллограф в посте #1 показывает вовсе не 1 МГц, а 50 кГц ! У вас клетка 5мкс , а период около 4х клеток. Вот о чём я и говорил, быдлокод в принципе не может работать с высокими частотами.
Kolchugin, у вас аппарат немножко искажает реальную картинку. Вот как сигнал скетча из #4 на моём выглядит:
На таких частотах ( а лучше всегда) для наблюдения за фронтами
нужно использовать только скомпенсированный делитель 1:10.
Это азы......
http://www.rlocman.ru/shem/schematics.html?di=53244
trembo, на моём щупе написано до 6МГц можно 1:1. Вот картинка с делителем 1:10
Звенит ваш делитель. Но немножко. Перекомпенсирован слегка.
На щупе есть подстроечный конденсатор.
Нужно подать с осциллографа (с его выхода калибровки) импульсы
и подстроить немножко высокочастотную компенсацию.
Растянув по максимуму входной фронт и сделать или минимальный выброс или более резкий перегиб.
Обычно и то и то присутствует. Кому как нравится.....
Смысл этого чтобы делитель активного сопротивления (его резисторы)
и делитель реактивного вопротивления ( ёмкость параллельная входному резистору
и суммарная ёмкость кабеля, входа осциллографа и второго резистора )
имели одинаковый коэффициент 1:10
Подстройка существует только на делителе, без делителя ( 1:1 ) её не может быть принципиально.
Там всё очень плохо- гигантская ёмкость кабеля.....
Ну а главное достоинство делителя в том, что он уменьшает входную ёмкость кабеля и увеличивает входное сопротивление.
При снижении чувствительности, но обычно это не важно когда Вольты измеряются.
Хмм.. Очень странно.. Да с 11 пина.. У меня на Вашем режиме Вот такое показывает.
https://onedrive.live.com/embed?cid=543B82515E3378FA&resid=543B82515E3378FA%21221749&authkey=ABx7VLLCc4gNKA4
На щупах 100МГц нарисовано и с делителем и без ничего.. Да и как-то не очень хочется, trembo, щупами мериться. Dimax, Вы нагрузку какую-то даёте или на открытом выходе снимаете?
Шик! Заработало-) Ошибка была очень смешная. Даже говорить стыдно-) Спасибо! Буду подрубать драйверы ключей-)
https://onedrive.live.com/embed?cid=543B82515E3378FA&resid=543B82515E3378FA%21221750&authkey=AHzJMhFFFD5JMdE
dimax, искажение - это видимо проблема моей осциллографической приставки (hantek6022). Если увеличить время горизонтальной развёртки до 1 микросекунды, то форма сигнала уже очень похожа на вашу со щупом 1:10. С вашим скетчем, на низких частотах (до 1 МГц), всё красиво!
Уменя, если позволите, есть ещё один вопрос: Можно ли получить два противофазных синхронизированных сигнала со сдвигом по фазе?
Если конкретно: Задача - управлять двумя драйверами силовых ключей для их попеременного попарного включения.
MuckS, 2 противофазных сигнала можно сделать, и довольно просто. Но со сдвигом нет, можно только скважность менять, да и то не на таких высоких частотах. Оставьте вы это затею, лучше использовать специализированные решения.
http://arduino.ru/forum/programmirovanie/arduino-push-pull
Понял. Я сначала попробую сделать каскад из трёх драйверов. Это мне кажется более простой и логичной затеей. Если не выйдет - попробую то, что Вы советуете. Ещё раз спасибо.
Если я правильно понял - там используется внешний генератор по типу ad9833. Это я уже пробовал. На нужной частоте амплитуда сигнала составляет всего 20mV, чего, к сожалению, не достаточно не только для управления транзисторами, но даже для запуска оптронной развязки. При применении операционного усилителя наводки мне победить не удалось. Так что пока каскад-) Возлагаю большие надежды на ir2104..
Перерыл справочники, поговорил с знающими людьми и так и не нашёл элементной базы для раскачки транзисторов на такой частоте. Драйверы полумоста работают с Dead time'ом не менее 300nS и на такой частоте очень сложно сделать из них полный мост, имея один сигнал-( Хотел спросить вот что: Возможно ли создать код, который последовательно "дёргал" два канала? Ведь такое возможно, например в сетевых картах..
MuckS, что вы делаете то? Какие транзисторы, чего и для чего раскачиваете? И что за "два канала" ? Высокие частоты можно генерить таймером, или кодом на ассемблере дёргать ногу любого порта. Таймером как я уже писал сдвиг фазы не сделать, ассемблером можно такта на 4 (240ns) задержать второй сигнал относительно первого. Получится 2 сигнала со сдвигом фазы. Правда больше ничего ардуина не сможет делать, загрузка будет 100%.
Не судите строго - я врач, а не инженер, но тем не менее занимаюсь разработками в области импортозамещения. Мы с коллегами поставили цель исследовать воздействия тока УВЧ на различные слои кожи при различных дерматозах. Изучить влияние на регенерацию и течение аллергических и воспалительных процессов, дистрофию тканей кожных покровов.
В основе принципа воздействия лежит локальный разогрев тканей за счёт трения при развороте диполя воды. Таких конструкций великое множество, но данных о полноценных исследованиях по современным стандартам нет.
Собственно перед нами стоит задача создания экспериментальной установки, которая бы была способна передавать на манипулу (рабочая головка с двумя пластинчатыми электродами) переменный электрический ток напряжением 12-24В (возможно потребуется и больше, но пока такое ориентировочно) и током 0,1-2А (опять же цифра ориентировочная) и частотой от 40КГц до 6МГц.
К сожалению скудная эрудиция в области элементной базы пока делает для нас невозможным разработку "силовой" части. Мы пробовали организовать полный мост из двух драйверов полумоста на ir2104, но упёрлись в её dead time = 500ns С тех пор мы в некотором тупике-( Задумка сейчас такова: если удастся получить синхронизированный сигнал по двум различным каналам - можно на каждый канал подключить по паре оптронов, каждая из которых будет запускать, в свою очередь также пару пнп и нпн транзисторов. Мы рассчитываем, что работая последовательно, при верном подборе транзисторов эти пары обеспечат нам необходимую работу узла.
Перечитав сообщение понял, что требуется пояснение: задумка с "двумя сигналами" родилась в следствие невозможности (в нашем представлении) управления двумя драйверами полумоста при помощи одного управляющего сигнала. Были некоторые мысли на счёт конструкции с "полосовым фильтром" на компараторах. Но мы видим такую затею неосуществимой нашими скромными электронными способностями-)
Ах да! Ещё в нашем распоряжении имеется Raspberry Pi. На ней у нас организован графический интерфейс. Если на ней будет проще собрать. То она есть. Вот-)
MuckS, для плавной регулировки частоты вам нужно DDS синтезатор. Для получения разных форм сигнала вам тоже нужен DDS синтезатор. ВЧ-токи обычно усиливают простыми кремнивыми транзисторами, зачем вы пытаетесь городить на драйверах мосфетов, да и ещё на оптронах умом не понять.
Мы преобрели DSS синтезатор. Даже два. На базе микроконтроллера и на базе ad9833. Но первый при попытке добиться от него частот выше 200КГц отказывался корректно работать. Кроме того постоянно сбрасывался. В целом - работал не стабильно. Второй (на базе ad9833) на нужной частоте выдавал сигнал амплитудой всего 50мВ. И ни один из них не был способен генерировать два сигнала со сдвигом.
Что касается драйверов: Планировалось собрать каскад: Первый драйвер, переключаясь от уровня сигнала запускал бы последовательно переключение двух последующих. Каждый из которых переключал бы условно: "плюс и минус на первый и второй контакт рабочей головки, а затем менял бы их местами: Соответственно плюс и минус на второй и первый контакт". Вернее конечно сказать землю и плюс, но это детали. Оптроны же задумывались как некое подобие предусилителя. Т.к. Для успешного переключения драйверов по даташиту требуется от 3В..
Сильно в тему вкуриваться не стал, вернее не совсем понял, что нужно, два сигнала сдинутых по фазе? На сколько? Сигнал с одного вывода можно аппаратно инвртировать и если нужно, и не один раз. Есть аппаратные драйверы двигателей, но там скорее всего не хватит быстродействия.
А как инвертировать? И можно ли аппаратно сделать сдвиг? На сколько именно пока сказать трудно это будет зависеть от необходимого времени на открытие-закрытие первой пары ключей.
Посмотрите в сторону stm8/stm32. У них таймеры имеют комплементарные выходы с возможностью вставки программируемого по длительности дедтайма.
.
MuckS, Ваша тема, в отличие от большинства тем этого форума, имеет не приусадебно-хозяйственную, а народно-хозяйственную ориентацию. Жалко будет ее угробить. Задачи Ваши решаемы, причем несколькими способами, но они требуют привлечения прямого специалиста. "Специально обученного человека". Ему, исходя из его опыта и предпочтений, здесь смогут подсказать что-либо стоящее. Привлеките в свою команду специалиста. У Вас задачка не только, как частоту поделить, а и других пучок откроется. Просто Вы до них еще не дошли, или не ощущаете, что дошли. Чтобы потом не возвращаться к самому началу, выбросив все ранее созданное, сделайте коррекцию сейчас. Начните со специалиста, написания ТЗ. По форуму электронику не выучишь. Мне известны случаи, когда очень хорошие прикладники мучались с самодельной автоматизацией сложного эксперимента. И смотреть больно, и помочь, по большому счету нечем. Привлеките специалиста.
Спасибо за откровенность!
Мы как раз пришли к тому, что нам необходим такой человек и через форум Радио Лоцман вышли на инженера из Таганрога, который согласился нам помочь. Всем большое спасибо. Думаю тему можно закрыть.
MuckS, извините за назойливость. Вам не помощь специалиста нужна, а специалист в команде. Лучше, чтобы рядом. Он не подсказывать должен, а делать. Вместе с Вами. Вам, судя по всему, еще придется осознать сугубую необходимость Технического задания, как основополагающего документа проекта, и, по началу мучительно (с непривычки), его создавать. Я за десятилетия стажа по специальности и насмотрелся, и научавствовался. Без этого - никак. Искренне желаю Вам и вашей комаде успеха!
Да-да. Я неточно выразился. Этот человек согласен сопровождать проект. Он как раз требует составить ТЗ. В наши медицинские ряды хлынула струя инженерного подхода. Реструктурируемся. На сколько это возможно-) Спасибо за участие!
Вы бы знали что на радиолоцмане началось когда я предложил сотрудничать..
"Голубой воришка понял, что сейчас его будут бить. Может быть даже ногами".
http://www.rlocman.ru/forum/showthread.php?t=21192
Нашёл статью на счёт DSS синтезатора на AD9833. Спаял платку с осциллятором. Подключил к mege 2650. Генерирует нужную частоту. Пытаюсь получить второй синхронизированный инвертированный сигнал со сдвигом. Не сдаюсь-) Сообщу что выйдет.
MuckS, я пробежался по Вашей ссылке на радиолоцмане. Многие форумчане "оттянулись" по полной. Ну так Вы дали очевидный повод своими исходными данными. Я здесь не стал их обсуждать ввиду их очевидной несостоятельности. Я похожие на Вашу ситуации проходил многократно. Сколь интенсивно Вас сейчас не пинай, электронщиком со стажем Вы к концу недели не станете. А тут еще и не любой электронщик сгодится. Я вопросов задавать не стал, поскольку когда загнул все пальцы на руках, то бросил. Вы не платкой занимайтесь, а со специалистом работайте. А что не сдаетесь... Эт хорошо! :)
Ирония ситуации в том, что чтобы понять абсурдность своих действий мне необходимы знания эквивалентные необходимым для решения задачи. Спасибо на добром слове. Завтра переведу деньги специалисту. Посмотрим на его схему. Есть некоторая проблема в финансировании. Наврядли опытный радиоинженер захочет работать на условиях близких к голому энтузиазму. Но ничего. "Ищущий до обрящет", а не нашедший - не искал-)
Объясните мне не русскому, пожалуйсто. Можно ли получить на выходе ардуины 2.5 мгц и подать их на пьезоэлемент?
Можно.
По поводу генератора.
Поскольку вы в электротехнике разбираетесь не очень хорошо. Хочу предложить еще один вариант. Он может для вас быть даже проще. Заказываете и покупаете что то типа такого: И проводите эксперименты на этом.
http://www.prist.ru/info.php/articles/review_akip-3402
Приемущества:
1. Для больницы гораздо проще провести покупку прибора с товарными чеками. Чем вы будите расплачиваться наличкой по серым схемам с кем то. Он даже может быть проведен не как основные фонды, а как малооценка.
2. Вы экономите свое время на исследование, а не занимаетесь изготовлением прибора. Потом изучив на фабричном приборе можете делать то что вам надо. Вы получите более полное тех задание. А можете использовать фабричный прибор с вашей программой.
Большое спасибо за совет! В понедельник ознакомлюсь с темой-) На сегодня конструкция генератора и усилителя состоялась как раз благодаря этому форуму. Мне пришлось освоить программирование на си и яве и сейчас я заканчиваю корпусирование устройства. Удалось даже создать управление режимами работы с помощью графического интерфейса и тачскрина. На базе Raspberry Pi2 и 7' дисплея.
Вряд ли можно ровно 2,5МГц дело в том, что частота регулируется делением 16 (частота осциллятора на плате), но его можно заменить на 25МГцовый и тогда установив значение делителя "10" Вы получите нужную частоту. Правда нужно учитывать, что больше ничего сам контроллер делать не сможет и амплитуда выходного сигнала составит 8В.
Большое спасибо за совет! В понедельник ознакомлюсь с темой-) На сегодня конструкция генератора и усилителя состоялась как раз благодаря этому форуму. Мне пришлось освоить программирование на си и яве и сейчас я заканчиваю корпусирование устройства. Удалось даже создать управление режимами работы с помощью графического интерфейса и тачскрина. На базе Raspberry Pi2 и 7' дисплея.
Прямоугольник. В итоге два устройства получилось. Одно на меге 168р, с усилителем на базе irfz44n второе - экспериментальная установка на ad9833, предусилителем на кп904 и усилителем на 901 серии.