Простой генератор прямоугольных сигналов своими руками до 1 МГц
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Это простой генератор прямоугольных импульсов, который в основном использует библиотеку TimerOne, позволяющую генерировать ШИМ-сигнал на выводе 9 в диапазоне примерно от 5 Гц до 1 МГц, и вы можете регулировать рабочий цикл от 0 до 100%.
Устройство очень простое в сборке и состоит всего из нескольких компонентов:
- микроконтроллер Arduino Nano
- ЖК-дисплей
- Три подтягивающих резистора
- и три кнопки
Генератор импульсов имеет возможность регулировать период следования импульсов с помощью кнопок, подключенных к цифровым входам 6 и 7 Arduino. 13 входной контакт позволяет регулировать рабочий цикл. Показания продолжительности и рабочего цикла отображаются в первой строке ЖК-индикатора 16 × 2, а значения частоты отображаются во второй строке. Минимальный шаг для настройки периода повторения импульсов составляет 1 мкс, поэтому частота будет изменяться дискретно, например, 1 мкс - 1 МГц, 2 мкс - 500 кГц, 3 мкс - 333,333 Гц и так далее, и по мере уменьшения частоты. , увеличивается плавность его регулировки. Это непрактично на высоких частотах, но это цена простоты. В одном из своих предыдущих видеороликов я описал создание аналогичного устройства, но с помощью специализированного чипа DDS, который не имеет этих недостатков и имеет гораздо больший диапазон, но более сложен в сборке
Для визуализации выходного сигнала я использую небольшой одноканальный осциллограф. Наконец, устройство помещается в подходящую коробку, и это еще один полезный инструмент в лаборатории электроники.
Код
- Код Arduino
Код Arduino C / C ++
#include#include LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7без подписи long t =1000 , f, k =512; // по умолчанию 1000 мкс (1000 Гц), меандр, байт импульса k1, kn, kn1, kn2; int drive, drive0; void setup () {lcd.begin (16, 2); // LCD 16X2 pinMode (9, ВЫХОД); pinMode (6, INPUT); // кнопка на входе 6 pinMode (7, INPUT); // кнопка на входе 7 pinMode (13, INPUT); // кнопка на входе 13} void loop () {Timer1.initialize (t ); // период Timer1.pwm (9, k); // k - коэффициент заполнения 0-1023. kn =digitalRead (6); // кнопка input 6 (- период импульса) kn1 =digitalRead (7); // кнопка input 7 (+ период импульса) kn2 =digitalRead (13); // кнопка input 13 (+ заливка кружка) factor) if (kn ==HIGH) {// уменьшение периода drive ++; если (диск <30) {t =t-1; } // если кнопка удерживается долгое время, коррекция импульса else if (drive> 30 &&drive <60) {t =t-10; } иначе, если (диск> =60 &&диск <100) {t =t-100; } иначе, если (диск> =100) {t =t-1000; }} еще {диск =0; } if (kn1 ==HIGH) {// добавляем точку drive0 ++; если (drive0 <30) {t =t + 1; // если кнопка удерживается долгое время, исправление} else if (drive0> 30 &&drive0 <60) {t =t + 10; } иначе, если (drive0> =60 &&drive0 <100) {t =t + 100; } иначе, если (drive0> =100) {t =t + 1000; }} еще {drive0 =0; } if (t ==0 || t> 300000) {// ограничение длительности импульса до минимума, если t =1; } if (t> 200000 &&t <300000) {// ограничение длительности импульса t =200000; } f =1000000 / т; // вычисляем частоту k1 =k * 100/1024; // вычисляем коэффициент заполнения% if (kn2 ==HIGH) {// кнопка для настройки коэффициента заполнения (в кружке от k =k + 16; // шаг 16 из 1024 (вы можете сделать 8 для более плавной настройки)} if (k ==1024) {k =0;} // вывод информации по индикатору lcd.setCursor (0,0); lcd.print ("T ="); lcd.print (t); lcd.print ( "нас"); lcd.setCursor (12,0); lcd.print (k1); lcd.print ("%"); lcd.setCursor (0,1); lcd.print ("F ="); lcd .print (f); lcd.print ("Hz"); delay (300); lcd.setCursor (0,0); lcd.print (""); lcd.setCursor (0,1); lcd.print ( "");}
Схема
Производственный процесс
- Сигналы прямоугольной волны
- Музыкальный визуализатор DIY LUMAZOID для Arduino
- Простые часы со словами (Arduino)
- DIY Простой осциллограф Arduino 20 кГц на ЖК-дисплее Nokia 5110
- Вольтметр своими руками с использованием Arduino и смартфона
- Генератор волн JX
- Простой датчик препятствий с Arduino
- Скейтборд виртуальной реальности «Сделай сам»
- Простой калькулятор UNO
- Простое измерительное колесо с поворотным энкодером, сделанное своими руками