mss ebd2ac546a ai: вариант 6 генератора (PIO, неиспользуемые биты = 0), синхронизация с РПД
- stub/06-dds-pio-zero-rp2040.py: новый вариант; PIO всегда выводит 8 бит
  (out pins, 8), младшие неиспользуемые линии GP8..GP(15-BITS) — выходы в 0
- stub/04-dds-pio-rp2040.py: подтянута шапка с отметкой о проверке на стенде
- task.md, print/: пересобраны из РПД (таблица вариантов + брошюра студента)
- README.md: список вариантов приведён в соответствие
2026-11-02 13:46:40 +04:00

ЭУМиРТС5-ДДС

Репозиторий студента для одной лабораторной работы.

Дисциплина: Электронные устройства мехатронных и робототехнических систем (ЭУМиРТС), Б1.В.06 Специальность: 15.03.06 «Мехатроника и робототехника» Семестр: 5 · Объём: 4 часа

Название репозитория расшифровывается так:

Часть Значение
eumirts ЭУМиРТС — электронные устройства мехатронных и робототехнических систем
5 пятый семестр
dds Direct Digital Synthesis — генератор на RP2040, который вы собираете

Черновик. Требует проверки преподавателем перед выдачей студентам.


О чём работа

Работа состоит из двух частей:

A. Стенд. Вы собираете DDS-генератор на RP2040 (Raspberry Pi Pico) и скрипт автоматического снятия АЧХ. Готового лабораторного генератора со свипом не оказалось, поэтому измерительный прибор делается своими руками.

B. Исследование. Этим стендом вы снимаете характеристики трёх схем — интегратора на ОУ, дифференциатора на ОУ и пассивного RC-фильтра — и сравниваете эксперимент с расчётом по передаточным функциям.

Полное задание — в task.md.


Что в репозитории

eumirts5-dds/
├── README.md                            ← этот файл
├── task.md                              ← задание (части A и B)
├── stub/                                ← заготовки: генераторы и скрипт
│   ├── 01-dds-generator-rp2040.ino              ← вариант 1: Arduino C++
│   ├── 01-dds-generator-rp2040-circuitpython.py ← вариант 2: CircuitPython
│   ├── 04-dds-pio-rp2040.py                     ← вариант 3: PIO + DMA
│   ├── 04-dds-pio-rp2040.ino                    ← вариант 4: PIO + DMA (Arduino)
│   ├── 05-dds-audiopwm-rp2040.py                ← вариант 5: аудио-ШИМ
│   ├── 06-dds-pio-zero-rp2040.py                ← вариант 6: PIO, лишние биты = 0
│   ├── 02-izmerenie-achh.py                     ← автоснятие АЧХ (на ПК)
│   └── 03-blank-otchyota.md                     ← бланк отчёта
└── print/                               ← брошюра задания (DOCX)

Какой вариант генератора выбрать

Файл Кому Особенности
01-...ip2040.ino есть Arduino IDE программный DDS, работает на обоих ядрах
01-...-circuitpython.py есть CircuitPython то же, но медленнее (интерпретатор)
04-dds-pio-rp2040.py рекомендуется аппаратный PIO + DMA, точная частота, CPU свободен
04-dds-pio-rp2040.ino Arduino, earlephilhower PIO + DMA; форма сигнала задаётся в коде
05-dds-audiopwm-rp2040.py CircuitPython audiopwmio: DMA играет буфер; только до ~3 кГц
06-dds-pio-zero-rp2040.py CircuitPython то же, что 04-...py, но неиспользуемые младшие биты порта выведены в 0

Для варианта на PIO нужна библиотека adafruit_pioasm в папке /lib на плате.


Быстрый старт

  1. Прошить генератор. Файл переименовать в code.py (для CircuitPython) или открыть в Arduino IDE (для .ino).
  2. Открыть консоль, ввести HELP — увидеть список команд.
  3. Собрать ФНЧ на выходе генератора (схема в HELP):
GP15 ──[R1 1к]──┬──[R2 1к]──┬──► к схеме
                │           │
              [C1 47н]    [C2 47н]
                │           │
               GND         GND
  1. Проверить сигнал: W S (синус), F 1000, посмотреть осциллографом (период ≈ 1 мс).
  2. Калибровать частоту, если нужно: ввести CAL <измеренное_значение>.
  3. Снять АЧХ скриптом 02-izmerenie-achh.py (запускается на ПК).

Основные команды генератора

Команда Что делает
HELP или ? подробная справка со всеми командами и схемой
I текущие настройки: частота, факт, потолок, CPC
W S / W Q режим синуса / прямоугольника
F <Гц> частота
M <0..127> амплитуда синуса
D <0..255> скважность прямоугольника
A измерить размах на ADC0 (GP26)
SWEEP f0 f1 n мс логарифмический свип
B <1..8> число бит порта
N <16..4096> длина периода в сэмплах
O <1..64> точек на сэмпл
CLC <1..8> / CAL <Гц> калибровка CPC вручную / автоматически
FN <имя> / FP <выражение> форма сигнала из набора / своя формула

Пины стенда

Пин Назначение
GP8..GP15 выход генератора (данные выровнены по старшему биту, MSB → GP15)
GP15 ШИМ в режиме прямоугольника (W Q)
GP16 синхроимпульс для осциллографа
GP26 (A0) вход измерения ADC

Внимание: на вход ADC подавать не более 3,3 В. Сигнал больше — только через делитель.


ЦАП на лестнице R-2R

При B > 1 генератор выводит код параллельно по нескольким пинам — это цифро-аналоговый преобразователь, который ты собираешь снаружи. Простейший вариант — лестница R-2R:

   ВЫХОД ◄──┬────R────┬────R────┬────R────┬────2R─────┐
            │         │         │         │           │
           2R        2R        2R        2R          GND
            │         │         │         │
           GP15      GP14      GP13      GP12
           (MSB)                         (LSB)

   R = 10 кОм, 2R = 20 кОм   (оба из ряда E24)
   пример для 4 бит; при 8 битах колонок восемь — GP15…GP8

Каждый узел цепочки соединён через 2R со своим битом; на землю идёт только один 2R — у младшего конца (это терминация лестницы, не бит). Выход берётся со стороны GP15 — иначе старшинство битов перевернётся.

Пин Вес Доля шкалы
GP15 (MSB) 128 50 %
GP14 64 25 %
GP13 32 12,5 %
GP12 16 6,25 %
GP11 8 3,125 %
GP10 4 1,56 %
GP9 2 0,78 %
GP8 (LSB) 1 0,39 %

Выход: U = U_пит · код / 256 (при питании 3,3 В шаг ≈ 13 мВ).

Про точность. Обычные резисторы 5 % дают надёжно 3–4 бита, 1 % — 5–6 бит, для всех восьми нужны 0,1 %. Сколько получилось у тебя — измеряешь в задании B4.

Собранную лестницу подключай к АЦП через буфер-повторитель на ОУ: выходное сопротивление лестницы ≈ R = 10 кОм, без буфера шкала просядет.

Подробности — в task.md, §2.6 и задание B4.

Порядок сдачи

  1. Собрать и откалибровать стенд (часть A).
  2. Снять характеристики трёх схем (часть B).
  3. Заполнить stub/03-blank-otchyota.md.
  4. Ответить на контрольные вопросы (в конце task.md).

Баллы по заданиям — в task.md, раздел «Оформление и оценивание». Зачёт при 6 и более баллах из 10.

S
Description
Лабораторная 5: интегратор/дифференциатор на ОУ, АЧХ/ФЧХ + Monte Carlo + DDS-генератор на RP2040 (Б1.В.06, 2026)
Readme
688 KiB
Languages
Python 79.4%
C++ 20.6%