Turinys:

Funkcijų generatorius: 12 žingsnių (su paveikslėliais)
Funkcijų generatorius: 12 žingsnių (su paveikslėliais)

Video: Funkcijų generatorius: 12 žingsnių (su paveikslėliais)

Video: Funkcijų generatorius: 12 žingsnių (su paveikslėliais)
Video: 5 geriausios iš anksto įdiegtos naudingos „Windows“ programos 2024, Liepa
Anonim
Funkcijų generatorius
Funkcijų generatorius
Funkcijų generatorius
Funkcijų generatorius

Šioje instrukcijoje aprašomas funkcijų generatoriaus, pagrįsto „Maxims“analoginis integruotas grandynas MAX038, dizainas

Funkcijų generatorius yra labai naudingas įrankis elektronikos keistuoliams. Jis reikalingas rezonansinių grandinių derinimui, garso ir vaizdo įrangos testavimui, analoginių filtrų projektavimui ir daugeliui kitų skirtingų tikslų.

Šiandien yra du pagrindiniai funkcijų generatorių tipai; skaitmeniniai (DSP pagrindu, DDS …), kurie vis dažniau naudojami, ir analoginiai, kurie buvo ištakos.

Abi rūšys turi savo privalumų ir trūkumų. Skaitmeniniai generatoriai gali generuoti labai stabilaus dažnio signalus, tačiau jie turi problemų generuodami labai grynus sinusinius signalus (kas nėra problema analoginiam). Be to, dažniausiai paskirstytų funkcijų generatoriai, pagrįsti DDS metodu, neturi tokio didelio dažnio generavimo diapazono.

Jau seniai norėjau sukurti naudingų funkcijų generatorių, kuris galėtų kažkaip sujungti kai kuriuos abiejų tipų (analoginių ir skaitmeninių) generatorių privalumus. Aš nusprendžiau pagrįsti dizainą „Maxim“mikroschema MAX038*

* Pastaba - šios mikroschemos „Maxim“daugiau negamina ir neparduoda. Jis pasenęs. Vis dar galima rasti „eBay“, „Aliexpress“ir kitose elektroninių komponentų svetainėse.

Yra ir kitų analoginių funkcijų generatoriaus lustų (XR2206 iš „Exar“, icl8038 iš „Intersil“), bet aš turėjau

yra vienas MAX038, kurį aš naudoju. Skaitmenines funkcijų generatoriaus funkcijas atliko vienas „Atmega328“lustas. Jo funkcijos yra šios:

  • kontroliuoja dažnių diapazono pasirinkimą
  • valdo signalo tipą (sinusinis, stačiakampis, trikampis, pjūklinis)
  • matuoja signalo amplitudę
  • matuoja nuolatinės srovės poslinkį
  • matuoja signalo dažnį
  • matuoja sinusinio signalo THD garso diapazone (tai dar reikia įgyvendinti)
  • visa ši informacija rodoma 16x2 simbolių LCD ekrane.

1 veiksmas: MAX038 Aprašymas

MAX038 Aprašymas
MAX038 Aprašymas

Pridėjau MAX038 duomenų lapą. Čia galima pamatyti svarbiausius lusto parametrus:

♦ Nuo 0,1 Hz iki 20 MHz darbo dažnių diapazonas

♦ Trikampis, pjūklas, sinusas, kvadratas ir pulso bangos

♦ Nepriklausomas dažnio ir darbo ciklo reguliavimas

♦ Nuo 350 iki 1 dažnio šlavimo diapazonas

♦ Nuo 15% iki 85% kintamo darbo ciklo

♦ Žemos impedancijos išvesties buferis: 0,1Ω

♦ Žemas 200 ppm/° C temperatūros nukrypimas

Kitas svarbus reikalavimas yra dvigubo maitinimo poreikis (± 5 V). Išėjimo amplitudė yra fiksuota (~ 2 VP-P su 0 V DC poslinkiu).

Duomenų lapo 8 puslapyje galite pamatyti lusto blokinę schemą. 11 puslapyje galima pamatyti paprasčiausią grandinę, kuri gali būti naudojama sinusinių bangų signalui generuoti. Ši grandinė buvo naudojama kaip funkcijų generatoriaus projektavimo pagrindas.

2 žingsnis: grandinė …

Circuit…
Circuit…

Paveikslėlyje parodyta funkcijų generatoriaus grandinė. Aš padariau šį vaizdą su didžiausia įmanoma skiriamąja geba, kad būtų užtikrinta, jog kiekviena. Prietaiso reikšmė bus tinkamai nuskaityta. Schema atrodo gana sudėtinga ir, kad ją geriau suprastų, paaiškinsiu jos pagrindines dalis atskirai. Daugelis skaitytojų galėtų man priekaištauti, kad grandinė yra per daug perteklinė. Tai yra tiesa. Iš pradžių matote, kad jame yra du MAX038 lustai. Priežastis ta, kad PCB palaiko abiejų tipų paketus SO ir DIP. Atleidimą galima pastebėti ir kai kuriose funkcijose -

1) šviesos diodai rodo esamą aktyvų dažnių diapazoną, tačiau jis taip pat rodomas LCD;

2) Šviesos diodai taip pat naudojami signalo tipui nurodyti, tačiau LCD taip pat rodo šią informaciją

Dizainas sukurtas taip, kad vartotojui būtų suteikta daugiau lankstumo - norėdamas jis negalėtų naudotis skystųjų kristalų ekranu arba tiesiog negalėtų lituoti šviesos diodų. Aš juos litavau, kad galėčiau derinti funkcionalumą projektavimo etapuose.

Taip pat galima pastebėti, kad naudoju daug opampų. Kai kurie iš jų gali būti praleisti be problemų - ypač buferiai. Šiuo metu patys stiprintuvai pasižymi dideliu pertekliumi - vienoje pakuotėje galite rasti 2, 4 ir net 8 atskirus stiprintuvus, ir tai už palyginti mažą kainą. Kodėl gi jų nenaudoti?

Taip pat nereikalingi filtravimo kondensatoriai - kiekvienas naudojamas analoginis lustas turi savo kondensatorių banką (tantalis + keraminiai kondensatoriai abiem tiekimams). Kai kurių iš jų taip pat galima praleisti.

3 žingsnis: grandinės paaiškinimas - maitinimo šaltinis (1)

Grandinės paaiškinimas - maitinimo šaltinis (1)
Grandinės paaiškinimas - maitinimo šaltinis (1)

Kaip sakiau, šiam generatoriui reikia dvigubo maitinimo. Teigiama įtampa sukuriama naudojant 7805 linijinį įtampos reguliatorių. Neigiamą pasiūlą generuoja 7905 lustas. Vidutinis 2x6V transformatoriaus čiaupo taškas yra prijungtas prie bendros plokštės žemės. Sukurti maitinimo šaltiniai - tiek teigiami, tiek neigiami yra atskirti nuo analoginių ir skaitmeninių. Du šviesos diodai rodo kiekvieno maitinimo šaltinio buvimą.

4 žingsnis: grandinės paaiškinimas - dažnio diapazono valdymas (2)

Grandinės paaiškinimas - dažnio diapazono valdymas (2)
Grandinės paaiškinimas - dažnio diapazono valdymas (2)

Dideliam dažnių diapazonui padengti naudojamas kelių kondensatorių bankas. Kondensatoriai turi skirtingas vertes ir jie apibrėžia skirtingus dažnių antrinius diapazonus. Darbo metu naudojamas tik vienas iš šių kondensatorių - jo apatinė plokštė yra įžeminta MOS tranzistoriaus jungikliu. Kuri kondensatorių apatinė plokštė turi būti įžeminta, valdoma „Atmega328“naudojant demultiplekserio mikroschemą 74HC238. Kaip MOS jungiklius naudojau BSS123 tranzistorius. Pagrindinis reikalavimas šiam jungikliui yra mažas Ron ir mažiausia įleidžiama talpa. Skaitmeninio kondensatoriaus bloko valdymo negalima praleisti - PCB yra skylių, skirtų mechaninio sukamojo jungiklio laidams lituoti.

5 žingsnis: grandinės paaiškinimas - dažnio reguliavimas (3)

Grandinės paaiškinimas - dažnio reguliavimas (3)
Grandinės paaiškinimas - dažnio reguliavimas (3)

Paveikslėlyje parodyta dažnio ir darbo ciklo valdymo grandinė. Ten naudojau standartinį LM358 opampą (dvigubas stiprintuvas vienoje pakuotėje). Aš taip pat naudoju dvigubus 10K potenciometrus.

MAX038 mikroschema generuoja 2,5 V vidinės įtampos etaloną, kuris paprastai naudojamas kaip atskaitos taškas atliekant visus koregavimus.

Ši įtampa taikoma IC8a apverčiamajame įėjime ir sukuria neigiamą įtampos etaloną, naudojamą DADJ (darbo ciklo reguliavimas). Abi įtampos yra naudojamos DADJ potenciometre, kuris vidurinis čiaupas yra buferinis ir taikomas MAX038 lusto DADJ kaiščiui. Trumpiklis JP5 gali būti naudojamas išjungti DADJ funkciją, kai prijungta prie žemės. „Kurso“dažnio valdiklis iš anksto suformuojamas keičiant MAX038 „IIN“kaiščio srovę. Šią srovę apibrėžia rezistorius R41 ir opampo išėjimo įtampa, buferizuojanti kurso dažnio valdymo potenciometro vidurinį čiaupą. Visa tai galima pakeisti vienu potenciometru (prijungus prie reostato) tarp REF ir IIN MAX038 kaiščių.

6 veiksmas: grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)

Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)
Grandinės paaiškinimas - amplitudės valdymas, SYNC signalo generavimas … (4)

Kaip parašyta duomenų lape, išėjimo signalo pf MAX038 amplitudė yra ~ 1 V, o nuolatinė įtampa lygi įžeminimo potencialui.

Norėjau turėti galimybę valdyti signalo amplitudę ir galėčiau pats nustatyti nuolatinės srovės poslinkį. Kaip papildomą funkciją norėjau turėti SYNC signalą su CMOS lygiais lygiagrečiai su išvesties signalu. Pagal numatytuosius nustatymus MAX038 mikroschema generuoja tokį signalą, tačiau duomenų lape perskaičiau, kad jei ši funkcija yra įjungta (ką reiškia - DV+ kaištis prijungta prie 5 V), išvesties analoginiame signale galima pastebėti tam tikras viršūnes (triukšmą). Norėjau išlaikyti kuo švariau ir dėl šios priežasties aš sugeneravau SYNC signalą išorėje. PCB yra pagamintas taip, kad DV+ kaištį būtų galima lengvai prijungti prie pagrindinio maitinimo šaltinio. SYNC kaištis nukreipiamas į BNC jungtį - lituoti reikia tik 50 omų rezistorių. Tokiu atveju SYNC signalo generavimo grandinės galima praleisti. Čia, kaip matote, aš taip pat naudoju dvigubus potenciometrus, tačiau jie nėra sujungti lygiagrečiai. To priežastis yra ta, kad aš amplitudę matuoju santykinai. Įtampa vieno potenciometro viduriniame taške aptinkama „Atmega328 ADC“ir pagal šią vertę apskaičiuojama signalo amplitudė. Žinoma, šis metodas nėra labai tikslus (jis pagrįstas abiejų potenciometrų sekcijų sutapimu, o tai ne visada pasitaiko), tačiau jis yra pakankamai tikslus mano reikmėms. Šioje grandinėje IC2A veikia kaip įtampos buferis. IC4A taip pat. IC2B opamp veikia kaip suminis stiprintuvas - jis sukuria funkcinio generatoriaus išėjimo signalą kaip poslinkio įtampos ir pagrindinio signalo su sureguliuota amplitude suma. Įtampos skirstytuvas R15. R17 generuoja tinkamą įtampos signalą, skirtą pagrindinio nuolatinio signalo poslinkiui matuoti. Tai jaučia „Atmega328 ADC“. IC4B opamp veikia kaip palyginimas - jis valdo SYNC kartos keitiklį, kurį realizuoja du MOS tranzistoriai (BSS123 ir BSS84). U6 (THS4281 - Texas Instruments) perjungia MAX038 DC generuojamą išėjimo signalą 2,5 V ir sustiprina jį 1,5 karto. Taigi sukurtas signalas yra suvokiamas AVR ADC ir toliau apdorojamas naudojant FFT algoritmą. Šioje dalyje aš naudoju aukštos kokybės geležinkelio -bėgio opampus su 130 MHz pralaidumu (TI - LMH6619).

Kad būtų lengva suprasti, kaip tiksliai veikia SYNC signalo generavimas, įtraukiu keletą grandinės „LTSpice“modeliavimo nuotraukų. Trečiame paveikslėlyje: mėlynas signalas yra poslinkio įtampa (IC2B įvestis). Žalia yra išvesties signalas su sureguliuota amplitude. Raudona yra funkcinio generatoriaus išėjimo signalas, cianinė kreivė yra SYNC signalas.

7 žingsnis: PCB projektavimas

PCB dizainas
PCB dizainas

PCB projektavimui naudojau „Eagle“. Aš užsisakiau PCB „PCBway“. Lentoms pagaminti prireikė tik keturių dienų, o jų pristatymui - savaitė. Jų kokybė yra aukšta, o kaina yra labai maža. Už 10 PCB sumokėjau tik 13 USD!

Be to, aš galėčiau užsisakyti skirtingų spalvų PCB, nedidindamas kainų. Aš pasirinkau geltonas:-).

Pridedu gerber failus pagal „PCBway“projektavimo taisykles.

8 žingsnis: litavimas

Image
Image
Litavimas
Litavimas
Litavimas
Litavimas

Pirmiausia litavau maitinimo grandinės įrenginius.

Išbandęs tiekimo bloką, lituodavau „Atmega328“mikroschemą su ją palaikančiais įtaisais: kvarco kristalais, kondensatoriais, filtravimo dangteliais ir ISP jungtimi. Kaip matote, aš turiu trumpiklį AVR lusto tiekimo linijoje. Aš jį atjungiu, kai programuoju mikroschemą per IPT. Tam naudoju USBtiny programuotoją.

Kitas žingsnis-lituoti de-mux lustą 74HC238, šviesos diodai rodo dažnių diapazoną. Į „Atmega“mikroschemą įkėliau nedidelę „Arduino“programą, kuri išbandė multipleksavimą. (žiūrėkite vaizdo įrašą po aukščiau esančia nuoroda)

9 žingsnis: litavimas…

Litavimas…
Litavimas…
Litavimas…
Litavimas…
Litavimas…
Litavimas…

Kitame žingsnyje lituodavau nuolatinės srovės režimu veikiančias lempas (LM358) ir dažnio bei DADJ reguliavimo potenciometrus ir patikrinau visas jų funkcijas.

Toliau lituodavau BSS123 jungiklius, dažnį nustatančius kondensatorius ir lustą MAX039. Aš išbandžiau funkcinį generatorių, tiriantį signalą vietinio lusto signalo išėjime. (Galite pamatyti, kaip veikia mano senas sovietinis, pagamintas 1986 m., Vis dar veikiantis osciloskopas:-))

10 veiksmas: daugiau litavimo…

Daugiau litavimo…
Daugiau litavimo…
Daugiau litavimo…
Daugiau litavimo…
Daugiau litavimo…
Daugiau litavimo…

Po to litavau lizdą LCD ekranui ir išbandžiau jį su „Hello world“eskizu.

Lituodavau likusius opampus, kondensatorius, potenciometrus ir BNC jungtis.

11 veiksmas: programinė įranga

Image
Image
Programinė įranga
Programinė įranga

Norėdami sukurti „Atmega328“programinę įrangą, naudoju „Arduino IDE“.

Dažnio matavimui naudojau „FreqCounter“biblioteką. Eskizo failą ir naudojamą biblioteką galima atsisiųsti. Sukūriau specialius simbolius, vaizduojančius šiuo metu naudojamą režimą (sinusas, stačiakampis, trikampis).

Aukščiau esančioje nuotraukoje galite pamatyti LCD ekrane rodomą informaciją:

  • Dažnis F = xxxxxxxx Hz
  • Dažnių diapazonas Rx
  • Amplitudė mV A = xxxx
  • Poslinkis mV 0 = xxxx
  • signalo tipas x

Funkcijų generatorius turi du mygtukus priekyje kairėje pusėje - jie naudojami keičiant dažnių diapazoną (žingsnis aukštyn - žingsnis žemyn). Dešinėje pusėje yra slankiklis, skirtas režimui valdyti, po jo iš kairės į dešinę sekite potenciometrą, skirtą dažniui (kursui, gerai, DADJ), amplitudei ir poslinkiui valdyti. Netoli poslinkio reguliavimo potenciometro yra jungiklis, naudojamas komutuoti tarp fiksuoto 2,5 V nuolatinės srovės poslinkio ir suderinto.

ZIP faile radau nedidelę klaidą „Generator.ino“kode - sinuso ir trikampio bangų formų simboliai buvo pakeisti. Čia pridėtame atskirame faile „Generator.ino“klaida ištaisoma.

12 žingsnis: atlikite…

Image
Image

Paskutiniame etape ketinu įdiegti papildomą funkciją - garso dažnio sinusinio signalo THD matavimą realiu laiku naudojant FFT. To reikia, nes sinusinio signalo veikimo ciklas gali skirtis nuo 50%, tai gali sukelti vidiniai lustų neatitikimai ir kitos priežastys ir gali sukelti harmoninius iškraipymus. Veikimo ciklą galima reguliuoti potenciometru, tačiau, nepastebėjus signalo osciloskopu ar spektro analizatoriumi, neįmanoma iškirpti jo formos. THD apskaičiavimas pagal FFT algoritmą galėtų išspręsti problemą. THD skaičiavimo rezultatas bus rodomas LCD viršutiniame dešiniajame tuščiame lauke.

Vaizdo įraše matomas MAX038 sinusinio signalo sukuriamas spektras. Spektro analizatorius yra pagrįstas „Arduino UNO“plokšte + 2,4 colio TFT ekranu. Spektro analizatorius naudoja Anatolijaus Kuzmenko sukurtą „SpltRadex Arduino“biblioteką, kad atliktų FFT realiuoju laiku.

Vis tiek neapsisprendžiau - naudotis šia biblioteka ar naudotis „Musiclabs“sukurta FHT biblioteka.

Ketinu panaudoti informaciją, gautą iš dažnio matuoklio matavimų, norint apskaičiuoti tinkamą mėginių ėmimo langą ir sustabdyti papildomų langų naudojimą atliekant FFT skaičiavimus. Man reikia tik rasti laisvo laiko, kad tai įvyktų. Tikiuosi, kad netrukus bus kokių nors rezultatų….

Rekomenduojamas: