Оглавление:

Простой и дешевый аналого-цифровой преобразователь: 5 шагов
Простой и дешевый аналого-цифровой преобразователь: 5 шагов

Видео: Простой и дешевый аналого-цифровой преобразователь: 5 шагов

Видео: Простой и дешевый аналого-цифровой преобразователь: 5 шагов
Видео: Аналого-цифровой преобразователь последовательного типа (схема) 2024, Ноябрь
Anonim
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь
Простой и дешевый аналого-цифровой преобразователь

В те времена, когда АЦП были дорогими и редкими, появилось аппаратно-программное решение для сбора данных для ПК. На основе старого порта джойстика от IBM-совместимого, метод срабатывания моностабильного мультивибратора, резистивного преобразователя (термистор, фотоэлемент, тензодатчик и т. Д.) С последующим подсчетом количества циклов, которые он проходит до того, как выходной сигнал мультивибратора становится высоким, вполне достаточно. проста в реализации на большинстве платформ ПК и на большинстве языков. Показаны файлы примеров VisualBasic и Qbasic.

Шаг 1: порт джойстика

Порт джойстика
Порт джойстика

В течение многих лет многие домашние IBM-совместимые ПК поставлялись с портом джойстика, который имел сигнальные контакты для осей X, Y, кнопок A и B. Доступ к небольшому разъему DB-15 можно получить по адресу 200h и 201h. Сам джойстик состоял всего из двух потенциометров и двух кнопок. Внутри материнской платы ПК были расположены два перезапускаемых моностабильных мультивибратора (сокращенно RMM) с фиксированными конденсаторами и выводами IN / OUT. Постоянная времени RC задавалась потенциометрами и конденсаторами. Чтобы начать преобразование сигнала, вы должны сделать ЗАПИСЬ на адрес порта 200h, а затем начать отсчет, пока вы не получите бит ВЫСОКИЙ, выполнив ЧТЕНИЕ на адрес порта 200h. Это может быть реализовано на любом языке (базовый, паскаль, c).

Шаг 2: порт джойстика в VB

Порт джойстика в VB
Порт джойстика в VB

Это пример кода, который я использовал для тестирования своего джойстика на свалке: Private Sub Timer1_Timer () Dim V, H As Integer Out & H201, & HFF For H = 1 to 3000 If (Inp (& H201) And & H1) / & H1 = 0 Then Exit For Next H Horizontal. Text = H Out & H201, & HFF Для V = от 1 до 3000 Если (Inp (& H201) And & H2) / & H2 = 0 Тогда выйти для следующего V Vertical. Text = V If (Inp (& H201) And & H10) / & H10 = 0 Тогда Shape1. FillColor = & HFF If (Inp (& H201) And & H20) / & H10 = 0 Тогда Shape2. FillColor = & HFF If (Inp (& H201) And & H10) / & H10 = 1 Тогда Shape1. FillColor = & HC0C0C0 If (Inp (& H201) И & H20) / & H20 = 1 Затем Shape2. FillColor = & HC0C0C0 Shape3. Left = H Shape3. Top = VEnd Sub Программа работает только в том случае, если к вашему ПК подключен настоящий джойстик. В полях «Горизонтальный» и «Вертикальный текст» будут отображаться значения, относящиеся к движениям ручки по осям X и Y. Также квадрат будет перемещаться внутри большего поля, чтобы обозначить ваши движения. При нажатии кнопок A и B отображаются серые кружки. Образец скомпилированного EXE-файла, исходный код и библиотека INPOUT32. DLL находятся в файле. RAR.

Шаг 3: Реализуйте его с помощью параллельного порта под DOS

Реализуйте это с помощью параллельного порта под DOS
Реализуйте это с помощью параллельного порта под DOS

74 LS 123 - это то, что я использовал, чтобы получить ту же систему, что и порт джойстика. Имеет два RMM. В файле PDF вы можете увидеть техническое описание и простую схему для подключения к параллельному порту. Я фанат Qbasic (потому что он широко доступен), поэтому код написан на нем. Процедура такая же, как в примере VB: LPTdata = & H378 LPTstatus = LPTdata + 1: LPTcontrol = LPTdata + 2YMAXX = 500SCREEN 2LINE (9, 1) - (630, 170),, B, & H3333VIEW (10, 2) - (629, 169) WINDOW (0, YMAXX) - (620, 0) MAXX = 620DIM D (MAXX) WHILE INKEY $ = "" OUT LPTcontrol, & H1 OUT LPTcontrol, & H0 FOR Y = 1 TO YMAXX IF (INP (LPTstatus) AND & H10) / & H10 = 1 ТОГДА ВЫЙДИТЕ ДЛЯ СЛЕДУЮЩЕГО УСТРОЙСТВА Y 23, 1 ПЕЧАТЬ С ИСПОЛЬЗОВАНИЕМ "####"; ЛИНИЯ Y (0, 0) - (MAXX, YMAXX), 0, BF FOR I = 1 TO MAXX LINE (I, D (I - 1)) - (I, D (I)) D (I - 1) = D (I) NEXT ID (MAXX) = YWEND Один выходной контакт используется для запуска MMR, а один входной контакт - для чтения его вывода.

Шаг 4: Присоединение Ciruit к LPT

Присоединение Ciruit к LPT
Присоединение Ciruit к LPT
Присоединение Ciruit к LPT
Присоединение Ciruit к LPT
Присоединение Ciruit к LPT
Присоединение Ciruit к LPT

Система реализована наполовину аппаратно, наполовину программно. Преобразование переменного сопротивления во временную задержку затем используется для подсчета импульсов, и этот счет является нашим желаемым значением. Файл qbasic будет отображать сигнал, а затем прокручивать его вправо.

Шаг 5: Используйте это

Это обычная ИС, но можно использовать и другие моностабильные устройства. Многие люди, которые живут в местах, где трудно найти АЦП, могут использовать эту схему в качестве школьного проекта для построения графика температуры или любых других вещей, если вы можете заставить MMR изменять свою задержку, когда это делает ваш датчик.

Рекомендуемые: