Innholdsfortegnelse:

Signalgenerator AD9833: 3 trinn
Signalgenerator AD9833: 3 trinn

Video: Signalgenerator AD9833: 3 trinn

Video: Signalgenerator AD9833: 3 trinn
Video: Плата которая нужна всем! Автоматическое управление вентилятором. 2024, Juli
Anonim
Signalgenerator AD9833
Signalgenerator AD9833
Signalgenerator AD9833
Signalgenerator AD9833

En signalgenerator er et veldig nyttig stykke testutstyr. Denne bruker en AD9833 -modul og en Arduino Nano - det er alt, ikke engang en PCB. Du kan eventuelt legge til en OLED -skjerm. AD9833 kan generere sinus-, trekant- og kvadratbølger fra 0,1 Hz til 12,5 MHz - programvaren i dette prosjektet er begrenset til 1 Hz til 100 kHz.

Det har vært andre instrukser som bruker en Arduino og en AD9833, her og her. Dette er enklere og kan brukes som feiemotor. Feiegeneratorer hjelper til med å teste frekvensresponsen til filtre, forsterkere og så videre. I motsetning til de andre Instructables -designene, inkluderer dette ikke en forsterker eller amplitudekontroll, men du kan legge dem til hvis du vil.

Trinn 1: Enkleste signalgenerator

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

For den enkleste signalgeneratoren lodder du bare AD9833 -modulen på baksiden av Arduino Nano. Ingen PCB er nødvendig.

AD9833 -modulen jeg valgte er lik denne. Jeg sier ikke at det er den beste eller billigste leverandøren, men du bør kjøpe en som ser ut som bildet (eller bildet ovenfor).

Tilkoblingene mellom modulene er:

  • begrunnelse koblet sammen
  • D2 = FSync
  • D3 = Clk
  • D4 = Data
  • D6 = Vcc av AD9833

AD9833 drives av datapinne D6 på Arduino - Arduino kan levere tilstrekkelig strøm. Jeg har lagt til en 100n frakoblingskondensator fordi jeg trodde jeg burde det, men jeg kunne ikke se noen forskjell - det er allerede en avkoblingskondensator på AD9833 -modulkortet.

Hvis du var fancy, kan du bekymre deg for "analog bakken" vs "digital bakken", men hvis du hadde lyst, ville du brukt mer enn £ 4.

Den enkleste signalgeneratoren styres og drives via en USB -ledning fra en PC. USB-en emulerer en seriell port som kjører på 115200bps (8-bits, ingen paritet). Kommandoene er:

  • '0'.. '9': skift sifferet til "min" frekvensmatrise
  • 'S': angi AD9833 frekvens og produser sinusbølge
  • 'T': angi frekvens og produser trekantbølge
  • 'Q': angi frekvens og produser firkantbølge
  • 'R': tilbakestill AD9833
  • 'M': kopier "min" frekvensmatrise til "maks" matrise
  • 'G': sveip fra "min" til "maks" over 1 sekund
  • 'H': sveip fra "min" til "maks" over 5 sekunder
  • 'I': sveip fra "min" til "maks" over 20 sekunder

Arduino-programmet inneholder to matriser på 6 tegn "min" og "maks. Hvis du sender et siffer, flyttes det til" min "-feltet. Hvis du sender et" S ", blir" min "-typene konvertert til et longint frekvens og sendt til AD9833. Så sender strengen

002500S

vil sette AD9833 -utgangen til en 2500Hz sinusbølge. Du må alltid sende alle 6 sifrene. Minste frekvens er 000001 og maksimal frekvens er 999999.

Hvis du sender et 'M', kopieres "min" -matrisen til "maks" -matrisen. Hvis du sender en 'H', sender AD9833 gjentatte ganger en gradvis økende frekvens over 5 sekunder. Den starter med "min" frekvens og 5 sekunder senere er på "maks" frekvens. Så

020000M000100SH

sveiper fra 100Hz til 20kHz. Frekvensendringen er logaritmisk, så etter 1 sekund vil frekvensen være 288Hz, etter 2 sekunder 833Hz deretter 2402, 6931 og 20000. Frekvensen endres hvert milliSekund.

Sløyfen stopper når Arduino mottar et annet tegn, så vær forsiktig så du ikke sender kommandoen etterfulgt av vognretur eller linjemating. Det ekstra tegnet ville avslutte løkken. Hvis du bruker Serial Monitor, er det en boks nederst til høyre som for eksempel kan si "Både NL & CR" som (tror jeg) sender tegn etter kommandoen din. Sett den til "No line ending".

Du kan laste ned Windows EXE -programmet nedenfor som sender de nødvendige kommandoene, eller du kan skrive din egen. Arduino INO -filen er også her.

Trinn 2: Legg til en OLED

Legg til en OLED
Legg til en OLED
Legg til en OLED
Legg til en OLED
Legg til en OLED
Legg til en OLED

Hvis du legger til en OLED og to knapper, kan signalgeneratoren fungere alene uten PC.

De av dere som har lest oscilloskopet Instructable, vil kjenne igjen likheten. AD9833 -modulen kan legges til oscilloskopet mitt for å produsere et "Oscilloskop og signalgenerator i en fyrstikkeske".

Skjermen er en 1,3 OLED som kjører på 3,3V som styres av en SH1106 -brikke via en I2C -buss.

Søk på eBay etter 1.3 "OLED. Jeg vil ikke anbefale en bestemt selger ettersom lenker raskt går ut på dato. Velg en som ser ut som det bildet, sier" I2C "eller" IIC "og har fire pinner merket VDD GND SCL SDA. (Noen skjermer ser ut til å ha pinnene i en annen rekkefølge. Sjekk dem. Det riktige navnet på klokken på I2C er "SCL", men på eBay kan tavlene merkes "SCK" som min på bildet.)

En fyldigere beskrivelse av OLED -biblioteket er i oscilloskopet mitt Instruerbart i trinn 8. Du bør laste ned og installere driverbiblioteket SimpleSH1106.zip som er i trinn 8. (Jeg vil ikke laste opp en annen kopi her og må vedlikeholde to kopier.)

INO -filen kan lastes ned nedenfor. PIN -numrene som brukes for OLED er deklarert rundt linje 70. Hvis du har bygd min "Oscilloscope and Signal Generator in a Matchbox" og vil teste denne INO -filen med den, aktiveres alternative pin -numre via en #define.

Jeg har vist en plankeoppsett for kretsen. Det er to stripeboards - en for Nano og AD9833 og en for displayet. De skal danne en sandwich. Tavlene er vist fra komponentsiden. Fine fleksible ledninger forbinder de to brettene. Fest brettene sammen med loddede avstand. I diagrammet mitt er kobberet til stripebrettet vist i cyan. Røde linjer er trådlenker på tavlen eller fleksible ledninger som forbinder brettene. Jeg har ikke vist strøm- og "signal" -ledningene.

AD9833 -modulen er loddet på kobbersiden av tavlen - på motsatt side av Nano. Loddestifter på kobberstrimlene monterer du deretter AD9833 på dem og lodder den på.

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

Det er to trykknapper: en "Horisontal" -knapp for å velge et siffer på frekvensene og en "Vertikal" -knapp for å endre sifferet.

Jeg driver signalgeneratoren fra kretsen jeg utvikler - jeg har alltid 5V tilgjengelig på arbeidsstasjonen min.

Trinn 3: Fremtidig utvikling

Fremtidige utviklinger
Fremtidige utviklinger

Kan det være batteridrevet? Ja, bare legg til en 9V PP3 koblet til RAW -pinnen på Nano. Den bruker vanligvis 20mA.

Kan den drives av en enkelt litiumcelle? Jeg skjønner ikke hvorfor ikke. Du bør koble OLED Vdd og pull-up-motstanden til 3,7V-batteriet (jeg tviler på om 3,3V-utgangen til Arduino ville fungere skikkelig).

En feiegenerator er mer nyttig når du tester frekvensresponsen til et filter hvis du kan graf amplitude vs frekvens. Å måle amplituden til et signal er vanskelig - du må bytte ut forfallet til konvoluttdetektoren vs krusning for lave frekvenser og responstid for høye frekvenser. Etter å ha bygget din amplitude -detektor, kan du mate utgangen til ADC -en til Arduino på "Simplest Signal Generator" og deretter sende resultatet, sammen med gjeldende frekvens, til PC -en.

Denne siden er et nyttig utgangspunkt eller søk på "konvoluttdetektor" eller "toppdetektor" på Google. I den foreslåtte kretsen ovenfor ville du stille inn signalfrekvensen, vente på at den skulle stabilisere seg, sette Arduino A0 -pinnen til å sende ut digital lav, vente med å utlade C, sette A0 til inngang, vente og deretter måle med ADC. Gi meg beskjed om hvordan du får det til.

Anbefalt: