Innehållsförteckning:

Funktionsgenerator: 12 steg (med bilder)
Funktionsgenerator: 12 steg (med bilder)

Video: Funktionsgenerator: 12 steg (med bilder)

Video: Funktionsgenerator: 12 steg (med bilder)
Video: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Juli
Anonim
Funktionsgenerator
Funktionsgenerator
Funktionsgenerator
Funktionsgenerator

Denna instruerbara beskriver utformningen av funktionsgeneratorn baserad på Maxims analoga integrerade krets MAX038

Funktionsgeneratorn är ett mycket användbart verktyg för elektronikfreak. Det behövs för att ställa in resonanskretsar, testa ljud- och videoutrustning, utforma analoga filter och för många andra olika ändamål.

Idag finns det två huvudtyper av funktionsgeneratorer; digitala, (DSP -baserade, DDS …) som allt oftare används och analoga, som var ursprunget.

Båda typerna har sina fördelar och nackdelar. De digitala generatorerna kan generera signaler med mycket stabil frekvens, men de har problem med att generera mycket rena sinussignaler (det som inte är problem för analog). De huvudsakligen spridda funktionsgeneratorer baserade på DDS -tillvägagångssätt har inte så stort frekvensgenereringsintervall.

Sedan länge ville jag designa en användbar funktionsgenerator, som på något sätt kunde kombinera några av fördelarna med båda typerna (analoga och digitala) generatorer. Jag bestämde mig för att basera designen på Maxim -chipet MAX038*

* Anmärkning - detta chip tillverkas och säljs inte längre av Maxim. Det är föråldrat. Det är fortfarande möjligt att hitta det på eBay, Aliexpress och andra webbplatser för elektroniska komponenter.

Det finns även andra analoga funktionsgeneratorchips (XR2206 från Exar, icl8038 från Intersil), men jag hade

en MAX038 tillgänglig, och jag använde den. Funktionsgeneratorns digitala funktioner utfördes av ett Atmega328 -chip. Dess funktioner är följande:

  • styr frekvensområdet
  • styr signaltypen (sinus, rektangulär, triangulär, sågtand)
  • mäter signalens amplitud
  • mäter DC -förskjutningen
  • mäter signalens frekvens
  • mäter THD för sinussignalen i ljudområdet (detta måste fortfarande implementeras)
  • visar all denna information på en 16x2 LCD -skärm med tecken.

Steg 1: MAX038 Beskrivning

MAX038 Beskrivning
MAX038 Beskrivning

Jag har bifogat databladet MAX038. De viktigaste chipparametrarna kan ses:

♦ 0,1 Hz till 20 MHz driftsfrekvensområde

♦ Triangle, Sawtooth, Sine, Square, and Pulse Waveforms

♦ Oberoende frekvens- och arbetscykeljusteringar

♦ 350 till 1 Frequency Sweep Range

♦ 15% till 85% variabel arbetscykel

♦ Utgångsbuffert med låg impedans: 0,1Ω

♦ Låg 200ppm/° C Temperaturdrift

Ett annat viktigt krav är behovet av dubbelmatning (± 5V). Utmatningsamplituden är fast (~ 2 VP-P med 0 V DC förskjutning).

På sidan 8 i databladet kan man se blockdiagrammet för chipet. På sidan 11 kan man se den enklaste kretsen, som kan användas för att generera sinusvågssignal. Denna krets togs som grund för utformningen av funktionsgeneratorn.

Steg 2: Kretsen…

Kretsen…
Kretsen…

På bilden presenteras kretsen för funktionsgeneratorn. Jag gjorde den här bilden med högsta möjliga upplösning för att garantera att varje.enhetsvärde kan läsas korrekt. Schemat ser ganska komplext ut och för att förstås bättre kommer jag att förklara dess huvuddelar separat. Många läsare kan skylla på mig att kretsen är för överflödig. Det är sant. Först kan du se att den innehåller två MAX038 -marker. Anledningen är att kretskortet stöder både typ av paket SO och DIP. Redundansen kan också ses i vissa funktioner -

1) Lysdioder visar det aktuella aktiva frekvensområdet, men det visas också på LCD -skärmen;

2) Lysdioder används också för att indikera signaltypen, men även LCD -skärmen visar denna information

Designen görs på detta sätt för att möjliggöra mer flexibilitet för användaren - under önskan kunde han inte använda LCD -skärmen, eller helt enkelt kan utelämna lödningen av lysdioder. Jag har lödt dem för att kunna felsöka funktionaliteten under designfaserna.

Det kan också märkas att jag använder många opampar. Några av dem kan utelämnas utan problem - särskilt buffertarna. För närvarande erbjuder opamparna själva en stor redundans - i ett paket kan du hitta 2, 4 till och med 8 separata förstärkare, och detta till relativt lågt pris. Varför inte använda dem?

Redundanta är också filtreringskondensatorerna - varje analogt chip som används har sin egen kondensatorbank (tantal + keramiska kondensatorer för båda förnödenheterna). Några av dem kan också utelämnas.

Steg 3: Förklaring av krets - strömförsörjning (1)

Kretsförklaring - strömförsörjning (1)
Kretsförklaring - strömförsörjning (1)

Som sagt denna generator kräver dubbla försörjning. Den positiva spänningen skapas genom användning av 7805 linjär spänningsregulator. Det negativa utbudet genereras av 7905 -chip. 2x6V -transformatorns mittkran är ansluten till kortets gemensamma mark. De genererade strömförsörjningarna - både positiva och negativa separeras till analoga och digitala av block. Två lysdioder indikerar närvaron av varje strömförsörjning.

Steg 4: Kretsförklaring - Frekvensomfångskontroll (2)

Kretsförklaring - Frekvensomfångskontroll (2)
Kretsförklaring - Frekvensomfångskontroll (2)

För att täcka stort frekvensområde används en multipelkondensatorbank. Kondensatorerna har olika värden och de definierar olika frekvensdelområden. Endast en av dessa kondensatorer används under arbetet - dess bottenplatta är jordad av MOS -transistoromkopplare. Vilka kondensatorer bottenplatta som ska jordas styrs av Atmega328 med användning av demultiplexer -chip 74HC238. Som MOS -switchar använde jag BSS123 -transistorer. Huvudkravet för denna omkopplare är att ha låg Ron och lägsta möjliga dräneringskapacitans. Den digitala styrningen av kondensatorbanken kan utelämnas - kretskortet innehåller hål för lödning av trådarna för mekanisk vridomkopplare.

Steg 5: Kretsförklaring - frekvensjustering (3)

Kretsförklaring - frekvensjustering (3)
Kretsförklaring - frekvensjustering (3)

På bilden visas frekvens- och driftscykelstyrkretsen. Där använde jag standard LM358 opamp (dubbel förstärkare i ett paket). Jag använde också dubbla 10K potentiometrar.

MAX038 -chipet genererar intern spänningsreferens 2.5V, som normalt används som referens för alla justeringar.

Denna spänning appliceras på den inverterande ingången till IC8a och den genererar negativ spänningsreferens som används för DADJ (driftcykeljustering). Båda spänningarna appliceras på potentiometern för DADJ, vilken mittkran är buffrad och appliceras på DADJ -stiftet på MAX038 -chipet. Bygeln JP5 kan användas för att inaktivera DADJ -funktionen, när den är ansluten till jord. "Kurs" -frekvenskontrollen förformas genom att ändra den nuvarande sänkta / hämtade i MAX038 "IIN" -nålen. Denna ström definieras av motståndet R41 och utspänningen för opampen som buffrar mittkranen på kursfrekvensstyrpotentiometern. Alla dessa kan ersättas av en enda potentiometer (i reostatanslutning) mellan REF- och IIN MAX038 -stiften.

Steg 6: Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)

Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)
Kretsförklaring - Amplitudkontroll, SYNC -signalgenerering … (4)

Som skrivet i databladet har utsignalen pf MAX038 amplitud ~ 1 V med likspänning lika med jordpotentialen.

Jag ville ha möjlighet att styra signalamplituden och själv kunna definiera DC -förskjutningen. Som ytterligare funktion ville jag ha SYNC -signal med CMOS -nivåer parallellt med utsignalen. Som standard genererar MAX038 -chipet en sådan signal, men i databladet läste jag att om den här funktionen är aktiverad (vad betyder - DV+ -stift anslutet till 5V) kan några toppar (brus) observeras i den analoga utgångssignalen. Jag ville behålla det så rent som möjligt och av den anledningen genererade jag SYNC -signalen externt. Kretskortet görs på det sättet att DV+ -pinnen enkelt kan överbryggas till huvudförsörjningen. SYNC -stiftet dirigeras till BNC -kontakten - endast 50 Ohm motstånd måste lödas. I detta fall kan SYNC -signalgenereringskretsarna utelämnas. Här som du ser använder jag också dubbla potentiometrar, men de är inte parallellkopplade. Anledningen till det är - jag mäter amplituden relativt. Spänningen vid mitten av en potentiometer avkänns av Atmega328 ADC och signalamplituden beräknas baserat på detta värde. Naturligtvis är denna metod inte särskilt exakt (den är beroende av matchningen av båda potentiometersektionerna, vilket inte alltid förekommer), men det är tillräckligt exakt för mina applikationer. I denna krets fungerar IC2A som spänningsbuffert. IC4A också. IC2B opamp fungerar som summeringsförstärkare - den skapar funktionsgeneratorns utsignal som summan av offset -spänningen och huvudsignalen med justerad amplitud. Det känns av Atmega328 ADC. IC4B opamp fungerar som komparator - den styr SYNC -genereringsomformaren som realiseras av de två MOS -transistorerna (BSS123 och BSS84). U6 (THS4281 - Texas Instruments) skiftar utsignalen som genereras av MAX038 DC med 2,5 V och förstärker den 1,5 gånger. Så genererad signal avkänns av AVR ADC och bearbetas vidare med FFT -algoritm. I den här delen använde jag högkvalitativ järnväg till opamp med 130 MHz bandbredd (TI - LMH6619).

För att vara lätt att förstå hur exakt SYNC -signalgenerering fungerar, inkluderar jag några bilder på LTSpice -simuleringar av kretsen. På den tredje bilden: den blå signalen är offset -spänningen (ingången till IC2B). Den gröna är utsignalen med justerad amplitud. Den röda är utsignalen från den funktionella generatorn. Cyankurvan är SYNC -signalen.

Steg 7: PCB -design

PCB -design
PCB -design

Jag använde "Eagle" för utformningen av kretskortet. Jag beställde kretskortet på "PCBway". Dem tog bara fyra dagar att producera brädorna och en vecka att leverera dem. Deras kvalitet är hög, och priset är extremt lågt. Jag betalade bara 13 USD för 10 PCB!

Utöver det kunde jag beställa PCB i annan färg utan prisökning. Jag har valt gula:-).

Jag bifogar gerber -filerna enligt "PCBway" -designreglerna.

Steg 8: Lödning

Image
Image
Lödning
Lödning
Lödning
Lödning

Först lodde jag strömförsörjningskretsarna..

Efter att ha testat matningsblocket har jag lödt Atmega328 -chipet med dess stödenheter: kvartskristall, kondensatorer, filtreringskåpor och ISP -kontakten. Som du ser har jag en bygel i matningslinjen på AVR -chipet. Jag kopplar bort det när jag programmerar chippet via Internetleverantören. Jag använder USBtiny programmerare för detta ändamål.

Som nästa steg lödde jag de-mux-chipet 74HC238, lysdioderna indikerar frekvensområdet. Jag laddade ett litet Arduino -program i Atmega -chipet som testade multiplexen. (se videon under länken ovan)

Steg 9: Lödning …

Lödning…
Lödning…
Lödning…
Lödning…
Lödning…
Lödning…

Som nästa steg lödde jag opamparna som arbetade i DC -läget (LM358) och frekvens- och DADJ -justeringspotentiometrarna och kontrollerade alla deras funktioner.

Vidare lödde jag BSS123 -switcharna, de frekvensbestämande kondensatorerna och MAX039 -chipet. Jag testade den funktionella generatorn som sonderade signalen vid den ursprungliga chipsignalutgången. (Du kan se min gamla sovjet, producerad 1986, som fortfarande arbetar oscilloskop i funktion:-))

Steg 10: Mer lödning …

Mer lödning …
Mer lödning …
Mer lödning …
Mer lödning …
Mer lödning …
Mer lödning …

Efter det lödde jag uttaget för LCD -skärmen och testade det med "Hello world" -skissen.

Jag lödde de andra återstående opamparna, kondensatorerna, potentiometrarna och BNC -kontakterna.

Steg 11: Programvara

Image
Image
programvara
programvara

För att skapa Atmega328 -firmware använde jag Arduino IDE.

För frekvensmätningen använde jag biblioteket "FreqCounter". Skissfilen och det använda biblioteket finns att ladda ner. Jag har skapat speciella symboler för att representera det för närvarande använda läget (sinus, rektangulär, triangel).

På bilden ovan kan du se informationen på LCD -skärmen:

  • Frekvens F = xxxxxxxx i Hz
  • Frekvensområde Rx
  • Amplitud i mV A = xxxx
  • Förskjutning i mV 0 = xxxx
  • typ av signal x

Funktionsgeneratorn har två tryckknappar på framsidan på vänster sida - de används för att ändra frekvensområdet (steg upp -steg ned). Till höger om dem är reglaget för styrning av läget, efter det från vänster till höger följer potentiometern för styrning av frekvensen (kurs, fin, DADJ), amplitud och förskjutning. Nära offsetjusteringspotentiometern placeras omkopplaren som används för att pendla mellan den fasta vid 2,5V DC -förskjutningen och den inställda.

Jag har hittat ett litet fel i "Generator.ino" -koden i ZIP -filen - symbolerna för sinus- och triangelvågformer byttes. I den enda "Generator.ino" -filen som bifogas här rättas felet.

Steg 12: Att bli klar …

Image
Image

Som sista steg tänker jag implementera ytterligare funktion - mätning av THD för ljudfrekvens sinussignal i realtid med FFT. Detta behövs, eftersom sinussignalens arbetscykel kan skilja sig från 50%, vad som kan orsakas av interna chipmatchningar och andra orsaker och kan skapa harmoniska snedvridningar. Driftscykeln kan justeras med potentiometern, men utan att observera signalen på oscilloskopet eller spektrumanalysatorn är det omöjligt att trimma sin form. Att beräkna THD baserat på FFT -algoritmen kan lösa problemet. Resultatet av THD -beräkningarna kommer att visas på LCD -skärmen i det övre högra tomma utrymmet.

På videon kan man se spektrumet för det som genereras av MAX038 sinussignal. Spektrumanalysatorn är baserad på Arduino UNO -kort + 2,4 TFT -skärm. Spektrumanalysatorn använder SpltRadex Arduino -biblioteket som utvecklats av Anatoly Kuzmenko för att utföra FFT i realtid.

Jag bestämde mig fortfarande inte - att använda det här biblioteket eller att använda FHT -biblioteket som skapats av Musiclabs.

Jag tänker använda informationen från frekvensmätarens mätningar för att beräkna det korrekta provtagningsfönstret och avbryta användningen av ytterligare fönster under FFT -beräkningarna. Jag behöver bara hitta lite ledig tid för att få detta att hända. Jag hoppas få några resultat snart ….

Rekommenderad: