Enkel og billig analog til digital omformer: 5 trinn
Enkel og billig analog til digital omformer: 5 trinn
Anonim

Fra den tiden ADC var dyre og sjeldne, kommer en maskinvare-programvareløsning for datainnsamling for PC-er. Basert på den gamle joystick-porten fra IBM-kompatible, er en teknikk for å utløse en monostabil multivibrator en resistiv transduser (termistor, fotocelle, strekkmåler, osv.) Og deretter telle hvor mange sykluser den passerer før multivibratorens utgang går høyt ganske god enkel å implementere på de fleste PC -plattformer og på de fleste språk. En VisualBasic og Qbasic prøvefiler vises.

Trinn 1: Joystick -porten

I mange år kom mange hjemmekompatible PC -er med en joystick -port som hadde X -akser, Y -akser, A & B -knapper, signalpinner. Den lille DB-15-kontakten er tilgjengelig på adressen 200h og 201h. Selve joysticken var bare to potensiometer og to knapper. Inne på hovedkortet til PC -en ble det funnet to retriggerbare monostabile multivibratorer (RMM for korte) med faste kondensatorer og IN/OUT -pinner. RC -tidskonstanten ble satt av potensiometrene og kondensatorene. For å starte signalkonvertering, ville du lage en SKRIV til portadresse 200t og deretter begynne å telle til du blir litt HØY ved å gjøre en LES til portadresse 200t. Dette kan implementeres på alle språk (basic, pascal, c).

Trinn 2: Joystick -port i VB

Dette er en eksempelkode jeg brukte til å teste søppelstyrespaken min: 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 Neste H Horisontal. Tekst = H Ut & H201, & HFF For V = 1 Til 3000 Hvis (Inp (& H201) Og & H2) / & H2 = 0 Avslutt deretter for neste V Vertikal. Tekst = V Hvis (Inp (& H201) Og & H10) / & H10 = 0 Deretter 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) Og & H20) / & H20 = 1 Deretter fungerer Shape2. FillColor = & HC0C0C0 Shape3. Left = H Shape3. Top = VEnd Sub Programmet fungerer bare hvis du har en ekte joystick festet til PCen. De horisontale og vertikale tekstboksene viser en verdi relatert til X- og Y -bevegelser på pinnen din. Også en firkant vil bevege seg rundt i en større boks for å representere bevegelsene dine. Ved å trykke på A- og B -knappene blir de grå sirklene lest. Eksempelkompilert EXE -fil, kildekoden og INPOUT32. DLL -biblioteket er i. RAR -filen.

Trinn 3: Implementer det ved å bruke den parallelle porten under DOS

74 LS 123 er det jeg brukte for å få det samme systemet som joystickporten. Den har to RMM. I PDF -filen kan du se databladet og en enkel krets for å feste til parallellporten. Jeg er en Qbasic -fan (fordi den er allment tilgjengelig), så koden er skrevet i den. Fremgangsmåten er den samme som i VB-prøven: 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 SLUTT SÅ FOR NESTE Y LOCATE 23, 1 UTSKRIFT BRUKER "####"; 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) NESTE ID (MAXX) = YWEND En utgangspinne brukes til å utløse MMR og en inngangspinne for å lese utgangen fra den.

Trinn 4: Fest sirupen til LPT

Systemet er implementert som halv maskinvare og halv programvare. Konverteringen av en variabel motstand til en tidsforsinkelse brukes deretter til å telle pulser, og denne tellingen er vår ønskede verdi. Qbasic -filen vil plotte for å skjerme signalet og deretter bla det til høyre.

Trinn 5: Bruk den

Dette er en vanlig IC, men andre monostabler kan også brukes. Mange mennesker som bor på steder der ADC er vanskelig å finne, vil kanskje bruke denne kretsen som et skoleprosjekt for å plotte temperatur eller andre ting så lenge du kan få MMR til å endre forsinkelsen når sensoren gjør det.