Inhoudsopgave:

Esp8266 klok- en pulsgenerator - Ajarnpa
Esp8266 klok- en pulsgenerator - Ajarnpa

Video: Esp8266 klok- en pulsgenerator - Ajarnpa

Video: Esp8266 klok- en pulsgenerator - Ajarnpa
Video: Relay nixie clock backpanel 2024, Juli-
Anonim
Esp8266 Klok- en pulsgenerator
Esp8266 Klok- en pulsgenerator

Dit instructable is voor een eenvoudig stuk testapparatuur; een klok en pulsgenerator.

Het gebruikt de i2S hardware-interface op een esp8266 om een testklok of een pulssequentie te genereren. Dit maakt het eenvoudig in elkaar te zetten omdat er geen speciale hardware nodig is voor een basissysteem.

  • Klokgeneratie van 2Hz tot 20MHz
  • Elke frequentie kan worden gebruikt
  • Zoekt naar de beste match van klokverdelers en bitlengte vanaf 160MHz basisklok
  • Meestal beter dan 0,1% overeenkomst voor frequenties < 100 KHz
  • Selectie ruimteverhouding markeren
  • Tolerantie voor frequentieaanpassing kan worden versoepeld om een betere verwerking van de markeringsruimte te krijgen
  • Pulstrein genereren op basis van definities in bestanden
  • Webgebaseerde GUI voor bediening vanaf pc, telefoon, tablet
  • Wifi-beheer om een eenvoudige initiële routerconfiguratie mogelijk te maken
  • OTA-software-update
  • Gebruikt een speciale I2s-bibliotheek (i2sTXcircular) voor flexibele controle

Stap 1: Hardware

Hardware
Hardware
Hardware
Hardware

Ik heb de mijne geconstrueerd in een 3D-geprinte behuizing met een 18650-batterij met een USB-oplader, een aan / uit-schakelaar, een 3-pins header-stekker voor het uitgangssignaal.

De behuizing heeft een smalle sleuf voor het vasthouden van de elektronica naast de batterij.

Het signaal komt uit de GPIO3-pin (RX). Dit kan direct worden gebruikt, maar voor een hogere schijfcapaciteit heb ik ervoor gekozen om een kleine buffer op te nemen met een 74LVC2G34. Ik heb de twee buffers in dit apparaat parallel geschakeld om nog meer schijfcapaciteit te bieden.

Alles gebeurt gewoon in de software in het apparaat en de besturing wordt gedaan door een webserver te bieden, zodat een browser op een pc, telefoon of tablet volledige controle biedt.

Stap 2: Software

Gebruik de code op https://github.com/roberttidey/espI2sClockGen om de software te bouwen en in te stellen

  • Installeer i2sTXcircular-bibliotheek (meegeleverd)
  • Installeer de BaseSupport-bibliotheek (https://github.com/roberttidey/BaseSupport)
  • WifiManager-bibliotheek toevoegen
  • Pas wachtwoorden aan in BaseConfig.h
  • Compileren en uploaden in Arduino-omgeving
  • Stel wifi-netwerkbeheer in door verbinding te maken met AP en te bladeren naar 192.168.4.1
  • upload basisset bestanden uit de gegevensmap met behulp van STA ip/upload
  • verdere uploads kunnen dan worden gedaan met behulp van ip/edit - normale interface is op ip/

Hoe het werkt

De i2sTXcircular-bibliotheek maakt het mogelijk om een cirkelvormige keten van buffers te bouwen die vervolgens automatisch worden uitgevoerd door de i2S-hardware op de esp8266 met behulp van DMA, zodat er geen software-overhead wordt gebruikt als deze eenmaal actief is.

De basisklok op het apparaat is 160 MHz, die wordt gedeeld door een paar verdelers. Het uitgangssignaal wordt dan bepaald door welke gegevens in de buffers worden geplaatst die worden uitgevoerd door de verdeelde klok. Door de twee delers te kiezen en door potentieel meerdere databits te gebruiken om elke puls weer te geven, kan een frequentie vrij goed worden benaderd. Het maakt het ook mogelijk om de duty cycle (mark/space-verhouding van klokpulsen) te variëren.

De Javascript-code van de browser probeert de keuze van parameters te optimaliseren om een goede overeenkomst te geven met elke geselecteerde frequentie.

Hoewel het hoofddoel het genereren van klokken is, is het ook mogelijk om complexere pulstreinen te produceren door een definitie in een pulsbestand te plaatsen dat vervolgens de gegevens bestuurt die worden gegenereerd en in de circulaire buffer worden geplaatst. Details zijn opgenomen in de voorbeeldpulsbestanden.

Stap 3: Bediening

De bediening wordt bestuurd door de browserinterface die wordt weergegeven in de hoofdafbeelding.

Voor het genereren van normale klokken selecteert u gewoon de doelklok en de %-ratio van de markeringsruimte. De werkelijk bereikte klok en de fout worden weergegeven. Wanneer de knop Klok genereren wordt ingedrukt, worden de parameters naar het apparaat verzonden en begint het genereren van de klok met behulp van deze parameters.

Door op de balk Geavanceerd te klikken, kunnen meer details worden bekeken.

De bitklok toont het sub-veelvoud van 160MHz dat wordt gebruikt.

Teken- en spatiebits laten zien hoeveel bits worden gebruikt om tekens en spaties weer te geven.

Div1 en Div2 tonen de twee delers die zijn gekozen om de dichtstbijzijnde bitklok te genereren.

Normaal gesproken worden de twee verdelers gekozen om de dichtstbijzijnde overeenkomst met de gekozen frequentie te geven en om het aantal gebruikte databits te maximaliseren, wat helpt bij het bieden van meer flexibiliteit bij het toestaan van verschillende werkcycli. Soms resulteert de beste match echter in een laag aantal bits, waardoor er weinig ruimte is voor het wijzigen van de duty-cycle. Door de tolerantie %-waarde te wijzigen, worden de delers gekozen om een frequentie binnen deze tolerantie te geven, maar met mogelijk meer databits. Probeer bijvoorbeeld tolerantie in te stellen op 0,5 of 1.

U kunt ook het aantal bits per woord instellen om de keuze van parameters te regelen. 0 (standaard) betekent dat u bits per woord kiest. Een enkel nummer (bijvoorbeeld 24) betekent dat u alleen parameters kiest die hiermee overeenkomen. U kunt ook een bereik invoeren (bijvoorbeeld 24, 31). Dit werkt alleen voor doel Hz boven 10KHz, onder deze schaal wordt van kracht zodat het getal wordt vermenigvuldigd.

De buffergrootte toont de totale buffer die wordt gebruikt in 32-bits woorden. Dit is gekozen om ervoor te zorgen dat de klokpuls een perfecte cirkelvormige pasvorm in de buffer vormt. Intern is deze buffer opgesplitst in een aantal kleinere rbuffers om de geketende DMA te laten functioneren.

Kies voor pulsen de pulsen TAB. Dit toont de beschikbare pulsbestanden en een knop ernaast die een pulstrein zal produceren op basis van zijn definitie. U kunt de inhoud van het bestand bekijken door op de link te klikken. Meer pulse-bestanden kunnen worden geüpload met behulp van de ip/edit-bestandsbrowser. Ze moeten beginnen met de naam pulse.

Aanbevolen: