Bezpłatna biblioteka techniczna ENCYKLOPEDIA RADIOELEKTRONIKI I INŻYNIERII ELEKTRYCZNEJ Działanie ADC z portem COM, prosty system akwizycji danych. Encyklopedia elektroniki radiowej i elektrotechniki Encyklopedia radioelektroniki i elektrotechniki / Komputery Ten artykuł jest skierowany głównie do początkujących. Dla tych, którzy postanowili spróbować swoich sił w tworzeniu systemu akwizycji danych, wprowadzaniu sygnałów analogowych do komputera, ich przetwarzaniu itp. Zostanie to omówione w tym artykule, a my postaramy się zrobić wszystko sami. Ogólnie rzecz biorąc, informacji na ten temat jest całkiem sporo w Internecie i literaturze... Zwłaszcza jeśli posługujesz się językiem Visual Basic. Postaram się zatem choć częściowo wypełnić tę lukę. Zacznijmy więc… Niezależnie od celu, najpierw musisz kupić odpowiedni przetwornik analogowo-cyfrowy (ADC). Zainstaluj także na swoim komputerze środowisko programistyczne Visual Basic 6.0. Musisz także być w stanie po prostu poruszać się po tym środowisku programistycznym... ponieważ... Artykuł ma na celu zapewnienie czytelnikowi przynajmniej podstawowej wiedzy z zakresu programowania w języku Visual Basic. Polecam także zapoznać się z literaturą [1], [3]. Polecam zakup TLC549IP jako ADC. Jest to 8-bitowy szeregowy przetwornik ADC z prostym protokołem komunikacyjnym. Zostanie to omówione w artykule. Oczywiście można zastosować inne przetworniki ADC po odpowiednich zmianach w obwodzie i kodzie. Więcej na ten temat można przeczytać w [1]. Po znalezieniu ADC należy zmontować osprzęt naszego układu akwizycji danych, czyli obwód pokazany na rys. 1. Schemat został zapożyczony z [1] z niewielkimi zmianami. Diody VD1, VD2, VD6 - KD521, dowolne diody Zenera dla stabilizacji napięcia 3...5 V. Zamiast 78L05 można zastosować KREN5A. Rezystory R1, R2 z tolerancją 1% lub wybór spośród kilku o najbliższej wartości rezystancji. Od nich będzie zależeć dokładność pomiarów. Rezystor R3 jest korzystnie wieloobrotowy. regulacja: podłączając zasilanie do płytki, mierzymy napięcie na pinie wyjściowym stabilizatora DA1. Wynikową wartość napięcia zapisujemy z dokładnością do 3 miejsc po przecinku, będzie nam ona potrzebna później. Na pinie 1 mikroukładu DD1 za pomocą rezystora R3 ustawiamy napięcie równe dokładnie połowie stabilizatora zmierzonej na pinie Out. Przejdźmy teraz do właściwej części oprogramowania. Ogólnie rzecz biorąc, na początek należy używać interfejsów komunikacyjnych, takich jak RS-232, I2C, Micro Ware itp. Uważam to za niewłaściwe, ponieważ Przy niewielkiej komplikacji kodu programu sprzęt może stać się poważnie bardziej skomplikowany. Dlatego użyjemy najprostszego protokołu wymiany wziętego z „arkusza danych” do ADC. Mianowicie jego prosta implementacja. Oczywiście przy takim protokole nie da się osiągnąć dużych prędkości; w tym przypadku ograniczenia narzuca sam Visual Basic, ale aby uzyskać pierwsze rezultaty przy minimalnym nakładzie czasu i wysiłku, a także zmierzyć stosunkowo wolno zmieniające się procesy, jest całkiem odpowiedni. Protokół komunikacyjny przetwornika ADC TLC549IP pokazano na ryc. 2. W stanie pojedynczym rzeczywista konwersja następuje na pinie CS (wybór chipa) przetwornika A/D. Wyjście danych rozpoczyna się od niskiego poziomu CS wraz z pojawieniem się impulsu zegarowego, jeden bit na każdy impuls. Aby wygenerować 8-bitowy kod, potrzeba 8 impulsów zegarowych. Po czym CS można przenieść do pojedynczego stanu i wykonać następującą transformację. Więcej szczegółów na temat działania ADC można znaleźć w [1]. Z tego wszystkiego wynika, że konieczne jest napisanie programu sterownika, który będzie generował niezbędne ciągi impulsów we właściwych momentach, po czym będziemy mogli jedynie odbierać dane. Uruchom środowisko programistyczne Visual Basic i utwórz standardowy projekt EXE. Dodaj kontrolkę MSComm. Możesz dodać go do panelu komponentów w następujący sposób: Projekt-->Komponenty-->wybierz z listyMicrosoft Comm Kontrola 6.0. Umieść go na formularzu wraz z 2 etykietami i 2 licznikami czasu. Pozostaw nazwy domyślne. Teraz możesz zacząć pisać kod dla prostego woltomierza. Ustawmy zmienne: Wymiar b1, b2, b3, b4, b5, b6, b7, b8, suma, Ud As Single Umieść następujący kod w procedurze ładowania formularza: Prywatna podformularz_Load () MSComm1.DTREnable = True 'wartość początkowa - wysoki poziom CS Timer1.Interval = 100 ' Interwał timera 1ms Timer2.Interval = 1 ' Interwał timera 100ms MSComm1.Settings = "1200,N,8,1" ' ustawienia przesyłania danych MSComm1.CommPort = 1 'Numer portu COM MSComm1.PortOpen = Prawda 'otwarty port COM End Sub W procedurze Timer1 wstawia kod: Prywatny zegar pomocniczy1_Timer() MSComm1.DTREnable = False „Utwórz niski CS Label2.Caption = "" 'śmieci z powodu początkowego opóźnienia MSComm1.RTSEnable = True „Wysoki zegar pierwszego impulsu zegara” Jeśli MSComm1.CDHolding = True Następnie b1 = 1 Inaczej b1 = 0 'Odpytaj o wartość jedną lub zero na wejściu CD (wyjście ADC) MSComm1.RTSEnable = Fałsz „Niski zegar pierwszego impulsu zegara” MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b2 = 1 Inaczej b2 = 0 MSComm1.RTSEnable = Fałsz MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b3 = 1 Inaczej b3 = 0 MSComm1.RTSEnable = Fałsz MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b4 = 1 Inaczej b4 = 0 MSComm1.RTSEnable = Fałsz MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b5 = 1 Inaczej b5 = 0 MSComm1.RTSEnable = Fałsz MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b6 = 1 Inaczej b6 = 0 MSComm1.RTSEnable = Fałsz MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b7 = 1 Inaczej b7 = 0 MSComm1.RTSEnable = Fałsz MSComm1.RTSEnable = Prawda Jeśli MSComm1.CDHolding = True To b8 = 1 Inaczej b8 = 0 MSComm1.DTREnable = True 'Utwórz wysoki CS MSComm1.RTSEnable = Fałsz „Niski zegar pierwszego impulsu zegara” 'konwertuj bity na format dziesiętny, korzystając ze wzoru na rozwinięcie suma = (b1 * 2^7) + (b2 * 2^6) + (b3 * 2^5) + (b4 * 2^4) + (b5 * 2^3) + (b6 * 2^2) + (b7 * 2^1) + (b8 * 2^0) Ud = Format(suma * 5.083 / 255, "##0.000") 'oblicz wartość proporcjonalną Label1.Caption = CStr(Ud) & „Volt” „wyświetla wynikową wartość End Sub Kod w Timerze1 jest rzeczywistym sterownikiem. Który okresowo się powtarza, generuje impulsy zegarowe i odbiera bity danych. Ud to napięcie na wejściu ADC, w przypadku zastosowania 10, 12-bitowych przetworników ADC, liczba 225 zostanie zastąpiona odpowiednio przez 1024, 4096. W przypadku 10, 12-bitowych przetworników ADC należy dodać brakujące bity do kodu , kierując się ich „kartami danych”. Wartość 5.083 to wartość napięcia, którą uzyskałem na wyjściu Out stabilizatora. Wpisz tutaj swoją wartość. Do zasilania płytki można użyć osobnego źródła lub zasilić ją bezpośrednio z portu COM. W tym celu w procedurze Timer2 umieszczamy następujący kod: Prywatny zegar pomocniczy2_Timer() MSComm1.Output = Chr(0) & Chr(0) 'tworzą impulsy na pinie TX (3) w celu zasilania płytki ADC End Sub Trzeba pamiętać, że port COM nie może być mocno obciążony... maksimum na jakie można liczyć to 20 mA. W trybie pracy obwód pobiera prąd nie większy niż 5 mA. Teraz podłącz płytkę do portu COM i uruchom projekt. Zmierz napięcie na pinie IN stabilizatora DA1, powinno być nie mniejsze niż 6.5 V. Jeżeli tak nie jest, użyj osobnego źródła zasilania. Zmieniając napięcie na wejściu ADC upewnij się, że program działa i pokazuje napięcie na ekranie. Dokładność odczytu napięcia przy zastosowaniu 8-bitowego ADC wynosi 20 mV, przy 10-bitowym ADC - 5 mV, 12-1.2 mV Trochę o pracy w Visual Basic i stworzonej aplikacji z portem com Jak zapewne już zrozumiałeś, do pracy z portem COM potrzebny jest komponentMicrosoft Comm Control mianowicie plik MSCOMM32.ocx, który po zainstalowaniu Visual Basica znajduje się w katalogu C:\Windows\system32. Mam przez to na myśli to, że jeśli skopiujesz program bez tworzenia instalatora na inny komputer, który nie posiada Visual Basica, nie będzie on działać. Musisz także skopiować ten plik do tego samego katalogu, co na Twoim komputerze, tj. w systemie32. Lub utwórz instalator. Teraz kilka poleceń: Komenda ustalająca kurs wymiany danych: MSComm1.Settings = "1200,N,8,1" Polecenie wskazujące numer portu COM MSComm1.CommPort = 1 Polecenia otwierania i zamykania portu COM MSComm1.PortOpen = Prawda MSComm1.PortOpen = Fałsz Polecenia wysyłające +12 V na odpowiedni pin złącza com: MSComm1.RTSEnable = True RTS (7) - nazwa i numer pinu MSComm1.DTREnable = True DTR(4) Polecenia wyprowadzające -12V MSComm1.RTSEnable = Fałsz MSComm1.DTREwłączony = Fałsz Można odpytywać piny CD (1), CTS (8), DSR (6) pod kątem obecności stanu pojedynczego lub zerowego. Jeśli MSComm1.CDHolding = True Then (jeśli jeden, to…) Jeśli MSComm1.CDHolding = False Then (jeśli zero, to…) Przesyłanie kodu ASCII znaku lub ciągu znaków na wyjście Tx (3): MSComm1.Wyjście = "A" Liczby MSComm1.Output = Chr(10) liczba może wynosić od 0…255 Wpisując takie polecenie w timerze i zmieniając liczbę lub symbol, możesz stworzyć modulację PWM. Więcej szczegółów na temat poleceń znajdziesz pobierając opis sterowania Microsoft Comm Control. Teraz, mając ten kod, możesz napisać szereg programów do zbierania danych. Np. woltomierz, amperomierz, miernik temperatury, prosty oscyloskop, zapisz dane do pliku. Pomiary można przeprowadzać raz na 1 ms lub raz na godzinę i dzień, monitorując w ten sposób procesy długoterminowe. Do pracy z napięciami przemiennymi (przechodzącymi przez 0), a także do rozszerzenia granic pomiaru, wymagany jest wzmacniacz wejściowy, którego obwód można pobrać z [1]. Aby pracować z napięciem sieciowym lub z urządzeniami, które nie są odizolowane galwanicznie od sieci, konieczne jest optoizolowanie obwodu od komputera. Pobierz kody źródłowe przykładowych programów (8 kB) literatura
Autor: =ShooRooP=, evei [pies] mail.ru; Publikacja: cxem.net Zobacz inne artykuły Sekcja Komputery. Czytaj i pisz przydatne komentarze do tego artykułu. Najnowsze wiadomości o nauce i technologii, nowa elektronika: Maszyna do przerzedzania kwiatów w ogrodach
02.05.2024 Zaawansowany mikroskop na podczerwień
02.05.2024 Pułapka powietrzna na owady
01.05.2024
Inne ciekawe wiadomości: ▪ System identyfikacji i komunikacji bezprzewodowej Texas Instruments RF430F5978 ▪ Stan nadtwardości uzyskany w warunkach doświadczalnych Wiadomości o nauce i technologii, nowa elektronika
Ciekawe materiały z bezpłatnej biblioteki technicznej: ▪ sekcja witryny Urządzenia komputerowe. Wybór artykułów ▪ artykuł Goes-buzzes Zielony szum. Popularne wyrażenie ▪ artykuł Co jedzą ryby? Szczegółowa odpowiedź ▪ artykuł Akokantera abisyński. Legendy, uprawa, metody aplikacji ▪ artykuł Zaawansowana sonda logiczna TTL. Encyklopedia elektroniki radiowej i elektrotechniki
Zostaw swój komentarz do tego artykułu: Wszystkie języki tej strony Strona główna | biblioteka | Artykuły | Mapa stony | Recenzje witryn www.diagram.com.ua |