Innehållsförteckning:

Esp8266 Klock- och pulsgenerator: 3 steg
Esp8266 Klock- och pulsgenerator: 3 steg

Video: Esp8266 Klock- och pulsgenerator: 3 steg

Video: Esp8266 Klock- och pulsgenerator: 3 steg
Video: Generate Square Wave from Arduino & ESP8266 NodeMCU - Frequency, Duty Cycle & PWM | Som Tips 2024, Juli
Anonim
Esp8266 Klocka och pulsgenerator
Esp8266 Klocka och pulsgenerator

Detta instruerbara är för en enkel testutrustning; en klock- och pulsgenerator.

Den använder i2S -maskinvarugränssnittet på en esp8266 för att generera en testklocka eller en pulssekvens. Detta gör det enkelt att sätta ihop eftersom ingen speciell hårdvara krävs för ett grundläggande system.

  • Klockgenerering från 2Hz till 20MHz
  • Vilken frekvens som helst kan användas
  • Söker bästa matchning av klockavdelare och bitlängd från 160MHz basklocka
  • Vanligtvis bättre än 0,1% matchning för frekvenser <100KHz
  • Markera val av utrymme
  • Frekvensmatchningstoleransen kan slappna av för att få bättre markutrymmehantering
  • Pulståggenerering baserat på definitioner i filer
  • Webbaserat GUI som möjliggör kontroll från PC, telefon, surfplatta
  • Wifi Management för att möjliggöra enkel initial routerinställning
  • OTA -programuppdatering
  • Använder ett speciellt I2s -bibliotek (i2sTXcircular) som ger flexibel kontroll

Steg 1: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara

Jag konstruerade mitt i ett 3D -tryckt hölje med ett 18650 -batteri med en USB -laddare, en på/av -omkopplare, en 3 -stifts huvudkontakt för utsignalen.

Höljet har en smal plats för att hålla elektroniken bredvid batteriet.

Signalen kommer ut från GPIO3 -stiftet (RX). Detta kan användas direkt men för högre enhetskapacitet valde jag att inkludera en liten buffert med en 74LVC2G34. Jag parallelliserade de två buffertarna i den här enheten för att ge ännu mer drivenhet.

Allt görs bara i programvaran i enheten, och kontrollen görs genom att tillhandahålla en webbserver så att en webbläsare på en PC, telefon eller surfplatta ger full kontroll.

Steg 2: Programvara

För att bygga och konfigurera programvaran använder du koden på

  • Installera i2sTXcircular -bibliotek (ingår)
  • Installera BaseSupport -biblioteket (https://github.com/roberttidey/BaseSupport)
  • Lägg till WifiManager -biblioteket
  • Redigera lösenord i BaseConfig.h
  • Kompilera och ladda upp i Arduino -miljö
  • Ställ in wifi -nätverkshantering genom att ansluta till AP och bläddra till 192.168.4.1
  • ladda upp grundläggande uppsättning filer från datamappen med STA ip/upload
  • ytterligare uppladdningar kan sedan göras med ip/edit - normalt gränssnitt finns på ip/

Hur det fungerar

I2sTXcircular -biblioteket gör det möjligt att bygga en cirkulär kedja av buffertar som sedan matas ut automatiskt av i2S -maskinvaran på esp8266 med DMA så att ingen programvarukostnad används när den är igång.

Grundklockan på enheten är 160 MHz som delas upp med ett par avdelare. Utsignalen bestäms sedan av vilken data som läggs in i buffertarna som matas ut med den delade nedklockan. Genom att välja de två delarna och genom att använda potentiellt flera databitar för att representera varje puls kan en frekvens approximeras ganska nära. Det tillåter också att arbetscykeln (märke/rymdförhållande för klockpulser) kan varieras.

Webbläsarens javascript -kod försöker optimera valet av parametrar för att ge en nära matchning till valda frekvenser.

Även om huvudsyftet är att generera klockor är det också möjligt att producera mer komplexa pulståg genom att lägga in en definition i en pulsfil som sedan styr data som kommer att genereras och läggas i den cirkulära bufferten. Detaljer finns i exemplet pulsfiler.

Steg 3: Drift

Driften styrs av webbläsargränssnittet som visas i huvudbilden.

För normal klockgenerering väljer du bara målklockan och markutrymmet % -förhållandet. Den aktuella klockan och dess fel visas. När knappen Generera klocka trycks in skickas parametrarna till enheten och klockgenerering med dessa parametrar startar.

Genom att klicka på fältet Avancerat kan du se mer information.

Bitklockan visar delmultipeln på 160 MHz som används.

Märke- och blankstegsbitar visar hur många bitar som används för att representera märken och mellanslag.

Div1 och Div2 visar de två avdelare som har valts för att generera närmaste bitklocka.

Normalt väljs de två delarna för att ge den närmaste matchningen till den valda frekvensen och för att maximera antalet databitar som används vilket hjälper till att ge mer flexibilitet för att möjliggöra olika arbetscykler. Ibland resulterar emellertid den bästa matchningen i ett lågt bitantal som lämnar lite utrymme för att ändra arbetscykeln. Genom att ändra tolerans % -värdet kommer delarna att väljas för att ge en frekvens inom denna tolerans men med potentiellt fler databitar som används. Försök till exempel att ställa in tolerans till 0,5 eller 1.

Du kan också ställa in antalet bitar per ord för att styra valet av parametrar. 0 (standard) betyder att välja bitar per ord. Ett enda tal (t.ex. 24) betyder att du bara väljer parametrar som matchar detta. Du kan också ange ett intervall (t.ex. 24, 31). Detta fungerar bara för mål -Hz över 10KHz, under denna skalning träder i kraft så att antalet blir multiplicerat.

Buffertstorleken visar den totala buffertavstånd som används i 32 bitars ord. Detta väljs för att säkerställa att klockpulsen bildar en perfekt cirkulär passform i bufferten. Internt är denna buffert uppdelad i ett antal små ruffare för att låta den kedjade DMA -enheten fungera.

Välj pulser TAB för pulser. Detta visar de tillgängliga pulsfilerna och en knapp bredvid var och en som kommer att producera ett pulståg baserat på dess definition. Du kan se innehållet i filen genom att klicka på länken. Fler pulsfiler kan laddas upp med hjälp av webbläsaren ip/edit. De bör börja med namnpulsen.

Rekommenderad: