Indholdsfortegnelse:

Signalgenerator AD9833: 3 trin
Signalgenerator AD9833: 3 trin

Video: Signalgenerator AD9833: 3 trin

Video: Signalgenerator AD9833: 3 trin
Video: AD9833 Programmable Waveform Generator 2024, Juli
Anonim
Signalgenerator AD9833
Signalgenerator AD9833
Signalgenerator AD9833
Signalgenerator AD9833

En signalgenerator er et meget nyttigt stykke testudstyr. Denne bruger et AD9833 -modul og en Arduino Nano - det er alt, ikke engang et printkort. Du kan valgfrit tilføje en OLED -skærm. AD9833 kan generere sinus-, trekant- og firkantbølger fra 0,1 Hz til 12,5 MHz - softwaren i dette projekt er begrænset til 1 Hz til 100 kHz.

Der har været andre instruktioner ved hjælp af en Arduino og en AD9833, her og her. Dette er enklere og kan bruges som fejegenerator. Fejegeneratorer hjælper med at teste frekvensresponsen af filtre, forstærkere og så videre. I modsætning til de andre Instructables -designs inkluderer dette ikke en forstærker eller amplitudekontrol, men du kan tilføje dem, hvis du vil.

Trin 1: Simplest Signal Generator

Enkleste signalgenerator
Enkleste signalgenerator
Enkleste signalgenerator
Enkleste signalgenerator
Enkleste signalgenerator
Enkleste signalgenerator
Enkleste signalgenerator
Enkleste signalgenerator

For den enkleste signalgenerator lodder du bare AD9833 -modulet på bagsiden af Arduino Nano. Ingen PCB er nødvendig.

AD9833 -modulet, jeg valgte, ligner dette. Jeg siger ikke, at det er den bedste eller billigste leverandør, men du bør købe en, der ligner billedet (eller billedet ovenfor).

Forbindelserne mellem modulerne er:

  • grunde forbundet med hinanden
  • D2 = FSync
  • D3 = Clk
  • D4 = Data
  • D6 = Vcc af AD9833

AD9833 får strøm fra datastift D6 på Arduino - Arduinoen kan levere tilstrækkelig strøm. Jeg har tilføjet en 100n afkoblingskondensator, fordi jeg tænkte, at jeg "burde" det, men jeg kunne ikke se nogen forskel - der er allerede en afkoblingskondensator på AD9833 -modulkortet.

Hvis du havde lyst, ville du måske bekymre dig om "analog jord" vs "digital jord", men hvis du havde lyst, ville du bruge mere end £ 4.

Den enkleste Signalgenerator styres og drives via et USB -kabel fra en pc. USB'en emulerer en seriel port, der kører med 115200bps (8-bit, ingen paritet). Kommandoerne er:

  • '0'.. '9': skift ciffer til "min" frekvens array
  • 'S': indstil AD9833 frekvens og frembring sinusbølge
  • 'T': indstil frekvens og frembring trekantbølge
  • 'Q': indstil frekvens og frembring firkantbølge
  • 'R': nulstil AD9833
  • 'M': kopier "min" frekvens array til "max" array
  • 'G': fej fra "min" til "max" over 1 sekund
  • 'H': fej fra "min" til "max" over 5 sekunder
  • 'I': fej fra "min" til "max" over 20 sekunder

Arduino-programmet indeholder to 6-tegns arrays "min" og "max. Hvis du sender et ciffer, flyttes det til" min "array. Hvis du sender et 'S', konverteres 'min' array-tegnene til et longint frekvens og sendt til AD9833. Så sender strengen

002500S

vil indstille AD9833 -udgangen til en 2500Hz sinusbølge. Du skal altid sende alle 6 cifre. Minimumsfrekvensen er 000001 og den maksimale frekvens er 999999.

Hvis du sender et 'M', kopieres "min" array til "max" array. Hvis du sender et 'H', sender AD9833 gentagne gange en gradvist stigende frekvens over 5 sekunder. Det starter med "min" frekvens og 5 sekunder senere er ved "maks" frekvens. Så

020000M000100SH

fejer fra 100Hz til 20kHz. Frekvensændringen er logaritmisk, så efter 1 sekund vil frekvensen være 288Hz, efter 2 sekunder 833Hz derefter 2402, 6931 og 20000. Frekvensen ændres hvert milliSekund.

Sløjfen stopper, når Arduino modtager et andet tegn, så pas på ikke at sende kommandoen efterfulgt af vognretur eller linjeindføring. Det ekstra tegn ville afslutte sløjfen. Hvis du bruger Serial Monitor, er der en boks nederst til højre, der f.eks. Kan sige "Både NL & CR", som (jeg tror) sender tegn efter din kommando. Indstil den til "Ingen linie slutter".

Du kan downloade Windows EXE -programmet herunder, som sender de nødvendige kommandoer, eller du kan skrive dit eget. Arduino INO -filen er også her.

Trin 2: Tilføj en OLED

Tilføj en OLED
Tilføj en OLED
Tilføj en OLED
Tilføj en OLED
Tilføj en OLED
Tilføj en OLED

Hvis du tilføjer en OLED og to knapper, kan signalgeneratoren fungere alene uden en pc.

Dem af jer, der har læst mit oscilloskop Instructable, vil genkende ligheden. AD9833 -modulet kan tilføjes til mit oscilloskop for at producere et "Oscilloskop og signalgenerator i en tændstikæske".

Skærmen er en 1,3 OLED, der kører ved 3,3V, som styres af en SH1106 -chip via en I2C -bus.

Søg på eBay efter 1,3 "OLED. Jeg vil ikke anbefale en bestemt sælger, da links hurtigt går ud af dato. Vælg en, der ligner det billede, siger" I2C "eller" IIC "og har fire ben mærket VDD GND SCL SDA. (Nogle skærme ser ud til at have stifterne i en anden rækkefølge. Kontroller dem. Det korrekte navn for uret på I2C er "SCL", men på eBay kan tavlerne mærkes "SCK" som mit på billedet.)

En mere fuldstændig beskrivelse af OLED -biblioteket findes i mit oscilloskop Instruerbart i trin 8. Du skal downloade og installere driverbiblioteket SimpleSH1106.zip, som er i trin 8. (Jeg vil ikke uploade en anden kopi her og skal vedligeholde to kopier.)

INO -filen kan downloades herunder. Pin -numrene, der bruges til OLED, er angivet omkring linje 70. Hvis du har bygget mit "Oscilloskop og Signalgenerator i en Matchbox" og vil teste denne INO -fil med den, aktiveres alternative pin -numre via en #define.

Jeg har vist et stripboard -layout til kredsløbet. Der er to stripboards - et til Nano og AD9833 og et til displayet. De skal danne en sandwich. Tavlerne er vist fra komponentsiden. Fine fleksible ledninger forbinder de to brædder. Fastgør brædderne sammen med loddet stand-offs. I mit diagram er kobberet af stribetavlen vist i cyan. Røde linjer er trådled på stribetavlen eller fleksible ledninger, der forbinder brædderne. Jeg har ikke vist strøm- og "signal" -ledningerne.

AD9833 -modulet er loddet på kobbersiden af tavlen - på den modsatte side fra Nano. Loddebolte på kobberstrimlerne monteres derefter AD9833 på dem og loddes på.

Displayet viser enten en enkelt frekvens eller "min" og "max" frekvenser.

Der er to trykknapper: en "vandret" knap for at vælge et ciffer på frekvenserne og en "lodret" knap for at ændre dette ciffer.

Jeg driver signalgeneratoren fra det kredsløb, jeg udvikler - jeg har altid 5V til rådighed på min arbejdsstation.

Trin 3: Fremtidige udviklinger

Fremtidige udviklinger
Fremtidige udviklinger

Kan det være batteridrevet? Ja, tilføj bare en 9V PP3 tilsluttet RAW -stiften på Nano. Den bruger typisk 20mA.

Kan den drives af en enkelt litiumcelle? Jeg kan ikke se hvorfor ikke. Du skal slutte OLED Vdd og dens pull-up modstand til 3,7V batteriet (jeg tvivler på, om 3,3V output fra Arduino ville fungere korrekt).

En sweep -generator er mere nyttig, når du tester et filters frekvensrespons, hvis du kan graf amplitude vs frekvens. Det er svært at måle amplituden af et signal - du er nødt til at afregne forfaldet på din konvolutdetektor vs krusning for lave frekvenser og responstid for høje frekvenser. Efter at have bygget din amplitude -detektor, kan du føde dens output til ADC'en på Arduino'en i "Simplest Signal Generator" og derefter sende resultatet sammen med den aktuelle frekvens til pc'en.

Denne side er et nyttigt udgangspunkt, eller søg på Google efter "kuvertdetektor" eller "spidsdetektor". I det foreslåede kredsløb ovenfor ville du indstille signalfrekvensen, vente på, at den stabiliserede sig, indstille Arduino A0 -stiften til at udsende digital lav, vente med at aflade C, indstille A0 til input, vente og derefter måle med ADC. Lad mig vide, hvordan du kommer videre.

Anbefalede: