Генератор произвольных сигналов на Arduino Due: до 100 кГц аналог, 42 МГц квадратный, GUI для Linux/Windows
Компоненты
| Компонент | Количество |
|---|---|
| Arduino Due | 1 |
О проекте
Мощный двухканальный генератор сигналов на Arduino Due с ПК-контроллером (GUI). Две части: прошивка Due и кроссплатформенное Java-приложение для Windows/Linux (Raspberry Pi — не тестировалось). Никакой внешней схемы не требуется, есть опциональная схема защиты выходов до ±30 В.



Ключевые возможности
- Аналоговая волна (DAC0): 12 бит, до 4096 точек, 0.05 мГц – 100 кГц, частота дискретизации до 1.6 МГц (DMA), 400 кГц (обычный/Exact Mode)
- Квадратная волна (Pin 7): 0.05 мГц – 42 МГц, ШИМ/прерывания, мин. импульс 12 нс
- Сквозной коэффициент заполнения: 0% – 100% (виртуально), или фиксированная длительность импульса
- Exact Mode — точная частота без «ступенек» DDS (не делитель тактовой)
- Произвольная форма: рисование мышью, редактирование, сохранение/загрузка .wav, пошаговые переходы
- Синус/пила/треугольник — переключение одной кнопкой
- Синхронный/независимый квадрат, управление частотой/периодом, скважностью
- Частотный свеп (лог), таймер с +/- выходом
- Управление: клавиатура, экранная клавиатура, режим «MODE» — плавная регулировка
Спецификации
| Параметр | Аналог (DAC0) | Квадрат (Pin 7) |
|---|---|---|
| Диапазон частот | 0.05 мГц – 100 кГц | 0.05 мГц – 42 МГц |
| Разрешение | 12 бит (4096 точек) | — |
| Частота дискретизации | До 1.6 МГц (DMA >1 кГц), 400 кГц (≤1 кГц / Exact Mode) | — |
| Мин. длительность импульса (0% скваж.) | ~350 нс | 48 нс (синхронный), 12 нс (PWM ≥1.3 кГц) |
| Мин. длительность импульса (0.01% скваж.) | 2.5–25 мкс (если >1 кГц и Exact/Sync) | 2.5–25 мкс (синхр.), 5 мкс (асинхр. <163 Гц) |
Установка
GUI-приложение (портативное, без установки)
- Windows: распакуйте
DueAWGController-Win64.zip(или 32-бит — надежнее, Java встроена), создайте ярлык на.exe - Linux: распакуйте
DueAWGController-LinuxXX.zip, запуститеDueAWGControllerLinuxили добавьте в меню. Требуетсяopenjdk-8-jre(sudo apt-get install openjdk-8-jre). Доступ к USB:sudo usermod -a -G dialout $USER(перелогиньтесь) - В архиве есть ARM-сборки для Raspberry Pi — не тестировались
Прошивка Arduino Due
- Специальные библиотеки не нужны — только стандартный Arduino IDE
- Загрузите скетч в Due (порт определится автоматически)
- GUI при запуске сам найдёт и подключится к Due по USB (ручной выбор COM есть на случай сбоя)
- В папке
Arbitrary Waves— примеры волн для старта - Альтернативное управление: Serial Monitor (115200 baud, введите
?для помощи) или потенциометры/кнопки/LED (пины в начале скетча)
Выходы
Соедините пины 3 и 7 перемычкой (или резистором 47–100 Ом). Квадрат — с пина 7, аналог — с DAC0.
Код и ресурсы
Важно: не нажимайте «Download as zip» — скачается только README.
Полный репозиторий: GitHub — нажмите «Read More» / «Code» → «Download ZIP».
Схема защиты выходов (опционально)
Можно не ставить. Если используете — защищает от случайного подключения до ±25 В без заметного ухудшения фронтов. D2, D3 — быстрые диоды с высоким током (шоттки слишком медленные). Предохранители F1, F2 — полипредохранители.

Производственный процесс
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Создание сенсорной игры «Крестики-нолики» на Arduino Due
- JX Wave Generator — Генератор сигналов на Arduino с DDS AD9833 и OLED-дисплеем
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Оптимизированные решения питания для проектов на Arduino
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino