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
+156 -11
View File
@@ -103,6 +103,80 @@ K(f) = 1 / √(1 + (f/f_c)²), f_c = 1/(2π·R·C)
наклон за 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. Сборка и настройка стенда
@@ -224,9 +298,61 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
**Контрольный вопрос:** почему реальная АЧХ за `f_c` уходит круче
−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 опыт | Расхождение | Наклон расчёт | Наклон опыт |
|---|---|---|---|---|---|
@@ -234,11 +360,14 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
| Дифференциатор | | | | +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` после калибровки).
3. Осциллограммы: синус с генератора, пила интегратора, импульсы
дифференциатора.
дифференциатора, **ступенчатый синус с выхода ЦАП**.
4. Три графика АЧХ с наложенными расчётными кривыми.
5. Итоговую таблицу из задания B4.
6. Выводы по расхождениям.
5. **Таблицу кодов ЦАП** (задание B4) с расчётом и измерением.
6. Итоговую таблицу из задания B5.
7. Выводы по расхождениям и о реальной разрядности ЦАП.
| Задание | Баллы |
|---|---|
@@ -262,10 +393,17 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
| B1. Интегратор | 2,0 |
| B2. Дифференциатор | 2,0 |
| B3. RC-фильтр | 1,0 |
| B4. Сводка и выводы | 1,0 |
| **Итого** | **10** |
| B4. ЦАП на R-2R | 2,0 |
| B5. Сводка и выводы | 1,0 |
| **Итого** | **12** |
Зачёт — при **6 и более** баллах.
Зачёт — при **7 и более** баллах (из 12).
> Почему заданий стало больше. Сборка ЦАП — это отдельная практическая
> работа, которая выросла из «многобитного вывода»: студент своими руками
> делает преобразователь, без которого работа генератора остаётся
> непонятной. Если времени мало — задание B4 можно вынести в СРС
> (собрать дома и принести измерения).
---
@@ -284,7 +422,14 @@ python 02-izmerenie-achh.py --port /dev/ttyACM0 \
резистора утечки её нельзя реализовать?
6. Как по АЧХ отличить идеальный интегратор от апериодического звена?
7. Почему наклон АЧХ звена первого порядка равен −20 дБ/дек?
8. Как допуски R и C влияют на `f_c` и что даёт анализ Monte Carlo?
8. Как допуски R и C влияют на `f_c`?
**По ЦАП (задание B4):**
9. Почему в лестнице R-2R достаточно двух номиналов резисторов?
10. Как связан код на пинах с выходным напряжением ЦАП?
11. Почему самодельный ЦАП на резисторах 5 % не даёт все 8 бит?
12. Зачем между лестницей и АЦП ставят буфер на ОУ?
---