Генератор на пик контроллере. Многофункциональный генератор на PIC16F870
Этот проект основан на схеме функционального генератора, описанного на веб-сайте 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 и генерирует синус. Тем не менее, начальная частота довольно низкая и по крайней мере одного щелчка регулятора хватит, чтобы увеличить ее.
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 |
Когда-то в [Л.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); я использовал классический – печатный, но рисунок платы не привожу, т.к. она получилась довольно-таки “кривой” (практически, повторяет принципиальную схему); хороший вариант – собрать все на “макетке” с дырочками (размер ~80×80 мм).
Литература:
1. Горчук Н.В.
– Генератор с цифровым управлением, ж.”Радиоконструктор”, 12-2009, стр.18;
Таблица 1:
СПИСОК РЕЖИМОВ ГЕНЕРАТОРА | |||||||
Частота, Гц | Частота, Гц | Частота, Гц | Частота, Гц | ||||
Для генерации видеосигнала достаточно всего одного микроконтроллера и двух резисторов. То есть можно сделать буквально карманный генератор видеосигнала размером с брелок. Такой прибор пригодится телемастеру. Его можно использовать при сведении кинескопа, регулировке чистоты цвета и линейности.
Работа генератора и его характеристики.
Генератор подключается к видеовходу телевизора, обычно это разъем типа “тюльпан” или “SCART”
Прибор генерирует шесть полей:
– текстовое поле из 17 строк;
– сетка 8×6;
– сетка 12×9;
– мелкое шахматное поле 8×6;
– крупное шахматное поле 2×2;
– белое поле.
Переключение между полями осуществляется кратковременным (длительностью менее 1с.) нажатием кнопки S2. Удержание этой кнопки в нажатом состоянии более длительное время (дольше 1 с.) приводит к выключению генератора (микроконтроллер переходит в состояние “SLEEP”). Включение генератора производится нажатием кнопки S1. О состоянии прибора (включен / выключен) сигнализирует светодиод.
Технические характеристики прибора:
– тактовая частота – 12 МГц;
– напряжение питания 3 – 5 В;
– ток потрребления в рабочем режиме:
– при напряжении питания 3В – около 5мА;
– при напряжении питания 5В – около 12мА;
– частота кадров – 50 Гц;
– число строк в кадре – 625.
Схема.
Схема очень проста.
Вся работа по формир-
ованию видеосигнала
выполняется программой,
зашитой в микрокон-
троллере. Два резистора
вместе с сопротивлением
видеовхода телевизора
обеспечивают необходи-
мые уровни напряжения
видеосигнала:
– 0 В – синхроуровень;
– 0,3 В – уровень черного;
– 0,7 В – уровень серого;
– 1 В – уровень белого.
Для формирования видеосигнала используется нулевой бит PORTA и целиком весь PORTB. (Этот порт работает в сдвиговом режиме. Несмотря на то, что сигнал снимается только с его нулевого бита, программа использует его весь. Поэтому все биты PORTB настроены как выходы.) Первый бит PORTA используется для индикации состояния генератора. Когда прибор включен, – светодиод горит. Когда прибор выключен, – светодиод погашен. Третий бит PORTA используется для переключения режимов работы генератора и его выключения. Кратковременное нажатие кнопки S2 позволяет перейти от одного поля генератора к другому. При удержании этой кнопки в нажатом состоянии дольше 1 с. прибор выключается (микроконтроллер переходит в состояние “SLEEP”). Чтобы включить генератор необходимо выполнить сброс. Это осуществляется нажатием кнопки S1. Напряжение питания прибора можно выбрать в пределах 3 – 5 В. При этом соответственно должны быть подобраны номиналы резисторов.
3В…– R5=456Ом и R6=228Ом
3,5В – R5=571Ом и R6=285Ом
4В…– R5=684Ом и R6=342Ом
4,5В – R5=802Ом и R6=401Ом
5В…- R5=900Ом и R6=450Ом
Здесь указаны расчетные значения. Реально можно ставить резисторы из стандартного ряда, например для 5В – 910Ом и 470Ом, а для 3В – 470Ом и 240Ом.
Напряжение питания генератора может быть и меньше 3В. Для каждого конкретного PICа минимум следует определять эксперементально. У меня, например, 20МГц-й PIC выпуска 2001 года работал и при 2,3 В.
Прграмма.
Программа формирует 6 полей. Каждое поле состоит из 301 строки (300 информационных строк + одна черная). Вообще расчетное число – 305 (625 строк растра – 15 строк кадровой синхронизации = 610. Информация в кадре выводится через строку (подробнее об этом смотри здесь), поэтому 610 / 2 = 305). Но при таком числе строк размер растра по вертикали получается немного больше того, что формирует видеосигнал, передаваемый телецентром.
Первая строка в каждом поле черная. В это время опрашивается состояние кнопки S2, вычисляется время удержания ее в нажатом состоянии и определяется необходимость перехода от одного поля к другому.
В графических полях есть небольшие искажения вертикальных линий. Это связано с тем, что длина некоторых строк на пару тактов больше остальных из за необходимости установления счетчиков циклов. Вцелом подпрограммы, формирующие графические поля, очень просты, поэтому нет необходимости их коментировать.
Подробнее разберем ту часть программы, которая формирует текстовое поле. Это наиболее сложный участок программы, занимает большую ее часть, использует максимум ресурсов микроконтроллера (вся память данных и значительная часть ОЗУ). Здесь используются фрагменты кода, взятые из игры Pong, которую написал Rickard Gunee.
Текстовое поле состоит из 17 строк, каждая из которых может состоять не более, чем из восьми символов. Символы отображаются через строку, то есть одна строка текста занимает 17 строк растра. (Такое отображение связано с ограниченными возможностями PIC.) Информация о графике символов хранится в памяти программ в разделе таблица. Информация о тексте строк хранится в памяти данных (64 слова = 8 строк по 8 символов). Например в строке 08h (адресами от 08h до 0Fh) записано следующее:.20.60.48.50.90.58.20 20. Каждое значение – это координата (смещение от начала) символа в таблице. Значение.20. соответствует пробелу, .60. – буква “В”, .48. – буква “И”, и так далее. А все вместе образует “_ВИДЕО__”.
Разберем на примере, как выводится текст. Согласно программе, в 12-й текстовой строке экрана необходимо вывести информацию, на которую ссылается строка памяти данных 28h (A0 B8 68 C8 D8 70 E0 D0). Таким образом, в следующих 17 строках растра должен быть выведен текст: ” p i c 1 6 f 8 4 “. Это происходит следующим образом. В первой из 17 строк выводится только черный уровень. В эти 64 мкс, пока на экране отображается черная строка, в регистры ОЗУ переписываются “верхние значения” символов: 00h.от “p”, 08h от “i”, 00h от “c” 18h от “1” и так далее. Во время следующей строки эти данные последовательно передаются в PORTB, то есть на видеовыход. Третья строка снова черная. За время ее выполнения, в буфер переписываются “вторые сверху” значения символов: 00h.от “p”, 00h от “i”, 00h от “c” 1Ch от “1”… В четвертой строке эти данные выводятся на экран. И так далее, пока вся строка не будет отображена.
Подпрограмма кадровой синхронизации целиком взята из игры Pong, которую написал Rickard Gunee . Эта подпрограмма короткая, но довольно запутанная. Если объяснять, как она работает то, получится еще длиннее и запутаннее. Лучше всего положить рядом текст подпрограммы и рисунок осциллограммы кадровых синхроимпульсов, и не торопясь разобрать каждую строку кода. Скажу только, что подпрограмма начинает выполняться не с верхней строчки, а из середины (:-)), от метки “vertsync”.
Разгон PIC16F84.
Как видно из схемы в этом проекте микроконтроллер работает на частоте 12МГц. На сегодняшний день выпускаются три версии PIC16F84: на 4МГц, на 10МГц и на 20МГц. (на 1.1.2002 соотношение цен приблизительно такое: $3.5, $5.3 и $6.3) В своем проекте Pong Rickard Gunee утверждает, что использовал 4МГц-е PIC16F84 и они часами работали на частоте 12МГц без проблем. Я попробовал, и действительно 4МГц-й PIC нормально работает на частоте, которая в три раза (!!!) превышает его допустимую частоту (правда я не стал испытывать судьбу и включал генератор лишь на несколько минут). При этом у 4МГц-го PICа потребляемый ток был на 10 .. 20 % больше, чем у 20МГц-го (отсюда, видимо и ограничение по частоте). Думаю, что 10МГц-й микроконтроллер можно разгонять до 12МГц без риска, но в коммерческих проектах этого, конечно же, делать не стоит.
Изготовление.
Предлагаемое устройство представляет собой генератор прямоугольных импульсов управляемый через последовательный порт с компьютера. Оно было сделано для решения конкретной задачи буквально за день и возможно содержит ошибки или недоделки, я не могу гарантировать что продавая его вы заработаете кучу денег. Но все основные функции были проверены.
Максимальная частота выдаваемая генератором немного больше 13 кГц, минимальная меньше 0,01 Гц (для частоты кварцевого генератора 4 МГц).
Схема.
width=710>
Рисунок не помещается на странице и поэтому сжат!
Для того, чтобы просмотреть его полностью, щелкните .
Схема достаточно простая. Она собрана на основе микроконтроллера PIC16C63A, сигнал снимается с двух его выводов, их состояние всегда разное. Без нагрузки уровень единицы отличается от напряжения питания меньше чем на 0,1 вольт, уровень нуля тоже очень низкий. Выводы рассчитаны на ток до 30 мА. Микросхема МАХ232 используется для преобразования уровней интерфейса RS232 в уровни TTL. Для питания устройства нужен 5 вольтовый блок питания, на рисунке он не показан.
Программа.
Для установки параметров сигнала выдаваемого микроконтроллером необходимо использовать специальную программу. Программа написана для ОС Windows, ниже приведен вид ее окна.
Элементы управления предназначены для задания частоты выходного сигнала, отношения длин положительного и отрицательного полупериодов. Есть возможность ограничить количество выдаваемых импульсов (1…2 23 -1). Так как программа в микроконтроллере не позволяет выводить любую частоту, после нажатия на кнопку “Send” будет рассчитано ближайшее возможное значение частоты и оно запишется в поле частота вместо введенного с клавиатуры. Поля “Длительность 1” и “Длительность 0” содержат длительности сигнала в условных единицах с которыми работает программа в PICе, это целые числа больше нуля и меньше 2 24 . Предусмотрены настройки для выбора номера последовательного порта и частоты используемого кварцевого резонатора.
Предлагаемое устройство представляет собой генератор прямоугольных импульсов управляемый через последовательный порт с компьютера. Оно было сделано для решения конкретной задачи буквально за день и возможно содержит ошибки или недоделки, я не могу гарантировать что продавая его вы заработаете кучу денег. Но все основные функции были проверены.
Максимальная частота выдаваемая генератором немного больше 13 кГц, минимальная меньше 0,01 Гц (для частоты кварцевого генератора 4 МГц).
Схема.
Схема достаточно простая. Она собрана на основе микроконтроллера PIC16C63A, сигнал снимается с двух его выводов, их состояние всегда разное. Без нагрузки уровень единицы отличается от напряжения питания меньше чем на 0,1 вольт, уровень нуля тоже очень низкий. Выводы рассчитаны на ток до 30 мА. Микросхема МАХ232 используется для преобразования уровней интерфейса RS232 в уровни TTL. Для питания устройства нужен 5 вольтовый блок питания, на рисунке он не показан.
Программа.
Для установки параметров сигнала выдаваемого микроконтроллером необходимо использовать специальную программу. Программа написана для ОС Windows, ниже приведен вид ее окна.
Элементы управления предназначены для задания частоты выходного сигнала, отношения длин положительного и отрицательного полупериодов. Есть возможность ограничить количество выдаваемых импульсов (1…2 23 -1). Так как программа в микроконтроллере не позволяет выводить любую частоту, после нажатия на кнопку “Send” будет рассчитано ближайшее возможное значение частоты и оно запишется в поле частота вместо введенного с клавиатуры. Поля “Длительность 1” и “Длительность 0” содержат длительности сигнала в условных единицах с которыми работает программа в PICе, это целые числа больше нуля и меньше 2 24 . Предусмотрены настройки для выбора номера последовательного порта и частоты используемого кварцевого резонатора.
Источник: svv.on.ufanet.ru
C этой схемой также часто просматривают: |