![]() |
![]() |
|||||||||||||||
Универсальный генератор сигналов
Автор: Integrator Однажды, доставая из коробки кусок макетной платы с запутанными проводами и припаянной к ней NE555, я понял что мне нужен нормальный генератор сигналов. Хотелось получить одновременно и хорошую функциональность и простоту схемы с использованием доступных компонентов. В интернете нашлось несколько интересных схемных решений. Однако при ближайшем рассмотрении у всех выявились свои недостатки. В итоге было решено сделать свой собственный генератор, с максимально — возможным числом функций, дабы хватило если не на все, то на большую часть потребностей.
Характеристики.
Частота:
ШИМ:
Импульсы специальной формы:
Напряжение питания 12В
У генератора имеется 2 выхода — A, D и вход — E. Сигналы в режимах синус, треугольник, пила, обратная пила, ЭКГ, шум, ТВ, pulse выводятся на выход A. Выход D - цифровой, на него выводятся сигналы в режимах ШИМ, меандр, высокая частота. на выходе имеется защитный резистор. Вход E используется для запуска режима PULSE и для синхронизации в режиме ШИМ. На входе имеется защитный резистор и стабилитрон, подтяжки к питанию нет. Все установленные параметры сохраняются в энергонезависимой памяти контроллера после запуска генератора. Режимы работы.
Синус (SINE), треугольник (TRIANGLE), пила (SAWTOOH WAVE), обратная пила (RSAWTOOH WAVE), ЭКГ (ECG).
Шум (NOISE). Меандр (SQUAREWAVE). Высокая частота (HIGH SPEED). ШИМ (PWM). F - частота устанавливается аналогично предыдущим режимам. DC - коэффициент заполнения устанавливается в диапазоне 1-99% с шагом в 1% кнопками +-. EXT SYNC - внешняя синхронизация может иметь 3 значения, которые выбираются кнопками +- :
Импульсы специальной формы (PULSE). Trise — период нарастания импульса 2 — 1000000мкс; N – число импульсов, устанавливается кнопками +-, шаг выбирается кнопкой реж.
TRIGGER — запуск генератора внешним импульсом на входе E. Значения, выбираются кнопками +- :
ТВ (TV). Сброс установок. Может понадобиться, если у вас не прошилась EEPROM или в процессе настройки случился какой-то коллапс и теперь прибор показывает что-то страшное. Для сброса установок в обесточенном генераторе зажимается кнопка уст.(set), затем подается питание и не отпуская кнопку ждем 5сек. После этого настройки в EEPROM перезаписываются на дефолтные. Схема. Переключатель SW5 позволяет выбирать, снимать сигнал непосредственно с повторителя или прошедший через НЧ фильтр. Далее в схеме стоит инвертирующий усилитель с регулируемым коэффициентом усиления 0 — 0.5. Такой коэффициент выбран неслучайно. Дело в том что, нижнее напряжение питание ОУ TL082 должно быть на 1,5В ниже выходного. Т.е. при амплитуде в 5В, питание должно быть -6.5В, что потребовало бы изменение в схеме преобразователя напряжения. Затем сигнал поступает на второй инвертирующий усилитель, который сдвигает уровень относительно напряжения смещения, регулируемое резистором RV1. А также восстанавливает амплитуду сигнала, которая была уменьшена ранее в U3B. Сигналы в режимах ШИМ и меандр(высокая частота) генерируются таймером-счетчиком микроконтроллера, путем деления тактовой частоты. В режиме меандр — программным методом DDS. Для экономии портов в/в дисплей подключен по схеме только на запись, с заземленным выводом RW. Линии D4 – D7 имеют двойное назначение, помимо передачи данных в дисплей, к ним подключены кнопки управления. Для избежания к.з., при одновременном нажатии кнопки и передачи данных, установлены защитные резисторы. Передача данных и чтение состояний кнопок происходит последовательно. Также на плате имеются контактные штыри линий Rx, Tx, на которые выведен программный UART 19200 8b1. В текущей версии прошивки этот интерфейс работает только на вывод. По линии V_GEN контроллер выдает прямоугольные импульсы частотой ~20КГц, которые поступают на преобразователь напряжения. Он генерирует -5,6В, необходимое для питания операционных усилителей.
Немного теории. В генераторе используется метод прямого цифрового синтеза частоты(DDS). За основу был взят алгоритм из прибора AVR DDS signal generator V2.0 и доработан. В частности, заменив чтение табличных значений из флэш на буфер в оперативной памяти, удалось сократить время рабочего цикла на 1 такт. Что привело к увеличению частоты дискретизации с 1.6 до 1.78МГц. На его основе был написан алгоритм генерации прямоугольника и импульсов с произвольным временем линейного нарастания — спада. Простейший цифро-аналоговый генератор на МК делается довольно легко. FOUT = FCLK / C; Основным недостатком этого метода является неудовлетворительная способность к перестройке по частоте. Поскольку частота дискретизации испытывает деление на целое число, шаг перестройки будет переменным, причем, чем меньше коэффициент деления, тем больше относительная величина шага. При прямом цифровом синтезе частота дискретизации остается постоянной. В алгоритм вводиться специальная переменная, которая хранит текущее значение фазы сигнала, называемая аккумулятором фазы. В конкретном примере его размер составляет 24 бита. ;в регистр Z загружается адрес буфера в ОЗУ, содержащий таблицу из 256 значений одного периода генерируемого сигнала ;регистры r18, r19, zl составляют 24битный фазовый аккумулятор ;в регистрах r22, r23, r24 находиться 24битное значение приращения фазы - M 1: В цикле, который крутится с заранее известной частотой FCLK, к аккумулятору фазы прибавляется некоторое постоянное число которое называется приращением фазы – M. При этом значение аккумулятора увеличивается с постоянной скоростью, а его старшие 8бит используются как индекс в таблице аналоговых значений сигнала. Период переполнения аккумулятора будет равен одному периоду генерируемого сигнала. При этом сам период может быть не кратным значением тактовой частоты, см. график. FOUT = M * FCLK/N частота дискретизации равна Минимальная частота сигнала будет при M = 1 Значение приращения фазы для требуемой частоты можно рассчитать так: M = FOUT * N / FCLK С увеличением частоты уменьшается количество выборок и форма сигнала упрощается, появляются ступеньки. Поэтому максимальная частота ограничена 111.1КГц, при которой ещё более-менее сохраняется форма сигнала. Также для уменьшения ступенек в схему добавлен аналоговый фильтр на 300КГц. Алгоритм генерации меандра методом DDS принципиально особо не отличается. Отличие только в том, что сигнал генерируется ногодрыгом, а не через ЦАП. Уровень на выводе порта МК просто инвертируется после переполнения аккумулятора фазы. ldi zh, 1<<HSPIN;Загружаем в zh маску вывода ;обнуление аккумулятора
M = FOUT * 2 * N / FCLK Такой способ генерации прямоуголного сигнала имеет большую точность установки частоты, нежели простое деление таймером-счётчиком(которое используется в режиме ШИМ). Однако в сигнале постоянно присутствует дрожание фронтов(джиттер) из-за несогласованности фазы с частотой дескретизации. Ну надеюсь кто-нибудь что-нибудь поймет из моего сумбурного объяснения. Прошивка. Помимо файла программы, необходимо также прошить EEPROM. Сборка, настройка.
На новой ПП предусмотрены площадки под SMD резисторы, чтобы народ не мучался высверливая дополнительно 48 дырок. Корпус. При наличии ЧПУ станка всё делается гораздо проще, но если кто надумает сделать вручную, хочу дать несколько советов. Сначала в САПР или вручную, на листе в клетку, рисуются детали будущего корпуса в натуральную величину. Следует продумать размещение дисплея и ручек управления, и остальных деталей. Шипы соединения по краям деталей не стоит делать слишком узкими, иначе при склейке подгонять замучаетесь. Оптимальная ширина шипов/пазов для 4мм фанеры 15 — 25мм. После чертеж переносится на фанеру, особое внимание следует уделять геометрии, чтобы не было перекосов и все углы были прямыми. Затем высверливаются или выпиливаются внутренние отверстия, и только потом выпиливается сама деталь. Чтобы избежать при сверлении больших отверстий сколов и задиров шпона следует юзать только острые сверла. Предварительно просверлить по центру отверстие малого диаметра, и сильно не давить при подаче. После того, как все элементы корпуса выпилены, наступает самый нудный и ответственный момент, от которого зависит итоговый вид корпуса. Нужно подогнать шипы/пазы на соединяемых деталях. Делать это лучше узким плоским напильником. Положив деталь на основание с плоской кромкой(кусок ДСП например), так чтобы пазы оказались на одном уровне. В итоге детали должны хорошо прилегать друг к другу с минимальными зазорами. Для склейки лучше всего подходит клей ЭДП(эпоксидка), т. к. он заполняет щели и не дает усадку после затвердевания. Но я клеил обычным канцелярским ПВА-М, результат оказался неплохим. Только не используйте обычный строительный ПВА, он гораздо жиже и прочность склейки оставляет желать лучшего. Когда клей высохнет, плоским напильником нужно сточить выступающие части шипов на гранях получившейся коробки. Если к этому моменту на поверхностях всё-же появились сколы древесины, то ничего страшного, их можно просто зашпаклевать смесью клея и опилок. После обработки напильником и шлифовки наждачкой эти места будут почти незаметны.
Изначально я пробовал переводить изображения с бумаги при помощи утюга, как в технологии ЛУТ. Однако из-за плохой теплопроводности дерева тонер практически не прилипал к поверхности корпуса. В итоге после нескольких экспериментов был подобран способ обеспечивающий более-менее приемлемый и главное повторяемый результат. Для начала поверхность корпуса нужно подготовить, убрать пыль сухой кисточкой и покрыть одним слоем лака. После высыхания фанеру нужно обработать мелкой наждачкой прямо по лаку. Это необходимо, чтобы убрать ворсистость появившуюся после намокания дерева. На листе бумаги с непромокаемым покрытием( я использовал подложку от самоклейки) были распечатаны отзеркаленные версии переносимых изображения. Бумага для печати должна быть с идеально гладкой поверхностью. Любые дефекты, такие как перегибы или царапины плохо скажутся на результате. Тонер с поверхности бумаги либо не приклеится к фанере, либо приклеится сама бумага. Далее в месте приклеивания на корпус с избытком наносится лак. И на него ложится лист с распечаткой и тщательно разглаживался. Избыток жидкого лака убирается кисточкой или салфеткой. После высыхания бумага должна легко отклеиваться, а все изображения вместе с лаком остаться на дереве. Если после высыхания где-то образовались наплывы из лака, то их нужно заровнять мелкой наждачкой. После нанесения всех изображений корпус покрывается последним слоем лака. По поводу износостойкости таких переведённых изображений пока сказать ничего не могу. Ногтем ничего не стирается. Вероятно всё зависит от используемого лака. Подходящих кнопочных толкателей для корпуса найти не удалось. Поэтому были сделаны самодельные из корпусов старых советских электролитических конденсаторов и отрезков коаксиального кабеля. Современные китайские конденсаторы для препарирования непригодны, так как сделаны из очень тонкого алюминия и легко мнутся. Кабель должен быть прямым и достаточно жестким, я использовал антенный, диаметром 5мм. Сначала острым канцелярским ножом конденсатор разделяется на 2 части, вся начинка выбрасывается. Получившийся стакан промывается растворителем, для удаления грязи, надписей и остатков электролита. Плата крепиться к задней крышке корпуса. Сама крышка притягивается к передней части при помощи винтов М3 и шестигранных стоек. Стойки крепятся снизу винтами с потайной головкой. Вместо ножек я использовал пластиковые набойки, которые применяются для обтяжки мебели. В заключении.
А кота хочу поздравить и пожелать побольше свежего контента с колбасой!
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |