Урок 2. Два табло
Чтобы понять, хорошо ли работает цех, его надо мерить. В этом уроке на площадке появятся два табло: слева — сколько деталей выпущено в линию, справа — сколько сделано (дошло до стока). Каждое табло считает пара микросхем CD4029, а кнопка R обнуляет оба.
2.1. Идея: что считать
Два числа описывают цех целиком:
- выпущено — сколько деталей вошло в линию;
- сделано — сколько вышло готовыми.
Их разница — незавершёнка: детали, которые сейчас внутри цеха — на лентах, в буферах станков и в работе. Пока линия здорова, незавершёнка держится на одном уровне: сколько вошло, столько и вышло.
2.2. Идея: откуда берутся импульсы
«Выпущено» считает сам источник: на каждую деталь, которая вышла из него, нога OUT даёт короткий импульс. Почему не луч у источника? Когда первый станок завален, детали стоят на первой ленте вплотную друг к другу, и луч между ними не открывается — две детали слились бы в одну.
«Сделано» считает ИК-пара поперёк последней ленты — так считают детали и на настоящих конвейерах. Излучатель светит всегда (In = VCC), приёмник даёт 1, пока луч цел. Деталь въехала в луч — 0, проехала — снова 1. Этот фронт 0 → 1 и есть «+1». Последняя лента едет быстро (160 точек в секунду), поэтому даже две детали подряд идут по ней с зазором, и луч успевает открыться между ними.
2.3. Идея: CD4029 — счётчик на 4 бита
CD4029 по фронту ноги CLOCK прибавляет 1 (или вычитает). Его ноги:
| Нога | Что делает | У нас |
|---|---|---|
| CLOCK | фронт 0 → 1 — следующий счёт | OUTR / OUTM |
| UD | 1 — вверх, 0 — вниз | VCC (вверх) |
| BD | 1 — двоичный (0…15), 0 — десятичный (0…9) | VCC (двоичный) |
| PE | 1 — записать J4…J1 сразу, без такта | RST (кнопка R) |
| J4…J1 | что записать по PE | GND (0000) |
| CI | 0 — разрешено считать | см. ниже |
| CO | 0 — «я на 15 и сейчас перейду через 0» | см. ниже |
| Q4…Q1 | счёт: Q1 — младший бит | R3…R0 / M3…M0 |
Кнопка R подаёт PE = 1 на все четыре счётчика: в каждый записывается J = 0000, табло встают на 0.
2.4. Идея: два CD4029 — восемь бит
Один CD4029 досчитает только до 15, а в смене будет 128 деталей. Ставим два: младший считает Q1…Q4, старший — следующие четыре бита. Старший должен прибавлять 1 только тогда, когда младший переходит с 15 на 0. Ровно это и сообщает нога CO младшего: она 0, пока младший стоит на 15. Её и подаём на CI старшего:
CIмладшего = 0 (GND) — младший считает всегда;CIстаршего =COмладшего — старший считает только на переходе 15 → 0.
| Сколько деталей | Старший Q4…Q1 | Младший Q4…Q1 | CO мл. |
|---|---|---|---|
| 14 | 0000 | 1110 | 1 |
| 15 | 0000 | 1111 | 0 |
| 16 | 0001 | 0000 | 1 |
| 17 | 0001 | 0001 | 1 |
Оба CD4029 тактуются одним сигналом и переключаются одновременно — такой счётчик называют синхронным. Восемь бит — числа от 0 до 255.
2.5. Идея: табло читает шину
Выходы счётчиков — метки R0…R7 («выпущено») и M0…M7 («сделано»). Табло проводов не требует: в его настройке указана шина — R или M, и оно само читает метки с этим именем и номерами 0…7 и показывает число в десятичном виде.
2.6. Сборка
- Импортируй микросхемы набора: файл
dice-chips.json(кнопка импорта в библиотеке). Появится папка «Dice»: CD4029, CD4069, CD4081. - Вставь урок через
Cmd+Iповерх урока 1 (текст — в конце урока). Появятся: - на площадке — ИК-пара поперёк последней ленты, кнопка R, табло «выпущено» (шина R) и «сделано» (шина M); - снаружи — четыре CD4029; - ногаOUTисточника получит меткуOUTR.
2.7. Проверка
- Включи питание и нажми R — оба табло 0.
- Левое табло растёт раз в секунду, правое начинает расти примерно через 13 секунд — это путь детали по линии.
- Дальше оба растут одинаково, правое отстаёт примерно на 13.
| Что смотришь | Что видно |
|---|---|
| табло слева (R) | = числу на источнике |
| табло справа (M) | = числу в стоке или на 1 больше |
| разница табло | около 13 и не меняется |
Правое табло может быть на 1 больше стока: деталь уже проехала луч, но ещё не доехала. Если левое табло меньше числа на источнике, значит, R нажали, когда первые детали уже вышли. В уроке 3 появится ПУСК, и порядок станет правильным: питание → R → ПУСК.
Вставка урока 2 (Cmd+I)
# Lesson 2 — two counters. "Released": the source gives a short OUT pulse for every part it lets out.# "Made": an IR pair across the last belt — a part passes, the beam is whole again (0 -> 1), the counter adds one.# Each counter is two CD4029 in binary mode (BD = 1): 8 bits, 0...255. R — reset (PE loads J = 0000).# Insert on top of lesson 1 (needs the chip file dice-chips.json).reconnect(src.OUT = OUTR)irtx txM{channel=1, ang=90}(In=VCC)at(txM, B, 710, 120)irrx rxM{channel=1, ang=90}(Out=OUTM)at(rxM, B, 690, 260)button rst{label="R"}(RST)at(rst, B, 140, 290)display shR{busSource=R}at(shR, B, 300, 290)display shM{busSource=M}at(shM, B, 460, 290)"TI CD4029B"(CLOCK=OUTR, UD=VCC, BD=VCC, PE=RST, CI=GND, J1=GND, J2=GND, J3=GND, J4=GND, Q1=R0, Q2=R1, Q3=R2, Q4=R3, CO=COR)"TI CD4029B"(CLOCK=OUTR, UD=VCC, BD=VCC, PE=RST, CI=COR, J1=GND, J2=GND, J3=GND, J4=GND, Q1=R4, Q2=R5, Q3=R6, Q4=R7)"TI CD4029B"(CLOCK=OUTM, UD=VCC, BD=VCC, PE=RST, CI=GND, J1=GND, J2=GND, J3=GND, J4=GND, Q1=M0, Q2=M1, Q3=M2, Q4=M3, CO=COM)"TI CD4029B"(CLOCK=OUTM, UD=VCC, BD=VCC, PE=RST, CI=COM, J1=GND, J2=GND, J3=GND, J4=GND, Q1=M4, Q2=M5, Q3=M6, Q4=M7)Не получается? Что-то не работает →