Innehållsförteckning:

Enkel och billig analog till digital omvandlare: 5 steg
Enkel och billig analog till digital omvandlare: 5 steg

Video: Enkel och billig analog till digital omvandlare: 5 steg

Video: Enkel och billig analog till digital omvandlare: 5 steg
Video: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, Juli
Anonim
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare
Enkel och billig analog till digital omvandlare

Från tiden då ADC var dyra och sällsynta, kommer en hårdvara-mjukvarulösning för datainsamling för datorer. Baserat på den gamla joystickporten från IBM-kompatibla är en teknik för att utlösa en monostabil multivibrator en resistiv givare (termistor, fotocell, töjningsmätare, etc) och sedan räkna hur många cykler det passerar innan multivibratorns utgång går högt ganska enkel att implementera på de flesta PC -plattformar och på de flesta språk. En VisualBasic och Qbasic exempelfiler visas.

Steg 1: Joystickporten

Joystick -porten
Joystick -porten

I många år kom många hem -kompatibla PC -datorer med en joystickport med X -axel, Y -axel, A & B -knappar. Den lilla DB-15-kontakten kan nås på adressen 200h & 201h. Själva joysticken var bara två potentiometrar och två knappar. Inuti moderkortet på datorn fanns två återstartbara monostabila multivibratorer (RMM för kort) med fasta kondensatorer och IN/OUT -stift. RC -tidskonstanten sattes av potentiometrarna och kondensatorerna. För att starta signalomvandlingen skulle du göra en SKRIV till portadress 200h och sedan börja räkna tills du blir lite HÖG genom att göra en LÄS till portadress 200h. Detta kan implementeras på alla språk (grundläggande, pascal, c).

Steg 2: Joystickport i VB

Joystickport i VB
Joystickport i VB

Detta är en exempelkod som jag använde för att testa min skräppost joystick: 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 Nästa H Horizontal. Text = H Out & H201, & HFF För V = 1 till 3000 If (Inp (& H201) And & H2) / & H2 = 0 Avsluta sedan för nästa V Vertical. Text = V If (Inp (& H201) And & H10) / & H10 = 0 Sedan 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) Och & H20) / & H20 = 1 Sedan Shape2. FillColor = & HC0C0C0 Shape3. Left = H Shape3. Top = VEnd Sub Programmet fungerar bara om du har en riktig joystick ansluten till din PC. De horisontella och vertikala textrutorna visar ett värde relaterat till X- och Y -rörelser på din pinne. En ruta kommer också att röra sig i en större låda för att representera dina rörelser. Genom att trycka på A- och B -knapparna visas de grå cirklarna. Exempelkompilerade EXE -filen, källkoden och INPOUT32. DLL -biblioteket finns i. RAR -filen.

Steg 3: Implementera den med parallellporten under DOS

Implementera det med parallellporten under DOS
Implementera det med parallellporten under DOS

74 LS 123 är vad jag använde för att få samma system som joystickporten. Den har två RMM. I PDF -filen kan du se databladet och en enkel krets att koppla till din parallellport. Jag är ett Qbasic -fan (eftersom det är allmänt tillgängligt) så koden är skriven i den. Proceduren är densamma som i VB-provet: 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) WILE INKEY $ = "" OUT LPTcontrol, & H1 OUT LPTcontrol, & H0 FOR Y = 1 TO YMAXX IF (INP (LPTstatus) AND & H10) / & H10 = 1 DÅ AVGÅNG FÖR NÄSTA Y LOCATE 23, 1 UTSKRIFT MED "####"; Y LINE (0, 0) - (MAXX, YMAXX), 0, BF FOR I = 1 TO MAXX LINE (I, D (I - 1)) - (I, D (I)) D (I - 1) = D (I) NÄSTA ID (MAXX) = YWEND En utgångsstift används för att utlösa MMR och en ingångsstift för att läsa utgången från den.

Steg 4: Fäst Ciruit på LPT

Fäster Ciruit till LPT
Fäster Ciruit till LPT
Fäster Ciruit till LPT
Fäster Ciruit till LPT
Fäster Ciruit till LPT
Fäster Ciruit till LPT

Systemet är implementerat som hälften hårdvara och hälften programvara. Omvandlingen av ett variabelt motstånd till en tidsfördröjning används sedan för att räkna pulser och denna räkning är vårt önskade värde. Qbasic -filen kommer att plotta för att skärma signalen och sedan rulla den åt höger.

Steg 5: Använd det

Detta är en vanlig IC men andra monostabiler kan också användas. Många människor som bor på platser där ADC är svåra att hitta, kanske skulle vilja använda den här kretsen som ett skolprojekt för att rita temperatur eller andra saker så länge du kan få MMR att ändra dess fördröjning när din sensor gör det.

Rekommenderad: