Cuprins:

Generator de funcții: 12 pași (cu imagini)
Generator de funcții: 12 pași (cu imagini)

Video: Generator de funcții: 12 pași (cu imagini)

Video: Generator de funcții: 12 pași (cu imagini)
Video: Răspunsul în frecvență cu funcția "sweep" 2024, Iulie
Anonim
Generator de funcții
Generator de funcții
Generator de funcții
Generator de funcții

Această instrucțiune descrie proiectarea generatorului de funcții pe baza circuitului integrat analogic Maxims MAX038

Generatorul de funcții este un instrument foarte util pentru ciudatele electronice. Este necesar pentru reglarea circuitelor de rezonanță, testarea echipamentelor audio și video, proiectarea filtrelor analogice și pentru multe alte scopuri diferite.

Astăzi există două tipuri principale de generatoare de funcții; digitale, (bazate pe DSP, DDS …) care sunt din ce în ce mai des utilizate și analogice, care au fost originile.

Ambele tipuri au avantajele și dezavantajele lor. Generatoarele digitale pot genera semnale cu o frecvență foarte stabilă, dar au probleme cu generarea de semnale sinusoidale foarte pure (ceea ce nu este o problemă pentru unul analogic). De asemenea, generatoarele de funcții în principal răspândite bazate pe abordarea DDS nu au o gamă atât de mare de generare a frecvenței.

De mult timp am vrut să proiectez un generator de funcții util, care să poată combina cumva unele dintre avantajele ambelor tipuri de generatoare (analogice și digitale). Am decis să bazez designul pe cipul Maxim MAX038 *

* Observație - acest cip nu mai este produs și vândut de Maxim. Este învechit. Este încă posibil să îl găsiți în eBay, Aliexpress și alte site-uri pentru componente electronice.

Există și alte cipuri generatoare de funcții analogice (XR2206 de la Exar, icl8038 de la Intersil), dar am avut

un MAX038 disponibil și l-am folosit. Caracteristicile digitale ale generatorului de funcții au fost realizate de un cip Atmega328. Funcțiile sale sunt următoarele:

  • controlează selecția intervalului de frecvență
  • controlează tipul semnalului (sinusoidal, dreptunghiular, triunghiular, dinte de ferăstrău)
  • măsoară amplitudinea semnalului
  • măsoară decalajul DC
  • măsoară frecvența semnalului
  • măsoară THD-ul semnalului sinusoidal din gama audio (acesta trebuie încă implementat)
  • afișează toate aceste informații pe un ecran LCD de 16x2 caractere.

Pasul 1: MAX038 Descriere

MAX038 Descriere
MAX038 Descriere

Am atașat foaia tehnică MAX038. Se pot vedea cei mai importanți parametri ai cipului:

♦ Gama de frecvență de operare de la 0,1 Hz la 20 MHz

♦ Forme de undă triunghi, dinte de ferăstrău, sin, pătrat și puls

♦ Ajustări independente ale frecvenței și ciclului de funcționare

♦ Gama de măturare de frecvență de la 350 la 1

♦ Cicl de funcționare variabil de la 15% la 85%

♦ Tampon de ieșire cu impedanță redusă: 0,1Ω

♦ Deriva de temperatură scăzută la 200 ppm / ° C

O altă cerință importantă este necesitatea alimentării duale (± 5V). Amplitudinea de ieșire este fixă (~ 2 VP-P cu 0 V DC offset).

Pe pagina 8 a fișei tehnice se poate vedea schema bloc a cipului. La pagina 11 poate fi văzut cel mai simplu circuit, care poate fi utilizat pentru generarea semnalului de undă sinusoidală. Acest circuit a fost luat ca bază pentru proiectarea generatorului de funcții.

Pasul 2: Circuitul…

Circuitul…
Circuitul…

Pe imagine este prezentat circuitul generatorului de funcții Am făcut această imagine cu cea mai mare rezoluție posibilă pentru a garanta că fiecare valoare a dispozitivului poate fi citită corect. Schema arată destul de complexă și pentru a fi înțeleasă mai bine, voi explica părțile sale principale separat. Mulți cititori m-ar putea învinovăți că circuitul este prea redundant. Asta e adevarat. La început puteți vedea că conține două jetoane MAX038. Motivul este că PCB acceptă ambele tipuri de pachete SO și DIP. Redundanța poate fi văzută și în unele funcții -

1) LED-urile arată intervalul curent de frecvență activă, dar este afișat și pe ecranul LCD;

2) LED-urile sunt utilizate și pentru a indica tipul de semnal, dar și LCD-ul afișează aceste informații

Proiectarea este realizată în acest mod pentru a permite utilizatorului o mai mare flexibilitate - sub dorința sa, el nu ar putea folosi LCD-ul sau pur și simplu poate omite lipirea LED-urilor. Le-am lipit pentru a putea depana funcționalitatea în timpul fazelor de proiectare.

Se poate observa, de asemenea, că folosesc o mulțime de opamps. Unele dintre ele pot fi omise fără probleme - în special tampoanele. În prezent, opamps-urile prin sine oferă o redundanță mare - într-un singur pachet puteți găsi 2, 4 chiar și 8 amplificatoare separate, și asta la un preț relativ mic. De ce să nu le folosești?

Redundanți sunt și condensatorii de filtrare - fiecare cip analogic utilizat are propriul banc de condensatori (tantal + condensatori ceramici pentru ambele consumabile). Unele dintre ele pot fi, de asemenea, omise.

Pasul 3: Explicația circuitului - Sursa de alimentare (1)

Explicația circuitului - sursă de alimentare (1)
Explicația circuitului - sursă de alimentare (1)

După cum am spus, acest generator necesită o alimentare dublă. Tensiunea pozitivă este creată prin utilizarea regulatorului de tensiune liniar 7805. Alimentarea negativă este generată de cipul 7905. Punctul de mijloc al transformatorului 2x6V este conectat la masa comună a plăcii. Sursele de alimentare generate - atât pozitivul, cât și negativul sunt separate de analogice și digitale prin șocuri. Două LED-uri indică prezența fiecărei surse.

Pasul 4: Explicația circuitului - Controlul intervalului de frecvență (2)

Explicația circuitului - Controlul frecvenței (2)
Explicația circuitului - Controlul frecvenței (2)

Pentru a acoperi o gamă largă de frecvențe se utilizează o baterie de condensatori multipli. Condensatoarele au valori diferite și definesc sub-intervale de frecvență diferite. Numai unul dintre acești condensatori este utilizat în timpul lucrului - placa inferioară este legată la pământ de comutatorul cu tranzistor MOS. Placa inferioară a condensatorilor care trebuie conectată la pământ este controlată de Atmega328 prin utilizarea cipului demultiplexor 74HC238. Ca switch-uri MOS, am folosit tranzistoare BSS123. Principala cerință pentru acest comutator este să aveți Ron scăzut și capacitatea de scurgere cea mai mică posibilă. Controlul digital al băncii de condensatori poate fi omis - PCB conține găuri pentru lipirea firelor pentru întrerupătorul rotativ mecanic.

Pasul 5: Explicația circuitului - Reglarea frecvenței (3)

Explicația circuitului - Reglarea frecvenței (3)
Explicația circuitului - Reglarea frecvenței (3)

Pe imagine sunt afișate circuitul de control al frecvenței și al ciclului de funcționare. Acolo am folosit opampul standard LM358 (amplificator dual într-un singur pachet). Am folosit și potențiometre duale de 10K.

Cipul MAX038 generează tensiunea internă de referință 2,5V, care este utilizat în mod normal ca referință pentru toate reglajele.

Această tensiune este aplicată la intrarea inversă a IC8a și generează referință de tensiune negativă utilizată pentru DADJ (reglarea ciclului de funcționare). Ambele tensiuni sunt aplicate la potențiometrul pentru DADJ, care robinetul central este tamponat și aplicat pinului DADJ al cipului MAX038. Jumperul JP5 poate fi folosit pentru a dezactiva funcția DADJ, atunci când este conectat la masă. Controlul frecvenței „Course” este preformat prin schimbarea curentului scufundat / provenit din pinul „IIN” MAX038. Acest curent este definit de rezistența R41 și de tensiunea de ieșire a opampului care tamponează robinetul de mijloc al potențiometrului de control al frecvenței cursului. Toate acestea pot fi înlocuite cu un singur potențiometru (în conexiune reostat) între pinii REF și IIN MAX038.

Pasul 6: Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)

Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)
Explicația circuitului - Controlul amplitudinii, generarea de semnal SYNC … (4)

Așa cum este scris în foaia de date, semnalul de ieșire pf MAX038 are amplitudine ~ 1 V cu tensiune continuă egală cu potențialul de masă.

Am vrut să am posibilitatea de a controla amplitudinea semnalului și de a putea defini singur offset-ul DC. Ca o caracteristică suplimentară, am vrut să am semnal SYNC cu niveluri CMOS în paralel cu semnalul de ieșire. În mod implicit, cipul MAX038 generează un astfel de semnal, dar în foaia tehnică am citit că, dacă această caracteristică este activată (ce înseamnă - DV + pin conectat la 5V), unele vârfuri (zgomot) pot fi observate în semnalul analogic de ieșire. este cât mai curat posibil și din acest motiv am generat semnalul SYNC extern. PCB-ul este realizat în modul în care pinul DV + poate fi conectat cu ușurință la sursa principală. Pinul SYNC este direcționat către conectorul BNC - numai rezistența de 50 Ohm trebuie lipită. În acest caz, circuitele de generare a semnalului SYNC pot fi omise. Aici, după cum vedeți, folosesc și potențiometre duale, dar acestea nu sunt conectate în paralel. Motivul pentru aceasta este - măsoară relativ amplitudinea. Tensiunea din punctul de mijloc al unui potențiometru este detectată de Atmega328 ADC și amplitudinea semnalului este calculată pe baza acestei valori. Desigur, această metodă nu este foarte precisă (se bazează pe potrivirea ambelor secțiuni ale potențiometrului, ceea ce nu apare întotdeauna), dar este suficient de precisă pentru aplicațiile mele. În acest circuit IC2A funcționează ca tampon de tensiune. IC4A, de asemenea. IC2B opamp funcționează ca amplificator sumator - creează semnalul de ieșire al generatorului funcțional ca sumă a tensiunii offset și a semnalului principal cu amplitudine reglată. Divizorul de tensiune R15. R17 generează un semnal de tensiune adecvat pentru măsurarea offsetului semnalului principal DC. Este simțit de Atmega328 ADC. Opamp IC4B funcționează ca un comparator - controlează invertorul de generație SYNC realizat de cei doi tranzistoare MOS (BSS123 și BSS84). U6 (THS4281 - Texas Instruments) schimbă semnalul de ieșire generat de MAX038 DC cu 2,5 V și îl amplifică de 1,5 ori. Deci semnalul generat este detectat de AVR ADC și procesat în continuare cu algoritmul FFT. În această parte am folosit opampuri feroviare de înaltă calitate cu lățime de bandă de 130 MHz (TI - LMH6619).

Pentru a fi ușor de înțeles cum funcționează exact generarea de semnal SYNC, includ câteva imagini ale simulărilor LTSpice ale circuitului. În a treia imagine: semnalul albastru este tensiunea de offset (intrarea IC2B). Cel verde este semnalul de ieșire cu amplitudine reglată. Cea roșie este semnalul de ieșire al generatorului funcțional, curba cyan este semnalul SYNC.

Pasul 7: Proiectare PCB

Design PCB
Design PCB

Am folosit „Eagle” pentru proiectarea PCB-ului. Am comandat PCB-urile la „PCBway”. Le-a luat doar patru zile pentru a produce plăcile și o săptămână pentru a le livra. Calitatea lor este ridicată, iar prețul este extrem de scăzut. Am plătit doar 13 USD pentru 10 PCB-uri!

În plus, aș putea comanda PCB de culoare diferită, fără creșterea prețului. Le-am ales pe cele galbene:-).

Atașez fișierele Gerber conform regulilor de proiectare „PCBway”.

Pasul 8: lipire

Image
Image
Lipire
Lipire
Lipire
Lipire

Mai întâi am lipit dispozitivele de circuite de alimentare..

După testarea blocului de alimentare, am lipit cipul Atmega328 cu dispozitivele sale de susținere: cristal de cuarț, condensatori, capace de filtrare și conectorul ISP. După cum vedeți, am un jumper în linia de alimentare a cipului AVR. Îl deconectez când programez cipul prin ISP. Folosesc programatorul USBtiny în acest scop.

Ca pas următor, am lipit cipul de-mux 74HC238, LED-urile indicând gama de frecvențe. Am încărcat un mic program Arduino în cipul Atmega, care testa testul multiplexării. (vezi videoclipul de sub linkul de mai sus)

Pasul 9: lipire …

Lipire …
Lipire …
Lipire …
Lipire …
Lipire …
Lipire …

Ca pas următor, am lipit opampurile care funcționează în modul DC (LM358) și potențiometrele de reglare a frecvenței și DADJ și le-am verificat toate funcțiile.

Mai departe am lipit comutatoarele BSS123, condensatoarele de determinare a frecvenței și cipul MAX039. Am testat generatorul funcțional care testează semnalul la ieșirea semnalului cipului nativ. (Puteți vedea vechiul meu sovietic, produs în 1986, care încă funcționează osciloscopul în acțiune:-))

Pasul 10: Mai multă lipire …

Mai multe lipire …
Mai multe lipire …
Mai multe lipire …
Mai multe lipire …
Mai multe lipire …
Mai multe lipire …

După aceea am lipit soclul pentru afișajul LCD și l-am testat cu schița „Hello world”.

Am lipit celelalte opamp-uri rămase, condensatori, potențiometre și conectorii BNC.

Pasul 11: Software

Image
Image
Software
Software

Pentru crearea firmware-ului Atmega328 am folosit Arduino IDE.

Pentru măsurarea frecvenței am folosit biblioteca "FreqCounter". Fișierul de schiță și biblioteca utilizată sunt disponibile pentru descărcare. Am creat simboluri speciale pentru a reprezenta modul utilizat în prezent (sinus, dreptunghiular, triunghi).

Pe imaginea de mai sus se pot vedea informațiile afișate pe ecranul LCD:

  • Frecvența F = xxxxxxxx în Hz
  • Gama de frecvență Rx
  • Amplitudinea în mV A = xxxx
  • Decalaj în mV 0 = xxxx
  • tipul semnalului x

Generatorul de funcții are două butoane în partea din față în partea stângă - sunt utilizate pentru a schimba intervalul de frecvență (pas în sus - pas în jos). În dreapta acestora se află comutatorul glisant pentru controlul modului, după ce de la stânga la dreapta urmează potențiometrul pentru controlul frecvenței (curs, fin, DADJ), amplitudinii și offset-ului. Aproape de potențiometrul de reglare a decalajului este plasat comutatorul folosit pentru a comuta între decalajul fix la 2,5V DC și cel reglat.

Am găsit o mică eroare în codul „Generator.ino” din fișierul ZIP - simbolurile pentru formele de undă sinusoidală și triunghiulară au fost schimbate. În fișierul unic „Generator.ino” atașat aici, eroarea este corectată.

Pasul 12: De făcut …

Image
Image

Ca ultim pas, intenționez să implementez o caracteristică suplimentară - măsurarea THD a semnalului sinusal de frecvență audio în timp real folosind FFT. Acest lucru este necesar, deoarece ciclul de funcționare al semnalului sinusoidal ar putea diferi de 50%, ceea ce poate fi cauzat de nepotriviri interne ale cipurilor și alte motive și ar putea crea distorsiuni armonice. Ciclul de funcționare poate fi reglat de potențiometru, dar fără a observa semnalul de pe osciloscop sau analizor de spectru este imposibil să-i tăiați fin forma. Calculul THD pe baza algoritmului FFT ar putea rezolva problema. Rezultatul calculelor THD va fi afișat pe ecranul LCD în spațiul gol din dreapta sus.

Pe videoclip se poate vedea spectrul generat de semnalul sinusoidal MAX038. Analizorul de spectru se bazează pe placa Arduino UNO + scut TFT de 2,4 . Analizatorul de spectru folosește biblioteca SpltRadex Arduino dezvoltată de Anatoly Kuzmenko pentru a efectua FFT în timp real.

Încă nu m-am decis - să folosesc această bibliotecă sau să folosesc biblioteca FHT creată de Musiclabs.

Intenționez să folosesc informațiile luate din măsurătorile de frecvență pentru a calcula fereastra de eșantionare adecvată și pentru a suspenda utilizarea ferestrelor suplimentare în timpul calculelor FFT. Trebuie doar să găsesc ceva timp liber pentru ca acest lucru să se întâmple. Sper să am câteva rezultate în curând …

Recomandat: