Innholdsfortegnelse:

Esp8266 Klokke- og pulsgenerator: 3 trinn
Esp8266 Klokke- og pulsgenerator: 3 trinn

Video: Esp8266 Klokke- og pulsgenerator: 3 trinn

Video: Esp8266 Klokke- og pulsgenerator: 3 trinn
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, November
Anonim
Esp8266 Klokke- og pulsgenerator
Esp8266 Klokke- og pulsgenerator

Denne instruksen er for et enkelt stykke testutstyr; en klokke- og pulsgenerator.

Den bruker i2S -maskinvaregrensesnittet på en esp8266 for å generere en testklokke eller en pulssekvens. Dette gjør det enkelt å sette sammen ettersom ingen spesiell maskinvare er nødvendig for et grunnleggende system.

  • Klokkegenerering fra 2Hz til 20MHz
  • Enhver frekvens kan brukes
  • Søker etter best match av klokkeavdelere og bitlengde fra 160MHz baseklokke
  • Vanligvis bedre enn 0,1% samsvarer for frekvenser <100KHz
  • Merk av valg av mellomrom
  • Frekvensmatchingstoleransen kan være avslappet for å få bedre markplassbehandling
  • Pulstoggenerering basert på definisjoner i filer
  • Nettbasert GUI som tillater kontroll fra PC, telefon, nettbrett
  • Wifi Management for å tillate enkel første ruteroppsett
  • OTA -programvareoppdatering
  • Bruker et spesielt I2s -bibliotek (i2sTXcircular) som gir fleksibel kontroll

Trinn 1: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare

Jeg konstruerte min i et 3D -trykt kabinett som inneholdt et 18650 -batteri med en USB -lader, en av/på -bryter, en 3 -pinners toppstikk for utgangssignalet.

Kapslingen har et smalt spor for å holde elektronikken ved siden av batteriet.

Signalet kommer ut av GPIO3 -pinnen (RX). Dette kan brukes direkte, men for høyere kjøreegenskaper valgte jeg å inkludere en liten buffer ved hjelp av en 74LVC2G34. Jeg parallelt med de to bufferne i denne enheten for å gi enda mer kjøreegenskaper.

Alt gjøres bare i programvaren i enheten, og kontrollen utføres ved å tilby en webserver slik at en nettleser på en PC, telefon eller nettbrett gir full kontroll.

Trinn 2: Programvare

For å bygge og konfigurere programvaren, bruk koden på

  • Installer i2sTXcircular library (inkludert)
  • Installer BaseSupport -biblioteket (https://github.com/roberttidey/BaseSupport)
  • Legg til WifiManager -biblioteket
  • Rediger passord i BaseConfig.h
  • Kompiler og last opp i Arduino -miljø
  • Sett opp wifi -nettverksadministrasjon ved å koble til AP og bla til 192.168.4.1
  • last opp grunnleggende sett med filer fra datamappen ved hjelp av STA ip/upload
  • ytterligere opplastinger kan deretter gjøres ved hjelp av ip/edit - normalt grensesnitt er på ip/

Hvordan det fungerer

I2sTXcircular -biblioteket gjør det mulig å bygge en sirkulær kjede av buffere som deretter sendes ut automatisk av i2S -maskinvaren på esp8266 ved bruk av DMA, slik at ingen programvareoverhead brukes når den er i gang.

Grunnklokken på enheten er 160 MHz som er delt ned med et par skillevegger. Utgangssignalet bestemmes deretter av hvilke data som settes inn i bufferne som sendes ut av den delte ned -klokken. Ved å velge de to delerne og ved å bruke potensielt flere databiter for å representere hver puls, kan en frekvens tilnærmes ganske tett. Det gjør også at driftssyklusen (merke/mellomrom -forholdet mellom klokkeimpulser) kan varieres.

Javascript -koden i nettleseren prøver å optimalisere valg av parametere for å gi en nøyaktig samsvar med hvilken som helst valgt frekvens.

Selv om hovedformålet er å generere klokker, er det også mulig å produsere mer komplekse pulstog ved å sette en definisjon i en pulsfil som deretter styrer dataene som vil bli generert og lagt inn i den sirkulære bufferen. Detaljer er inkludert i eksemplet på pulsfiler.

Trinn 3: Drift

Driften styres av nettlesergrensesnittet som vises i hovedbildet.

For normal klokkegenerering velger du bare målklokken og merkeområdet % -forholdet. Den faktiske klokken og feilen vises. Når du trykker på knappen Generer klokke, sendes parameterne til enheten, og klokkegenerering med disse parameterne starter.

Ved å klikke på Avansert -linjen kan du se flere detaljer.

Bitklokken viser delmultiple av 160MHz som brukes.

Merke- og mellomrombiter viser hvor mange biter som brukes til å representere merker og mellomrom.

Div1 og Div2 viser de to delerne som er valgt for å generere nærmeste bitklokke.

Normalt velges de to delerne for å gi nærmeste match til den valgte frekvensen og for å maksimere antall databiter som brukes, noe som hjelper til med å gi mer fleksibilitet i å tillate forskjellige driftssykluser. Noen ganger resulterer imidlertid den beste matchen i et lavt antall biter som gir lite rom for å endre driftssyklusen. Ved å endre toleranse % -verdien, vil delerne bli valgt til å gi en frekvens innenfor denne toleransen, men med potensielt flere databiter brukt. Prøv for eksempel å sette toleransen til 0,5 eller 1.

Du kan også angi Bits per word -nummer for å kontrollere valg av parametere. 0 (standard) betyr å velge noen biter per ord. Et enkelt tall (f.eks. 24) betyr bare å velge parametere som samsvarer med dette. Du kan også sette inn et område (f.eks. 24, 31). Dette fungerer bare for mål -Hz over 10KHz, under denne skaleringen trer i kraft slik at tallet blir multiplisert.

Bufferstørrelsen viser den totale bufferen som er brukt i 32 biters ord. Dette er valgt for å sikre at klokkepulsen danner en perfekt sirkulær passform inn i bufferen. Internt er denne bufferen delt inn i et antall smalle rbuffere for å la den lenkete DMA fungere.

Velg pulser TAB for pulser. Dette viser de tilgjengelige pulsfilene og en knapp ved siden av hver som vil produsere et pulstog basert på dens definisjon. Du kan se innholdet i filen ved å klikke på lenken. Flere pulsfiler kan lastes opp ved hjelp av ip/edit -filleseren. De bør starte med navnet puls.

Anbefalt: