Przystawka laboratoryjna JJMDAQ

Przystawka laboratoryjna JJMDAQ

Od zawsze interesowało mnie podłączanie do komputera urządzeń zewnętrznych. W pierwszych latach rewolucji komputerowej podłączenie czegokolwiek do PC wymagało zdobycia lub własnoręcznego wykonania karty ze złączem ISA, którą montowało się wewnątrz obudowy komputera. Szyna ISA8/16 po pewnym czasie została zastąpiona nowszymi standardami (np. VESA, PCI), które wymagały już stosowania dedykowanych, trudnodostępnych układów scalonych. Przez pewien czas komputery PC/AT/ATX posiadały złącze Centronics (LPT), które – szczególnie w trybie Bitronics – świetnie nadawało się do sterowania kilkoma sygnałami TTL. Port równoległy również szybko zniknął, w szczególności z laptopów, a powszechnym interfejsem komunikacyjnym stało się USB. W nowoczesnych systemach operacyjnych (Windows, Linux czy Android) bezpośredni dostęp do urządzeń wejścia/wyjścia komputera wymaga stosowania odpowiednich sterowników systemu operacyjnego, co dodatkowo komplikuje całe zagadnienie.

Podstawowe parametry:
  • 2 porty 8-bitowe (cyfrowe linie I/O),
  • jeden 8-bitowy port wielofuncyjny (ADC/DAC/cyfrowe linie I/O),
  • jeden port specjalnego przeznaczenia (cyfrowe linie I/O, PWM, generator przebiegu prostokątnego, licznik impulsów, miernik częstotliwości, SPI/I²C/1-Wire, komparator analogowy),
  • tryb pracy portów jako 8-bitowy port równoległy I/O (tylko porty A, B i D),
  • częstotliwość PWM: 1,22 kHz, 9,5 kHz, 78,125 kHz lub 156,25 kHz,
  • częstotliwość przestrajanego sygnału prostokątnego: 1,2 kHz...2,5 MHz,
  • zakres pomiarowy funkcji częstościomierza: do 10 MHz,
  • rozdzielczość ADC i DAC: 12 bitów/0...5 V,
  • częstotliwość taktowania I²C: 100 kHz, 400 kHz, 1 MHz,
  • częstotliwość taktowania SPI: 1,25 MHz lub 5 MHz,
  • zasilanie i komunikacja: port USB typu B z funkcjonalną izolacją galwaniczną,
  • sterowanie: komendy SCPI (9600, 8, NP, 1),
  • wbudowany wyświetlacz LCD 1,8”.

Świat idzie jednak do przodu i obecnie użytkownik może w każdej chwili zakupić praktycznie dowolne urządzenie, które, nie tylko przez USB, może sterować czym tylko dusza zapragnie. Pojawienie się mikrokontrolerów i ekosystemów typu Arduino czy Raspberry Pi zdaje się rozwiązywać problem. Wystarczy do portu USB wpiąć proste Arduino i po napisaniu niewielkiego programu można już za jego pomocą sterować peryferiami.

Szczególnie interesującą kategorią są urządzenia DAQ (Data AcQuisition), które umożliwiają między innymi zbieranie i przetwarzanie danych z czujników pomiarowych. W klasycznym urządzeniu DAQ użytkownik ma do dyspozycji szereg cyfrowych i/lub analogowych linii wejścia/wyjścia, których stanem można zarządzać za pomocą odpowiedniego oprogramowania. Niestety cena urządzeń DAQ w wielu przypadkach może być dość wysoka, a dodatkowo są to zwykle rozwiązania zamknięte, sprzedawane pod klucz jak przysłowiowe „czarne skrzynki”.

Po latach stosowania rozwiązań ad-hoc umożliwiających podłączanie się do komputera, postanowiłem skonstruować urządzenie, które w końcu spełni moje wymagania. Tak powstała pokazana na fotografii tytułowej przystawka laboratoryjna JJMDAQ.

Zgodnie z założeniami urządzenie oferuje 33 wejścia/wyjścia cyfrowe, w tym 8 analogowych. Dodatkowo w przystawce postanowiłem zaimplementować obsługę podstawowych interfejsów szeregowych (I²C, SPI, 1-Wire), generator PWM i przebiegu prostokątnego oraz prosty licznik impulsów i miernik częstotliwości.

Przystawka bazuje na 44-nóżkowym mikrokontrolerze PIC16F887, który wyposażony jest w całkiem pokaźny zestaw linii GPIO oraz peryferiów mogących realizować powyżej wymienione funkcje. Procesor taktowany jest zegarem 20 MHz. Schemat ideowy przystawki pokazano na rysunku 1.

Rysunek 1. Schemat ideowy przystawki JJMDAQ

Część analogowa przystawki bazuje na układzie AD5592R [2] firmy Analog Devices. AD5592 to 8-kanałowy, w pełni konfigurowalny front-end ADC/DAC/GPIO. Każdy kanał może być niezależnie skonfigurowany jako 12-bitowy przetwornik ADC bądź DAC pracujący w zakresie napięć 0...5 V albo jako GPIO, czyli cyfrowe wejście bądź wyjście. Programowanie układu realizowane jest przez zestaw 16-bitowych rejestrów oraz 4-sygnałowy interfejs SPI. Schemat blokowy układu przedstawiono na rysunku 2.

Rysunek 2. Schemat blokowy układu AD5592

Sygnały wejścia/wyjścia przystawki dostępne są w postaci 4 portów: A, B, D oraz X. PORTA obsługiwany jest przez układ AD5592, a jego linie mogą pełnić funkcje wejść ADC, wyjść DAC albo GPIO. PORTB oraz PORTD stanowią proste wejście/wyjście cyfrowe. 9-bitowy PORTX, oprócz funkcji GPIO, może być skonfigurowany do obsługi funkcji alternatywnych:

  • generator sygnału PWM,
  • generator przebiegu prostokątnego o zmiennej częstotliwości,
  • licznik impulsów,
  • prosty miernik częstotliwości sygnału TTL,
  • interfejs SPI,
  • interfejs I²C,
  • interfejs 1-Wire,
  • komparator analogowy.

Każdy sygnał dostępny w interfejsie może być sterowany niezależnie. Porty A, B i D mogą być również skonfigurowane jako 8-bitowe, równoległe wejście/wyjście.

Generator PWM i generator przebiegu prostokątnego zrealizowane zostały za pomocą bloku CCP (Capture/Compare/PWM) mikrokontrolera. Wybrana częstotliwość sygnału PWM może wynosić 1,22 kHz lub 9,5 kHz z rozdzielczością 10 bitów albo 78,125 kHz lub 156,25 kHz z rozdzielczością 8 bitów.

Częstotliwość przebiegu prostokątnego o wypełnieniu 50% można zmieniać w zakresie od 1,2 kHz do 2,5 MHz. Oprogramowanie przystawki dopasuje wprowadzoną przez użytkownika częstotliwość do możliwości elektroniki bloku PWM.

16-bitowy, bramkowany licznik impulsów obsługiwany jest przez licznik TIMER1 mikrokontrolera. Prosty miernik częstotliwości wykorzystuje również TIMER1 oraz TIMER0 (z preskalerem równym 256) do sterowania podstawą czasu, która dobierana jest automatycznie w zależności od częstotliwości badanego przebiegu. Miernik umożliwia pomiar częstotliwości do 10 MHz.

Interfejsy komunikacyjne I²C oraz SPI zrealizowano za pomocą bloku MSSP (Master Synchronous Serial Port) mikrokontrolera. Interfejs I²C może pracować z częstotliwościami 100 kHz, 400 kHz albo 1 MHz. Interfejs SPI może pracować w trybach M0, M1, M2 lub M3 z częstotliwościami 1,25 MHz albo 5 MHz. Interfejs 1-Wire zrealizowano w sposób programowy.

W mikrokontrolerze PIC16F887 znajduje się również moduł komparatora analogowego, którego wejścia (C1IN+, C1IN–) oraz wyjście (C1OUT) również zostały wykorzystane.

Opisane powyżej funkcje alternatywne dostępne są na wybranych liniach 9-bitowego portu PORTX, który domyślnie działa jako cyfrowe wejście/wyjście. Włączenie i wyłączenie funkcji alternatywnych realizowane jest odpowiednimi rozkazami sterującymi.

Wszystkie sygnały (wraz z zasilaniem 5 V i GND) wyprowadzone są na cztery 10-stykowe, rozłączalne listwy zaciskowe typu 15EDGK3.81, a wejścia mogą być opcjonalnie zabezpieczone dodatkowymi, niewielkimi (np. 100 Ω) rezystorami szeregowymi. Po włączeniu zasilania wszystkie linie interfejsu skonfigurowane są jako cyfrowe wejścia.

Całość zmontowano w standardowej, plastikowej obudowie Z34A firmy Kradex.

Urządzenie zostało także wyposażone w 1,8-calowy, kolorowy wyświetlacz LCD Waveshare ST7735 [3], na którym w czasie rzeczywistym wyświetlane są informacje o aktywnych funkcjach oraz stany cyfrowe i analogowe poszczególnych linii interfejsu. Wyświetlacz nie jest niezbędny do pracy przystawki, ułatwia jednak jej użytkowanie. W szczególności jeżeli jedynym zadaniem jest monitorowanie sygnałów, to po podłączeniu ich do portów wejściowych wystarczy włączyć zasilanie przystawki, a stany sygnałów wyświetlone zostaną na wyświetlaczu.

Zarówno wyświetlacz, jak i układ AD5592 obsługiwane są przez interfejs SPI zrealizowany w sposób całkowicie programowy (bit-bang).

Przystawka jest zasilana i sterowana przez USB, zaś do obsługi tego ostatniego zastosowano kontroler FT230SX. W projekcie umieszczono klasyczne gniazdo USB typu B. Dodatkowo galwaniczną izolację interfejsu USB realizuje izolator ISO7221 oraz przetwornica DC/DC AM1S-0505.

Oprogramowanie sterujące

Mikrokontroler PIC16F887 dysponuje pamięcią programu o wielkości 8192 słów (instrukcji), która zorganizowana jest w postaci czterech bloków po 2048 słów oraz pamięć RAM o wielkości 368 bajtów. Aby zmieścić całe oprogramowanie w dostępnej pamięci, zrezygnowano z użycia gotowych bibliotek (np. obsługujących wyświetlacz LCD). Każda funkcja optymalizowana była pod kątem minimalizacji objętości tworzonego kodu maszynowego.

Komunikacja z przystawką realizowana jest przez port USB, który w systemie operacyjnym sterującego komputera widoczny jest jako port szeregowy RS-232C z konfiguracją 9600, 8, NP, 1. Transmisja realizowana jest bez przeplotu (tryb „none”). Ponieważ w większości systemów operacyjnych standardowo dostępne są sterowniki FTDI [4], obsługujące m.in. układ FT230SX, nie ma potrzeby ich wstępnej instalacji.

Zaimplementowany protokół komunikacji z użytkownikiem jest zgodny z koncepcją SCPI (Standard Commands for Programmable Instruments). Wszystkie rozkazy sterujące zrealizowane i przesyłane są za pomocą odpowiednio strukturyzowanych ciągów znaków ASCII.

Wysyłany rozkaz ma ograniczenie długości do 90 znaków i musi kończyć się sekwencją znaków specjalnych <cr><lf> lub tylko <cr>. W prezentowanej implementacji nie ma znaczenia wielkość liter. Odsyłana odpowiedź również kończy się sekwencją <cr><lf>.
Do obsługi przystawki nie jest więc wymagany żaden dedykowany program sterujący. Wystarczy dowolny program do komunikacji z portem szeregowym. W Windows może to być Hypertrm, PuTTY czy TeraTerm, w Linuksie np. minicom, a w systemie Android – Serial USB Terminal. Można również użyć mechanizmów wbudowanych w wiersz poleceń systemu. W przypadku użycia gotowych programów terminalowych, przydatnym może być skonfigurowanie w nich echa lokalnego, lokalnej obsługi znaków edycyjnych oraz odpowiedniego zakończenia linii. Bardzo wygodnym sposobem komunikacji może być też użycie monitora portu szeregowego z Arduino IDE. W celu uproszczenia oprogramowania parser rozkazów SCPI został pozbawiony obsługi sekwencji escape terminala VT100, odpowiedzialnych za działanie znaków sterujących takich jak DEL, Backspace, ruch kursora, itp.

Rozkazy SCPI tworzą strukturę hierarchiczną. Poszczególne składniki drzewa (tokeny) rozkazów oddzielane są znakami dwukropka (:). Znak spacji oddziela rozkaz od parametrów. Komenda zapytania (query), zwracająca wartość, kończy się znakiem zapytania (?). Pełny opis koncepcji i ramowej składni SCPI dostępny jest na stronie IVI Foundation [5].

W opracowanej wersji oprogramowania każdy poprawnie sformułowany i wykonany rozkaz jest zwrotnie potwierdzany jego echem do użytkownika, np.:

IDN? poprawny rozkaz zwrócenia wersji oprogramowania
JJMDAQ odpowiedź z DAQ

W przypadku błędu składni zwracany jest odpowiedni komunikat błędu.

ABC wysłanie błędnego rozkazu
ERROR 1:syntax odpowiedź z DAQ

Sterowanie poszczególnymi sygnałami cyfrowymi interfejsu wymaga wcześniejszej konfiguracji wybranej linii w tryb wejścia (IN) lub wyjścia (OUT). Do konfiguracji służy rozkaz CONF. Po włączeniu zasilania wszystkie piny przystawki skonfigurowane są jako wejścia cyfrowe.

CONF:xy IN lub CONF:xy OUT ustawienie trybu wejścia lub wyjścia pinu xy

Gdzie „xy” jest identyfikatorem danego pinu. Nazwa pinu składa się z identyfikatora portu (x) i numeru pinu (y): A0,..,A7, B0,..,B7, D0,..,D7, X0,..,X8.
Konfigurację wybranego pinu można w każdej chwili sprawdzić rozkazem:

CONF:xy?

Jeżeli wybrany pin (np. A0) został ustawiony jako wyjście (OUT), to ustawienie na nim stanu niskiego wymaga wykonania rozkazu:

A0 0 bądź A0 L lub A0 LO

Podobnie ustawienie stanu wysokiego:

A0 1 bądź A0 H lub A0 HI

Jeżeli pin B1 został skonfigurowany jako wejście (IN), to jego stan zwraca rozkaz:

B1? odczytanie stanu B1
0 lub 1 odpowiedź z DAQ

Próba ustawienia stanu pinu, który jest skonfigurowany jako wejście, spowoduje zwrócenie komunikatu błędu:

CONF:B1 IN konfiguracja pinu B1 jako wejście
CONF:B1 IN potwierdzenie wykonania rozkazu

B1 HI próba ustawienia stanu HI
ERROR 7:not OUT komunikat o błędzie

Podobnie komunikatem błędu skończy się próba odczytania stanu pinu, który jest skonfigurowany jako wyjście.

Sygnały w PORTA, PORTB i PORTD mogą być również obsługiwane jako 8-bitowe, równoległe wejście/wyjście, np.:
CONF:PORTD OUT konfiguracja PORTD jako wyjście
CONF:PORTD OUT potwierdzenie wykonania rozkazu

PORTD 0xAA lub PORTD 170 wpisanie do PORTD wartości 170
PORTD 0xAA potwierdzenie wykonania rozkazu

CONF:PORTD IN konfiguracja PORTD jako wejście
CONF:PORTD IN potwierdzenie wykonania rozkazu

PORTD? Odczytanie bajtu z PORTD
0…255 odpowiedź z DAQ

Poszczególne linie PORTA, oprócz funkcji cyfrowego wejścia/wyjścia, mogą spełniać rolę analogowych wyjść lub wejść. Podobnie sygnały w PORTX mogą obsługiwać funkcje alternatywne. Aby włączyć funkcję alternatywną, należy jawnie przeprogramować dany pin. Dla przykładu: włączenie funkcji przetwornika DAC na linii A1 i ustawienie na niej napięcia 2500 mV wymaga sekwencji:

DAC1 ON włączenie funkcji DAC na linii A1
DAC1 ON potwierdzenie wykonania rozkazu

DAC1 2048 wpisanie wartości w postaci liczby całkowitej (0...4095)
DAC1 2048 potwierdzenie wykonania rozkazu

DAC1 2500 mV wpisanie wartości w mV (0...5000)
DAC1 2500 MV potwierdzenie wykonania rozkazu


DAC1 OFF wyłączenie funkcji DAC na linii A1
DAC1 OFF potwierdzenie wykonania rozkazu

Podobnie włączenie generatora przebiegu prostokątnego i ustawienie np. częstotliwości 10 kHz wymaga sekwencji:

GEN ON włączenie generatora (pin X0)
GEN ON potwierdzenie wykonania rozkazu

GEN 10k ustawienie częstotliwości 10 kHz
GEN 10080Hz potwierdzenie ustawienia rzeczywistej częstotliwości

GEN OFF wyłączenie generatora
GEN OFF potwierdzenie wykonania rozkazu

W ten sam sposób włącza się, obsługuje i wyłącza pozostałe funkcje.

Komunikacja przez interfejs I²C na przykładzie obsługi pamięci AT24C04

Pojedyncza transakcja w interfejsie I²C rozpoczyna się sekwencją „Start”, a kończy sekwencją „Stop”. Stany te generowane są automatycznie w trakcie wykonywania rozkazu SCPI. Każde urządzenie w I²C ma fabrycznie przypisany adres, który jednoznacznie je identyfikuje. Bit LSB adresu o wartości 0 oznacza adres zapisu, a bit o wartości 1 – adres odczytu. Po przesłaniu adresu kolejne bajty są już specyficzne dla danego układu.

W przypadku pamięci AT24C04 [6] cztery najstarsze bity adresu mają wartości 1010. Trzy kolejne bity adresu układu: A2, A1 i A0 muszą odpowiadać stanom ustawionym na pinach A2, A1 i A0 układu scalonego. Sygnały SCL i SDA pamięci należy podłączyć odpowiednio do pinów X1 i X2 przystawki. Linie SCL i SDA muszą być również podciągnięte do VCC rezystorami o wartości około 4,7 kΩ. W prezentowanym przykładzie linie A2, A1 i A0 podłączone do masy wybierają stronę 0 pamięci. Dla pamięci podłączonej jak podano powyżej, adres zapisu to 0xA0, a odczytu – 0xA1. W zaimplementowanym rozkazie SCPI adres układu jest zawsze oddzielony od pozostałych parametrów znakiem przecinka (,).

Zgodnie z protokołem komunikacji z AT24C04, zapis do pamięci (page write) wymaga podania początkowego adresu na stronie (w poniższym przykładzie na stronie 0) i wartości bajtów do wpisania (w przykładzie: 10, 11, 12).

Odczyt z pamięci (sequential read) wymaga wstępnego wpisania adresu, od którego będą odczytywane dane. Po wygenerowaniu stanu „Repeated Start” należy podać ilość odczytywanych bajtów (w omawianym przykładzie: od adresu 1 następuje odczyt 2 bajtów). W rozkazie SCPI stan powtórzonego startu sygnalizowany jest znakiem średnika (;). Omawiana sekwencja rozkazów zapisu i odczytu, wraz z odpowiedziami od przystawki, przedstawiona została poniżej:

CONF:I2C M ustawienie szybkości I²C na 400 kHz
CONF:I2C M potwierdzenie z DAQ
I2C ON włączenie I²C (piny X1, X2)
I2C ON potwierdzenie z DAQ

I2C 0xA0, 0 10 11 12 od adresu 0 wpisanie wartości
10, 11, 12
I2C 0x0A, 0 10 11 12 potwierdzenie z DAQ

I2C 0xA0,1 ; 0xA1, 2 ustawienie adresu 1

i odczytanie 2 bajtów

11 12 odpowiedź z DAQ


I2C OFF wyłączenie I²C
I2C OFF odpowiedź z DAQ

Uwaga! Błędnie sformułowany rozkaz SCPI do obsługi pamięci AT24C04 może czasem spowodować zablokowanie działania pamięci. W takim przypadku najlepiej jest chwilowo odłączyć zasilanie od pamięci. Może być także konieczne zresetowanie przystawki.

Komunikacja przez interfejs 1-Wire na przykładzie obsługi czujnika temperatury DS18B20

Każda transakcja w interfejsie 1-Wire rozpoczyna się stanem „Reset”, po którym przesyłane są rozkazy zapisu do i odczytu z układu. Dodatkowo linia danych interfejsu musi być podciągnięta do VCC rezystorem o wartości około 4,7 kΩ (rysunek 3).

Rysunek 3. Sposób podłączenia pamięci (A) AT24C04 i czujnika temperatury (B) DS1820

Przykładowa sekwencja rozkazów umożliwiająca odczyt temperatury z czujnika DS18B20 [7] przedstawiona została poniżej:

WIRE ON włącznie 1-Wire (pin X1)
WIRE ON potwierdzenie z DAQ

WIRE:RST Reset, początek sekwencji
WIRE:RST potwierdzenie z DAQ

WIRE:WR 0xCC 0x44 inicjalizacja pomiaru temperatury
WIRE:WR 0xCC 0x44 potwierdzenie z DAQ

WIRE:RST Reset, początek sekwencji
WIRE:RST potwierdzenie z DAQ

WIRE:WR 0xCC 0xBE odczyt pamięci scratchpad
WIRE:WR 0xCC 0x44 potwierdzenie z DAQ

WIRE:READ 2 odczyt dwóch bajtów przetwornika
40 0 potwierdzenie z DAQ


WIRE OFF wyłączenie 1-Wire
WIRE OFF odpowiedź z DAQ

Komunikacja z przystawką za pomocą dedykowanego programu

Jak wcześniej wspomniano, komunikacja z przystawką nie wymaga użycia dedykowanego programu do obsługi. Wystarczy odpowiednio skonfigurowany program terminala szeregowego.

Nic jednak nie stoi na przeszkodzie, aby taki program napisać. Poniżej przedstawiono przykład w języku Python (wersja dla systemu Linux) wysyłający rozkaz IDN? i odbierający odpowiedź:

import serial

daq=serial.Serial(‘/dev/ttyUSB0’, 9600, timeout=1)
daq.write(b’IDN?\r\n’)
print(daq.readline())
daq.close()

Rysunek 4. Schemat montażowy płytki drukowanej (a – strona TOP, b – strona BOTTOM)

Komunikacja z przystawką za pomocą konsoli systemu operacyjnego

Do komunikacji z przystawką można również wykorzystać mechanizmy samego systemu operacyjnego i konsolę (wiersz poleceń, w Linuksie np. sh).

Jak wiadomo, z punktu widzenia systemu operacyjnego każde urządzenie to plik. W przypadku systemu Linux przystawka będzie zwykle widoczna jako plik specjalny o nazwie /dev/ttyUSB0. Na pliku specjalnym można wykonywać dowolne operacje, w szczególności można do niego pisać i czytać. Nieco bardziej zaawansowani użytkownicy, na co dzień korzystający z konsoli, z pewnością znają takie mechanizmy jak np. przekierowania czy tworzenie i uruchamianie własnych skryptów.

Przed rozpoczęciem komunikacji port szeregowy musi zostać skonfigurowany. W systemie Linux do konfiguracji można użyć polecenia stty:

stty –F /dev/ttyUSB0 speed 9600 cs8 –sctopb –parenb
–echo raw

W najprostszej wersji, na pierwszej konsoli, wywołujemy w celu czytania:

cat < /dev/ttyUSB0

a z drugiej konsoli poleceniem echo wysyłamy do przystawki rozkazy, np:

echo -e ”IDN?\r\n” > /dev/ttyUSB0

Aby zakończyć działanie cat na pierwszej konsoli, należy wprowadzić sekwencję CTRL+C.

Oczywiście powyższy przykład może być dowolnie rozbudowany (np. poprzez uruchomienie cat w tle lub przez użycie bardziej zaawansowanych konstrukcji sh). Podobne mechanizmy dostępne są również w konsoli systemu Windows.

Lista wszystkich rozkazów sterujących przystawką zebrana została w tabelach poniżej.

dr inż. Janusz J. Młodzianowski
Wydział Matematyki, Fizyki i Informatyki, Uniwersytet Gdański

Wykaz elementów:
Rezystory:
  • R1: 10 kΩ
  • R3...R6: 27 Ω
  • R7...R39: 100 Ω
Kondensatory:
  • C1, C4, C8, C11, C12, C15: 100 nF
  • C2, C3: 15 pF
  • C5...C7: 47 pF
  • C9, C10: 47 μF
  • C13: 10 μF
  • C14: 4,7 μF
Półprzewodniki:
  • D1: 1N4148
  • D2, D3: dioda LED THT
  • U1: AD5592
  • U2: PIC16F887
  • U4: ISO7221
  • U5: FT230X
  • U6: przetwornica DC/DC, typ AM1S-0505
Pozostałe:
  • J1: złącze SIP 5 pin.
  • J2...J5: listwa zaciskowa rozłączalna, typ 15EDGK3.81
  • J6: gniazdo USB typu B (THT)
  • R2: koralik ferrytowy (THT, osiowy)
  • X1: kwarc 20 MHz THT (HC49)
  • Wyświetlacz LCD 1,8” ST7735 (Waveshare)
  • Obudowa Z34A (Kradex)

Literatura:

  1. www.digilent.com
  2. www.analog.com/en/media/technical-documentation/data-scheets/ad5592r.pdf
  3. www.waveshare.com/1.8inch-lcd-module.htm
  4. ftdchip.com/drivers
  5. www.ivifoundation.org/downloads/SCPI/scpi-99.pdf
  6. www1.microchip/downloads/en/DeviceDoc/doc0180.pdf
  7. www.analog.com/en/media/technical-documentation/data-sheets/ds18b20.pdf
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik maj 2026

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2026

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje maj 2026

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna maj 2026

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2026

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów