Prosty i tani konwerter analogowo-cyfrowy: 5 kroków
Prosty i tani konwerter analogowo-cyfrowy: 5 kroków
Anonim

Z czasów, gdy ADC były drogie i rzadkie, pojawiło się rozwiązanie sprzętowo-programowe do akwizycji danych dla komputerów PC. Oparta na starym porcie joysticka kompatybilnego z IBM, technika wyzwalania monostabilnego multiwibratora z przetwornikiem rezystancyjnym (termistor, fotokomórka, tensometr, itp.), a następnie liczenie, ile cykli przechodzi, zanim wyjście multiwibratora wzrośnie, jest dość prosty do wdrożenia na większości platform PC i w większości języków. Wyświetlane są przykładowe pliki VisualBasic i Qbasic.

Krok 1: Port joysticka

Przez lata wiele domowych komputerów PC kompatybilnych z IBM było wyposażonych w port joysticka, który miał oś X, oś Y, piny sygnałowe przycisków A i B. Małe złącze DB-15 jest dostępne pod adresem 200h i 201h. Sam joystick to tylko dwa potencjometry i dwa przyciski. Wewnątrz płyty głównej komputera znajdowały się dwa monostabilne multiwibratory z możliwością ponownego wyzwalania (w skrócie RMM) ze stałymi kondensatorami i pinami IN/OUT. Stała czasowa RC była ustalana za pomocą potencjometrów i kondensatorów. Aby rozpocząć konwersję sygnału, należy wykonać ZAPIS do portu o adresie 200h, a następnie rozpocząć odliczanie, aż uzyskasz nieco WYSOKIE, wykonując READ do portu o adresie 200h. Można to zaimplementować w dowolnym języku (podstawowy, pascal, c).

Krok 2: Port joysticka w VB

Oto przykładowy kod, którego użyłem do przetestowania mojego joysticka na złomowisku: Private Sub Timer1_Timer() Dim V, H As Integer Out &H201, &HFF For H = 1 do 3000 If (Inp(&H201) And &H1) / &H1 = 0 Następnie Exit For Następny H Horizontal. Text = H Out &H201, &HFF For V = 1 do 3000 If (Inp(&H201) and &H2) / &H2 = 0 Następnie wyjdź na następny V Vertical. Text = V If (Inp(&H201) and &H10) / &H10 = 0 Wtedy Shape1. FillColor = &HFF If (Wejście(&H201) I &H20) / &H10 = 0 Wtedy Shape2. FillColor = &HFF If (Wejście(&H201) and &H10) / &H10 = 1 Wtedy Kształt1. FillColor = &HC0C0C0 If (Wejście (&H201) I &H20) / &H20 = 1 Then Shape2. FillColor = &HC0C0C0 Shape3. Left = H Shape3. Top = VEnd Sub Program działa tylko wtedy, gdy masz prawdziwy joystick podłączony do komputera. Pola tekstu poziomego i pionowego pokażą wartość związaną z ruchami twojego drążka w osi X i Y. Również kwadrat będzie się poruszał w większym polu, aby reprezentować twoje ruchy. Naciśnięcie przycisków A i B spowoduje zmianę odczytu szarych kółek. Przykładowy skompilowany plik EXE, kod źródłowy i biblioteka INPOUT32. DLL znajdują się w pliku. RAR.

Krok 3: Zaimplementuj go za pomocą portu równoległego w systemie DOS

74 LS 123 jest tym, czego użyłem, aby uzyskać ten sam system, co port joysticka. Ma dwa RMM. W pliku PDF można zobaczyć arkusz danych i prosty obwód do podłączenia do portu równoległego. Jestem fanem Qbasic (ponieważ jest on powszechnie dostępny) więc kod jest w nim napisany. Procedura jest taka sama jak w próbce VB: LPTdata = &H378 LPTstatus = LPTdata + 1: LPTcontrol = LPTdata + 2YMAXX = 500SCREEN 2LINE (9, 1)-(630, 170),, B, &H3333VIEW (10, 2)- (629, 169)OKNO (0, YMAXX)-(620, 0)MAXX = 620DIM D(MAXX)WHILE INKEY$ = "" OUT LPTsterowanie, &H1 OUT LPTsterowanie, &H0 FOR Y = 1 TO YMAXX IF (INP(stan LPT) AND &H10) / &H10 = 1 NASTĘPNIE WYJDŹ DO NASTĘPNEGO Y ZLOKALIZUJ 23, 1 WYDRUKUJ ZA POMOCĄ "####"; Y LINIA (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 Jeden pin wyjściowy służy do wyzwalania MMR, a jeden pin wejściowy do odczytu jego wyjścia.

Krok 4: Podłączanie obwodu do LPT

System jest zaimplementowany w połowie sprzętowo iw połowie programowo. Konwersja zmiennej rezystancji na opóźnienie czasowe jest następnie wykorzystywana do zliczania impulsów i ta liczba jest naszą pożądaną wartością. Plik qbasic wykreśli wykres, aby wyświetlić sygnał, a następnie przewinie go w prawo.

Krok 5: Użyj go

Jest to powszechny układ scalony, ale można również użyć innych monostabilnych. Wiele osób mieszkających w miejscach, w których trudno jest znaleźć ADC, może chcieć wykorzystać ten obwód jako projekt szkolny do wykreślania temperatury lub innych rzeczy, o ile możesz zmienić opóźnienie MMR, gdy zrobi to czujnik.