Índice:

Conversor analógico para digital simples e barato: 5 etapas
Conversor analógico para digital simples e barato: 5 etapas

Vídeo: Conversor analógico para digital simples e barato: 5 etapas

Vídeo: Conversor analógico para digital simples e barato: 5 etapas
Vídeo: Conversor Digital Analógico DA no simulador Falstad 2024, Julho
Anonim
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato
Conversor analógico para digital simples e barato

Desde os tempos em que os ADC eram caros e raros, surge uma solução de hardware-software para aquisição de dados para PCs. Com base na antiga porta de Joystick compatível com IBM, uma técnica de acionar um multivibrador monoestável, um transdutor resistivo (termistor, fotocélula, medidor de tensão, etc.) e, em seguida, contar quantos ciclos ele passa antes que a saída do multivibrador fique alta é bastante simples de implementar na maioria das plataformas de PC e na maioria dos idiomas. Um arquivo de amostra VisualBasic e Qbasic é mostrado.

Etapa 1: a porta do joystick

A porta de joystick
A porta de joystick

Durante anos, muitos PCs domésticos compatíveis com a IBM vieram com uma porta de joystick que possuía eixo X, eixo Y, botões A e B, pinos de sinalização. O pequeno conector DB-15 pode ser acessado nos endereços 200h e 201h. O joystick em si tinha apenas dois potenciômetros e dois botões. Dentro da placa-mãe do PC, dois multivibradores monoestáveis retriggeráveis (RMM, para abreviar) com capacitores fixos e pinos IN / OUT foram localizados. A constante de tempo RC foi ajustada pelos potenciômetros e capacitores. Para iniciar a conversão do sinal, você faria um WRITE para o endereço de porta 200h e então começaria a contar até obter um pouco HIGH fazendo um READ para o endereço de porta 200h. Isso pode ser implementado em qualquer linguagem (básico, pascal, c).

Etapa 2: porta do joystick em VB

Porta de joystick em VB
Porta de joystick em VB

Este é um código de amostra que usei para testar meu joystick de ferro-velho: 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 For V = 1 To 3000 If (Inp (& H201) And & H2) / & H2 = 0 Then Exit For Next V Vertical. Text = V If (Inp (& H201) And & H10) / & H10 = 0 Then Shape1. FillColor = & HFF If (Inp (& H201) And & H20) / & H10 = 0 Then Shape2. FillColor = & HFF If (Inp (& H201) And & H10) / & H10 = 1 Then Shape1. FillColor = & HC0C0C0 If (Inp (& H201) E & H20) / & H20 = 1 Então Shape2. FillColor = & HC0C0C0 Shape3. Left = H Shape3. Top = VEnd Sub O programa só funciona se você tiver um joystick real conectado ao seu PC. As caixas de texto horizontal e vertical mostrarão um valor relacionado aos movimentos X e Y do seu stick. Além disso, um quadrado se moverá dentro de uma caixa maior para representar seus movimentos. Pressionar os botões A e B ativará a leitura dos círculos cinza. O exemplo de arquivo EXE compilado, o código-fonte e a biblioteca INPOUT32. DLL estão no arquivo. RAR.

Etapa 3: Implementar usando a porta paralela no DOS

Implementar usando a porta paralela no DOS
Implementar usando a porta paralela no DOS

O 74 LS 123 é o que eu usei para obter o mesmo sistema da porta de joystick. Possui dois RMM. No arquivo PDF você pode ver a folha de dados e um circuito simples para conectar à sua porta paralela. Eu sou um fã do Qbasic (porque está amplamente disponível), então o código está escrito nele. O procedimento é o mesmo que na amostra 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) ENQUANTO INKEY $ = "" OUT LPTcontrol, & H1 OUT LPTcontrol, & H0 FOR Y = 1 TO YMAXX IF (INP (LPTstatus) AND & H10) / & H10 = 1 ENTÃO SAIR PARA O PRÓXIMO LOCAL 23, 1 IMPRIMIR USANDO "####"; LINHA Y (0, 0) - (MAXX, YMAXX), 0, BF PARA I = 1 A LINHA MAXX (I, D (I - 1)) - (I, D (I)) D (I - 1) = D (I) NEXT ID (MAXX) = YWEND Um pino de saída é usado para acionar o MMR e um pino de entrada para ler a saída dele.

Etapa 4: anexando o Ciruit ao LPT

Anexando o Ciruit ao LPT
Anexando o Ciruit ao LPT
Anexando o Ciruit ao LPT
Anexando o Ciruit ao LPT
Anexando o Ciruit ao LPT
Anexando o Ciruit ao LPT

O sistema é implementado como meio hardware e meio software. A conversão de uma resistência variável em um atraso de tempo é então usada para contar os pulsos e essa contagem é o nosso valor desejado. O arquivo qbasic traçará para filtrar o sinal e, em seguida, rolá-lo para a direita.

Etapa 5: Use

Este é um IC comum, mas outros monoestáveis também podem ser usados. Muitas pessoas que moram em lugares onde ADC são difíceis de encontrar, podem gostar de usar este circuito como um projeto escolar para traçar a temperatura ou qualquer outra coisa, desde que você possa fazer o MMR mudar seu atraso quando o seu sensor mudar.

Recomendado: