Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Генератор импульсов для изучения катушки индуктивности

Дата публикации: 30-07-2026 03:03:33

В статье будет рассмотрен и описан простой процесс сборки полезного генератора импульсов для изучения катушек индуктивности и других экспериментов.Отличие такого генератора от распространённых ШИМ-генераторов в том, что у данного генератора имеется возможность задавать отдельно длительность импульса и отдельно длительность паузы, а также количество последовательно идущих импульсов и пауз. Имеется также возможность получения полноценного регулируемого повторяющегося во времени сигнала.Все перечисленные возможности реализованы через код. Для создания генератора понадобится Arduino Nano/Uno, две тактильные кнопки, LCD-дисплей и установленная на ПК программа Arduino IDE.Схема подключения изображена на рисунке 1.рис.1Для удобства подключения и использования Arduino Nano можно применить такую плату расширения (рис. 2). Очень удобно, есть рядом расположенные необходимые выводы для подключения LCD-дисплея. У каждого сигнального пина рядом есть отдельный пин GND и +5V. рис.2Вначале необходимо скачать и установить Arduino IDE. Далее необходима библиотека LiquidCrystal I2C, автор Frank de Brabander, библиотека необходима для работы дисплея. Это можно сделать, зайдя в Tools - Manage Libraries…. (рис.3). рис.3На данном этапе у вас должны быть в наличии: I2C LCD 2004 дисплей, две тактильные кнопки, Arduino Nano или Uno. И установлена на компьютер Arduino IDE, добавлена библиотека LiquidCrystal I2C. Рассмотрим возможности генератора импульсов (рис.4) и (рис.1). рис.4Кнопка 1. Длинное нажатие (0,4 сек) служит для выбора цифровой ячейки по горизонтали.Кнопка 1. Короткое нажатие задаёт цифровое значение в выделенной ячейке.Кнопка 2. По короткому нажатию идёт выбор строки. Выделение текущей ячейки опускается сверху в низ, дойдя до самого низа, выделение возвращается в верхнюю ячейку.Кнопка 2. Длинное нажатие выдаёт сигнал или пачку сигналов в режиме Burst на вывод 9 Arduino.Pulse. Задаётся длительность импульса в микросекундах. Рабочий диапазон от единиц микросекунд до 16000 микросекунд.Pause. Задаётся длительность паузы в микросекундах. Рабочий диапазон от единиц микросекунд до 16000 микросекунд.Mode. Здесь задаётся один из двух режимов. В данном примере это Burst, то есть режим одиночного импульса или последовательности из нескольких импульсов и пауз. Переключение режимов происходит по быстрому нажатию на кнопку 1.Burst. В этой строчке задаётся количество последовательно идущих импульсов и пауз. По умолчанию стоит 1, это значит, что данный режим работы, — это генератор одиночного импульса. Если поставить 2, то мы получим два импульса и две паузы. Если 3, то три импульса и три паузы и т.д. При этом после последней паузы генерация выключается, а значит, отчётливой границы последней паузы не будет видно, пример: (рис.6,7).Для переключения к настройкам повторяющегося сигнала необходимо опуститься в то место дисплея, где написано Mode, и далее короткое нажатие на кнопку 1. Режим Burst изменится на Continuous (рис.5).рис.5В режиме Continuous имеется возможность задавать длительность импульсов и отдельно пауз. И выводить повторяющийся сигнал. Режим Continuous работает в реальном времени. Без необходимости запускать повторяющийся сигнал и изменения кнопкой.Данный генератор создавался с целью изучения катушек индуктивности. Он создавался и рассчитан не на прямое подключение к полевому транзистору, а на подключение через оптопару и драйвер затвора. В моём случае это 6N137 и TC4420. Поэтому логика работы генератора инвертированная: то есть когда MOSFET закрыт, на выводе 9 Arduino — 5 вольт.Пример работы. Генератор выдаёт 1 импульс (Pulse) длительностью 100 микросекунд (рис6).рис.6Пример работы. Генератор выдаёт 3 последовательных импульсов и пауз. Длительность импульса (Pulse) 100 микросекунд, длительность паузы (Pause) 50 микросекунд. При этом после последней паузы генерация выключается, поэтому последняя пауза всегда не разделяется (рис. 7). рис.7Пример работы. Генератор в режиме Continuous. 200 микросекунд длительность импульса (Pulse) и 450 микросекунд длительность паузы (Pause), — это бесконечно повторяющийся режим (рис. 8). рис.8Для завершения создания этого генератора импульсов достаточно загрузить предоставленный код в Arduino IDE. Для этого подключите Arduino Nano через USB-кабель к компьютеру, откройте Arduino IDE, выберите Arduino Nano/Uno, выберите COM-порт к которому подключена Arduino Nano/Uno. Необходимое выделено на (рис. 9). Загрузите код, нажмите вверху "Загрузка" (Upload). рис.9Если после загрузки кода на дисплее не появилась информация, то в начале кода измените адрес на "0x3F" (без кавычек). Смотрите (рис. 10). рис.10#include #include LiquidCrystal_I2C lcd(0x27, 20, 4); // Адрес I2C дисплея (подставьте свой при необходимости)// —------— Пины —--------const int button1Pin = 3; // Кнопка 1 (короткое: изменение цифры, длинное: переход на следующую цифру)const int button2Pin = 4; // Кнопка 2 (короткое: выбор раздела, длинное: запуск Burst)const int outputPin = 9; // Выход на оптопару (ШИМ/импульсы)// —------— Параметры генерации —--------unsigned long pulseWidth = 100; // Длительность импульса (мкс)unsigned long pauseWidth = 100; // Длительность паузы (мкс)unsigned long burstCount = 1; // Число импульсов в пачке (Burst)// Символьные представления для ввода (6 цифр)char pulseDigits[6] = {'0', '0', '0', '1', '0', '0'}; // "000100" -> 100 мксchar pauseDigits[6] = {'0', '0', '0', '1', '0', '0'};char burstDigits[6] = {'0', '0', '0', '0', '0', '1'}; // "000001" -> 1 импульс// —------— Интерфейс —--------int currentSection = 0; // 0 = pulse, 1 = pause, 2 = mode, 3 = burst count (только в Burst-режиме)int currentDigit = 0; // Индекс редактируемой цифры (0-5)int mode = 1; // 0 = Continuous, 1 = Burstvolatile bool generating = false; // Флаг активной генерации пачки// —------— Дребезг кнопок —--------int button1State = HIGH, lastButton1Reading = HIGH;unsigned long lastDebounceTime1 = 0, button1PressTime = 0;int button2State = HIGH, lastButton2Reading = HIGH;unsigned long lastDebounceTime2 = 0, button2PressTime = 0;const unsigned long debounceDelay = 50; // мсconst unsigned long longPressThreshold = 400; // мс (удержание кнопки)// —------— Вспомогательные функции —--------unsigned long getValue(char* digits) { unsigned long val = 0; for (int i = 0; i < 6; i++) { val = val * 10 + (digits[i] - '0'); } return (val == 0) ? 1 : val; // 000000 интерпретируется как 1 мкс}// Настройка аппаратного ШИМ (режим Continuous)void configureTimer() { unsigned long period_us = pulseWidth + pauseWidth; if (period_us > 1000000) period_us = 1000000; // ограничение 1 сек uint16_t prescaler; uint8_t cs_bits; double tick_us; if (period_us debounceDelay) { if (reading1 != button1State) { button1State = reading1; if (button1State == LOW) { button1PressTime = millis(); // нажали } else { // Отпустили кнопку unsigned long duration = millis() - button1PressTime; bool paramsChanged = false; if (currentSection == 0 || currentSection == 1 || (currentSection == 3 && mode == 1)) { char* digits = (currentSection == 0) ? pulseDigits : (currentSection == 1) ? pauseDigits : burstDigits; if (duration < longPressThreshold)...

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1🤔итак я уже все попробовал создать акромя двигателя магнитной струны. ...-2315-07-2026
2[Перевод] Самодельный дисплей, отображающий картинку в воздухе0622-06-2026
3Студент-электронщик превратил дребезжание дроссельных катушек в музыку5719-07-2026
4📜 Тестирование №51969 [Км-4. переходные процессы в линейных электрических цепях. ...015.8727-07-2026
5Сенсорный монитор своими руками07.2324-09-2004
6LCD, PDP, LEP мониторы09.1217-03-2001
7LCD монитор Hyundai ImageFlat LM1510A09.3122-06-2001
8Ну, Gemini больше ничего не принимает, просто зависает и ничего ...-2407-07-2026
9Создан насос для перекачивания жидкости с помощью магнитного поля0002-06-2025

Классификация: . Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 7.13. Источник: vk.com.