Wykonaj cyfrowy oscyloskop za pośrednictwem Arduino: 3 kroki

Wykonaj cyfrowy oscyloskop za pośrednictwem Arduino: 3 kroki

Spisu treści:

Anonim

Często widziano ludzi tworzących cyfrowy oscyloskop online, DSO musi mieć cyfrowo-analogową jednostkę konwersji, zgodnie z d / a układ konwersji można podzielić na dwa tryby: 1. Specjalny układ ADC + pojedynczy układ scalony, 2. użycie jednoukładowego licznika ADC wewnątrz konwerter. Dla pierwszego modelu wypróbowałem dwa (patrz mój blog: http://blog.Sina.com.CN/ntwhq), ten obwód jest trochę bardziej złożony, komponent jest trudniejszy do wykonania, jest trudny dla początkujących. Druga struktura jest stosunkowo prosta, łatwa do wykonania, ale ma znaczącą wadę, tj. Z wąską szerokością pasma, jedną z bardziej typowych prac są zagraniczni przyjaciele http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope. htm, szerokość pasma oscyloskopu tylko 7,7 kHz. Użytkownicy krajowi i jednoukładowa produkcja AVR STC, ale rzeczywista szerokość pasma jest mniejsza niż 10 kHz. Możesz również użyć PCB Fusion do samodzielnego wykonania płytki PCB.

Kieszonkowe dzieci:

Krok 1: Kod

Ostatnio widziałem przyjaciela sieci z oscyloskopem Arduino, może być łatwiejszy niż druga metoda powyżej, ale ich wyniki nie są idealne, przepustowość jest wąska. Chciałem więc spróbować i nie ma dobrego sposobu na rozwiązanie tego problemu. Wyprodukowane w drodze eksperymentu i stale modyfikujące kod oraz poprawiające częstotliwość próbkowania konwersji d / a, uzyskano bardzo dobre wyniki.

Główne parametry produktu końcowego: Charakterystyka częstotliwościowa: 10Hz-50KHz Zasilanie: 5V LCD LCD: 128x64 (ST7920) Obszar wyświetlania pomiaru: 96x64 Wyświetlacz informacyjny: 32x64, wyświetla częstotliwość sygnału testowego, Vpp i więcej Sync: zbocze narastające wyzwala prędkość skanowania: 0,02 ms / dz ~ 10 ms / dz, niosąc dziewięć funkcji 1-2-5 wstrzymania: zamrożenie wyświetlanego kształtu fali i parametrów Po drugie, podstawowy test Wykorzystanie największej zalety projektu Arduino to jego bogate zasoby i nie trzeba duża wiedza na temat SCM. Korzystałem z repozytorium LCD u8glib, dzięki czemu programowanie jest łatwiejsze, a napęd LCD kosztuje dużo czasu. Pobieranie U8glib: u8glib_arduino_v1.13.zip (989,55 KB, pliki do pobrania: 2577) Oto mój pierwszy testowy obwód do budowy Arduino UNO, 12864 LCD LCD z wykorzystaniem sterowania ST7920. Dopóki metoda wprowadzania w poniższym kodzie, skompilowana po pobraniu, można osiągnąć podstawowe funkcje oscyloskopu cyfrowego, czy nie byłoby to prostsze? # Dołącz // instrukcję U8GLIB_ST7920_128X64_4X u8g (13, 12, 11); Komunikat LCD SPI Com: SCK = 13, MOSI = 12, CS = 11 int x, y; Malowane współrzędne punktów w buforze 128; Cache storage array void setup () {} Sample void sample () {for (x = 0; x <128; x ++) Buffer x = analogRead (A0); Próbkowanie sygnału dla (x = 0; x <128; x ++) Bufor x = 63- (Bufor x >> 4); Oblicz wartości y} Wyświetl void draw () {for (x = 0; x <127; x ++) u8g.drawLine (x, Bufor x, x, Bufor x + 1); Narysuj dwie linie u8g.drawLine (64,0,64,63); Narysuj osie u8g.drawLine (0,32,128,32); Dla (x = 0; x <128; x + = 8) // narysuj skalę osi u8g.drawLine (x, 31, x, 33); dla (x = 0; x <64; x + = 8) u8g.drawLine (63, x, 65, x); u8g.drawFrame (0,0,128,64); Draw border} void loop () {sample (); Przykładowy u8g.firstPage (); Wyczyść ekran do rysowania (); Wyświetl podczas (u8g.nextPage ());

}

Krok 2: Obwód

Wykorzystując obwód testowy, moje Arduino jest mierzone bezpośrednio za pomocą funkcji analogRead (), aby zakończyć ad / a konwersja na około 111 μs szybkość konwersji jest powolna, tak więc jej szerokość pasma wynosi 1 KHz, kolejnym priorytetem jest poprawa prędkości cyfrowo-analogowej konwersja, dodając inne funkcje.

Po trzecie, najnowsze programy Oto najnowszy kod źródłowy wykorzystujący, proszę, trzymaj mój boot LOGO, HA HA. Arduino_oscilloscope.zip (2.72 KB, pliki do pobrania: 2710)

Chip programowy 1.1V ADC wykorzystuje wspomniane powyżej napięcie odniesienia, jeśli chcesz użyć zewnętrznego napięcia odniesienia 5V, powinien to być program ADMUX = 0xe0; Do: ADMUX = 0x60; Vpp = (V_max-V_min) * 1,1 / 255; odczyt: Vpp = (V_max-V_min) * 5/255;

Użyj PCB Fusion może być znacznie lepszą płytką drukowaną.

Cztery, maszyna wykonała Eksperymenty używając powyższego Arduino UNO, rzeczywistej karty podczas używania Arduino PRO mini, tak aby mieć mniejszą objętość.

Schemat obwodu:

Główna lista komponentów: Nazwa numeru Arduino PRO mini 1 LCD12864 LCD (ST7920) 1 kondensatory elektrolityczne (100 μ 25V) 1 potencjometr (50 k) 1 płyta otworu 3 wyłącznik zasilania 1 wkład akumulatora 2 przełącznik przycisku (z akumulatorem, 7) 1 Przypadek 1

1, spawanie Arduino PRO mini PIN.

2, elementy obwodu drukowanego spawania

3, dzięki czemu płyta otworu LCD

4, montaż płytek drukowanych

5, co sprawiło, że użyłem restrukturyzacji ładowania skrzyni skarbów z plastikową obudową, w odpowiednim miejscu na otworze.

6, montaż

Włóż płytkę drukowaną do obudowy, z grubym białym panelem, przymocowanym do wnętrza panelu przedniego.

Krok 3: Prześlij i przetestuj

Ze względu na Arduino PRO mini nie włącza obwodu portu szeregowego USB, więc przesyłać przez port szeregowy USB przed pobraniem programu.

Debugowanie oscyloskopu jest bardzo proste, wystarczy wyregulować potencjometr 50k Wyśrodkuj poziome linie. Używam źródła sygnału generatora sygnału.

Boot LOGO

Testowanie:

niektóre wyjaśnienia

1, jest to jeden z najprostszych oscyloskopów cyfrowych, na podstawie tego można jeszcze ulepszyć;

2, być może zauważyłeś, że nie używam portu I / O 0-7, który jest 8-bitowym jednoukładowym mikrokomputerem AVR i ustami, to jest to, co przygotowałem do kolejnych aktualizacji, używając specjalnego układu ADC, to jest może być użyty jako wprowadzenie danych, jeśli jesteś zainteresowany oscyloskopem, rozważę uaktualnienie;

3, praca była pośpieszna i ma jakieś wady i braki, proszę doradzić, masz jakieś pytania, które tutaj znajdziesz.