Урок 1. Плоттер и пульт

В картинках

После этого урока рядом с Apple ][ стоит плоттер: две оси с шаговыми моторами, головка с чёрным пером и лист бумаги. Компьютер пока не нужен — плоттером управляет пульт, как у настоящего: стрелки двигают перо, кнопка PEN UP/DOWN опускает и поднимает его, красная лампа ERROR горит, если каретка упёрлась.


1.1. Идея: две оси — любая точка листа

Перо плоттера ходит по двум осям. Ось X лежит вдоль листа, на её каретке едет ось Y — поперёк. Каретка Y везёт головку с пером. Сдвинь X на 120 шагов и Y на 60 — перо в точке (120, 60). Так рисуют все плоттеры и станки с ЧПУ.

Каждую ось двигает шаговый мотор. У оси две входные ноги и три выходные:

  • STEP — шаг: от 0 к 1 (фронт) каретка сдвигается ровно на один шаг;
  • DIR — куда: 1 — от мотора (вправо, вниз), 0 — к мотору;
  • L0 — каретка у мотора, L1 — у торца (концевики);
  • STALL — шаг не получился: каретка упёрлась.
ось X →ось Y ↓ (на каретке X)L0L1CKLRIGHTLXSLXS = CKL И (LEFT ИЛИ RIGHT)DIR = RIGHT: вправо — 1, влево — 0каждый фронт — один шаг каретки
Слева — плоттер сверху: ось X вдоль листа, ось Y на её каретке, головка с пером на каретке Y. Справа — шаги: такт 60 Гц проходит к мотору X, только пока держишь стрелку.

1.2. Идея: стрелка — это шаги от генератора

Мотор шагает только по фронту. Пока держишь стрелку, нужны фронты один за другим — их даёт генератор 60 Гц (CKL): 60 шагов в секунду. Что хотим для оси X:

LEFT, RIGHTSTEP оси XDIR оси X
обе отпущены0 — стоитне важно
RIGHTтакт CKL1 — вправо
LEFTтакт CKL0 — влево

Отсюда формулы:

  • «нажата стрелка по X»: LR = LEFT ИЛИ RIGHT — вентиль ИЛИ (CD4071);
  • шаги: LXS = CKL И LR — вентиль И (CD4081): такт проходит, только пока стрелка нажата;
  • направление: DIR = RIGHT — отдельного вентиля не нужно: нажата RIGHT — 1, нажата LEFT — 0.

По Y — так же: UD = UP ИЛИ DOWN, LYS = CKL И UD, DIR = DOWN.

1.3. Идея: PEN UP/DOWN — одна кнопка, два положения

Кнопка даёт 1, только пока её держишь, а перу надо помнить: опущено или поднято. Помнит триггер. У D-триггера CD4013 по фронту на CL выход Q становится равным D. Заведём на D его же инверсный выход QN:

Было QD = QNПосле нажатия Q
0 (поднято)11 (опущено)
1 (опущено)00 (поднято)

Каждое нажатие переворачивает Q — это триггер-переключатель (T-триггер). Его выход LPEN — нога DOWN пера. R1 = RST: при сбросе машины перо поднимается.

1.4. Идея: ERROR

Каретка дошла до конца рельса, а стрелку держат — мотор шагает, каретка стоит, ось выдаёт STALL = 1. Лампа ERROR должна гореть, если упёрлась любая из осей: ERROR = XSTALL ИЛИ YSTALL — ещё один вентиль ИЛИ той же CD4071.

1.5. Сборка

Открой машину Apple ][ (кнопка DEMO) — плоттер ставим рядом с ней, на тот же холст: в уроке 3 он подключится к ней платой. Питание (VCC, GND) и сброс RST — уже есть у машины. Метка на ноге — двойной клик по ноге, ввести имя.

Шаг 1. Микросхемы в библиотеку

Если в библиотеке ещё нет папки Plotter: кнопка импорта в библиотеке → файл набора plotter-chips.json. Встанет папка с микросхемами на весь набор (TI CD4013B, TI CD4017B, TI CD4019B, TI CD4069UB, TI CD4070B, TI CD4071B, TI CD4072B, TI CD4081B).

Шаг 2. Механика

Детали — из кнопки «Механика». Ось X поставь справа от машины. Ось Y поверни на 90° и тяни за оранжевую гайку к каретке оси X — защёлкнется. Поворотный стол (Turntable) — так же на каретку оси Y, перо — в отверстие d0 стола. Бумагу подвинь так, чтобы перо стояло у её левого верхнего угла.

ДетальНога / действиеМетка / куда
Linear axis — ось Xдлина (ручка)
STEP
DIR
L0
L1
STALL
место
400
LXS
RIGHT
XL0
XL1
XSTALL
чёрное перо — у левого верхнего угла бумаги, в 30 точках от краёв
Linear axis — ось Yдлина (ручка)
поворот
STEP
DIR
L0
L1
STALL
посадить
300
на 90° — каретка едет вниз
LYS
DOWN
YL0
YL1
YSTALL
на car (каретка оси X)
Turntable — головка—
посадить
ноги — в уроке 2
на car (каретка оси Y)
Pen — чёрноецвет (Alt/⌘+щелчок)
DOWN
посадить
чёрное
LPEN
на d0 (отверстие d0 стола)
Paper (бумага)размер (ручка в углу)
место
460 × 360
справа от машины, где свободно

Шаг 3. Пульт

Clock — щелчками по корпусу до 60Hz. Надпись на кнопке — двойной клик по ней.

ДетальНога / действиеМетка / куда
Clock 60HzвыходCKL
Button (кнопка) «LEFT»выходLEFT
Button (кнопка) «RIGHT»выходRIGHT
Button (кнопка) «UP»выходUP
Button (кнопка) «DOWN»выходDOWN
Button (кнопка) «PEN UP/DOWN»выходPENB

Шаг 4. Микросхемы

ДетальНога / действиеМетка / куда
TI CD4071BA
B
J
C
D
K
E
F
L
G
H
LEFT
RIGHT
LR
UP
DOWN
UD
XSTALL
YSTALL
ERROR
GND
GND
TI CD4081BA
B
C
D
E
F
L
G
H
M
GND
GND
GND
GND
CKL
LR
LXS
CKL
UD
LYS
TI CD4013BS1
R1
D1
CL1
Q1
QN1
S2
R2
D2
CL2
GND
RST
NLPEN
PENB
LPEN
NLPEN
GND
GND
GND
GND

Не подключать: M у CD4071B; J, K у CD4081B; Q2, QN2 у CD4013B.

Шаг 5. Лампы

Цвет лампы — Alt/⌘+щелчок по ней.

ДетальНога / действиеМетка / куда
LED, зелёнаявходVCC
LED, краснаявходERROR

1.6. Проверка

  1. Режим Turbo, включи питание. Машина загружается, как обычно; плоттер работает рядом с ней. Горит зелёная POWER.
  2. Держи RIGHT — каретка X едет вправо, 60 шагов в секунду; LEFT — обратно. DOWN и UP — каретка Y.
  3. PEN UP/DOWN — перо опускается; стрелками веди его по бумаге — рисует чёрным. Ещё раз — поднимается.
  4. Доведи каретку до упора и держи стрелку — горит красная ERROR: мотор шагает, а каретка стоит. Лампа горит, пока не отъедешь стрелкой в другую сторону.
НажатаПлоттер
RIGHT / LEFTкаретка X вправо / влево, 60 шаг/с
DOWN / UPкаретка Y вниз / вверх
PEN UP/DOWNперо опускается / поднимается
стрелка у упорагорит ERROR

Вставка урока 1 (Cmd+I)

Вставлять в машину Apple ][ (кнопка DEMO). Ставит всё: механику, бумагу, пульт, микросхемы и лампы.

# Урок 1 — плоттер и пульт: оси X и Y, головка с чёрным пером, стрелки и PEN UP/DOWN (без компьютера).# Вставка: Cmd+I в машину Apple ][ (кнопка DEMO). Питание VCC/GND и сброс RST — машины.# ---------- механика: ось X, ось Y на её каретке, головка на каретке Y, чёрное перо, бумага ----------maxis ax{len=400}(STEP=LXS, DIR=RIGHT, L0=XL0, L1=XL1, STALL=XSTALL)maxis ay{len=300, ang=90}(STEP=LYS, DIR=DOWN, L0=YL0, L1=YL1, STALL=YSTALL)mount(ay, ax.car)mtable ttmount(tt, ay.car)mpen k0{color=black}(DOWN=LPEN)mount(k0, tt.d0)mpaper p{w=460, h=360}at(p, 0, 0)at(ax, p, -41, -138)# ---------- пульт: генератор шагов, стрелки, PEN UP/DOWN ----------clock{rt=60}(CKL)button{label="LEFT"}(LEFT)button{label="RIGHT"}(RIGHT)button{label="UP"}(UP)button{label="DOWN"}(DOWN)button{label="PEN UP/DOWN"}(PENB)# ---------- CD4071: нажата стрелка по X, по Y; ERROR — каретка упёрлась ----------"TI CD4071B"(A=LEFT, B=RIGHT, J=LR, C=UP, D=DOWN, K=UD, E=XSTALL, F=YSTALL, L=ERROR, G=GND, H=GND)# ---------- CD4081: шаги — такт 60 Гц, пока нажата стрелка ----------"TI CD4081B"(A=GND, B=GND, C=GND, D=GND, E=CKL, F=LR, L=LXS, G=CKL, H=UD, M=LYS)# ---------- CD4013: PEN UP/DOWN — триггер-переключатель ----------"TI CD4013B"(S1=GND, R1=RST, D1=NLPEN, CL1=PENB, Q1=LPEN, QN1=NLPEN, S2=GND, R2=GND, D2=GND, CL2=GND)# ---------- лампы POWER и ERROR ----------led{color=green}(VCC)led{color=red}(ERROR)

Не получается? Что-то не работает →