Saltar al contenido

Convertidor analógico a digital simple y económico

julio 10, 2021
F9UO6EEFUF3H1UH

Desde los tiempos en que los ADC eran caros y raros, llega una solución de hardware y software para la adquisición de datos para PC. Basado en el antiguo puerto de Joystick compatible con IBM, una técnica para activar un multivibrador monoestable, un transductor resistivo (termistor, fotocélula, medidor de tensión, etc.) y luego contar cuántos ciclos pasa antes de que la salida del multivibrador se eleve es bastante simple de implementar en la mayoría de las plataformas de PC y en la mayoría de los idiomas. Se muestran archivos de muestra de VisualBasic y Qbasic.

Paso 1: el puerto del joystick

El puerto de la palanca de mando

Durante años, muchas PC domésticas compatibles con IBM venían con un puerto de joystick que tenía pines de señal de los botones A y B del eje X, eje Y Se puede acceder al pequeño conector DB-15 en la dirección 200h y 201h. El joystick en sí era solo dos potenciómetros y dos botones. Dentro de la placa base de la PC, se ubicaron dos multivibradores monoestables re-activables (RMM para abreviar) con capacitores fijos y pines IN / OUT. La constante de tiempo RC fue establecida por los potenciómetros y los condensadores. Para iniciar la conversión de la señal, debe realizar una ESCRITURA en la dirección del puerto 200h y luego comenzar a contar hasta que obtenga un poco ALTO haciendo una lectura en la dirección del puerto 200h. Esto se puede implementar en cualquier idioma (básico, pascal, c).

Paso 2: puerto de joystick en VB

Puerto de joystick en VB

Este es un código de muestra que utilicé para probar mi joystick de depósito de chatarra:

Temporizador secundario privado1_Timer ()
Dim V, H como entero

Fuera y H201 y HFF
Para H = 1 a 3000
Si (Inp (& H201) And & H1) / & H1 = 0 entonces salga para
Siguiente H
Horizontal.Text = H

Fuera y H201 y HFF
Para V = 1 a 3000
Si (Inp (& H201) And & H2) / & H2 = 0 Entonces salga para
Siguiente V
Vertical.Text = V

Si (Inp (& H201) And & H10) / & H10 = 0 Entonces Shape1.FillColor = & HFF
Si (Inp (& H201) And & H20) / & H10 = 0 Entonces Shape2.FillColor = & HFF

Si (Inp (& H201) Y & H10) / & H10 = 1 Entonces Shape1.FillColor = & HC0C0C0
Si (Inp (& H201) And & H20) / & H20 = 1 Entonces Shape2.FillColor = & HC0C0C0

Shape3.Left = H
Forma3.Top = V

End Sub

El programa solo funciona si tiene un joystick real conectado a su PC. Los cuadros de texto horizontal y vertical mostrarán un valor relacionado con los movimientos X e Y de su palo. Además, un cuadrado se moverá dentro de un cuadro más grande para representar sus movimientos. Al presionar los botones A y B se leerán los círculos grises. El archivo EXE compilado de muestra, el código fuente y la biblioteca INPOUT32.DLL se encuentran en el archivo .RAR.

Archivos adjuntos

Paso 3: impleméntelo usando el puerto paralelo en DOS

Implementarlo usando el puerto paralelo en DOS

El 74 LS 123 es el que usé para obtener el mismo sistema que el puerto del joystick. Tiene dos RMM. En el archivo PDF puede ver la hoja de datos y un circuito simple para conectar a su puerto paralelo. Soy un fan de Qbasic (porque está ampliamente disponible) por lo que el código está escrito en él. El procedimiento es el mismo que en el ejemplo de VB:

LPTdata = & H378
LPTstatus = LPTdata + 1: LPTcontrol = LPTdata + 2

YMAXX = 500

PANTALLA 2
LÍNEA (9, 1) – (630, 170), B y H3333
VER (10, 2) – (629, 169)
VENTANA (0, YMAXX) – (620, 0)

MAXX = 620

DIM D (MAXX)

MIENTRAS INKEY $ = “”
OUT LPTcontrol y H1
OUT LPTcontrol y H0
PARA Y = 1 A YMAXX
SI (INP (LPTstatus) AND & H10) / & H10 = 1 ENTONCES SALGA PARA
SIGUIENTE Y

UBICACIÓN 23, 1
IMPRIMIR USANDO “####”; Y

LÍNEA (0, 0) – (MAXX, YMAXX), 0, BF

PARA I = 1 HASTA MAXX
LÍNEA (I, D (I – 1)) – (I, D (I))
D (I – 1) = D (I)
SIGUIENTE YO
D (MAXX) = Y

ENCAMINARSE A

Un pin de salida se utiliza para activar el MMR y un pin de entrada para leer la salida del mismo.

Archivos adjuntos

Paso 4: Colocación del Ciruit en LPT

Colocación del Ciruit en LPTColocación del Ciruit en LPTColocación del Ciruit en LPTColocación del Ciruit en LPTColocación del Ciruit en LPT

El sistema se implementa como mitad hardware y mitad software. La conversión de una resistencia variable en un retardo de tiempo se utiliza para contar los pulsos y este recuento es nuestro valor deseado.
El archivo qbasic se trazará para filtrar la señal y luego se desplazará hacia la derecha.

Archivos adjuntos

Paso 5: ¡Úselo!

Este es un IC común, pero también se pueden usar otros monoestables. Muchas personas que viven en lugares donde ADC son difíciles de encontrar, podrían querer usar este circuito como un proyecto escolar para trazar la temperatura o cualquier otra cosa, siempre que pueda hacer que el MMR cambie su retraso cuando lo haga su sensor.

Sé el primero en compartir

    Comentarios

    0
    Biotelé
    Biotelé

    Hace 11 años en Introducción

    Disfruto encontrando circuitos sencillos. Hoy en día, puede encontrar un DAC en casi cualquier microprocesador. Pero en los años 90, esta habría sido una solución elegante. Intente medir la resistencia de la piel y vuelva a empaquetar este instructable como un detector de mentiras basado en computadora. Obtendrá grandes éxitos. Muy pocas personas pueden entender la ingeniería analógica en estos días.

    close