Spisu treści:

Esp8266 Zegar i generator impulsów: 3 kroki
Esp8266 Zegar i generator impulsów: 3 kroki

Wideo: Esp8266 Zegar i generator impulsów: 3 kroki

Wideo: Esp8266 Zegar i generator impulsów: 3 kroki
Wideo: Sterownik arduino trochę inaczej. 2024, Lipiec
Anonim
Esp8266 Zegar i generator impulsów
Esp8266 Zegar i generator impulsów

Ta instrukcja dotyczy prostego sprzętu testowego; zegar i generator impulsów.

Wykorzystuje interfejs sprzętowy i2S w esp8266 do generowania zegara testowego lub sekwencji impulsów. Ułatwia to składanie, ponieważ podstawowy system nie wymaga specjalnego sprzętu.

  • Generowanie zegara od 2Hz do 20MHz
  • Można użyć dowolnej częstotliwości
  • Wyszukuje najlepsze dopasowanie dzielników zegara i długości bitów od zegara bazowego 160 MHz
  • Zazwyczaj lepsze niż 0,1% dopasowanie dla częstotliwości <100 KHz
  • Zaznacz wybór stosunku odstępu
  • Tolerancja dopasowania częstotliwości może zostać złagodzona, aby uzyskać lepszą obsługę przestrzeni znakowania
  • Generowanie pociągów impulsowych na podstawie definicji w plikach
  • GUI oparte na sieci Web umożliwiające sterowanie z komputera, telefonu, tabletu
  • Zarządzanie Wi-Fi, aby umożliwić łatwą początkową konfigurację routera
  • Aktualizacja oprogramowania OTA
  • Wykorzystuje specjalną bibliotekę I2s (i2sTXcircular) dającą elastyczną kontrolę

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Kopalnię zbudowałem w obudowie wydrukowanej w 3D, zawierającej baterię 18650 z ładowarką USB, włącznikiem/wyłącznikiem, 3-pinową wtyczką dla sygnału wyjściowego.

Obudowa posiada wąskie gniazdo do trzymania elektroniki obok akumulatora.

Sygnał wychodzi z pinu GPIO3 (RX). Można tego użyć bezpośrednio, ale dla większej wydajności napędu zdecydowałem się dołączyć mały bufor przy użyciu 74LVC2G34. Połączyłem dwa bufory równolegle w tym urządzeniu, aby zapewnić jeszcze więcej możliwości napędu.

Wszystko odbywa się tylko w oprogramowaniu w urządzeniu, a sterowanie odbywa się poprzez udostępnienie serwera WWW, dzięki czemu przeglądarka na komputerze, telefonie lub tablecie zapewnia pełną kontrolę.

Krok 2: Oprogramowanie

Aby zbudować i skonfigurować oprogramowanie, użyj kodu na

  • Zainstaluj bibliotekę i2sTXcircular (w zestawie)
  • Zainstaluj bibliotekę BaseSupport (https://github.com/roberttidey/BaseSupport)
  • Dodaj bibliotekę WifiManager
  • Edytuj hasła w BaseConfig.h
  • Kompiluj i przesyłaj w środowisku Arduino
  • Skonfiguruj zarządzanie siecią Wi-Fi, łącząc się z AP i przechodząc do 192.168.4.1
  • wgraj podstawowy zestaw plików z folderu danych za pomocą STA ip/upload
  • dalsze przesyłanie może być wykonane za pomocą ip/edit - normalny interfejs jest na ip/

Jak to działa

Biblioteka i2sTXcircular umożliwia budowanie kołowego łańcucha buforów, które są następnie automatycznie wyprowadzane przez sprzęt i2S na esp8266 przy użyciu DMA, dzięki czemu nie jest używane żadne dodatkowe oprogramowanie po uruchomieniu.

Podstawowy zegar urządzenia to 160 MHz, który jest podzielony przez parę dzielników. Sygnał wyjściowy jest następnie określany przez to, jakie dane są umieszczane w buforach, które są wyprowadzane przez dzielony niższy zegar. Wybierając dwa dzielniki i używając potencjalnie wielu bitów danych do reprezentowania każdego impulsu, można dość dokładnie przybliżyć częstotliwość. Pozwala również na zmianę cyklu pracy (stosunek znak/przestrzeń impulsów zegarowych).

Kod javascript przeglądarki próbuje zoptymalizować wybór parametrów, aby zapewnić ścisłe dopasowanie do dowolnej wybranej częstotliwości.

Chociaż głównym celem jest generowanie zegarów, możliwe jest również wytwarzanie bardziej złożonych ciągów impulsów poprzez umieszczenie definicji w pliku impulsów, który następnie kontroluje dane, które zostaną wygenerowane i umieszczone w buforze kołowym. Szczegóły znajdują się w załączonych przykładowych plikach impulsowych.

Krok 3: Operacja

Operacja jest kontrolowana przez interfejs przeglądarki pokazany na głównym obrazie.

W przypadku normalnego generowania zegara wystarczy wybrać zegar docelowy i współczynnik odstępu znaku %. Wyświetlany jest rzeczywisty osiągnięty zegar i jego błąd. Po naciśnięciu przycisku Generuj zegar parametry są wysyłane do urządzenia i rozpoczyna się generowanie zegara przy użyciu tych parametrów.

Klikając na pasek Zaawansowane możesz zobaczyć więcej szczegółów.

Zegar bitowy pokazuje podwielokrotność 160 MHz, która jest używana.

Bity znaku i odstępu pokazują, ile bitów jest używanych do reprezentowania znaków i spacji.

Div1 i Div2 pokazują dwa dzielniki, które zostały wybrane do wygenerowania najbliższego zegara bitowego.

Zwykle dwa dzielniki są wybierane w taki sposób, aby zapewnić jak najbliższe dopasowanie do wybranej częstotliwości i zmaksymalizować liczbę używanych bitów danych, co pomaga w zapewnieniu większej elastyczności w umożliwianiu różnych cykli pracy. Jednak czasami najlepsze dopasowanie skutkuje niską liczbą bitów, pozostawiając niewiele miejsca na zmianę cyklu pracy. Zmieniając wartość procentową tolerancji, dzielniki zostaną wybrane tak, aby dać częstotliwość w ramach tej tolerancji, ale z potencjalnie większą liczbą użytych bitów danych. Spróbuj na przykład ustawić tolerancję na 0,5 lub 1.

Możesz również ustawić liczbę bitów na słowo, aby kontrolować wybór parametrów. 0 (domyślnie) oznacza wybór dowolnych bitów na słowo. Pojedyncza liczba (np. 24) oznacza tylko wybór parametrów, które do niej pasują. Możesz również umieścić w zakresie (np. 24, 31). Działa to tylko dla docelowego Hz powyżej 10 kHz, poniżej tego skalowania będzie obowiązywać tak, że liczba zostanie pomnożona.

Rozmiar bufora pokazuje całkowity odstęp bufora użyty w słowach 32-bitowych. Jest to wybrane, aby zapewnić, że impuls zegarowy będzie idealnie pasował do bufora. Wewnętrznie ten bufor jest podzielony na kilka mniejszych rbufferów, aby umożliwić działanie połączonego DMA.

Dla pracy impulsowej wybierz impulsy TAB. Pokazuje dostępne pliki impulsów i przycisk obok każdego z nich, który utworzy ciąg impulsów na podstawie jego definicji. Możesz zobaczyć zawartość pliku, klikając jego link. Więcej plików pulsu można przesłać za pomocą przeglądarki plików ip/edit. Powinny zaczynać się od pulsu imienia.

Zalecana: