Генератор импульсов на пик контроллере. Функциональный генератор на микроконтроллере. Описание генератора точных импульсов на микроконтроллере

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

Предлагаемый генератор выполнен на базе микросхемы AD9850 фирмы Analog Devices, представляющей собой полный DDS (Direct Digital Synthesis) синтезатор частоты с встроенным компаратором. Такие синтезаторы уникальны своей точностью, практически не подвержены температурному дрейфу и старению (единственным элементом, который обладает свойственной аналоговым устройствам нестабильностью, является цифроаналоговый преобразователь). Благодаря высоким техническим характеристикам DDS синтезаторы в последнее время вытесняют обычные аналоговые синтезаторы частоты. Их основ-ное преимущество — очень высокое разрешение по частоте и фазе, управление которыми осуществляется в цифровом виде. Цифровой интерфейс позволяет легко реализовать микро-контроллерное управление. С более подробным описанием принципов прямого цифрового синтеза частоты можно познакомиться, например, в .

Рис.1

Структурная схема синтезатора AD9850 изображена на рис. 1. Его основа — аккумулятор фазы, формирующий код мгновенной фазы выходного сигнала. Этот код преобразуется в цифровое значение синусоидального сигнала, который с помощью ЦАП пре-вращается в аналоговый и подвергается фильтрации. Компаратор позволяет получить выходной сигнал прямоугольной формы. Его частота fout (в герцах) определяется формулой f out = A fin /232, где f m — тактовая частота, Гц; А — 32-битное значение кода частоты. Мак-симальное значение f^ не может превосходить половины тактовой частоты.

Основные технические характеристики AD 9850 (при напряжении питания 5В)

Частота тактового генератора 1…125

Максимальный потребляемый ток (при f in =125 Мгц), мА 95

Число разрядов ЦАП 10

Максимальный выходной ток ЦАП (при R set =3,9 кОм), мА 10,24

Максимальная интегральная нелинейность ЦАП, МЗР 1

Напряжение на выходе компаратора, В:

минимальное высокого уровня 4,8

максимальное низкого уровня 0,4

Для загрузки данных в микросхеме AD9850 предусмотрены параллельный и последовательный интерфейсы. В последнем случае данные (слово длиной 40 бит) вводят через ее вход D7. Каждый бит данных сопровождают импульсом положительной полярности на входе синхронизации W_CLK. После загрузки управляющего слова по импульсу положительной полярности на входе FQJJD происходит замена параметров генерации новыми. Назначение битов управляющего слова приведено в табл. 1.

Принципиальная схема генератора изображена на рис. 2. Управляет синтезатором DD2 микроконтроллер DD1.



Рис.2

Он опрашивает клавиатуру 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". В этом случае нужно нажать кнопку "С" ("Сброс") и заново набрать правильное значение. Точно так же поступают и при ошибке в процессе ввода частоты. Двукратное нажатие этой кнопки переводит прибор в рабочий режим с установленным ранее значением частоты.

Номер бита

Назначение

Бит 0 кода частоты

Бит 1 кода частоты

……..

…………

Бит 31 кода частоты

Управляющий бит (должен быть 0)

Бит управления питанием (включе-но при 0, выключено при 1)

Бит 0 кода фазы

Бит 1 кода фазы

……….

…………….

Бит 4 кода фазы

В рабочем режиме в крайнем правом знакоместе индикатора мигает символ звездочки. Если текущее значение частоты введено с внешнего блока управления (например, с компьютера), то чтобы вернуться к частоте, отображаемой на индикаторе, достаточно нажать кнопку "*".
Кнопки "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) — разрешена.

ЛИТЕРАТУРА
1. Ридико Л. DDS: прямой цифровой синтез частоты — Компоненты и технологии. 2001.№ 7. с. 50—54.
2. AD9650, Complete DDS Synthesizer — http://www-analog.com

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

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

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

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

Скачать архив:
У вас нет доступа к скачиванию файлов с нашего сервера

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

Работа генератора и его характеристики.
Генератор подключается к видеовходу телевизора, обычно это разъем типа "тюльпан" или "SCART"
Прибор генерирует шесть полей:
- текстовое поле из 17 строк;
- сетка 8x6;
- сетка 12x9;
- мелкое шахматное поле 8x6;
- крупное шахматное поле 2x2;
- белое поле.

Переключение между полями осуществляется кратковременным (длительностью менее 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МГц без риска, но в коммерческих проектах этого, конечно же, делать не стоит.

Изготовление.

ССуперпробник может измерять напряжение, частоту, емкость, индуктивность, генерировать различные сигналы и многое другое, и все это на одной микросхеме - PIC16F870, и четырехрязрядном 7-сегментном индикаторе. Вместо индикатора LTC4627 может быть использован любой другой с общими анодами.

Стабилизатор питания выполнен на LM2931 - регуляторе с низким падением напряжения. Это позволяет питать прибор напряжением до 30 вольт с защитой от переполюсовки.

Как видно из схемы, в ней отсутствуют токоограничивающие резисторы в цепях сегментов индикатора. PIC ограничивает ток до 25 мА на линию. Программа написана даким образом, чтобы в каждый момент времени горел только один сегмент. Это исключает эффект того, что некоторые цифры горят ярче, чем другие.

Резисторы R5, R1? R2-R10 на входах микроконтроллера в разных режимах тестирования используются по-разному. Неиспользуемые в данный момент резисторы исключаются из схемы путем перевода выводов ПИКа в высокоомное состояние. R5, к примеру, используется для импульсного пробника. R4 используется для зарядки конденсатора при измерении его емкости.

Устройство собрано в корпусе от старого пробника.

Пробник управляется двумя кнопками. Режимы переключаются нажатием кнопки 1 при нажатой кнопке2...

Prob PULS FrEq Cnt VoLt diod CaP CoiL SIG ntSC 9600 Midi r/c Prn ir38 PWM StOP (Отображается на индикаторе).

Описание режимов работы

Prob Логический пробник
Показывает в первой позиции дисплея "H" при напряжении на входе больше 3,7 вольт), "L" - при напряжении ниже 0.8 вольт) "-" при Z-состоянии. Если обнаружены импульсы (минимум 0.5 мкс),во второй позиции мигает символ "P".
PULS Индикатор импульсов
Отображается частота импульсов (5, 50, 500, 5.0) в трех правых позициях. В первой позиции отображается логический уровень в виде черточки внизу или вверху цифры. Если нажать и держать кнопку 1, то генерируется серия 0.5-мкс импульсов обратной полярности, и загорается средний сегмент. Кнопкйо 2 перебираются 4 частоты. Выбранная частота сохраняется в памяти.
FrEq частотомер В режиме частотомера, нажатие кнопки 1 переключает индикацию на следующие 4 цифры измеренной частоты. К примеру, индикатор показывает "12.57" для частоты 12 576 Гц. Если нажать кнопку 1 то индикатор покажет "2576" - последние 4 цифры. Если отображается точка, то значение в КГц, если точка мигает, то в МГц.
Cnt Счетчик импульсов
В режиме счетчика импульсов дисплей отображает 4 младших разряда. Кнопка 1 переключает на отображение 4-х старших разрядов. Кнопка 2 сбрасывает счетчик.
VoLt Вольтметр Режим вольтметра. В данной прошивке отображается примерное значение - примерно на 2% выше. Делителя напряжения и защиты на входе нет, поэтому не подключайте пробник к напряжениям больше 5 В.
diod Индикатор падения напряжения на диоде или транзисторе
Аналогично режиму вольтметра, но с резистором 10k, подающим ток на щуп пробника. Когда диод или один из переходов транзистора подсоединен к щупу и земляному выводу, отображается падение напряжения.
Cap Измеритель емкость
При нажатии кнопки 1 измеряется и отображается емкость конденсатора. Значения от.001 мкФ до 500 мкФ. Чем больше конденсатор, тем дольше измерение. Измерение конденсатора емкостью 100 мкФ занимает пару секунд.
Coil Измеритель индуктивности
П ри нажатии кнопки 1 измеряется и отображается индуктивность. Значения от 0.1 до 999.9 мГн. Замечание: предполагается, что сопротивление катушки постоянному току не превышает нескольких Ом. Если прибор зависает в этом режиме, прикоснитесь щупом к земляному выводу.
SIG Генератор прямоугольного сигнала
В этом режиме при нажатии кнопки 1 генерируются прямоугольные импульсы частотой 500 Гц и амплитудой 0.5 вольт.
ntSC Видео генератор
Генерируется сигнал NTSC с паттерном из белых точек.
9600 Генератор кода Ascii Каждый раз, когда нажата кнопка 1, генерируются символы A-Z , следующие за cr/lf. Автоматический выбор полярности при подключении к сигнальной линии. Кнопкой 2 переключается скорость: 1200, 2400, 4800, 9600 бод.
Midi Генератор MIDI
Посылает ноту 60 (среднее До) на любом из16 midi-канале. Нажатие кнопки 1 посылает "note on". Отпускание кнопки 1 посылает "note off". Кнопкой 2 переключаются каналы. текущий номер канала сохраняется в памяти.
R/C Генератор импульсов для сервомашинок Генерирует 1- 2 мс импульсы для сервомашинок. Кнопка 1 увеличивает ширину импульса, кнопка 2 - уменьшает. При входе в режим по умолчанию генерируются импульсы 1.5 мс.
Генератор прямоугольных импульсов
Генерирует прямоугольные импульсы частотой 1 - 9999 Гц. Кнопка 1 увеличивает частоту, кнопка 2 - уменьшает.
Prn Генератор псевдослучайных чисел
Генерирует последовательности псевдослучайных чисел с частотой 10 кГц.
ir38 Генераторр ИКкоманд Генерирует 1 мс прямоугольные импульсы с 2.5 мс паузой между ними на частоте 38 кГц. Если подсоединить ИК диод, используется для проверки модулей ИК управления.
PWM ШИМ Генерирует сигнал ШИМ от 3 до 97 % на частоте около 6 кГц. Кнопка 1 увеличивает скважность, кнопка 2 - уменьшает.
StOP Таймер Кнопка 1 запускает/останавливает таймер. Изменение состояния щупа тоже запускает/останавливает таймер. Кнопка 2 сбрасывает таймер. Таймер считает 1/100 секуды от 0 до 99 сек, затем считает 1/10 сек от 100 до 999 сек,затем считает целые секунды от 1000 до 9999 секунд (около 2 ч 46 мин).

В любом режиме при удержании двух кнопок вызывается меню. Переключение режимов вперед и назад осуществляется кнопками 1 и 2 соответственно.

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

Описание генератора точных импульсов на микроконтроллере

Схема очень простая. Генератор построен на базе микроконтроллера PIC12F629, который тактируется от внешнего RC генератора. Выходная частота может быть установлена потенциометром P1 в интервале примерно от 2 до170 Гц. Так же частоту можно изменить путем подбора емкости конденсатора С1.

Импульсы генерируются с периодом 200 машинных циклов микроконтроллера, все сигналы имеют одинаковую длину. Выходная частота, таким образом, в 800 раз меньше, чем частота генератора. Перед программированием микроконтроллера необходимо запомнить заводскую калибровочную константу по адресу 3FFh, так как в процессе программирования она может быть утеряна. Хотя на данный момент существует метод по восстановлению калибровочной константы микроконтроллеров PIC12f629 и PIC12f675

Изменяя постоянные величины в программе микроконтроллера можно задать любое количество импульсов вплоть до 65000. Если вам нужно создать различное число импульсов, просто измените константы в программе. Как это сделать видно из рисунка ниже.

error: