Этот проект основан на схеме функционального генератора, описанного на веб-сайте Mondo. Я только сделал очень незначительные изменения и исправил некоторые очевидные опечатки в схеме. Код переписан для синтаксиса Microchip MPLAB IDE.
Характеристики генератора:
Частотный диапазон: 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 | |||||