ГАЗ-53 ГАЗ-3307 ГАЗ-66

Прерывания PIC. Генератор импульсов. Генератор на PIC16F84A и AD9850 - Устройства на микроконтроллерах - Схемы устройств на микроконтроллерах Генератор прямоугольных импульсов на микроконтроллере pic

Когда-то в [Л.1] был описан управляемый генератор прямоугольных колебаний TTL-уровня на микроконтроллере ATTiny2313. Он мог вырабатывать 31 фиксированную частоту (от 0,1 Hz до 4 MHz), имел очень простую схему и управлялся подачей двоичного кода на управляющие входы. В зависимости от логического уровня на пяти управляющих разрядах, генератор вырабатывал одну из предустановленных в его программе частот, номер которой задавался подключением этих управляющих входов к "земле" или к шине питания. Скорее всего, данная схема создавалась не как самостоятельное устройство, а как составная часть, модуль для использования в других разработках (например, в качестве задающего генератора в частотомерах, часах, елочных гирляндах и т.п.) - отсюда, видимо, и не совсем удобный способ управления - должно быть, автор схемы предположил, что частоту установят один раз, на этапе проектирования готового устройства, в состав которого будет входить его схема.

Меня же данная схема заинтересовала в качестве простенького лабораторного генератора. Конечно же, это не альтернатива серьезным приборам промышленного изготовления, но кое-где и такой "микроконтроллерный мультивибратор" пригодиться может (особенно учитывая его простоту, точность и дешевизну) - к примеру, он отлично подойдет для калибровки частотомеров и в аналогичных случаях, когда надо отъюстировать какую-нибудь шкалу; его можно использовать во время экспериментов с цифровыми схемами или выходными каскадами импульсных БП; для проверки трансформаторов и катушек зажигания (подключив их к мощному источнику тока через соответствующий транзисторный ключ), различных фильтров и т.п. Да и убеждаться в работоспособности только что собранного УНЧ безопаснее, подавая на его вход сигнал от такого вот самодельного генератора, а не с любимого MP-3 плеера или "планшета" - в случае ошибок в монтаже (например, если на вход УНЧ просочится напряжение питания), в худшем случае будет разрушен копеечный выходной транзистор, а не дорогая "игрушка".

Но описанная схема имела ряд недостатков, затрудняющих ее использование в качестве лабораторного прибора: во-первых, это уже упомянутое неудобство управления (кнопки в данном случае оказались бы уместнее); во-вторых - отсутствие какой-либо индикации выбранного режима; в-третьих - отсутствие среди выходных частот сетевой (50 Hz), которая бывает нужна при работе с трансформаторами или сетевыми фильтрами; и в-четвертых - нерегулируемый уровень выходного напряжения (что бывает нужно при испытаниях тех же УНЧ). Поэтому, используя приведенную в [Л.1] схему как "техническое задание", я разработал новое устройство и "прошивку" к нему, отвечающие приведенным выше требованиям. Получившаяся схема представлена на рис.1 .

Как и в оригинале, это генератор, вырабатывающий прямоугольные колебания стабильной частоты с периодом 1:1 (т.е., меандр с 50%-заполнением), но количество генерируемых частот увеличено до 42. Значения большинства вырабатываемых частот отличаются от тех, что были в [Л.1]; вдобавок уменьшено количество частот менее 1 Hz, необходимость в которых возникает довольно редко. Список всех частот, генерируемых прибором, приведен в табл.1 (в конце статьи).

Основой схемы является распространенный микроконтроллер ATTiny2313, тактовая частота которого стабилизирована кварцем на 10 MHz, что обеспечивает минимальную погрешность выходного сигнала. Выходные импульсы формируются за счет деления тактовой частоты МК при помощи 16-разрядного внутреннего таймера-счетчика T1, работающего в режиме "сброс при совпадении", они аппаратно выводятся на контакт 15 микросхемы. Внутренний 8-разрядный таймер-счетчик T0, также работающий в режиме "сброс при совпадении", формирует интервалы переключения разрядов индикатора HG1, реализуя тем самым динамическую индикацию. Выходами динамической индикации являются линии PB0 и PB1 МК, они усиленны транзисторными ключами на VT1 и VT2.

Сформированный выходной сигнал с вывода 15 МК подается на усилитель тока, который собран на транзисторе VT3, включенном по схеме эмиттерного повторителя. Применение усилительного каскада позволило развязать выход МК от нагрузки и защитить его от неожиданностей (например, от КЗ или от подачи напряжения на выход устройства). Переменным резистором R12 можно регулировать уровень выходного сигнала - от нуля до практически напряжения питания. Резистор R13 ограничивает ток через транзистор на безопасном уровне (ок. 125 mA), предохраняя последний от выхода из строя при КЗ в нагрузке. Резистор R14 "подтягивает" выход к потенциалу "земли" - это необходимо, в первую очередь, для работы с цифровой логикой: известно, что отсутствие какого либо напряжения на своем входе (а при лог.0 на выводе 15 МК транзистор VT3 закрыт, и напряжение на его эмиттере отсутствует) большинство цифровых микросхем интерпретируют как лог.1. Резистор R14 "подтягивает" выход устройства к "земле" в те моменты, когда VT3 закрыт, что уверенно распознается подключенными к этому выходу цифровыми микросхемами как лог.0. Устройство имеет возможность отключать выходной сигнал кнопкой S1. В таком состоянии импульсы на выводе 15 отсутствуют, транзистор VT3 закрыт, на выходе устройства постоянно присутствует лог.0. Повторное нажатие S1 снова включает выходной сигнал. Светодиод HL1 является индикатором наличия выходных импульсов.

Устройство питается от стабилизированного источника питания напряжением 3,5-5 V. Если необходимо запитать прибор от источника с напряжением, превышающим 5 V (например, от "Кроны" или БП от игровой приставки), то в схему необходимо ввести стабилизатор с соответствующим выходным напряжением - например, интегральный, на микросхеме типа 7805, или параметрический, на стабилитроне и транзисторе. Диод VD1 защищает схему от случайной переполюсовки питания - он может быть любым, на ток не менее 150 mA (лично я для этого использую "раритетные" Д226 или Д7 из старых запасов - надо же их куда-то девать:)). Диод можно и не ставить, если конструкция разъема питания исключает переполюсовку (или если вы уверенны, что не ошибетесь при подключении питания). При желании можно также добавить и выключатель питания.

Алгоритм работы с устройством следующий: при включении питания импульсы на выводе 15 МК отсутствуют, светодиод HL1 не горит, на табло HG1 отображается номер выбранного режима. Для того чтобы на выходе прибора появились импульсы, необходимо нажать на кнопку S1, после чего загорится HL1, сигнализируя о появлении импульсов на выводе 15 МК. Повторное нажатие на S1 снова отключит выходной сигнал (т.о. S1 работает по принципу триггера). Переключать режимы работы устройства можно как при включенном, так и при выключенном кнопкой S1 выходном сигнале. Кнопка S2 увеличивает, а S3 уменьшает номер режима. Режимы переключаются по кругу - после режима №42 (5 MHz) следует режим OF (отсутствие выходного сигнала); еще одно нажатие на S2 включит режим №1 (0,5 Hz). Кнопка S3 ведет себя аналогично, только переключает в обратную сторону (№1-OF-№42). Значение выбранного режима запоминается в энергонезависимой памяти (EEPROM), поэтому при следующем включении прибора активным будет тот режим, в котором прибор работал перед выключением питания. Состояние выхода не запоминается - при каждом включении питания выходной сигнал всегда отсутствует - это сделано для защиты схемы, которая будет подключаться к генератору, от всякого рода случайностей: сначала нужно установить необходимый режим и минимальное выходное напряжение, а лишь затем включать выходной сигнал кнопкой S1.

Прошивка для МК была написана на чистом ассемблере (при помощи бесплатно распространяемой среды AVR Studio-4 от фирмы-производителя данного чипа), благодаря чему занимает в его флэш-памяти всего 602 байта. Установка fuse-ячеек в программе PonyProg приведена на рис.2 . (Внимание! Если используется последовательное программирование, то не трогайте биты SPIEN и RSTDISBL - они должны быть такими же, как и у нового MK - в противном случае дальнейшее перепрограммирование МК будет недоступным! Просто, перед программированием считайте fuse -ячейки "свежего" МК (Security and Configuration Bits -> Read ), и при записи новых значений оставьте биты SPIEN и RSTDISBL такими, какими они были прочитаны.)


Резисторы, используемые в устройстве - малогабаритные, мощностью 0,125 Вт (кроме R13 - он на 0,25 Вт); их сопротивление может отличаться от указанного в довольно широких пределах. Все транзисторы устройства работают в ключевом режиме, поэтому могут быть любыми маломощными, структуры NPN - как отечественными, так и зарубежными. Важно лишь, чтобы VT3 мог уверенно работать на максимальной выходной частоте прибора (5 MHz). В качестве HG1 можно использовать любой сдвоенный семисегментный индикатор для динамической индикации с общими анодами. Если нет сдвоенного, то HG1 вполне можно собрать и на двух одинарных индикаторах, вплоть до "древних" АЛСххх - главное, чтобы общим выводом для всех сегментов был анод. Светодиод HL1 - любой, который не жалко:). Все кнопки - подпружиненные, без фиксации. Выходной разъем - типа "Азия".

Внешний вид генератора, подключенного к осциллографу, показан на рис.3 (слева - блок питания, он на 9В (от приставки типа Dendy), но в его корпус был установлен интегральный стабилизатор типа 7805 - в итоге, на выходе 5В), а так же, на рис.4 , осциллограмма выходного сигнала, снятая при помощи осциллографа С1-19Б - на рис.5 . "Внутренности" прибора не фотографировал, т.к. собрал его довольно давно и посадил крышку на клей, а разбирать (т.е. ломать) корпус как-то неохота... В качестве корпуса для данного генератора была использована разветвительная коробка для открытой электропроводки, но возможны и другие варианты. Для удобства работы таблицу режимов желательно распечатать и приклеить двухсторонним скотчем к корпусу прибора (у меня она - с обратной стороны, на фото не видна). Микроконтроллер необходимо установить на панельке, чтобы его можно было легко перенести в программатор для записи "прошивки" (разъемов для внутрисхемного программирования ISP я обычно не делаю - перенос микросхемы в панельку программатора лично мне не доставляет никаких неудобств). Тип монтажа может быть любой (вплоть до SMD); я использовал классический - печатный, но рисунок платы не привожу, т.к. она получилась довольно-таки "кривой" (практически, повторяет принципиальную схему); хороший вариант - собрать все на "макетке" с дырочками (размер ~80x80 мм).

Литература:

1. Горчук Н.В. - Генератор с цифровым управлением, ж."Радиоконструктор", 12-2009, стр.18;

Таблица 1:

СПИСОК РЕЖИМОВ ГЕНЕРАТОРА

Частота, Гц

Частота, Гц

Частота, Гц

Частота, Гц

Измерительные генераторы, в которых требуемое значение частоты устанавливают с помощью клавиатуры, читателям журнала известны (см., например, статью Пискаева А. "Частотомер-генератор-часы" в "Радио", 2002, № 7, с. 31, 32). Как правило, эти приборы выполнены на микроконтроллере, диапазон генерируемых частот ограничен несколькими мегагерцами, а получение точного значения частоты невозможно. Описываемый в статье генератор тоже содержит микроконтроллер, но использован он только для управления специализированной микросхемой - синтезатором частоты AD9850. Применение этой микросхемы позволило расширить диапазон генерируемых частот от долей герца до 60 МГц, в пределах которого можно получить любое значение частоты с точностью 1 Гц.

Он опрашивает клавиатуру SB1-SB16, выводит информацию на ЖК индикатор HG1, вычисляет значение кода частоты и передает его по последовательному интерфейсу в синтезатор DD2. Звукоизлучатель НА1 служит для подтверждения нажатия кнопок клавиатуры. Микросхема AD9850 (DD2) использована в стандартном включении. На выходе ее ЦАПа включен фильтр Z1. После фильтра сигнал синусоидальной формы подается на гнездо XW2 и на вход компаратора микросхемы DD2 (вывод 16). С выхода последнего сигнал прямоугольной формы поступает на гнездо XW1. В качестве тактового генератора для DDS применен кварцевый генератор G1. Подстроечным резистором R7 регулируют контрастность изображения на индикаторе HG1.
После сброса микроконтроллера производится настройка ЖК индикатора HG1 на режим обмена по шине 4 бита, что необходимо для уменьшения числа линий ввода/вывода, требуемых для записи информации.



Управляют генератором с помощью клавиатуры, состоящей из кнопок SB1-SB16. Поскольку все линии порта В, являющиеся входными, подключены к источнику питания через резисторы, необходимости во внешних резисторах, "подтягивающих" порты RB4 -RB7 к линии питания, нет. Резисторы R3-R6 защищают выходы микроконтроллера от перегрузки при случайном нажатии нескольких кнопок одновременно.
Требуемую частоту устанавливают с клавиатуры. Для этого, нажимая на кнопки с соответствующими цифрами, вводят нужное значение (в герцах) и нажимают кнопку "*". Если частота не превышает максимально допустимой, на индикаторе на короткое время появляется сообщение "ОК" и генератор переходит в рабочий режим, а если превышает, - сообщение "Error". В этом случае нужно нажать кнопку "С" ("Сброс") и заново набрать правильное значение. Точно так же поступают и при ошибке в процессе ввода частоты. Двукратное нажатие этой кнопки переводит прибор в рабочий режим с установленным ранее значением частоты.
В рабочем режиме в крайнем правом знакоместе индикатора мигает символ звездочки. Если текущее значение частоты введено с внешнего блока управления (например, с компьютера), то чтобы вернуться к частоте, отображаемой на индикаторе, достаточно нажать кнопку "*".
Кнопки "U" (Up - вверх) и "D" (Down - вниз) позволяют ступенчато изменять выходную частоту генератора, соответственно увеличивая или уменьшая значение десятичного разряда на единицу. Требуемый десятичный разряд выбирают, перемещая курсор кнопками "L" (Left - влево) и "R" (Right - вправо).
При нажатии кнопки "*" значение частоты и позиция курсора сохраняются в энергонезависимой памяти микроконтроллера, благодаря чему при следующем включении питания прерванный режим работы автоматически восстанавливается. Поскольку вычислительные способности микроконтроллера ограничены, значение выходной частоты выставляется с точностью около 1 Гц, что достаточно для большинства случаев. Чтобы в полной мере реализовать возможности синтезатора, им можно управлять с помощью ПК. Для этого генератор необходимо доработать, дополнив его узлом, схема которого показана на рис. 3. ПК (или иное управляющее устройство) подключают к розетке
XS1. При низком логическом уровне на адресных входах А мультиплексоры микросхемы DD3 подключают входы управления синтезатором к микроконтроллеру DD1, а при высоком - к внешнему устройству. Сигналы управления поступают через контакт "ENABLE" розетки XS1. Резистор R19 обеспечивает низкий логический уровень на адресных входах DD3 при неподключенном устройстве управления.
Генератор собран и испытан на макетной плате. Если не удастся приобрести плату под корпус SSOP для микросхемы DD2, можно использовать для подключения ее выводов к соответствующим контактным площадкам короткие (длиной 10 15 мм) отрезки луженого провода диаметром 0,2 мм. Выводы 1,2,5,10,19, 24, 26, 27, 28 соединяют с общим проводом одним отрезком большей длины.
ЖК индикатор HG1 - 1ТМ1601 (16-символьный однострочный с встроенным контроллером). НА1 - любой пьезоэлектрический излучатель звука с встроенным генератором, рассчитанный на напряжение 5 В. В качестве тактового генератора (G1) можно использовать микросборку кварцевого генератора на частоту до 125 МГц, допустимо применение подобного узла с кварцевой стабилизацией и на дискретных элементах.
Управляющая программа микроконтроллера зависит от частоты тактового генератора.
При программировании микроконтроллера в конфигурационном слове устанавливают следующие значения битов: тип генератора (OSC) - RC. сторожевой таймер (WDT) - выключен, задержка после включения питания (PWRTE) - разрешена.

Этот проект - качественный и универсальный функциональный генератор, который несмотря на некоторую сложность схемы, по крайней мере в сравнении с более простыми , обладает очень широким функционалом, что оправдывает затраты на его сборку. Он способен выдавать 9 различных форм сигналов, а также работать с синхронизацией импульсов.

Принципиальная схема генератора на МК

Параметры устройства

  • Частотный диапазон: 10 Гц - 60 кГц
  • Цифровая регулировка частоты с 3 различными шагами
  • Формы сигнала: Sine, Triangle, Square, Saw, H-pulse, L-pulse, Burst, Sweep, Noise
  • Выходной диапазон: 15 В для синуса и треугольника, 0-5 В для других режимов
  • Имеется выход для синхронизации импульсов

Питание прибора осуществляется от 12 вольт переменки, что обеспечивает достаточно высокое (свыше 18 В) напряжение постоянного тока, необходимое для нормальной эксплуатации 78L15 и 79L15, формирующих двухполярку по 15 В. Это делается для того, чтобы микросхема LF353 могла вывести полный диапазон сигналов на нагрузке 1 кОм.

Регулятор уровня использован ALPS SRBM1L0800. В схеме следует использовать резисторы с погрешностью ±1% допуска или лучше. Ограничители тока светодиодов - резисторы 4306R серии. Яркость может быть увеличена в зависимости от предпочтений исполнителя. Генератор собран в пластиковом корпусе 178x154x36 мм с алюминиевой передней и задней панелями.

Многие контактные компоненты монтируются на передней и задней панелях (кнопки, ручки, разъемы RCA, светодиодные сборки, разъем питания). Печатные платы крепятся к корпусу болтами с пластиковыми прокладками. Все остальные элементы генератора смонтированы на печатных платах - блок питания отдельно. Левая кнопка по середине для изменения режима, правая - для выбора частоты режима.

Генератор вырабатывает различные сигналы и работает в трех режимах, которые выбираются с помощью клавиши "Select" и указываются тремя верхними (на схеме) светодиодами. Поворотный регулятор изменяет параметры сигнала в соответствии со следующей таблицей:

Сразу после настройки в режиме 1 идёт генерация синуса. Однако, начальная частота довольно низкая и по крайней мере один щелчок энкодера необходим, чтобы увеличить его. На плате есть контакт подключения прибора для программирования, что позволяет оперативно изменять функциональность генератора сигналов, если необходимо. Все файлы проекта - прошивки PIC16F870, рисунки плат, находятся

Радиолюбителям, схемотехникам иногда необходимо настроить какое-нибудь цифровое устройство, как например, счетчик импульсов, тахометр, осциллограф и т.п. Или просто узнать, работает ли оно. Очень удобно пользоваться генератором, выдающим прямоугольные импульсы различной частоты.

Проект такого генератора я и хочу предложить.

Сначала схема генератора импульсов:

Основу устройства составляет популярный микроконтроллер ATmega8 фирмы Atmel.

Описание схемы. Вся схема питается напряжением 5 В. Микроконтроллер тактируется частотой 8 МГц, которая стабилизирована кварцем Х1. Для генерации импульсов используется таймер/счетчик №1. В виде кнопок на схеме, подключенных к выводам PC3, PC4 и PC5 изображен энкодер. Две крайних кнопки заменяют переключение энкодера при вращении, а кнопка посередине – это кнопка энкодера, замыкающаяся при нажатии на его ось. Прямоугольные импульсы заданной с помощью энкодера частоты амплитудой 5 В снимаются с выхода таймера 1 (OCR1A). Для отображения выходной частоты применяется 16-и символьный однострочный ЖК-дисплей WH1601, подключенный к порту D микроконтроллера. Дисплей тоже распространенный, на драйвере HD44780. Резистором R1 регулируется контраст дисплея. Обмен данными между МК и дисплеем организован с помощью 4-х проводной шины. Разъем J1 для внутрисхемного программирования МК.

Теперь о программе для микроконтроллера.

Программа написана в среде разработки CodeVisionAVR . В данной среде имеются готовые библиотеки для работы с дисплеем, да и настройка МК понятна и проста. Я использовал версию до выхода CodeVisionAVR версии 3.12. Она немного отличается в генерации кода с использованием Wizarda. Но, в основном, все то же самое. Далее все описано на примере работы с CodeVisionAVR версии 3.12. В интернете полно ссылок для изучения данной среды, например: изучение интегрированной среды разработки CodeVisionAVR .

Запускаем CVAVR. Создаем новый проект (New Project ). Программа предложит использовать мастер создания проекта.

Соглашаемся. Затем выбираем семейство контроллера.

Настраиваем порты ввода-вывода. Нужно сделать выходом бит 1 порта B (PB1) – с него снимается генерируемая частота. Порт D пока оставляем как есть. А выводы, с которых будет считываться состояние энкодера (PC3, PC4, PC5) настроить на вход (Data Direction: In ) и включить внутреннюю подтяжку к питанию (Pullup/Output Value – значение P ).

Переходим на вкладку Timers/Counters . Здесь нужно настроить 2 таймера: Timer0 и Timer1 , остальные таймеры оставляем выключенными (Clock Value: Stopped ).

Устанавливаем частоту Timer0 125 кГц. Данный таймер необходим для периодического опроса состояния энкодера. Опрос будет происходить каждый раз, как только таймер досчитает до верхнего значения. Поскольку Timer0 8-и разрядный, то верхнее значение у него 255. А чтобы контроллер прерывал выполнение основной программы для опроса энкодера, нужно включить прерывание по переполнению Timer0 (Overflow Interrupt ).

Настраиваем Timer1 . Нужно выбрать режим (Mode ) CTC (Clear Timer on Compare – Сброс при совпадении). В этом режиме выход таймера будет переключаться в лог. 0 как только содержимое счетного регистра TCNT1 совпадет с регистром OCR1A . За счет изменения значения в регистре OCR1A мы и будет изменять частоту выходных импульсов. В схеме используется выход А таймера 1. Для него нужно выбрать значение Toggle on Compare Match (переключиться в другое состояние при совпадении). В общем, смотрим картинку:

Следующий шаг – подключение дисплея. В CodeVisionAVR достаточно указать к какому порту МК будет подключен дисплей. Выбираем порт D.

Теперь нужно сгенерировать код программы. Нажимаем Program ->Generate, Save and Exit

Теперь нужно зайти в настройки Project -> Configure и проверить, что правильно заданы тип МК и его тактовая частота:

Готовый проект для CVAVR

(316,0 KiB, 670 hits)

Для прошивки МК нужен файл с расширением .hex . В готовом проекте это файл Gen_mega8.hex . Онрасположен в папке Release/Exe/.

Если есть желание написать программу с нуля, то в проекте есть комментарии, какие команды для чего нужны. Или можно просто вставить готовый код из файла gen_mega8.c. И, изменяя его, смотреть как это отражается на готовом устройстве. Для генерации файла прошивки МК нужно нажать кнопку Build the project. Файл с расширением .hex сгенерится в папку Release/Exe/.
Fuse-биты контроллера программируются на работу с внешним кварцевым резонатором 8 МГц в соответствии с рисунком:

Теперь об управлении генератором импульсов.

После подачи питания происходит инициализация дисплея и энкодера (настраиваются выводы, к которым подключен энкодер). Далее по дисплею пробегает полоса (необязательная “фишка”, была сделана для тренировки вывода на дисплей) и высвечивается надпись “Генератор выкл.”. Спустя 2 сек дисплей очищается. Частота на выходе появляется после вращения ручки энкодера, и изменяется на единицы Герц. При нажатии и удержании кнопки энкодера около 0.5 сек на экран выводится сообщение “Отпусти кнопку”. После этого вращением ручки энкодера частота меняется по десяткам Герц. Для изменения частоты на сотни (тысячи) Герц нужно еще раз (2 раза) нажать кнопку энкодера. Затем все снова начинается с единиц Герц.

Для увеличения нагрузочной способности генератора выход МК можно включить через транзистор.

О точности выходной частоты.

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

Недавно приобрел очень удобный и компактный мультиметр, которым можно померить частоту (до 9.999 МГц). Вот его видеообзор . А заказать можно по этой ссылке .

Микроконтроллер можно прошить специальным программатором либо сделать простой программатор самому. Например, я успешно использую программатор USBasp . Об этом программаторе можно почитать по

Этот проект основан на схеме функционального генератора, описанного на веб-сайте Mondo . Я только сделал очень незначительные изменения и исправил некоторые очевидные опечатки в схеме. Код переписан для синтаксиса Microchip .

Характеристики генератора:
Частотный диапазон: 11 Гц - 60 кГц
Цифровая регулировка частоты с 3 различными шагами
Форма сигнала: синус, треугольный, прямоугольный, пульс, пакетный, sweep, шум
Выходной диапазон напряжения: ± 15В для синуса и треугольника, 0-5В для других
Синхронизация: выход для импульсного сигнала.

Устройство питается от 12-вольтового трансформатора, который обеспечивает достаточно высокое (более 18 В) постоянное напряжение, необходимое для нормальной работы стабилизаторов 78L15 и 79L15. Питание в ±15 В необходимо для того, чтобы ОУ LF353 на выходе давал полный спектр сигналов при 1кОм нагрузки. При использовании питания ±12 В этот резистор должен быть не менее 3 кОм.

Датчик вращения (поворотный энкодер) который я использовал – ALPS SRBM1L0800 в виде двух переключателей в круге на схеме. Автор, вероятно, использовал другой, так что некоторые изменения в коде программы контроллера были необходимы. Мой датчик имеет две группы контактов: ВЫКЛ и ВКЛ (когда ротор перемещается в соответствующем направлении). Таким образом, изменение прерывания PORTB должны быть созданы, если одна из пар контактов коротится. Это достигается за счет подключения обоих групп контактов на контакты PIC16 (RB4 - RB7), которые проверяются программой на изменение состояния. К счастью, RB4 не был использован в оригинальном дизайне, так что я просто перенаправлен RB3 на RB4. Другая модификация вызвана использованием поворотного энкодера, потому я немного изменил прерывания микропрограммы. Я заставил регулятор, сохранять состояние в течении 100 последовательных измерений вместо 10 в оригинальном дизайне. Заметим, что некоторые ножки PIC используются для перенаправления +5 В для упрощения компоновки печатной платы, поэтому они настроены в качестве входов портов.

Печатная плата предусматривает три резисторных сборки. Одна – R/2R – для ЦАП из Bourns 4310R серии. Сборка ЦАП резисторов может быть построена и на дискретных резисторах по схеме выше. Следует использовать резисторы с допуском до ± 1% или лучше. Светодиодные ограничительные резисторы серии Bourns 4306R. Яркость светодиодов может быть увеличена изменением сопротивления ограничительных резисторов до 220 – 330 Ом.

Генератор собран в 179x154x36 мм пластиковом корпусе с алюминиевыми передней и задней панелями. Уровень выходного сигнала регулируется переменным резистором Alfa 1902F серии. Все другие компоненты устанавливаются на передней и задней панелях (кнопки, разъемы, светодиодные сборки, разъем питания). Платы крепятся к корпусу болтами в 6мм с пластиковыми прокладками.

Генератор производит 9 различных форм сигналов и работает в трех режимах, которые выбираются с помощью кнопки "Выбрать (Select)" и их индикация выводится на трех верхних (по схеме) светодиодах. Датчик вращения корректирует параметры сигнала в соответствии со следующей таблицей:


Режим \Форма

Triangle

Режим 1

Режим 2

Режим 3

Сразу после включения генератор переходит в режим 1 и генерирует синус. Тем не менее, начальная частота довольно низкая и по крайней мере одного щелчка регулятора хватит, чтобы увеличить ее.

P.S. От себя добавлю: при повторении устройства с авторской печатной платой прибор отказался заводиться (возможно на печатной плате есть ошибка), а при монтаже на макетной плате – генератор начал работать сразу.

Ниже вы можете скачать исходники asm, прошивку и файлы печатных плат ()

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Схема генератора.
Микроконтроллер PIC16F870 1 В блокнот
Сдвиговый регистр

CD74HC164

1 В блокнот
Операционный усилитель

LF353

1 В блокнот
Мультиплексор/демультиплексор

CD4053B

1 В блокнот
Линейный регулятор

LM7805

1 В блокнот
Линейный регулятор

LM78L15

1 В блокнот
Линейный регулятор

LM79L15

1 В блокнот
Выпрямительный диод

1N4002

3 В блокнот
Конденсатор 22 пФ 2 В блокнот
Конденсатор 51 пФ 1 В блокнот
Конденсатор 100 пФ 1 В блокнот
Конденсатор 1000 пФ 1 В блокнот
Конденсатор 0.1 мкФ 1 В блокнот
1 мкФ 2 В блокнот
Электролитический конденсатор 4.7 мкФ 1 В блокнот
Электролитический конденсатор 100 мкФ 2 В блокнот
Электролитический конденсатор 500 мкФ 1 В блокнот
Резистор

470 Ом

6 В блокнот
Переменный резистор 1 кОм 1 В блокнот
Резистор

2.7 кОм

1 В блокнот
Резистор

4.7 кОм

1 В блокнот
Резистор

10 кОм

4 В блокнот
Резистор

15 кОм

1 В блокнот
Резистор

22 кОм

1