Выбор диапазонов генератора прямоугольных импульсов – для новичков в радиоделе

May 2, 2014 by admin Комментировать »

Возьмём за основу частоту Тогда диапазоны: 1-10 Гц, 10-100 Гц, 100-1000 Гц, 1-10 кГц, 10-100 кГц,

– вполне нас устроят Однако как, не имея осциллографа, мы могли бы фиксировать, в каком диапазоне мы работаем Мы можем каждое переключение диапазона фиксировать с помощью светодиода, рядом с которым поместим надпись Для этого нам понадобится 5 светодиодов Переключать диапазоны мы можем с помощью одной кнопки, перебирая диапазоны последовательно и циклически Можем ли мы это сделать Можем

Дальше Внутри каждого диапазона мы, используя предыдущую наработку, можем изменять частоту Для этого нам понадобится две кнопки: увеличить частоту и уменьшить частоту (менять, напомню, мы будем длительности) Если в диапазоне 10-100 Гц менять частоту с шагом 10 Гц, то количество шагов будет вполне разумным Можем ли мы это сделать Можем

Конечно, если мы захотим, то внутри шага в 10 Гц, мы можем сделать точную настройку с шагом в 1 Гц Если захотим Но, пойдём дальше

Было бы удобно, если бы мы могли видеть, какова частота в данный момент, когда мы несколько раз пощёлкали кнопками Мы могли бы для всех диапазонов сделать общий индикатор, в сущности, индикатор количества шагов, что  потребует от нас 10 светодиодов для индикации Можем ли мы это сделать Можем

А теперь давайте считать Любая разработка, большая или маленькая, всегда сталкивается с необходимостью посчитать, во что выливаются наши фантазии Итак

Две кнопки для управления частотой и одна для переключения диапазонов займут у нас  3 вывода порта Пять светодиодов для индикации диапазонов и десять светодиодов для отображения результата внутри диапазона займут у нас 15 выводов портов (каждый порт, обычно, имеет 8 выводов) Итого: 15 + 3 = 18 А вывод для сигнала 15 + 3 + 1 = 19

Микроконтроллеры с большим количеством выводов и несколькими портами в природе есть, но мы хотели использовать простые, дешёвые, доступные модели…

Давайте будем реалистами и умерим наши запросы до того момента, когда, например, научимся работать с дисплеями Используя дисплей, мы можем выводить всю информацию, при меньшем количестве задействованных выводов При этом мы можем использовать цифровую клавиатуру, что, вероятно, уменьшит количество выводов, занятых кнопками, очень расширив возможности по вводу управляющих сигналов Но об этом, если мы и поговорим, то не сейчас

Сейчас постараемся понять, что в наших запросах явно лишнее

Пока я уверен, что диапазон 1-10 Гц вам понадобится не скоро (если когда-нибудь понадобится) Как часто вы будете пользоваться диапазоном 10-100 кГц Думаю, не чаще, чем предыдущим

Если мы выбросим два диапазона, то сократим количество индикаторов диапазонов до трёх А как менять частоту внутри диапазона Не сделать ли нам «шире шаг»

Выбрав в качестве центральной частоты в диапазоне 10-100 Гц частоту 50 Гц, выбрав шаг 20 Гц, мы получим общее количество шагов равное 4 Вот как у нас будет меняться частота 50-70-90 Гц или 50-30-10 Гц

Посчитаем ещё раз Три кнопки для переключения диапазонов и частоты, три светодиода, отображающих диапазоны и четыре индикаторы внутри диапазона, плюс вывод сигнала: 3 + 7

+ 1 Мы существенно сократили требования к количеству портов Два порта, имеющих 16 выводов, вполне укладываются в наши намерения

Прикидки прикидками, но не пора ли их проверить В первую очередь проверить, сможем ли мы собрать нужную нам программу

В предыдущей версии программы мы формировали импульсы в основной части Но в том случае мы сразу выбирали единицы измерения длительности импульсов Сейчас нам понадобится менять эти единицы Поэтому, не зря же мы «возились» с макросом – используем макрос для формирования импульса, оставив в основной программе опрос кнопок и..

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

Вы можете попробовать вводить имена кириллицей, но если возникнут проблемы, переключайтесь на латиницу Ведь можно писать и латиницей «по-русски», хотя это и не очень удобно

Как размещать компоненты программы, я оставляю, вы это уже знаете Как создавать макрос вы тоже знаете

Поэтому перейдём к тому, что должен делать макрос выбора диапазона

Рис 238 Начало работы над программой генератора с несколькими диапазонами

А должен макрос выбора диапазона в первую очередь переключать нас между единицами времени Давайте, определим единицы, исходя из частоты Длительности (и период) – это величины обратные частоте

Для диапазона 10-100 Гц период середины 50 Гц равен 20 мс Для диапазона 100-1000 Гц период середины 500 Гц равен 2 мс Для диапазона 1-10 кГц период середины 5 кГц равен 200 мкс

Если в рассуждениях о частоте, всё получалось складно, то после перехода к временам появляются дополнительные вопросы Надеюсь, вы видите, что «шагать» от 20 мс с шагом 10 можно только в одну сторону, делая два шага При уменьшении частоты мы на втором шаге уменьшим частоту до нуля, если используем тот же метод вычитания одинаковых величин при каждом шаге Кстати, эта же проблема была и в предыдущей версии, где мы не ограничивали количество шагов Но там вариант был не окончательный, и к этому «эпизоду» я не стал привлекать внимания

Постараемся разобраться в этом Начнём с того, что переведём выбранные частоты в периоды: 10-30-50-70-90 Гц превратятся в периоды 100-33-20-14-11 мс

Мы формируем меандр, то есть, импульсы с равными значениями высокого и низкого напряжения, следовательно, длительность импульса вдвое меньше Иными словами нам нужна последовательность следующих времён: 50-16-10-7-5 мс Это не будут точные значения, но они у нас и не получатся точными без больших сложностей

Небольшие сложности у нас уже появились Я не знаю, как вы, а я не вижу, как получить нужную последовательность простым вычитанием или сложением с одним и тем же числом Что ж, простота не всегда достижима А программирование достаточно гибкий инструмент, чтобы решить нашу проблему Давайте пока остановимся на одном диапазоне, который мы рассмотрели, и будем считать, что макрос обслуживает только его

Добавим в программу ветвление для перехода к макросу, если нажата кнопка диапазона

Как и в предыдущих случаях, мы считаем, что нажатая кнопка соединяет вывод с общим проводом, землёй

Когда  кнопка  нажата,  мы  переходим  к  обработке  макроса

range

Созданием этого макроса и займёмся

Рис    239    Ветвление    программы    при    нажатой    кнопке диапазона

Как и основная программа, макрос после его создания имеет только два элемента: Начало и Конец В основной программе, мы немного поспешили, есть два элемента, которые там, пожалуй, лишние – опрос кнопок увеличения и уменьшения частоты Ведь мы решили, что начинаем программу с выбора диапазона частот

Чтобы не переписывать их заново, мы перенесём их в макрос Для этого выделим их: установив курсор мышки чуть выше первого элемента, протащим курсор так, чтобы в прямоугольник выделения попали все нужные компоненты

Рис 2310 Выделение элементов программы для переноса

После выделения щелчком правой клавиши мышки можно вызвать появление выпадающего меню, где есть команда Вырезать

Рис 2311 Выпадающее меню команд

Вырезав нужные компоненты программы, перейдём на закладку макроса Теперь в основном меню выберем пункт Правка, а в нём команду Вставить

Рис 2312 Вставка нужных компонентов в другое место программы

Как видите, работа в редакторе программы Flowcode мало  отличается от работы в текстовом редакторе – можно вырезать, вставлять, копировать и тп

Но вернёмся к нашей последовательности Если нам нужно хранить данные, мы используем переменные (или константы, если раз и навсегда) Переменная может вместить байт, целое и другой тип данных, но только одно число или символ Для хранения многих чисел в программировании используют массивы данных Это выделенная область памяти, где последовательно располагаются разные, скажем, числа (но не обязательно, конечно, числа) Доступ к ним реализован по индексу массива То есть, каждый элемент массива маркируется именем массива и индексом, порядковым номером элемента в массиве

Среди типов переменных в программе Flowcode нет массивов Хотя массивы есть в других языках программирования Зато есть строковые переменные Строковые массивы – это разновидность массива, от общего вида отличающаяся только тем, что в ячейках массива хранятся байты, содержащие коды символов Поэтому набор символов образует строку, давшую название массиву строк

Создадим массив значений, куда поместим нужные нам временные интервалы

Массив, строковая переменная, создаётся, как и любая переменная Механизмы создания переменных мы уже знаем

Для этой переменной я выбрал имя ran1, учитывая, что в ней хранятся данные первого диапазона

Почему я говорю о переменной, потому что значения в ней могут и меняться

И до использования массива нужно вставить в него данные

Рис 2313 Создание массива для хранения длительностей диапазона

Для заполнения массива используем программный элемент Вычисления, мы уже использовали его для операции присваивания То, что мы делаем сейчас, то же самое, мы присваиваем значения элементам массива

Обратите внимание, начало  отсчёта, как и в языке программирования Си, это нуль

Собственно, мы больше не будем менять массив Поэтому резонно перенести его в основную программу до бесконечного цикла, создав блок инициализации программы

Рис 2314 Заполнение массива

Вставляя этот массив первоначально в макрос, я хотел показать ещё один удобный момент в использовании подпрограмм Их можно создать и отладить отдельно от программы, а затем уже вставить готовый блок Но сейчас программа пока маленькая, осуществим проверку после переноса блока заполнения массива

Проверить я хочу правильность записи пока в пошаговом режиме отладки, добавив переменную, скажем, pause в окно наблюдения и придавая ей разные значения из массива Эта операция выполняется в элементе Вычисление: pause = ran1[0] и тд

Рис 2315 Проверочный вариант макроса

Убедившись, что числа выглядят правильно, можно удалить проверочные блоки

Итак,  мы  справились  с  одной  из  неприятностей,  связанных  с  созданием  нужных  значений длительностей Но есть ещё одна неприятность Это следующий диапазон частот 100 Гц – 1 кГц

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты