Частоту от 1 Гц до 8 МГц задают через регистры OCR1A и TCCR1B. Пример для 1 кГц: TCCR1B = 0b00001010; (режим CTC, делитель 8). Коэффициент предделителя влияет на максимальное значение.
Ширина фазы регулируется через OCR1A. При значении 7999 и тактовой частоте 16 МГц период составит 4 мс. Для симметричного меандра установите OCR1A = 3999.
В этой статье:
Создание прямоугольных сигналов с микроконтроллером
Подключите цифровой выход платы (например, D9) к осциллографу или логическому анализатору. Для формирования сигнала используйте функцию tone(), указав частоту в герцах и длительность в миллисекундах. Пример: tone(9, 1000, 500); создаст колебания 1 кГц на полсекунды.
Для ручного управления параметрами добавьте потенциометр на аналоговый вход A0. Считайте его значение через analogRead(), преобразуйте в нужный диапазон (например, 1–5000 Гц) и передайте в tone(). Код для регулировки частоты: int freq = map(analogRead(A0), 0, 1023, 1, 5000); tone(9, freq);.
Если требуется точная коррекция скважности, примените ШИМ. Настройте регистр TCCR1B для изменения предделителя таймера. Для режима Fast PWM на 8 бит: TCCR1A = 0b10000010; TCCR1B = 0b00011001;. Установите OCR1A для задания верхней границы и OCR1B для коррекции ширины.
При работе с высокими частотами (свыше 20 кГц) отключите встроенный ШИМ и напрямую манипулируйте портами. Для мегагерцовых диапазонов потребуется внешний кварц или тактирование от другого источника.
Проверьте стабильность выходного напряжения мультиметром. При падении ниже 3.3 В добавьте буферный усилитель на транзисторе или микросхеме 74HC14. Для индуктивных нагрузок установите защитный диод.
Подключение элементов для формирования сигналов
Для работы с прямоугольными сигналами потребуются: микроконтроллер, резисторы (220 Ом и 10 кОм), светодиод, кнопка и макетная плата. Подключите светодиод через резистор 220 Ом к цифровому выходу (например, D9). Кнопку соедините с землёй и входом D2 через подтягивающий резистор 10 кОм.
Проверка соединений
Убедитесь, что полярность светодиода соблюдена: анод к выходу микроконтроллера, катод – к земле. Проверьте мультиметром отсутствие короткого замыкания между цепями питания и управления.
Корректировка параметров
Для изменения частоты сигнала отредактируйте значение в функции delay(). Например, delay(500) создаёт интервал 0,5 секунды между переключениями. Для точного управления используйте таймеры и регистры напрямую.
Изменение параметров сигнала через программный код
Скважность корректируется через изменение коэффициента заполнения. Добавьте переменную int dutyCycle = 50;, затем примените её в коде: digitalWrite(pin, HIGH); delayMicroseconds(dutyCycle * period / 100); digitalWrite(pin, LOW);.
Точное управление временными интервалами достигается через регистры таймера. Для Timer1 настройте предделитель: TCCR1B |= (1 << CS12); – это делит тактовую частоту на 256.
Для плавного изменения характеристик добавьте потенциометр, подключённый к A0, и считывайте его значение: int freq = map(analogRead(A0), 0, 1023, 1, 10000);.
Необходимые компоненты и их подключение
Для сборки потребуются:
- Микроконтроллер (например, ATmega328P).
- Резисторы: 220 Ом (2 шт.), 10 кОм.
- Конденсатор 100 нФ.
- Кнопка тактовая.
- Светодиод.
- Макетная плата и провода.
Порядок соединений:
- Подключите светодиод через резистор 220 Ом к цифровому выходу (например, D9).
- Кнопку соедините с землёй и входом (D2) через резистор 10 кОм.
- Конденсатор 100 нФ установите между питанием и землёй для фильтрации помех.
Проверьте цепь мультиметром перед подачей напряжения. Ошибки в монтаже приводят к нестабильной работе.









