ai: репозиторий переименован в eumirts5-dds; задание разделено на часть A (сборка DDS-стенда) и B (исследование интегратора, дифференциатора, RC-фильтра); stub синхронизирован с РПД (добавлен PIO-генератор); README с расшифровкой названия и картой пинов
This commit is contained in:
@@ -1,116 +1,130 @@
|
||||
# Лабораторная: интегратор и дифференциатор на ОУ (АЧХ/ФЧХ + Monte Carlo + автосвип)
|
||||
# ЭУМиРТС5-ДДС
|
||||
|
||||
Комплект к теме `topics/lab5-peredatochnaya-funkciya-na-ou.md`
|
||||
(«Электронные устройства мехатронных и робототехнических систем»,
|
||||
Б1.В.06, 5 семестр, 4 ч).
|
||||
Репозиторий студента для одной лабораторной работы.
|
||||
|
||||
> AI-сгенерировано (2026-10-26), требует проверки преподавателем
|
||||
> перед использованием на стенде.
|
||||
**Дисциплина:** Электронные устройства мехатронных и робототехнических
|
||||
систем (ЭУМиРТС), Б1.В.06
|
||||
**Специальность:** 15.03.06 «Мехатроника и робототехника»
|
||||
**Семестр:** 5 · **Объём:** 4 часа
|
||||
|
||||
## Контракт
|
||||
Название репозитория расшифровывается так:
|
||||
|
||||
Оформлено по контракту `labs/`:
|
||||
| Часть | Значение |
|
||||
|---|---|
|
||||
| `eumirts` | ЭУМиРТС — электронные устройства мехатронных и робототехнических систем |
|
||||
| `5` | пятый семестр |
|
||||
| `dds` | Direct Digital Synthesis — генератор на RP2040, который вы собираете |
|
||||
|
||||
> Черновик. Требует проверки преподавателем перед выдачей студентам.
|
||||
|
||||
---
|
||||
|
||||
## О чём работа
|
||||
|
||||
Работа состоит из двух частей:
|
||||
|
||||
**A. Стенд.** Вы собираете DDS-генератор на RP2040 (Raspberry Pi Pico) и
|
||||
скрипт автоматического снятия АЧХ. Готового лабораторного генератора со
|
||||
свипом не оказалось, поэтому измерительный прибор делается своими руками.
|
||||
|
||||
**B. Исследование.** Этим стендом вы снимаете характеристики трёх схем —
|
||||
интегратора на ОУ, дифференциатора на ОУ и пассивного RC-фильтра — и
|
||||
сравниваете эксперимент с расчётом по передаточным функциям.
|
||||
|
||||
Полное задание — в **[task.md](task.md)**.
|
||||
|
||||
---
|
||||
|
||||
## Что в репозитории
|
||||
|
||||
```
|
||||
labs/lab5-peredatochnaya-funkciya-na-ou/
|
||||
├── meta.yaml ← контракт
|
||||
├── task.md ← задание студенту
|
||||
├── method.md ← методичка преподавателю
|
||||
├── README.md ← этот файл
|
||||
├── print/ ← брошюры DOCX (rpd methodical)
|
||||
└── stub/
|
||||
├── 01-dds-generator-rp2040.ino ← генератор-свип (Arduino RP2040;
|
||||
│ оба ядра: earlephilhower и mbed)
|
||||
├── 01-dds-generator-rp2040-circuitpython.py
|
||||
│ ← то же на CircuitPython (code.py)
|
||||
├── 02-izmerenie-achh.py ← автоснятие АЧХ по Serial
|
||||
└── 03-blank-otchyota.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
|
||||
│ ├── 02-izmerenie-achh.py ← автоснятие АЧХ (на ПК)
|
||||
│ └── 03-blank-otchyota.md ← бланк отчёта
|
||||
└── print/ ← брошюра задания (DOCX)
|
||||
```
|
||||
|
||||
## Новое относительно `topics/lab5-peredatochnaya-funkciya-na-ou.md`
|
||||
### Какой вариант генератора выбрать
|
||||
|
||||
1. **Monte Carlo по допускам** (`.step param`) — новый для курса анализ
|
||||
в симуляторе: разброс K и f_c при ±5 % на компонентах, доля годных.
|
||||
2. **Генератор-свип на RP2040** — автономный генератор для натурной
|
||||
части: прямоугольник (ШИМ) и синус (DDS), логарифмический свип,
|
||||
синхроимпульс для осциллографа, измерение амплитуды на ADC0.
|
||||
3. **Хост-скрипт автоснятия АЧХ** — управление генератором по Serial,
|
||||
сбор точек, экспорт CSV, построение графика.
|
||||
4. **Явное разделение практики и лаборатории:** симуляция — на практическом
|
||||
занятии (2 ч), железо — на лабораторном (4 ч), отчёт — СРС.
|
||||
| Файл | Кому | Особенности |
|
||||
|---|---|---|
|
||||
| `01-...ip2040.ino` | есть Arduino IDE | программный DDS, работает на обоих ядрах |
|
||||
| `01-...-circuitpython.py` | есть CircuitPython | то же, но медленнее (интерпретатор) |
|
||||
| `04-dds-pio-rp2040.py` | **рекомендуется** | аппаратный PIO + DMA, точная частота, CPU свободен |
|
||||
|
||||
## Предупреждения по стенду
|
||||
Для варианта на PIO нужна библиотека `adafruit_pioasm` в папке `/lib`
|
||||
на плате.
|
||||
|
||||
- **ADC0 RP2040: 0…3,3 В.** Сигнал с выхода исследуемой цепи ≥ 3,3 В
|
||||
подавать **только через делитель** или пиковый детектор.
|
||||
- **Питание ОУ:** LM358 работает при однополярном +5…+12 В, TL081 —
|
||||
при ±12 В. Уточнить по фактическому стенду.
|
||||
- **Синус DDS:** качество зависит от внешнего ФНЧ после ШИМ (см. схему
|
||||
ниже). Без фильтра на выходе будет меандр переменной скважности,
|
||||
а не синус.
|
||||
---
|
||||
|
||||
## Схема DDS-генератора (внешняя обвязка)
|
||||
## Быстрый старт
|
||||
|
||||
ШИМ сам по себе даёт **меандр переменной скважности**, а не синус.
|
||||
Синус получается выделением огибающей фильтром. Поэтому на выходе
|
||||
GP15 нужен внешний **ФНЧ**:
|
||||
1. **Прошить генератор.** Файл переименовать в `code.py` (для CircuitPython)
|
||||
или открыть в Arduino IDE (для `.ino`).
|
||||
2. **Открыть консоль**, ввести `HELP` — увидеть список команд.
|
||||
3. **Собрать ФНЧ** на выходе генератора (схема в `HELP`):
|
||||
|
||||
```
|
||||
GP15 (ШИМ 62,5 кГц) ──[R1 1к]──┬──[R2 1к]──┬──────► OUT (вход DUT)
|
||||
│ │
|
||||
[C1 47н] [C2 47н]
|
||||
│ │
|
||||
GND GND
|
||||
GP15 ──[R1 1к]──┬──[R2 1к]──┬──► к схеме
|
||||
│ │
|
||||
[C1 47н] [C2 47н]
|
||||
│ │
|
||||
GND GND
|
||||
```
|
||||
|
||||
Пассивный ФНЧ 2-го порядка, **f_c ≈ 3,4 кГц**:
|
||||
4. **Проверить сигнал:** `W S` (синус), `F 1000`, посмотреть осциллографом
|
||||
(период ≈ 1 мс).
|
||||
5. **Калибровать частоту**, если нужно: ввести `CAL <измеренное_значение>`.
|
||||
6. **Снять АЧХ** скриптом `02-izmerenie-achh.py` (запускается на ПК).
|
||||
|
||||
- подавление несущей: `(62,5 / 3,4)² ≈ 338 ≈ 50 дБ` → пульсации ≈ 10 мВ;
|
||||
- рабочий диапазон генератора: **≈ 1 Гц … 1 кГц** (для звена
|
||||
с f_c = 16…34 Гц — с запасом).
|
||||
---
|
||||
|
||||
### Две оговорки
|
||||
## Основные команды генератора
|
||||
|
||||
1. **Согласование сопротивлений.** Выход фильтра ≈ 1 кОм, вход
|
||||
интегратора — R1 = 10 кОм → делитель 10/11, просадка ≈ 9 %.
|
||||
Если нужна точность — поставить буфер-повторитель на ОУ
|
||||
(**Sallen–Key**: тот же 2-й порядок + низкое выходное).
|
||||
| Команда | Что делает |
|
||||
|---|---|
|
||||
| `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 <выражение>` | форма сигнала из набора / своя формула |
|
||||
|
||||
2. **Постоянная составляющая.** При скважности 50 % среднее = `Uпит/2`
|
||||
= 1,65 В, синус смещён. Где смещение недопустимо — разделительный
|
||||
`C = 1 мкФ` последовательно + `R = 47 кОм` на землю (ФВЧ ≈ 3,4 Гц),
|
||||
либо уменьшить амплитуду командой `M`.
|
||||
---
|
||||
|
||||
### Варианты фильтра под другую несущую
|
||||
## Пины стенда
|
||||
|
||||
| SAMPLE_HZ | R | C | f_c |
|
||||
|---|---|---|---|
|
||||
| 62,5 кГц | 1 кОм | 47 нФ | 3,4 кГц |
|
||||
| 62,5 кГц | 2,2 кОм | 22 нФ | 3,3 кГц |
|
||||
| 31,25 кГц | 2,2 кОм | 47 нФ | 1,5 кГц |
|
||||
| Пин | Назначение |
|
||||
|---|---|
|
||||
| GP8..GP15 | выход генератора (данные выровнены по старшему биту, MSB → GP15) |
|
||||
| GP15 | ШИМ в режиме прямоугольника (`W Q`) |
|
||||
| GP16 | синхроимпульс для осциллографа |
|
||||
| GP26 (A0) | вход измерения ADC |
|
||||
|
||||
## Как использовать
|
||||
**Внимание:** на вход ADC подавать не более **3,3 В**. Сигнал больше —
|
||||
только через делитель.
|
||||
|
||||
1. `task.md` + `stub/03-blank-otchyota.md` — студенту.
|
||||
2. `stub/01-dds-generator-rp2040.ino` — прошить в RP2040 заранее
|
||||
(или дать студенту в задании 4); альтернатива — `...-circuitpython.py`
|
||||
на Pico с прошивкой CircuitPython (как `code.py`).
|
||||
3. `stub/02-izmerenie-achh.py` — запускается на ПК студента (нужен pyserial).
|
||||
4. `method.md` — только преподавателю.
|
||||
5. Брошюры: `uv run rpd methodical lab5-peredatochnaya-funkciya-na-ou`.
|
||||
---
|
||||
|
||||
## Связи
|
||||
## Порядок сдачи
|
||||
|
||||
- **Практика** `pr5-raschet-analogovyh-ustrojstv` — расчётная часть
|
||||
(K, R1, R2, фильтры) выполняется там.
|
||||
- **Лекция** `le5-metody-modelirovaniya` — типы анализа; Monte Carlo
|
||||
и `.step` — прямое применение.
|
||||
- **Лекция** `le5-proektirovanie-analogovyh-ustrojstv` — топология ОУ.
|
||||
- **ТАУ** (`b1-o-23`) — передаточные функции и типовые звенья идут
|
||||
параллельно в 5 семестре; эта работа даёт им физическую реализацию.
|
||||
1. Собрать и откалибровать стенд (часть A).
|
||||
2. Снять характеристики трёх схем (часть B).
|
||||
3. Заполнить `stub/03-blank-otchyota.md`.
|
||||
4. Ответить на контрольные вопросы (в конце `task.md`).
|
||||
|
||||
## Статус
|
||||
|
||||
Черновик (draft). Тема `lab5-peredatochnaya-funkciya-na-ou` существует
|
||||
в `topics/`; комплект в `labs/` — подготовлен для интеграции после
|
||||
проверки преподавателем и согласования сквозной работы по мехатронике.
|
||||
Баллы по заданиям — в `task.md`, раздел «Оформление и оценивание».
|
||||
Зачёт при **6 и более** баллах из 10.
|
||||
|
||||
Reference in New Issue
Block a user