- zasilanie 2,8…3,6 V z uruchamianego układu; zewnętrzny zasilacz 8…15 V; USB np. PowerBank; zewnętrzne napięcie 5 V,
- pobór prądu przy zasilaniu 5 V 35…50 mA,
- wyświetlacz OLED kolorowy 16-bit 96×64 punkty,
- trzy diody LED sygnalizujące poziom niski, wysoki, impuls,
- sygnalizacja na LCD i LED poziomu „H”, „L”, stanu trzeciego (OC, OD), stanu zabronionego,
- dowolnie ustawiane poziomy logiczne w zakresie 5…95% Vcc,
- wykrywanie zbocza narastającego/opadającego przebiegu do 45…50 MHz,
- pomiar częstotliwości 0,1 Hz…36 MHz, 6 zakresów pomiarowych przełączanych automatycznie po dwa dla zakresu Hz, kHz, MHz, rozdzielczość 0,01 Hz/1 Hz/1 kHz,
- pomiar czasu trwania impulsu/okresu 27 ns…2 s, 2 zakresy (μs, ms) rozdzielczość 27 ns/1 μs,
- dla sygnałów poniżej 1 kHz wyliczanie częstotliwości na podstawie okresu sygnału,
- wyliczanie wypełnienia impulsu, wyświetlanie w formie graficznej i liczbowej,
- funkcja HOLD,
- oscyloskop 1 Ms/s, zakres napięć 0…Vcc, 10 zakresów podstawy czasu: od 1 kS/s do 1 MS/s,
- USB do konfiguracji parametrów pracy, zapamiętywanie nastaw,
- PCB przystosowane do obudowy KM-80.
Jednymi z pierwszych układów cyfrowych były układy serii TTL zasilane napięciem 5 V ±5%. Za niski poziom logiczny przyjmują stan o napięciu z zakresu 0 do 0,8 V, a logiczna jedyna to stan wysoki, o napięciu 2,4 V do 5 V. Zakres ten odnosi się do napięć od strony wejść układów, na wyjściach zakres jest mniejszy. Napięcia z zakresu ponad 0,8 V a mniej niż 2,4 V są traktowane jako poziom zabroniony. Producent układu, nie gwarantuje jak układ zinterpretuje takie napięcie, czy jako poziom niski czy wysoki.
Wyjątek stanowią układy z wejściem Schmitta, które mają histerezę. Napięcia z zakresu 1,5...2 V są interpretowane jako poziom „H”, 0,6...1,1 V jako „L”. W zakresie napięć, w którym bramka Schmitta nie interpretuje poziomu „H” ani „L”, niejako pamięta poprzedni stan. Jeśli więc bramka była w stanie „H” a napięcie spadnie poniżej 1,5...2 V bramka nadal będzie „widzieć” stan „H” do czasu aż napięcie na wejściu bramki spadnie do 0,6...1,1 V. Podobna reguła obowiązuje przy wzroście napięcia, gdy wejście było w stanie „L”, napięcie do 1,5...2 V bramka interpretuje nadal jako „L”.
Nieco inne są poziomy napięć w układach CMOS. Tam napięcie z zakresu 0...30% napięcia zasilania to poziom „L”, 70...100% napięcia zasilania to poziom „H”. Progi przełączania w mikrokontrolerach mogą być jednak inne, np. 45% i 55%.
Z powyższych informacji wynika, że poziomy logiczne można zbadać woltomierzem. Niestety, woltomierz wykonuje ok. 3, a maksymalnie 10 pomiarów na sekundę, a układ TTL może przełączać się z częstotliwością 25 MHz czyli 25 milionów razy! Bez oscyloskopu nie da się więc nic zrobić, niestety, w latach świetności układów TTL, oscyloskop był urządzeniem bardzo drogim. Nawet w dzisiejszych czasach, gdy realny koszt nabycia oscyloskopu zmniejszył się jakieś sto razy, wielu początkujących nie stać na taki wydatek.
Alternatywnym rozwiązaniem jest sonda cyfrowa. Prawie każde czasopismo o tematyce elektronicznej opisywało konstrukcję takiej sondy, ale nawet komercyjne przyrządy, mają poważne wady. Nie nadają się lub mają duże ograniczenia w przypadku testowania współczesnych szybkich układów zasilanych napięciem 3,3 V lub niższym.
To zmusiło mnie do zbudowania nowszej wersji o niespotykanych w sondach właściwościach. Warto wspomnieć, że koszt sondy jest porównywalny do produkowanej seryjnie SL625, która nie potrafi odróżnić krótkich impulsów od przebiegu prostokątnego ani poziomu wysokiego od wyjścia z otwartym kolektorem. O pomiarze częstotliwości, czasu i oscyloskopie nie ma co marzyć.
Budowa i zasada działania
Schemat sondy pokazuje rysunek 1. Gdy sonda ma być zasilana z uruchamianego systemu, napięcie zasilające należy doprowadzić do J3. D3 i F1 chronią układy przed skutkami zbyt wysokiego napięcia zasilającego lub odwrotnej jego polaryzacji. W przypadku zasilania z USB lub zewnętrznego zasilacza (katoda D9) napięcie jest stabilizowane przez U2. Sercem sondy jest mikrokontroler ARM STM32F103 pracujący z częstotliwością 72 MHz. Wysokie taktowanie pozwala na pomiar częstotliwości sygnałów do 36 MHz oraz czasu z rozdzielczością 27 ns.
Wbudowany przetwornik ADC pozwala próbkować sygnał analogowy z częstotliwością 1 MS/s. Są to maksymalne, teoretyczne wartości i nie zawsze będą możliwe do osiągnięcia. Mikrokontroler obsługuje interfejs USB, który do pracy wymaga jedynie trzech zewnętrznych rezystorów. Komunikację z użytkownikiem zapewnia kolorowy wyświetlacz OLED i dwa przyciski. Zastosowania OLED zamiast TFT umożliwiło obserwację wyświetlacza pod dużymi kątami i zmniejszyło pobór prądu.
Badany sygnał, przez R2 doprowadzony jest do wejść układów scalonych. Kondensator C13 zwiera R2 dla wyższych częstotliwości, dzięki czemu nie tworzy on filtru dolnoprzepustowego o stosunkowo niskiej częstotliwości z pojemnościami montażowymi i wejściowymi układów U5, U6. Progi napięć komparatorów ustala mikrokontroler, dzięki czemu można w szerokich granicach ustawić poziomy napięć stanu niskiego i wysokiego. Bramki U3A, U3B sterują LED’ami informującymi o wystąpieniu poziomu niskiego i wysokiego. Ponadto informacje te doprowadzone są do GPIO mikrokontrolera. Opadające (aktywne) zbocza sygnałów z U3A i U3B wyzwalają multiwibratory U4A i U4B. Suma sygnałów z wyjść U4 steruje diodą informującą o wystąpieniu aktywnego zbocza. Ze względu na to, że D7 informuje zarówno o zboczu narastającym jak i opadającym, miga z częstotliwością dwa razy większą niż częstotliwość sygnału wejściowego. Informacje z wyjść multiwibratorów, są także doprowadzone do wejść generujących przerwania mikrokontrolera.
Sygnał wejściowy z ostrza sondy, jest doprowadzony także do wejścia ADC mikrokontrolera (PA0). Ponadto, przy zwartych wyprowadzeniach 1-2 JP1, doprowadzony jest do wejść timerów 1 i 2. Przestawiając zworkę na JP1 w pozycję 2-3, do wejść timerów doprowadzony jest sygnał występujący za komparatorem wykrywającym poziom niski. Obie opcje ustawienia JP1 mają swoje wady i zalety. Przy zwartych 2-3 sonda wnosi mniejsze obciążenie pojemnościowe do badanego układu, jednocześnie poprawnie jest interpretowany poziom niski. Niestety, mogą pojawić się oscylacje gdy badany sygnał będzie miał łagodne zbocza. Problem mogłoby rozwiązać wprowadzenie histerezy dla komparatorów albo przerzutnik RS sterowny z wyjść U3A i U3B. Niestety wymaga to dodania kolejnego układu a miejsca na PCB zbyt dużo nie ma. Oscylacje mogą być na tyle kłopotliwe, że sfałszują wynik pomiaru częstotliwości i/lub czasu. Problemu oscylacji nie ma, gdy JP1 zwiera wyprowadzenia 1-2. Niestety, progi przełączania wynoszą wtedy ok. 50% Vcc a pojemność wejściowa sondy jest większa.
Montaż i uruchomienie
Montaż można przeprowadzić w typowy sposób, poczynając od elementów najmniejszych ale zaleca się najpierw zamontować elementy bierne oraz elementy niezbędne do pracy zasilacza. Po uruchomieniu zasilacza, można zamontować pozostałe elementy. Rozmieszczenie elementów pokazują rysunki 2 i 3. Dodatkowo pomocne będą fotografia tytułowa oraz fotografia 1 pokazujące zmontowaną płytkę. Diody LED powinny być zamontowane 9 mm nad płytką, dzięki czemu będą lekko wystawały poza obudowę. Wysokość montażu wyświetlacza OLED zależy od tego, czy i w jakiej grubości szybę ochronną będzie on wyposażony. Program do mikrokontrolera można wgrać używając złącza J6 oraz programatora ST-LINK V2.
Do uruchomienia sondy niezbędny będzie kabel mini USB oraz program terminala z protokołem VT-100. Polecam TeraTerm lub PuTTY. Termite, BrayTerminal nie nadają się bo nie interpretują kodów ANSI i na ekranie zobaczymy „krzaczki”. Zanim uruchomimy terminal, w systemie Windows, konieczna może być instalacja sterowników klasy CDC, które można pobrać ze strony STM Elektronics http://bit.ly/37e7bw7. W przypadku systemu Linux nie instaluje się sterowników dla klasy CDC, system „zobaczy” sondę bez dodatkowych zabiegów. Instalacja w systemie Windows jest typowa i nie ma sensu jej omawiać, natomiast znalezienie numeru portu COM może być kłopotliwe, zwłaszcza gdy jest ich dużo zainstalowanych w systemie. Aby znaleźć numer portu należy uruchomić menadżer urządzeń.
Następnie należy odnaleźć port o nazwie: „STMicroelektronics” (rysunek 4). Gdy odnaleziono więcej niż jeden port można próbować odłączyć sondę i zobaczyć który port zniknął, można też w terminalu wybierać numery COM przypisane do STMicroelektronics wydać komendę ati lub @n aby wyświetlić nazwę urządzenia.
Jednak najszybszym sposobem identyfikacji, zwłaszcza gdy portów jest dużo, będzie otworzenie okna właściwości i tam w szczegółach sterownika (rysunek 5) odczytamy VID i PID, który jest taki sam dla wszystkich typowych urządzeń klasy CDC STMicroelektronics oraz numer seryjny, który dla sondy, przyjmuje ciąg znaków SONDA_LOG_0001.
W systemie Linux komenda lsusb –tree wyświetli drzewo urządzeń USB a ls /dev/ttyACM* pokaże wszystkie urządzenia CDC (rysunek 6).
W przykładzie znaleziono jedno ttyACM0. Komenda udevadm info -a /dev/ttyACM0 wyświetli szczegóły urządzenia, znajdziemy tam VID i PID oraz nazwę tak jak w przypadku Windows. Gdy już znamy numer portu COM, wystarczy go wskazać w programie terminala (rysunki 7 i 8), parametry transmisji nie są istotne. W systemie Linux można posłużyć się programem PuTTY. Poprawność pracy terminala sygnalizuje pojawiający się co dwie sekundy znak zachęty (>).
Naciskając klawisz F1 lub sekwencję @? zakończoną znakiem ENTER, wyświetlimy ekran pomocy (rysunek 9).W pierwszej kolumnie wyświetla się komenda, w następnej skrót klawiszowy jeśli istnieje, w kolejnej nazwa komendy. W kolorze CYAN, wyświetla się aktualna wartość parametru, jeśli komenda takiego wymaga, po niej, na żółto, wyświetlony jest zakres wartości jaki komenda akceptuje. Przykład z rysunku 10 oznacza, że aktualna wartość ustawiona komendą @l jest równa 0, akceptowane wartości 0 i 1. Aby zmienić ustawienie należy wydać komendę @l=1 i nacisnąć ENTER. Oprogramowanie sondy akceptuje znaki CR, LF jak i CR+LF, LF+CR, tak więc nie trzeba konfigurować znaku zakończenia w terminalu.
Konfiguracja i obsługa
Spis komend sondy z wyjaśnieniami pokazano w tabeli 1. Nie ma sensu szczegółowe omawianie każdej komendy. Wyjaśnienia może wymagać @l. Parametr równy 1 włącza opcję pracy dla leworęcznych. Ekran zostanie obrócony o 180° oraz zamienione między sobą funkcje przycisków.
Komenda | Parametry | Funkcja |
@? lub F1 | – | wyświetla pomoc |
@n | – | nazwa programu |
@v | – | wersja programu i data kompilacji |
ATI | – | informacje o programie |
RST | – | restart programu |
@l | 0,1 | opcja dla leworęcznych |
@d | 5…16 | liczba zakresów podstawy czasu |
@o | 100…1000 | czas reakcji przycisku na włączenie badania wyjścia otwarty kolektor |
@H | 5…95 oraz „t” i „c” | Level H |
@L | 5…95 oraz „t” i „c” | Level L |
@s | – | numer seryjny i informacje o urządzeniu |
F9 | – | kopia ekranu LCD w terminalu w IntelHex |
Komenda @d wybiera z ilu zakresów podstawy czasu będziemy korzystać. Raczej rzadko potrzebne są wszystkie, zwłaszcza te z wolnym samplowaniem. Gdy zakresów jest dużo, przełączanie ich staje się niewygodne. Komendą @d można ograniczyć liczbę zakresów do wymaganej.
Przycisk HOLD/PullUP pełni dwie funkcje. Krótkie naciśnięcie włącza/wyłącza funkcję hold, długie naciśnięcie to test wyjścia z otwartym kolektorem. Komenda @o pozwala ustawić czas, po którym naciśnięcie przycisku będzie interpretowane jako długie naciśnięcie. Czas w komendzie @o wyrażony jest w milisekundach i zawiera się w granicach od 100 ms do sekundy. Dodatkowo, gdy czas jest parzysty, tryb otwarty kolektor (OC) jest bistabilny (pierwsze długie przyciśnięcie HOLD włącza tryb OC, drugie wyłącza) gdy czas jest nieparzysty tryb OC działa tylko przez czas trzymania przycisku HOLD.
Komendy @H i @L ustawiają progi napięć, które są interpretowane jako poziom „H” i „L”. W programie nie ma mechanizmów ograniczających te wartości, ponieważ sondą posługują się fachowcy i wiedzą jakie parametry wpisać. Wprowadzenie dla komendy ustawiania poziomu litery c ustawi poziomy CMOS (30 i 70% dla L i H), t poziomy TTL (24 i 72%), który przy zasilaniu 3,3 V dadzą poziomy TTL (napięcia około 0,8 V i 2,4 V). Dla TTL przyjęto napięcie zasilania sondy 3,3 V, ponieważ najprawdopodobniej będzie zasilana z 5 V doprowadzonego do gniazda USB.
Gdy komunikacja z komputerem działa poprawnie, sonda jest skonfigurowana, można przystąpić do testu. W tym celu, na wejście sondy należy doprowadzić sygnał z generatora o częstotliwości 1 kHz i amplitudzie w zakresie 0...Vcc sondy. Na ekranie powinien pokazać się wynik pomiaru (rysunek 11). Na samej górze wyświetlane są symbole „H” i „L” oraz symbol fali. Informuje to o wykryciu fali prostokątne o częstotliwości co najmniej kilkudziesięciu Hz. Poniżej graficznie i cyfrowo na niebieskim tle wypełnienie przebiegu. Następnie na żółto częstotliwość sygnału, jego okres, na biało na szarym tle. Na samym dole, na czarnym tle, na zielono czas trwania poziomu wysokiego, na czerwono niskiego. W niebieskim kolorze wyświetlana jest częstotliwość wyliczona z pomiaru okresu sygnału. Można sprawdzić inne częstotliwości i wypełnienie impulsów. Przycisk MODE zmienia wygląd ekranu (rysunek 12), następne naciśnięcie przycisku włączy oscyloskop (rysunek 13).
Przyciskiem SCALE/PullUP zmienia się podstawę czasu. Nastawy (wybrany ekran, podstawa czasu) są zapisywane po 10 sekundach bezczynności użytkownika, do pamięci EEPROM emulowanej w pamięci FLASH. Kolejne naciśnięcie MODE wyświetli ponownie ekran sondy cyfrowej.
Powrócę jeszcze do dokładniejszego omówienia głównej funkcjonalności sondy. Wcześniejsze ekrany dotyczyły sytuacji, w której na wejście sondy podany był sygnał o częstotliwości co najmniej kilkudziesięciu Hz. Gdy sonda nie jest podłączona do badanego obwodu, lub gdy jest w stanie trzecim zobaczymy procentową wartość napięcia na ostrzu sondy (rysunek 14). Wartość procentowa odnosi się do napięcia zasilania mikrokontrolera. Wykryty poziom niski sygnalizuje litera „L” i procentowa wartość napięcia (rysunek 15). W przypadku poziomu wysokiego pojawi się litera „H” a wartość napięcia przybierze kolor czerwony.
Na poprzednim rysunku pomiar sygnalizuje wystąpienie przebiegu o częstotliwości 0,2 Hz (okres 5 sekund). Rozdzielczość pomiaru wynosi 0,01 Hz. Standardowa metoda pomiaru częstotliwości, przez zliczanie liczby impulsów w ciągu zadanego czasu, dla osiągnięcia rozdzielczości 0,01 Hz, wymagałaby czasu bramkowania 100 sekund (ponad 1,5 minuty). Wbudowane w sondę mechanizmy, pozwalają mierzyć niskie częstotliwości w czasie równym okresowi sygnału. Tak naprawdę, mierzony jest czas trwania okresu po czym przeliczny na częstotliwość. Dzięki temu pomiar przebiegów o częstotliwościach poniżej 1 kHz wykonuje się bardzo szybko z wysoką rozdzielczością.
Odwrotny mechanizm wykorzystano przy pomiarze okresu sygnału o wysokiej częstotliwości. Gdy pomiar czasu byłby obarczony dużym błędem, przeliczana jest zmierzona częstotliwość na czas (rysunek 16). Ze względu na to, ze nie ma możliwości pomiaru współczynnika wypełnienia, do jego oszacowania trzeba posłużyć się diodami D5, D6, których intensywność świecenia jest uzależniona od współczynnika wypełnienia.
Sonda potrafi odróżnić nieaktywne wyjście z otwartym kolektorem (drenem) lub w stanie trzecim od wyjścia znajdującego się w stanie zabronionym. Aby zrobić test, trzeba przytrzymać przycisk HOLD. Na wyświetlaczu pokaże się napis „OC” (rysunek 17). Symbol może nie pojawić się gdy ostrze sondy będzie połączone z badanym obwodem. Zależnie od konfiguracji (komendą @o) przycisk trzeba trzymać przez cały czas testu lub nie. W czasie gdy na wyświetlaczu wyświetlany jest symbol „OC” ostrzem sondy należy dotknąć do badanego obwodu. Jeśli napis nie zniknie, oznacza to, że badany punkt jest wyjściem OC lub nigdzie nie jest podłączony, jeśli natomiast ukaże się wartość napięcia to mamy do czynienia z stanem zabronionym.
Krótkie naciśnięcie przycisku HOLD (czas definiowany komendą @o), zatrzymuje odświeżanie wyświetlacza sygnalizując ten fakt napisem „HOLD”, kolejne naciśnięcie włączy normalną pracę sondy.
Oscyloskop
Na koniec kilka informacji o dodatkowej funkcjonalności jaką jest wbudowany prosty oscyloskop. Jego parametry nie są imponujące ponieważ ma on służyć do podglądania sygnału, który dociera do przetwornika ADC w uruchamianym systemie. Stąd zakres napięć ograniczony do 0...Vcc. Poza wyborem podstawy czasu nie ma innych regulacji, jak np. wzmocnienie czy tłumienie sygnału albo przesunięcia wykresu w pionie. Przy dużych częstotliwościach próbkowania wymagana jest mała impedancja źródła sygnału, w przeciwnym wypadku kondensator w układzie S&H nie zdąży się naładować co sfałszuje wygląd oscylogramu. Synchronizacja przebiegu jest automatyczna, ze względu na to, że nie ma prostego sposobu na ustawienie poziomu wyzwolenia w obecnej konstrukcji interfejsu komunikacyjnego (dwa przyciski) a ustawianie poziomu wyzwalania z USB nie byłoby zbyt wygodne. Nie każdy przebieg będzie chciał się dobrze synchronizować w sposób automatyczny. Wynika to z faktu, że liczona jest średnia z próbek zgromadzonych w buforze, po czym odnajdowane miejsce spadku napięcia poniżej średniej a następnie jego wzrostu powyżej średniej. Dla przebiegów okresowych taka metoda synchronizacji wystarczy, dla bardziej skomplikowanych już nie. Oscyloskop o lepszych parametrach, z tłumikami, wzmacniaczami, to temat na osobną konstrukcję.
Podsumowanie
Zmontowaną i uruchomioną płytkę sondy można umieścić w obudowie KM-80, jednak wymaga to wycięcia odpowiednich otworów, jak na fotografii 2.
Maksymalne osiągi sondy mają pewne ograniczenia. Teoretycznie możliwe jest zmierzenie okresu o czasie trwania 27 ns (przebieg 36 MHz) ale rozdzielczość pomiaru jest mała. Wynik pomiaru 54 ns może świadczyć o obecności przebiegu o częstotliwości z zakresu 9…18 MHz. Pomiar współczynnika wypełnienia przy tak dużych częstotliwościach nie ma więc większego sensu. Dlatego w podstawowej wersji oprogramowania czasy impulsów są mierzone do 1 MHz. Maksymalna mierzona częstotliwość to 25 MHz (testowane do 22 MHz). Ograniczenia obowiązują także dla oscyloskopu co jest związane z układem S&H. Problem rozwiązałby bufor w postaci wzmacniacza operacyjnego ale to oznacza komplikację budowy sondy. Na razie, częstotliwość samplowania, w podstawowej wersji jest ograniczona do 10 kHz. W sprawie nowych wersji oprogramowania wykorzystującego maksymalne możliwości mikrokontrolera proszę kontaktować się z autorem.
- R1, R7: 10 kΩ
- R2: 1 kΩ
- R3, R12, R13: 470 Ω
- R6: 1,5 kΩ
- R4, R5: 22 Ω
- R10, R11, R15, R17: 470 kΩ
- R14, R16: 47 kΩ
- L1: 0 Ω
- C1, C2, C15, C16: 10 μF
- C3, C4, C9, C10, C11, C12, C14: 100 nF
- C5, C8: 470 nF
- C13: 10 nF
- C6, C7: 22 pF
- U2: SPX1117M3-L-3-3
- U3: 74HC132D
- U4: 74HC123D
- U5: STM32F103C8T6
- U6: TLV3502AIDG4
- D2 D8 D9: SS16
- D3: BZT55C3V6-GS08
- D5: Dioda LED zielona 5 mm
- D6: Dioda LED czerwona 5 mm
- D7: Dioda LED żółta 5 mm
- F1: 0ZCJ0010FF2E
- Q1: 8.00M-HC49-S
- J2: Gniazdo USB-B Mini: MUSB-B5-S-RA-SMT
- J3: NS25-W2K
- J5: Goldpin 2×1 + jumper
- J6: ZL201-05G
- J8: OLED RGB 0,95 96×64 KAMAMI ID: 561210
- S1 S2: Mswitch SW5.7 15 mm
- JP1: Goldpin 3×1 + jumper