Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
Een signaalgenerator is een zeer nuttig stuk testapparatuur. Deze gebruikt een AD9833-module en een Arduino Nano - dat is alles, zelfs geen PCB. U kunt optioneel een OLED-scherm toevoegen. De AD9833 kan sinus-, driehoeks- en blokgolven genereren van 0,1 Hz tot 12,5 MHz - de software in dit project is beperkt tot 1Hz tot 100kHz.
Er zijn andere Instructables met behulp van een Arduino en een AD9833, hier en hier. Dit is eenvoudiger en kan worden gebruikt als een sweep-generator. Sweep-generatoren helpen bij het testen van de frequentierespons van filters, versterkers, enzovoort. In tegenstelling tot de andere Instructables-ontwerpen, bevat dit geen versterker of amplituderegeling, maar u kunt ze desgewenst toevoegen.
Stap 1: Eenvoudigste signaalgenerator
Voor de eenvoudigste signaalgenerator soldeer je gewoon de AD9833-module op de achterkant van de Arduino Nano. Er is geen printplaat nodig.
De AD9833-module die ik heb gekozen, is vergelijkbaar met deze. Ik zeg niet dat dit de beste of goedkoopste leverancier is, maar je zou er een moeten kopen die op die foto (of de foto hierboven) lijkt.
De verbindingen tussen de modules zijn:
- gronden met elkaar verbonden
- D2 = FSync
- D3 = Clk
- D4 = Gegevens
- D6 = Vcc van AD9833
De AD9833 wordt gevoed vanaf datapin D6 van de Arduino - de Arduino kan voldoende stroom leveren. Ik heb een ontkoppelingscondensator van 100n toegevoegd omdat ik dacht dat ik dat "zou" maar ik kon geen verschil zien - er is al een ontkoppelingscondensator op het AD9833-modulebord.
Als je zin had, zou je je misschien zorgen maken over "analoge grond" versus "digitale grond", maar als je zin had, zou je meer dan £ 4 uitgeven.
De eenvoudigste signaalgenerator wordt bestuurd en gevoed via een USB-kabel vanaf een pc. De USB emuleert een seriële poort die draait op 115200bps (8-bits, geen pariteit). De commando's zijn:
- '0'..'9': cijfer verschuiven naar "min" frequentiearray
- 'S': stel de AD9833-frequentie in en produceer een sinusgolf
- 'T': frequentie instellen en driehoeksgolf produceren
- 'Q': frequentie instellen en blokgolf produceren
- 'R': reset de AD9833
- 'M': kopieer "min" frequency array naar "max" array
- 'G': sweep van "min" naar "max" gedurende 1 seconde
- 'H': veeg van "min" naar "max" gedurende 5 seconden
- 'I': veeg van "min" naar "max" gedurende 20 seconden
Het Arduino-programma bevat twee arrays van 6 tekens "min" en "max. Als u een cijfer verzendt, wordt het verschoven naar de "min"-reeks. Als u een 'S' verzendt, worden de "min"-arraytekens omgezet in een longint-frequentie en verzonden naar de AD9833. Dus de string verzenden:
002500S
stelt de AD9833-uitgang in op een sinusgolf van 2500 Hz. U moet altijd alle 6 cijfers meesturen. De minimale frequentie is 000001 en de maximale frequentie is 999999.
Als u een 'M' verzendt, wordt de "min"-array gekopieerd naar de "max" -array. Als u een 'H' verzendt, voert de AD9833 herhaaldelijk een geleidelijk toenemende frequentie uit gedurende 5 seconden. Het begint op "min" frequentie en 5 seconden later is op "max" frequentie. Dus
020000M000100SH
zwaait van 100 Hz tot 20 kHz. De frequentieverandering is logaritmisch, dus na 1 seconde is de frequentie 288 Hz, na 2 seconden 833 Hz, dan 2402, 6931 en 20000. De frequentie wordt elke milliseconde gewijzigd.
De lus stopt wanneer de Arduino een ander teken ontvangt, dus pas op dat u de opdracht niet verzendt gevolgd door een wagenretour of regelinvoer. Dat extra teken zou de lus beëindigen. Als u de seriële monitor gebruikt, is er rechtsonder een vak dat bijvoorbeeld "Beide NL & CR" kan zeggen, die (denk ik) tekens na uw opdracht verzendt. Stel deze in op "Geen regeleinde".
U kunt het onderstaande Windows EXE-programma downloaden dat de vereiste opdrachten zal verzenden of u kunt uw eigen opdrachten schrijven. Het Arduino INO-bestand is ook hier.
Stap 2: Voeg een OLED toe
Als u een OLED en twee knoppen toevoegt, kan de signaalgenerator alleen werken zonder een pc.
Degenen onder u die mijn Instructable oscilloscoop hebben gelezen, zullen de gelijkenis herkennen. De AD9833-module kan aan mijn oscilloscoop worden toegevoegd om een "Oscilloscoop en signaalgenerator in een luciferdoosje" te produceren.
Het display is een 1,3 OLED die werkt op 3,3V en wordt aangestuurd door een SH1106-chip via een I2C-bus.
Zoek op eBay naar 1,3-inch OLED. Ik wil geen bepaalde verkoper aanbevelen, omdat links snel verouderd raken. Kies er een die op die foto lijkt, met de tekst "I2C" of "IIC" en met vier pinnen met het label VDD GND SCL SDA (Sommige displays lijken de pinnen in een andere volgorde te hebben. Controleer ze. De juiste naam voor de klok van I2C is "SCL", maar op eBay kunnen de borden "SCK" worden genoemd, zoals die van mij op de foto.)
Een volledigere beschrijving van de OLED-bibliotheek staat in mijn oscilloscoop Instructable in stap 8. U moet de driverbibliotheek SimpleSH1106.zip downloaden en installeren, die zich in stap 8 bevindt. (Ik wil hier niet nog een kopie uploaden en moet twee exemplaren behouden.)
Het INO-bestand kan hieronder worden gedownload. De pinnummers die voor de OLED worden gebruikt, worden rond regel 70 gedeclareerd. Als je mijn "Oscilloscope and Signal Generator in a Matchbox" hebt gebouwd en dit INO-bestand ermee wilt testen, worden alternatieve pinnummers ingeschakeld via een #define.
Ik heb een stripboard-layout voor het circuit laten zien. Er zijn twee stripboards - een voor de Nano en de AD9833 en een voor het display. Ze moeten een sandwich vormen. De platen zijn weergegeven vanaf de componentzijde. Fijne flexibele draden verbinden de twee planken. Bevestig de platen aan elkaar met gesoldeerde afstandhouders. In mijn diagram wordt het koper van het stripboard weergegeven in cyaan. Rode lijnen zijn draadverbindingen op het stripboard of flexibele draden die de platen met elkaar verbinden. Ik heb de stroom- en "signaal"-kabels niet getoond.
De AD9833-module is gesoldeerd aan de koperen kant van het stripboard - aan de andere kant van de Nano. Soldeer pinnen op de koperen strips, plaats de AD9833 erop en soldeer deze vast.
Het display toont een enkele frequentie of de "min" en "max" frequenties.
Er zijn twee drukknoppen: een "Horizontale" knop om een cijfer van de frequenties te selecteren en een "Verticale" knop om dat cijfer te wijzigen.
Ik voed de signaalgenerator van het circuit dat ik aan het ontwikkelen ben - ik heb altijd 5V beschikbaar op mijn werkstation.
Stap 3: Toekomstige ontwikkelingen
Zou het op batterijen kunnen? Ja, voeg gewoon een 9V PP3 toe die is aangesloten op de RAW-pin van de Nano. Het gebruikt meestal 20mA.
Kan het worden aangedreven door een enkele lithiumcel? Ik zie niet in waarom niet. Je moet de OLED Vdd en zijn pull-up-weerstand aansluiten op de 3.7V-batterij (ik betwijfel of de 3.3V-uitgang van de Arduino goed zou werken).
Een sweep-generator is handiger bij het testen van de frequentierespons van een filter als u amplitude versus frequentie kunt plotten. Het meten van de amplitude van een signaal is lastig - je moet het verval van je envelopdetector inruilen tegen rimpel voor lage frequenties en responstijd voor hoge frequenties. Nadat u uw amplitudedetector hebt gebouwd, kunt u de uitvoer ervan in de ADC van de Arduino van de "eenvoudigste signaalgenerator" invoeren en vervolgens het resultaat, samen met de huidige frequentie, naar de pc sturen.
Deze pagina is een handig startpunt of zoek op Google naar "envelopdetector" of "piekdetector". In het bovenstaande voorgestelde circuit zou je de signaalfrequentie instellen, wachten tot deze stabiliseert, de Arduino A0-pin instellen om digitaal laag uit te voeren, wachten om C te ontladen, A0 instellen op invoer, wachten en dan meten met de ADC. Laat me weten hoe je erop komt.
Aanbevolen:
Volledige revisie van vintage signaalgenerator - Ajarnpa
Complete revisie van vintage signaalgenerator: ik heb een paar jaar geleden een Eico 320 RF-signaalgenerator gekocht bij een hamradio-ruilbijeenkomst voor een paar dollar, maar ben er tot nu toe nooit toe gekomen om er iets mee te doen. Deze signaalgenerator heeft vijf schakelbare bereiken van 150 kHz tot 36 MHz en met ha
RF-signaalgenerator 100 KHz-600 MHZ op DDS AD9910 Arduino Shield - Ajarnpa
RF-signaalgenerator 100 KHz-600 MHZ op DDS AD9910 Arduino Shield: hoe maak je een lage ruis, hoge precisie, stabiele RF-generator (met AM, FM-modulatie) op Arduino
Tweekanaals signaalgenerator voor gitaar - Ajarnpa
Tweekanaals signaalgenerator voor gitaar: dit project is een eenvoudig te bouwen, origineel ontwerp voor een tweekanaals signaalgenerator voor gitaar en ander gebruik. Het bestrijkt het hele scala aan gitaarnoten (voor jullie gitaristen, van open lage E-snaar - 83 Hertz, tot de 24e fret op de hoge E-snaar
Bouw deze 5Hz tot 400KHz LED Sweep-signaalgenerator uit kits - Ajarnpa
Bouw deze 5Hz tot 400KHz LED Sweep-signaalgenerator uit kits: Bouw deze eenvoudige sweep-signaalgenerator uit gemakkelijk verkrijgbare kits. destijds een signaalgenerator. Ik wilde een
RF-signaalgenerator - Ajarnpa
RF-signaalgenerator: de RF-signaalgenerator is een onmisbaar hulpmiddel bij het spelen met radio-ontvangers. Het wordt gebruikt om resonantiecircuits af te stemmen en de versterking van verschillende RF-trappen aan te passen. Een zeer nuttige eigenschap van de RF-signaalgenerator is de modulatiemogelijkheid. Als het k