Многофункциональный генератор на PIC16F870

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

Многофункциональный генератор на PIC16F870

Характеристики генератора:
  Частотный диапазон: 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)» и их индикация выводится на трех верхних (по схеме) светодиодах. Датчик вращения корректирует параметры сигнала в соответствии со следующей таблицей:

Режим Форма

Sine

Triangle

Square

Saw

H-pulse

L-pulse

Burst

Sweep

Noise

Режим 1

freq

freq

freq

freq

Freq

freq

freq

freq

Режим 2

width

width

cycles

cycles

Режим 3

rate

delta

rate

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

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

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

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Схема генератора.
Микроконтроллер 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
Резиторный блок R/2R x 10K 1
Кварцевый резонатор 20 МГц 1
Светодиод 6
Поворотный энкодер ALPS SRBM1L0800 1 Или две тактовые кнопки
Тактовая кнопка 2
Состав резисторного блока R/2R x 10K.
Резистор 10 кОм 9
Резистор 20 кОм 9