Spisu treści:

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

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

Wideo: Prosty i tani konwerter analogowo-cyfrowy: 5 kroków
Wideo: Jak wybrać przetwornik cyfrowo-analogowy (DAC) – podpowiadamy jak wybrać | prezentacja Top Hi-Fi 2024, Listopad
Anonim
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy
Prosty i tani konwerter analogowo-cyfrowy

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

Port joysticka
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

Port joysticka w VB
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

Zaimplementuj go za pomocą portu równoległego w systemie DOS
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

Podłączanie obwodu do LPT
Podłączanie obwodu do LPT
Podłączanie obwodu do LPT
Podłączanie obwodu do LPT
Podłączanie obwodu do LPT
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.

Zalecana: