4.4. ЦИФРО-АНАЛОГОВЫЙ
ПРЕОБРАЗОВАТЕЛЬ
Второй основной платой описанной в этой книге является ЦАП с интегральным
портом (таким же как и уже описанный), входным и выходным усилителями. Вход-
ной усилитель расположенный в этой плате (один из 4-х операционных усилителей
микросхемы 3403) используется для усиления сигналов, поступающих на вход АЦП
описанного в главе 3. Два свободных усилителя этой микросхемы при необходимости
можно использовать. Схема их включения аналогична усилителю с выводами 1,2,3.
Схема ЦАП приведена на рис 4.2. Плата ЦАП рассчитана на подключение к
разъему на плате АЦП. На этом разъеме имеются все необходимые сигналы. Такая
конструкция платы определяется тем, что во многих применениях ЦАП и АЦП ис-
пользуются совместно. Схема ЦАП не использует источников питания СПЕКТРУМА.
Для питания ЦАП используется внешний источник +5В,-5В,+10В.
Я тщетно пытался получить эти питающие напряжения от СПЕКТРУМА. Для
питания ЦАП можно использовать простой источник питания содержащий минимум
элементов и обеспечивающий требуемые напряжения.
Для построения ЦАП выбрана дешевая микросхема типа DAC0801. Выход этой
микросхемы построен таким образом, что входы операционного усилителя можно
подключать к нему непосредственно. На выходе операционного усилителя будет
выходной аналоговый сигнал (этот сигнал измеряется относительно 0В). В этой схеме
используется выходной порт такой-же как и в предыдущей схеме. Схема адресации
расположена на плате АЦП за исключением одного инвертора на микросхеме 74LS04
размещенной на плате ЦАП.
Схема ЦАП преобразует ^разрядные двоичные слова в соответствующее положе-
ние управляемого резистивного делителя. Все эти положения нумеруются от 0 до 255.
Тактирования ЦАП не требуется^ f^i Преобразование выполняется непосредственно
и это делает схему относительно простой^"
4,5. КОНСТРУКЦИЯ ЦАП
ЦАП можно сконструировать и на специально разработанной печатной плате и на
макетной плате. Предпочтение отдано монтажу изолированным проводом, т.к. одно-
именные выводы микросхем (D1-D8) 74LS374 и DAC0801, которые должны быть
соединены между собой, имеют разные номера. Эта сложность может быть преодоле-
на и без применения изолированных проводов, однако этого нужна плата в 4 раза
больше. Можно, конечно, сделать и такую плату.
Монтаж платы выполняется в^ычн^последовательности: Г ш.
1. Монтажная плата: обрезается ito размеру« разрезаются лишние перемычки.
2. УстаШшливаютсяпанельквдля микросхем.
3. Выполняются соединения изолированным проводом 0,6 мм;
4. Устанавливают разъемы и другие элементы.
5. Собирается источник питания и подключается к плате.
6. В панельки вставляются микросхемы.
4.6. ПРОВЕРКА ЦАП
Выполнить обычную визуальную проверку монтажа. Не включая СПЕКТРУМ
вставить в разъем АЦП и ЦАП. Не включая питания ЦАП включить компьютер. Если
СПЕКТРУМ стартует нормально, то можно продолжить проверку.
Проверить источник питания, установить напряжения +5 В, -5 В, +10 В. Вставить
все платы в разъемы и включить питание. СПЕКТРУМ опять должен стартовать
обычным образом.
Введите:
10 FOR Х-1 ТО 255
20 OUT 31,X
30 NEXT X
40 GOTO 10
При выполнении этой программы генерируется линейно-изменяющееся перемен-
ное напряжение, которое может быть измерено вольтметром, который подключается
к выходу ЦАПа и шине питания 0 В. Линейное изменение напряжения от минималь-
ного до максимального длится около 1 сек. С помощью осциллографа можно убедиться
что линейно-изменяющееся напряжение состоит из 255 ступенек. Наконец проверяем
усилитель расположенный на плате АЦП по методике описанной в разделе 3.9.
4.7. СВЕТОВЫЕ ЭФФЕКТЫ
Этот проект основан на использовании программируемого таймера и имеет мно-
жество применений.
Листинг программы:
10 DIM а(8): DIM b(100): DIM: р(100): DIM q<10)
20 LET z-0: LET y-0: LET g-0
100 INPUT "number of events ";a: LET g-a
105 PRINT g
110 PRINT "event period"
120 FOR n-1 TO a
130 INPUT "type 8-digit number";b(n)
140 PRINT n
150 INPUT "type interval up to 255 ";p(n)
160 PRINT TAB 6;b(n);TAB 20;p(n)
170 LET z-b(n)
180 GO SUB 230
190 POKE (40000f2*n),y
200 POKE (40001+2*n),p(n)
210 NEXTn
220 PRINT "press any key to start program": PAUSE 0: GO TO 300
230 LET y-0
235 FOR v-8 TO 1 STEP -1
240 IF INT <<10^<v-l))-z)<-0 THEN LET q(v)-2^(v-l): GO TO 260
250 IF INT ((10^ (v-1)) -z) >0 THEN LET q (v)-O: GO TO 270
260 LET z- (z- (10~ (v-1)))
270 LETy-y+q(v)
280 NEXT v
290 RETURN
300 FOR b-1 TO q
310 LET y-PEEK <40000+2*b)
320 out 31,у
330 go sub 500
340 PRINT "event ";b;" ";z
350 PRINT TAB 17;"period ";b;M ";PEEK <40001+2*b)
360 PAUSE PEEK <40001+2*b)
370 NEXT b
380 stop , : ^
500 let r-o у
505 FOR w-8 TO 1 STEP -1 Д
510 IF INT (y-(2^(^l)))<0rlllBN LET,e(w)4): GO TO 540
520 IF INT (y-(2/4.(W:-l)))>4)fHlEN LET )
530 LET y-(y-(2^(w-l)))
540 LETz-z+a(w>;
550 next w :, ;
560 RETURN *"
1000 FOR x-0 TO 15 ^ ,
1010 PRINT PEEK <406ti0+k>, _ ^
1020 NEXTx ~
Программа состоит из следующих Частей:
1. Строки 10-170 позволяют пользователю устанавливать интервалы времени и
значения выходных сигналов.
2. Строки 190 и 200 загружают эту информацию в последовательные ячейки
памяти для дальнейшего использования.
3. Строки 230-290 - это программа перевода числа из двоичной формы записи в
десятичную. Это позволяет пользователю программировать выходные сигналы в виде
8-разрядного двоичного числа. К сожалению, оператор BIN для этой цели здесь
использовать нельзя.
4. Строки 300-380 .- считывается_записанная ранее в память информация © выход-
ных сигналах. Далее эти данные'вьгдаются на порт вывода. : ~ ~ '
5. Строки 500-560- ^это программа перевода чисел из десятичной формы записи в
двоичную,эдо требуется для отображения на экране ГО" и -'1" обозначающих включе-
ние и выключение источников света.
Объясним процесс работы программы на примере светофора.
Состояние светофора меняется через равные интервалы времени (200). В каждом
состоянии включается соответствующий свет (К)-красный, (Ж)-желтый и (3)-зеле-
ный, как указано в таблице.
Порядок ввода данных в приведенной выше программе следующий:
Количество состояний - 4
Состояние выходов на одном интервале времени - 10000100
Интервал времени - 200
Далее последовательно вводятся данные о всех состояниях и интервалах. Когда все
состояния будут введены, программа запрашивает разрешение на начало работы
(строка 220) и при получении разрешения стартует со строки 300. При этом каждое
состояние выводится на экран в виде 8-разрядного двоичного числа и в это же самое
время эти 8 бит передаются в выходной порт.В соответсвии с сигналами на выходе
порта включаются или выключаются реле, которые, в свою очередь, управляют лам-
пами светофора. Программа может быть значительно проще, если отказаться от ввода
данных в двоичном виде и от их изображения на экране при выполнении программы.
10 FOR х-1 ТО 4
20 READ п
30 РОКЕ (40000+2*п) ,п
40 READ п
50 РОКЕ (40001+2*п) ,п
60 NEXTx
70 DATA BIN 10000100,200,BIN 10001000,200,BIN 11010000,200,BIN
00110000,200
80 FORx-1 TO 4
90 OUT 31 ,PEEK (40000+2*x)
100 PAUSE PEEK (40001+2*x)
110 NEXTx
120 GO TO 80
1000 FOR x—1 TO 10
1001 PRINT PEEK (40000+x)
1002 NEXTx
После запуска эта программа работает без вмешательства оператора.
Световой эффект "бегущий огонь задается следующей последовательностью состо-
яний таймера:
Заданная последовательность может повторяться неопределнно долго, если в стро-
ке 380 заменить STOP на GOTO 300.
Множество различных последовательностей можно запрограммировать с по-
мощью операторов цикла FOR-NEXT. Используя 30000 доступных ячеек памяти
можно создать очень сложные и оригинальные световые эффекты.
4.8- ПОДПРОГРАММА "ТАЙМЕР"
Оператор PAUSE в СПЕКТР УМЕ может задать задержку до 22 минут, состоящую
из 65535 интервалов. Описанная ^ Ш^дыдущем разделе программа может задавать
интервал времени до 255/50 секуйд; посколькурдна ячейка памяти может задавать
число до 255. Программа "таймер" может задавать интервалы от нескольких секунд
до многих часов.
В программе или подпрограммепредполагается, <aolQ - это интервал, который
должен быть задан. Переменная Q находится вячейке памяти с адресом (40001+2*Ь)
в виде числа от 0 до 255кПодпроЕр$йма, однако, может преобразовать Q в секунды,
минуты, часы или даже Дни. - V/
10 DIM а(8): DIM Ь( 100): tt&p<100): DIMq<10)
20 LET z-Ю: LETy-HQ: LET gH(£
100 INPUT "number ofevents"; a: LET g-a
105 PRINT g >}/--.
110 PRINT "event periodw {; , : — - - .
120 FOR n-1 TO a " V p
130 INPUT "type 8-digit number";b(n)
140 PRINT n
150 INPUT "type interval up to 255 ";p(n)
160 PRINT TAB 6;b(n) ;TAB 20;p(n)
170 LETz-b(n)
180 GO SUB 230
190 POKE (40000+2*n) ,y
200 POKE (40001+2*n),p(n)
210 NEXTn V ^ ^ , r ; " : , - "-
220 PRINT "pre» any key to sterf program": PAUSE 0: GO TO 300
230 LEty-0 - -
235 FOR v-8 TO I STEP -1
240 IF INT «10~(v-l))-z)<-<> THEN LET q(v)-2~(v-l): GOTO 260
250 IF INT <<1(Г <v-l))-z)>0 THEN LET q(v)-0: GO TO 270
260 LET z-(z-(10A(v-l)))
270 LETy-y+q(v)
280 NEXT v
290 RETURN
300 FOR b-1 TO g
310 LET y-PEEK (40000f2*b)
320 OUT 31,у
330 GO SUB 500
340 PRINT "events ";b;" ";z
350 PRINT TAB 17;"period ";b;" ";PEEK (40001+2^b)
360 LET Q-PEEK (40001+2*b): GOSUB 600
370 NEXT b
380 STOP
500 LET z-0
505 FOR w-8 TO 1 STEP -1
510 if INT (y-(2/s(w-l)))<0 THEN LET a(w)-0: GO TO 540
520 IF INT (y- (2^ (w-1))) >-0 THEN LET a (w) -10Л (w-1)
530 LET y-(y-(2/s(w-l)))
540 LET z-z+a (w)
550 NEXT w
560 RETURN
600 POKE 23674,0: POKE 23673,0:POKE 23672,0
610 LET t-INT ((65536*PEEK 23674+256*PEEK 23673+PEEK 23672)/50)
620 IF Q-t THEN RETURN
630 GO TO 610
В строке 620 проводится проверка параметров цикла по условию >— так как момент
>— может быть пропущен в процессе выполнения цикла. Строка 360 в программе
описанной в разделе 4.7 заменена на :
260 LET Q-PEEK(40001+2*b): GOSUB 600
В приведенной программе величина Q - это время в секундах. Если требуется
измерять время в минутах, то строка 620 должна иметь вид:
IF Q>—Т*60 THEN RETURN
Если требуется время в часах, то строка 620 должна быть такой:
IF Q >-Т*3600 THEN RETURN
4.9. УПРАВЛЕНИЕ ТЕАТРАЛЬНЫМ
ОСВЕЩЕНИЕМ
Управление освещением на протяжении всего спектакля может быть очень слож-
ным и отнимающим много времени. Инженер по освещению должен иметь перед
глазами сценарий и следить за действием и своевременно включать и выключать
множество групп светильников, фокусировать и направлять прожектора. С помощью
выходного порта и платы оптотиристоров можно одновременно управлять группой из
8 светильников. Последовательность включения может быть запрограммирована и
переход от одного состояния к другому осуществляется при нажатии на любую кла-
вишу СПЕКТРУМА. Возможен переход как к послудующему состоянию так и к
предыдущему при нажатии на соответствующую клавишу. Для этого программа из
раздела 4.7 должна быть изменена:
Строка 150 LET P(N)-0
Строка 360 PAUSE 0
Нажатие на любую клавишу приведет к переходу к следующему состоянию. Если
требуется и возможность возврата, то строка 360 должна быть:
360 LET A$-INKEY $: IF A$-" " THEN GOTO 360;
IF A$-"R"THEN LET B-B-l: GOTO 310
Теперь программа при нажатии на клавишу "R" возвращается в исходное состоя-
ние в запрограммированной последовательности, а при нажатии на любую другую
идет вперед.
4.10. УПРАВЛЕНИЕ СИСТЕМОЙ
ОТОПЛЕНИЯ
В одном полезном деле в программируемомтаймере задаются четверть-часовые
интервалы (IF Q>-T*750 в строке 620). (Прим перевод Т*750 задает интервал 1/5
часа). Домашний автомат центрального отопления обычно имеет не более двух циклов
включено-выключено в течении 24 часов. СПЕКТРУМ же позволит сделать столько
включений, сколько потребуется, при этом можно учесть и день недели и неделю года.
В дополнении к этому можно одновременно управлять каждым из 8 насосов. Многие
системы отопления весьма расточительны, так как нагревают весь дом целиком, когда
требуется давать небольшой подогрев один раз в час в определенные комнаты и только
тогда, когда в доме есть люди. Оптотиристоры могут включать и выключать 8 различ-
ных приборов таких как насосы, лампы, электрические сушилки, охранную сигнали-
зацию и т.д.
Эта идея найдет дальнейшее развитие в следующей главе, где АЦП будет исполь-
зован для измерения температуры в различных точках а через выходной порт будет
управляться система отопления. - —
Только одно неудобство есть в этой системег пока СПЕКТРУМ подключен к систе-
ме отопления он не может быть использован где-либо еще.
4.11. ГЕНЕРАТОР СИГНАЛОВ
СЛОЖНОЙ ФОРМЫ
СПЕКТРУМ может непосредственно генерировать циклические функции числа
PI-SIN, COS, TAN, LN, EXP. Можно генерировать и сигнал более сложной формы
если его задать соответствующим уравнением, хотя выходная частота сигнала будет
ограничена. К сожалению, скорость работы СПЕКТРУМА при вычислении SIN, COS
и др. фущш^йрграшдоивает вЩрдну^о частоту всего нес1ЩлькйШ герцами;Выход-
ной сигнал можно вывести на экран используя операторы PLOT и DRAW й/или с
помощью ЦАП преобразовать неналоговый вид. На выходе ЦАП: сигнал может быть
измерен вольтметром. Медленно меняющиеся Сигналы сш{усбЩ^ьно^|или другой
формы можно использовать для регулирования скорости мотора; профйШш для этого
может быть такой:
10 FOR N-0 ТО 255
20 PLOT N, 88+80*SIN(N/128*PI)
30 OUT 31, 88+80*SIN(N/128*PI)
40 NEXT N
50 GOTO 10
Скорость ввода может быть увеличена если опустить строку 20 или 30.
Создавать звуковые сигналы более трудно, так как частота очень низкая. Наиболь-
шаяя частота, которую можно создать с помощью программы на БЕЙСИКЕ задается
такой программой:
10 OUT 31, OiOUT 31, 100
20 GOTO 10
Интересно определить время которое компьютер затрачивает на вычисление и
вывод сигнала. Для этого следует ввести и запустить программу:
10 FOR X—1 ТО 100
20 OUT31,X.OUT31,0
30 NEXT X
40 FOR Х-1 ТО 50
50 OUT 31, 2*Х: OUT 31,0
60 NEXT X
70 FOR Х-1 ТО 1000
80 OUT 31, Х/20: OUT 31,0
90 NEXT X
100 GOTO 10
Будут слышны три сигнала. Они могли бы быть одинаковыми, но поскольку слож-
ность программ, которые их генерируют (это строки 10-30; 40-60; 70-90) возрастает,
то высота звука уменьшается. Чем сложнее программа, тем больше время ее выпол-
нения и тем ниже высота звука.