Чтение онлайн

на главную - закладки

Жанры

Как превратить персональный компьютер в измерительный комплекс
Шрифт:

Эта программа рассчитана на работу совместно с 8- или 10-разрядным АЦП (точность 1 %), но ее можно оптимизировать и для работы с 12-раз рядным АЦП, исправив строки 220 и 240 следующим образом и обеспечив при этом три индицируемых знака после запятой (т. е. точность 0,1 %):

220 D=INT(1000*D)/1000

240 PRINT USING "##.###"; D

Не стоит также упускать из виду, что драйвер не выполняет никаких округлений, полностью соблюдая точность преобразователя. Только прикладная программа в соответствии с поставленной задачей должна так или иначе использовать получаемую точность, и не более того. Вывод трех знаков после запятой для 8-разрядного АЦП будет излишним, так как третий знак при этом не несет никакого смысла.

200 REM — BARRE —

210 LOCATE 6,1

220 FOR H=1 TO 5

230 PRINT "I….!..";

240 NEXT H

250 PRINT " I "

260 LOCATE 7,1

270 PRINT "0___1___2___"

280 PRINT "3___4___5"

290 GOSUB 100

300 D=INT(10*D)

310 LOCATE 5,1

320 PRINT SPC (D);" I";

330 PRINT SPC (50-D)

340 GOTO 290

350 REM (c) 1997 Patrick GUEULLE

Программа BARRE.BAS,

в свою очередь, показывает, как легко можно организовать вывод аналоговой штриховой шкалы.

Эта форма представления результата, менее точная, чем цифровая индикация, гораздо более удобна, когда требуется лишь оценить направление и скорость изменений или отклонений измеряемой величины, например, при ручной регулировке или настройке. В приведенном примере шкала построена на базе ASCII символов, но такая же шкала может быть выполнена и в графическом режиме экрана.

Усредняющий фильтр

Наиболее распространенный способ подавления быстрых флуктуаций (часто паразитных) в медленно изменяющемся сигнале состоит в вычислении среднего значения нескольких выборок, относящихся к одному интервалу дискретизации. Конечно, этот способ может замедлить работу системы, и поэтому он применен в двух программах, выводящих результат один раз в секунду (SECONDE.BAS) и один раз в минуту (MINUTE.BAS).

200 REM — SECONDE —

210 Q=0: S=0: GOSUB 100

220 LOCATE 5,1

230 PRINT "Идет измерение…"

240 H$=TIME$

250 IF H$<>TIME$ THEN BEEP: GOTO 290

260 GOSUB 100

270 S=S+D: Q=Q+1

280 GOTO 250

290 D=INT(100*S/Q)/100

300 LOCATE 1,1

310 PRINT USING "##.##";D;

320 PRINT "(среднее за"; Q; " измерений)"

330 GOTO 210

340 REM (c) 1997 Patrick GUEULLE

Кроме вычисления результата измерений, каждая из этих программ выводит и количество измерений, которое было использовано при его вычислении. Это позволяет точно оценить реальное быстродействие сиcтемы в зависимости от применяемого ПК Так, можно получить 3–4 измерения в секунду на «антикварном» ПК 8088/4,77 МГц, 60–70 измерений в секунду на 386SX25 и 700-1000 измерений в секунду на 486 DX/133 МГц, что все же достаточно далеко от современных скоростей, но весьма почетно для BASIC-интерпретатора.

Стоит обратить внимание на то, как использована зарезервированная цикловая переменная TIМЕ$. Она позволяет при любой частоте процессора получить достаточно точную шкалу секунд, минут и даже часов. А если понадобится осуществлять, например, одно измерение за несколько дней, то можно использовать переменную DATES.

200 REM — MINUTE —

210 Q=0: S=0: GOSUB 100

220 LOCATE 5,1

230 PRINT "Идет измерение…"

240 H$=LEFT$(TIME$,5)

250 IF H$<>LEFT$ (TIME$, 5) THEN BEEP: GOTO 290

260 GOSUB 100

270 S=S+D: Q=Q+1

280 GOTO 250

290 D=INT(100*S/Q) /100

300 LOCATE 1,1

310 PRINT USING "##.##";D;

320 PRINT "(среднее за";Q; " измерений)"

330 GOTO 210

340 REM (c) 1997 Patrick GUEULLE

Пиковый регистратор минимумов и максимумов

Достаточно добавить несколько строк на языке BASIC,

чтобы получить режим запоминания минимумов и максимумов измеряемого напряжения, с возможностью обнуления результатов путем нажатия на клавишу пробела на клавиатуре ПК.

200 REM — MINMAX —

210 PRINT "нажать клавишу пробела для перезапуска"

220 I=5: А=0: Q=0: GOSUB 100

230 FOR G=1 TO 100

240 GOSUB 100: Q=Q+D

250 NEXT G

260 Q=Q/100

270 IF Q<=I THEN I=Q: S$=TIME$

280 IF Q>=A THEN A=Q: T$=TIME$

290 LOCATE 3,5: PRINT "Mes: ";

300 PRINT USING"##.##"; INT(100*Q)/100;

310 PRINT " "+TIME$

320 LOCATE 5,5: PRINT "Макс: ";

330 PRINT USING "##.##"; INT(100*A) /100

340 PRINT " " + T$

350 LOCATE 7,5: PRINT "Мин: ";

360 PRINT USING "##.##“; INT(100*1)/100

370 PRINT " " + S$

380 IF INKEY$=CHR$(32) THEN 220

390 Q=0: GOTO 230

400 REM (c) 1997 Patrick GUEULLE

Это добавление было сделано в программе MINMAX.BAS; также в нее были включены операторы вывода трех значений времени (в часах, минутах и секундах):

• время текущего измерения;

• время регистрации максимума;

• время регистрации минимума.

Надо отметить, что мультиметр редко дает подобные возможности, столь легко реализованные в виртуальном приборе.

Регистратор длительных процессов

В этом разделе будет рассказано о том, как за несколько десятков долларов достичь результатов, обычно возможных только при использовании ленточных или магнитных регистраторов — приборов, стоящих в сотни раз дороже! Вместо того чтобы чертить на бумаге кривую в реальном масштабе времени, что технически трудновыполнимо, гораздо проще накапливать данные в файле на диске, а уже потом обрабатывать их.

Программа сбора данных (FICHIER.BAS), которую, конечно же, надо дополнить драйвером используемого АЦП при помощи команды MERGE, исключительно проста.

200 REM — FICHIER —

210 GOSUB 100

220 OPEN "dat.dat" FOR OUTPUT AS #1

230 PRINT "Идут измерения… "

240 FOR G=0 TO 639

250 GOSUB 100

260 PRINT# 1, D

270 FOR T=0 TO 2000: NEXT T

280 NEXT G: CLOSE# 1

290 REM (c) 1997 Patrick GUEULLE

В оригинальной версии эта программа создает файл DAT.DAT, содержащий 640 выборок, которые производятся с частотой дискретизации, определяемой в строке 270 (простая задержка). Конечно, число 2000 используется лишь при первых попытках, а потом надо будет подобрать эту величину в соответствии со скоростью используемого ПК и конкретной задачей.

В самых сложных случаях можно, по примеру SECONDE.BAS и MINUTE.BAS, использовать переменную TIME$ для улучшения точности и значительного снижения частоты дискретизации.

Число 640, в свою очередь, соответствует числу точек по горизонтали обычного графического экрана, что позволяет вывести график кривой непосредственно на экран, перед тем как скопировать его на бумагу, если это необходимо.

Графопостроитель

Вывод информации на экран осуществляет программа CGAVISU.BAS или VGAVISU.BAS. Вторая из них применяется, если желательно воспользоваться большим разрешением, соответствующим экранам VGA.

500 REM — CGAVISU —

510 OPEN "dat.dat" FOR INPUT AS #1

520 INPUT#1,Y: Y=199-INT(Y*199/5)

530 PSET(0,Y)

540 FOR X=1 TO 639

550 INPUT#1,Y: Y=199-INT(Y*199/5)

560 LINE — (X, Y)

570 NEXT X

580 CLOSE

590 REM (c) 1997 Patrick GUEULLE

500 REM — VGAVISU —

510 OPEN "dat.dat" FOR INPUT AS #1

520 INPUT#1,Y: Y=349-INT(Y*349/5)

530 PSET(0,Y)

540 FOR X=1 TO 639

550 INPUT#1,Y: Y=349-INT(Y*349/5)

560 LINE — (X, Y)

570 NEXT X

580 CLOSE

590 REM (c) 1997 Patrick GUEULLE

Поделиться:
Популярные книги

Страж Кодекса. Книга III

Романов Илья Николаевич
3. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Страж Кодекса. Книга III

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

Я все еще князь. Книга XXI

Дрейк Сириус
21. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще князь. Книга XXI

Последняя Арена 9

Греков Сергей
9. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 9

Прорвемся, опера! Книга 2

Киров Никита
2. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 2

Гридень. Начало

Гуров Валерий Александрович
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Гридень. Начало

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4

Отверженный VII: Долг

Опсокополос Алексис
7. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VII: Долг

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

Невеста

Вудворт Франциска
Любовные романы:
любовно-фантастические романы
эро литература
8.54
рейтинг книги
Невеста

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Неудержимый. Книга XVI

Боярский Андрей
16. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVI

Кадры решают все

Злотников Роман Валерьевич
2. Элита элит
Фантастика:
боевая фантастика
попаданцы
альтернативная история
8.09
рейтинг книги
Кадры решают все

Бестужев. Служба Государевой Безопасности

Измайлов Сергей
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности