ai: задание дополнено ЦАП на лестнице R-2R (схема, веса пинов, таблица кодов, оценка реальной разрядности); задание B4, баллы 10->12

This commit is contained in:
mss
2026-10-27 20:54:34 +04:00
parent 7860b44290
commit ebf3ac44f0
3 changed files with 198 additions and 11 deletions
+42
View File
@@ -119,6 +119,48 @@ GP15 ──[R1 1к]──┬──[R2 1к]──┬──► к схеме
--- ---
## ЦАП на лестнице R-2R
При `B > 1` генератор выводит код **параллельно по нескольким пинам** —
это цифро-аналоговый преобразователь, который ты собираешь снаружи.
Простейший вариант — лестница R-2R:
```
GP15 ──[R]──┬──[R]──┬──[R]──┬─ ... ─┬──[R]──┬──► выход
│ │ │ │ │
[2R] [2R] [2R] [2R] [2R]
│ │ │ │ │
GND GND GND GND GND
R = 10 кОм, 2R = 20 кОм (оба из ряда E24)
8 бит: 7 резисторов R + 9 резисторов 2R
```
Каждый узел делит напряжение ровно вдвое, поэтому вклад пина падает
вдвое от старшего к младшему:
| Пин | Вес | Доля шкалы |
|---|---|---|
| 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). 1. Собрать и откалибровать стенд (часть A).
+156 -11
View File
@@ -103,6 +103,80 @@ K(f) = 1 / √(1 + (f/f_c)²), f_c = 1/(2π·R·C)
наклон за f_c: −20 дБ/дек наклон за f_c: −20 дБ/дек
``` ```
### 2.6. Многобитный вывод — это и есть ЦАП (лестница R-2R)
Пока `B = 1`, генератор выдаёт один бит: либо 0, либо 1. Дробную точность
даёт дельта-сигма (усреднение во времени). Но при `B > 1` вывод идёт
**параллельно по нескольким пинам**, и это уже настоящий цифро-аналоговый
преобразователь — только его надо собрать снаружи.
Простейший вариант — **лестница R-2R**:
```
R R R R
GP15(MSB) ──┴──┬──2R──┴──┬──2R──┴── ... ──┬──► выход
│ │ │
2R 2R 2R
│ │ │
GND GND GND
(GP15 — старший бит, дальше по убыванию до GP8)
```
Почему работает: каждый узел лестницы делит напряжение **ровно вдвое**,
поэтому вклад пина в выход падает вдвое от старшего к младшему:
| Пин | Вес в единицах младшего бита | Доля шкалы |
|---|---|---|
| GP15 (MSB) | 128 | 50 % |
| GP14 | 64 | 25 % |
| GP13 | 32 | 12,5 % |
| GP12 | 16 | 6,25 % |
| GP11 | 8 | 3,125 % |
| GP10 | 4 | 1,5625 % |
| GP9 | 2 | 0,781 % |
| GP8 (LSB) | 1 | 0,391 % |
То есть код `1000 0000` (единица только на GP15) даёт половину шкалы,
`0100 0000` — четверть, и так далее. Отсюда `U_вых = U_пит · код / 256`.
**Что важно для макета:**
- **Номиналы.** Нужны резисторы R и 2R, причём в 2 раза точно. Удобно
взять **R = 10 кОм, 2R = 20 кОм** (оба есть в ряду E24). Понадобится
7 резисторов R и 9 резисторов 2R для восьми бит.
- **Точность.** Чтобы не терять биты, допуск резисторов должен быть
меньше половины младшего бита:
| Биты | Шаг шкалы | Нужен допуск лучше |
|---|---|---|
| 3 | 12,5 % | 6 % |
| 4 | 6,25 % | 3 % |
| 5 | 3,1 % | 1,5 % |
| 6 | 1,56 % | 0,8 % |
| 8 | 0,39 % | 0,2 % |
Обычные резисторы 5 % дают надёжно **3–4 бита**, 1 % — **5–6 бит**.
Для восьми бит нужны 0,1 % или калибровка каждого уровня. Это хороший
повод обсудить со студентами, почему настоящие ЦАП стоят дорого.
- **Выходное сопротивление** лестницы ≈ R. При R = 10 кОм это высокая
нагрузка для входа АЦП и заметная погрешность при подключении
нагрузки. Ставят **буфер на ОУ** (повторитель) между лестницей и АЦП.
Он же убирает влияние сопротивления нагрузки на шкалу.
- **Быстродействие.** Паразитная ёмкость макета (~10–20 пФ) вместе с
R = 10 кОм даёт срез в сотни кГц. Для генератора до ~30 кГц этого
хватает; на высоких частотах берут R = 1 кОм.
- **Разрядность пинов.** Если `B < 8`, старшие биты всё равно на GP15 —
то есть при `B = 4` работают GP15…GP12, и они занимают **старшие**
входы лестницы. Выход при этом использует всю шкалу (выравнивание
по старшему биту, см. §2.2).
> **Ожидаемый результат.** При питании 3,3 В и 8 битах шаг ≈ 13 мВ.
> Студент может ввести код прямо в отчёт и сравнить с расчётным
> напряжением — это и есть «заглянуть внутрь ЦАП».
--- ---
## 3. Часть A. Сборка и настройка стенда ## 3. Часть A. Сборка и настройка стенда
@@ -224,9 +298,61 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
**Контрольный вопрос:** почему реальная АЧХ за `f_c` уходит круче **Контрольный вопрос:** почему реальная АЧХ за `f_c` уходит круче
−20 дБ/дек? (подсказка: паразитные параметры, вход ADC) −20 дБ/дек? (подсказка: паразитные параметры, вход ADC)
### Задание B4 (0,5 ч). Сравнение и отчёт ### Задание B4 (1 ч). Собрать ЦАП на лестнице R-2R
Свести результаты трёх схем в таблицу: Это самая «железная» часть: вы собираете настоящий цифро-аналоговый
преобразователь и убеждаетесь, что многобитный вывод — это он и есть.
**Схема** (8 бит, MSB на GP15; при `B=4` работают GP15…GP12):
```
GP15 ──[R]──┬──[R]──┬──[R]──┬─ ... ─┬──[R]──┬──► выход (в АЦП)
│ │ │ │ │
[2R] [2R] [2R] [2R] [2R]
│ │ │ │ │
GND GND GND GND GND
R = 10 кОм, 2R = 20 кОм (оба из ряда E24)
```
**Порядок:**
1. Собрать лестницу на макетной плате. При 8 битах нужно
**7 резисторов R и 9 резисторов 2R**.
2. Поставить **буфер-повторитель на ОУ** между выходом лестницы и АЦП
(иначе выходное сопротивление ≈ R исказит измерения).
3. Проверить таблицу кодов. Подать на генератор прямоугольник с малой
скважностью или использовать режим `D`, чтобы задавать отдельные коды,
и измерить выход мультиметром:
| Код | Ожидаемое U_вых (при 3,3 В) | Измерено |
|---|---|---|
| `0000 0001` (GP8) | 13 мВ | |
| `0000 0010` (GP9) | 26 мВ | |
| `0000 0100` (GP10) | 52 мВ | |
| `1000 0000` (GP15) | 1,65 В | |
| `1111 1111` | 3,28 В | |
4. **Оценить реальную разрядность.** Сравнить шаг с разбросом: если
соседние коды неразличимы, бит потерян. Записать, сколько бит реально
работает на ваших резисторах.
5. **Проверить форму сигнала.** Вернуть `B 8`, `W S`, подать синус и
посмотреть выход лестницы осциллографом: сигнал будет ступенчатым —
видно квантование по уровням. Это и есть работа ЦАП.
**Контрольные вопросы:**
- Почему в лестнице R-2R нужны ровно два номинала, а не восемь разных
сопротивлений (по одному на каждый бит)?
- Что произойдёт с точностью, если один из резисторов 2R окажется
20,5 кОм вместо 20 кОм?
- Почему выходное сопротивление лестницы равно R и как это влияет на
измерения через АЦП?
### Задание B5 (0,5 ч). Сравнение и отчёт
Свести результаты четырёх схем в таблицу:
| Схема | f_c расчёт | f_c опыт | Расхождение | Наклон расчёт | Наклон опыт | | Схема | f_c расчёт | f_c опыт | Расхождение | Наклон расчёт | Наклон опыт |
|---|---|---|---|---|---| |---|---|---|---|---|---|
@@ -234,11 +360,14 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
| Дифференциатор | | | | +20 дБ/дек | | | Дифференциатор | | | | +20 дБ/дек | |
| RC-фильтр | | | | −20 дБ/дек | | | RC-фильтр | | | | −20 дБ/дек | |
Отдельно — таблица кодов ЦАП (задание B4) и вывод о реальной разрядности.
Сделать выводы: Сделать выводы:
- какой разброс дали допуски компонентов; - какой разброс дали допуски компонентов;
- где опыт расходится с расчётом сильнее всего и почему; - где опыт расходится с расчётом сильнее всего и почему;
- какую роль сыграла калибровка генератора (задание A2). - какую роль сыграла калибровка генератора (задание A2);
- сколько бит реально дал самодельный ЦАП и почему не все восемь.
--- ---
@@ -246,13 +375,15 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
Отчёт содержит: Отчёт содержит:
1. Схемы: ФНЧ стенда, интегратор, дифференциатор, RC-фильтр. 1. Схемы: ФНЧ стенда, интегратор, дифференциатор, RC-фильтр,
**лестница R-2R**.
2. Настройки генератора из `I` (включая `CPC` после калибровки). 2. Настройки генератора из `I` (включая `CPC` после калибровки).
3. Осциллограммы: синус с генератора, пила интегратора, импульсы 3. Осциллограммы: синус с генератора, пила интегратора, импульсы
дифференциатора. дифференциатора, **ступенчатый синус с выхода ЦАП**.
4. Три графика АЧХ с наложенными расчётными кривыми. 4. Три графика АЧХ с наложенными расчётными кривыми.
5. Итоговую таблицу из задания B4. 5. **Таблицу кодов ЦАП** (задание B4) с расчётом и измерением.
6. Выводы по расхождениям. 6. Итоговую таблицу из задания B5.
7. Выводы по расхождениям и о реальной разрядности ЦАП.
| Задание | Баллы | | Задание | Баллы |
|---|---| |---|---|
@@ -262,10 +393,17 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
| B1. Интегратор | 2,0 | | B1. Интегратор | 2,0 |
| B2. Дифференциатор | 2,0 | | B2. Дифференциатор | 2,0 |
| B3. RC-фильтр | 1,0 | | B3. RC-фильтр | 1,0 |
| B4. Сводка и выводы | 1,0 | | B4. ЦАП на R-2R | 2,0 |
| **Итого** | **10** | | B5. Сводка и выводы | 1,0 |
| **Итого** | **12** |
Зачёт — при **6 и более** баллах. Зачёт — при **7 и более** баллах (из 12).
> Почему заданий стало больше. Сборка ЦАП — это отдельная практическая
> работа, которая выросла из «многобитного вывода»: студент своими руками
> делает преобразователь, без которого работа генератора остаётся
> непонятной. Если времени мало — задание B4 можно вынести в СРС
> (собрать дома и принести измерения).
--- ---
@@ -284,7 +422,14 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
резистора утечки её нельзя реализовать? резистора утечки её нельзя реализовать?
6. Как по АЧХ отличить идеальный интегратор от апериодического звена? 6. Как по АЧХ отличить идеальный интегратор от апериодического звена?
7. Почему наклон АЧХ звена первого порядка равен −20 дБ/дек? 7. Почему наклон АЧХ звена первого порядка равен −20 дБ/дек?
8. Как допуски R и C влияют на `f_c` и что даёт анализ Monte Carlo? 8. Как допуски R и C влияют на `f_c`?
**По ЦАП (задание B4):**
9. Почему в лестнице R-2R достаточно двух номиналов резисторов?
10. Как связан код на пинах с выходным напряжением ЦАП?
11. Почему самодельный ЦАП на резисторах 5 % не даёт все 8 бит?
12. Зачем между лестницей и АЦП ставят буфер на ОУ?
--- ---