Inhoudsopgave:

Functiegenerator: 12 stappen (met afbeeldingen)
Functiegenerator: 12 stappen (met afbeeldingen)

Video: Functiegenerator: 12 stappen (met afbeeldingen)

Video: Functiegenerator: 12 stappen (met afbeeldingen)
Video: fiberlaser laser graveren - barcodes (4/7) 2024, November
Anonim
Functiegenerator
Functiegenerator
Functiegenerator
Functiegenerator

Dit instructable beschrijft het ontwerp van de functiegenerator op basis van de Maxims's analoge geïntegreerde schakeling MAX038

De functiegenerator is een zeer handig hulpmiddel voor de elektronicafreaks. Het is nodig voor het afstemmen van resonantiecircuits, het testen van audio- en videoapparatuur, het ontwerpen van analoge filters en voor vele andere doeleinden.

Tegenwoordig zijn er twee hoofdtypen functiegeneratoren; digitaal, (DSP-gebaseerd, DDS…) die steeds vaker worden gebruikt en analoog, wat de oorsprong was.

Beide soorten hebben hun voor- en nadelen. De digitale generatoren kunnen signalen genereren met een zeer stabiele frequentie, maar ze hebben problemen met het genereren van zeer zuivere sinussignalen (wat geen probleem is voor analoge). Ook de voornamelijk gespreide functiegeneratoren op basis van de DDS-benadering hebben niet zo'n groot frequentiebereik.

Sinds lange tijd wilde ik een bruikbare functiegenerator ontwerpen, die op de een of andere manier enkele van de voordelen van beide typen (analoge en digitale) generatoren zou kunnen combineren. Ik besloot het ontwerp te baseren op de Maxim-chip MAX038*

* Opmerking - deze chip wordt niet meer geproduceerd en verkocht door Maxim. Het is verouderd. Het is nog steeds mogelijk om het te vinden op eBay, Aliexpress en andere sites voor elektronische componenten.

Er bestaan ook andere analoge functiegeneratorchips (XR2206 van Exar, icl8038 van Intersil), maar ik had

een MAX038 beschikbaar, en ik heb het gebruikt. De digitale functies van de functiegenerator werden uitgevoerd door één Atmega328-chip. De functies zijn de volgende:

  • regelt de selectie van het frequentiebereik
  • regelt het signaaltype (sinus, rechthoekig, driehoekig, zaagtand)
  • meet de amplitude van het signaal
  • meet de DC-offset
  • meet de frequentie van het signaal
  • meet de THD van het sinussignaal in het audiobereik (moet nog geïmplementeerd worden)
  • geeft al deze informatie weer op een karakter 16x2 LCD-scherm.

Stap 1: MAX038 Beschrijving:

MAX038 Beschrijving
MAX038 Beschrijving

Ik heb de MAX038-datasheet bijgevoegd. Daar zijn de belangrijkste chipparameters te zien:

♦ 0,1 Hz tot 20 MHz werkfrequentiebereik

♦ Driehoeks-, zaagtand-, sinus-, vierkant- en pulsgolfvormen

♦ Onafhankelijke frequentie- en duty-cycle-aanpassingen

♦ 350 tot 1 frequentiebereik

♦ 15% tot 85% variabele bedrijfscyclus

♦ Uitgangsbuffer met lage impedantie: 0,1

♦ Lage 200ppm/°C temperatuurafwijking

Een andere belangrijke vereiste is de noodzaak van dubbele voeding (±5V). De uitgangsamplitude is vast (~ 2 VP-P met 0 V DC offset).

Op pagina 8 van de datasheet is het blokschema van de chip te zien. Op pagina 11 is de eenvoudigste schakeling te zien, die kan worden gebruikt voor het genereren van een sinusgolfsignaal. Deze schakeling is als basis genomen voor het ontwerp van de functiegenerator.

Stap 2: Het circuit …

Het circuit …
Het circuit …

Op de afbeelding wordt het circuit van de functiegenerator weergegeven. Ik heb deze afbeelding met de hoogst mogelijke resolutie gemaakt om te garanderen dat elke.device-waarde goed kan worden gelezen. De schema's zien er vrij ingewikkeld uit en om beter te worden begrepen, zal ik de belangrijkste onderdelen afzonderlijk uitleggen. Veel lezers zouden het mij kwalijk kunnen nemen dat de schakeling te overbodig is. Dat is waar. In eerste instantie kun je zien dat er twee MAX038-chips in zitten. De reden is dat de PCB zowel de type pakketten SO als DIP ondersteunt. De redundantie is ook te zien in sommige functies -

1) LED's tonen het huidige actieve frequentiebereik, maar het wordt ook weergegeven op het LCD-scherm;

2) LED's worden ook gebruikt om het signaaltype aan te geven, maar ook het LCD-scherm toont deze informatie

Het ontwerp is op deze manier gedaan om de gebruiker meer flexibiliteit te bieden - naar wens zou hij de LCD niet kunnen gebruiken, of kan hij eenvoudig het solderen van LED's weglaten. Ik heb ze gesoldeerd om de functionaliteit te kunnen debuggen tijdens de ontwerpfasen.

Het valt ook op dat ik veel opamps gebruik. Sommige kunnen zonder problemen worden weggelaten - vooral de buffers. In de huidige tijd bieden de opamps zelf een grote redundantie - in één pakket vind je 2, 4 zelfs 8 aparte versterkers, en dit voor een relatief lage prijs. Waarom zou je ze niet gebruiken?

Redundant zijn ook de filtercondensatoren - elke gebruikte analoge chip heeft zijn eigen condensatorbank (tantaal + keramische condensatoren voor beide voedingen). Sommige kunnen ook worden weggelaten.

Stap 3: Circuit Uitleg - Voeding (1)

Circuit Uitleg - Voeding (1)
Circuit Uitleg - Voeding (1)

Zoals ik al zei heeft deze generator dubbele voeding nodig. De positieve spanning wordt gecreëerd door het gebruik van 7805 lineaire spanningsregelaar. De negatieve voeding wordt gegenereerd door de 7905-chip. Het middelste tappunt van de 2x6V transformator is verbonden met de common ground van het bord. De gegenereerde voedingen - zowel de positieve als de negatieve zijn gescheiden van analoog en digitaal door blokken. Twee LED's geven de aanwezigheid van elke voeding aan.

Stap 4: Circuituitleg - Frequentiebereikregeling (2)

Circuit Uitleg - Frequentiebereikregeling (2)
Circuit Uitleg - Frequentiebereikregeling (2)

Om een groot frequentiebereik te dekken, wordt een meervoudige condensatorbank gebruikt. De condensatoren hebben verschillende waarden en ze definiëren verschillende frequentiesubbereiken. Tijdens het werk wordt slechts één van deze condensatoren gebruikt - de bodemplaat is geaard door een MOS-transistorschakelaar. Welke condensatoren de bodemplaat moet aarden, wordt door de Atmega328 geregeld door het gebruik van demultiplexerchip 74HC238. Als MOS-switches heb ik BSS123-transistoren gebruikt. De belangrijkste vereiste voor deze schakelaar is een lage Ron en de laagst mogelijke afvoercapaciteit. De digitale aansturing van de condensatorbank kan achterwege worden gelaten - de print bevat gaten voor het solderen van de draden voor mechanische draaischakelaar.

Stap 5: Circuituitleg - de frequentieaanpassing (3)

Circuit Uitleg - de Frequentie Aanpassing (3)
Circuit Uitleg - de Frequentie Aanpassing (3)

Op de afbeelding worden de frequentie- en duty cycle-besturingsschakelingen getoond. Daar gebruikte ik de standaard LM358 opamp (dubbele versterker in één pakket). Ik gebruikte ook dubbele 10K potentiometers.

De MAX038-chip genereert een interne spanningsreferentie van 2,5 V, die normaal wordt gebruikt als referentie voor alle aanpassingen.

Deze spanning wordt toegepast op de inverterende ingang van IC8a en genereert een negatieve spanningsreferentie die wordt gebruikt voor de DADJ (duty cycle aanpassing). Beide spanningen worden toegepast op de potentiometer voor de DADJ, welke middelste tap wordt gebufferd en toegepast op de DADJ-pin van de MAX038-chip. De jumper JP5 kan worden gebruikt om de DADJ-functie uit te schakelen, indien aangesloten op aarde. De "Course"-frequentieregeling wordt uitgevoerd door de huidige verzonken / afkomstig uit de MAX038 "IIN" -pin te wijzigen. Deze stroom wordt bepaald door de weerstand R41 en de uitgangsspanning van de opamp die de middelste aftakking van de potentiometer van de cursusfrequentieregeling buffert. Al deze kunnen worden vervangen door een enkele potentiometer (in reostaat-verbinding) tussen de REF- en IIN MAX038-pinnen.

Stap 6: Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie … (4)

Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)
Circuituitleg - Amplituderegeling, SYNC-signaalgeneratie… (4)

Zoals beschreven in de datasheet heeft het uitgangssignaal van de MAX038 een amplitude van ~1 V met gelijkspanning gelijk aan het aardpotentiaal.

Ik wilde de mogelijkheid hebben om de signaalamplitude te regelen en de DC-offset zelf te kunnen definiëren. Als extra functie wilde ik een SYNC-signaal met CMOS-niveaus parallel aan het uitgangssignaal hebben. Standaard genereert de MAX038-chip een dergelijk signaal, maar in de datasheet lees ik dat als deze functie is ingeschakeld (wat betekent - DV+-pin aangesloten op 5V), er enkele pieken (ruis) kunnen worden waargenomen in het analoge uitgangssignaal. het zo schoon mogelijk en om die reden heb ik het SYNC-signaal extern gegenereerd. De print is zo gemaakt dat de DV+ pin eenvoudig kan worden overbrugd naar de hoofdvoeding. De SYNC-pin wordt naar de BNC-connector geleid - er hoeft slechts een weerstand van 50 Ohm te worden gesoldeerd. In dit geval kan de SYNC-signaalopwekkingsschakeling worden weggelaten. Zoals je ziet gebruik ik hier ook dubbele potentiometers, maar die zijn niet parallel geschakeld. De reden daarvoor is - ik meet de amplitude relatief. De spanning op het middelpunt van één potentiometer wordt gedetecteerd door de Atmega328 ADC en de signaalamplitude wordt berekend op basis van deze waarde. Natuurlijk is deze methode niet erg nauwkeurig (het is afhankelijk van de afstemming van beide potentiometersecties, wat niet altijd gebeurt), maar het is voldoende nauwkeurig voor mijn toepassingen. In deze schakeling werkt IC2A als spanningsbuffer. IC4A ook. De IC2B opamp werkt als optelversterker - hij creëert het uitgangssignaal van de functionele generator als som van de offsetspanning en het hoofdsignaal met aangepaste amplitude. De spanningsdeler R15. R17 genereert een geschikt spanningssignaal voor het meten van de DC-hoofdsignaaloffset. Het wordt gedetecteerd door de Atmega328 ADC. De IC4B-opamp werkt als comparator - hij bestuurt de SYNC-generatieomvormer die wordt gerealiseerd door de twee MOS-transistoren (BSS123 en BSS84). De U6 (THS4281 - Texas Instruments) verschuift het door de MAX038 DC gegenereerde uitgangssignaal met 2,5 V en versterkt het 1,5 keer. Het gegenereerde signaal wordt dus gedetecteerd door de AVR ADC en verder verwerkt met het FFT-algoritme. In dit deel heb ik rail-to-rail-opamps van hoge kwaliteit gebruikt met een bandbreedte van 130 MHz (TI - LMH6619).

Om gemakkelijk te begrijpen hoe de SYNC-signaalgeneratie precies werkt, voeg ik enkele foto's van LTSpice-simulaties van het circuit toe. Op de derde foto: het blauwe signaal is de offset spanning (ingang van de IC2B). De groene is het uitgangssignaal met aangepaste amplitude. De rode is het uitgangssignaal van de functionele generator, de cyaancurve is het SYNC-signaal.

Stap 7: PCB-ontwerp

PCB-ontwerp
PCB-ontwerp

Ik gebruikte "Eagle" voor het ontwerpen van de PCB. Ik heb de PCB's besteld bij "PCBway". Ze hadden slechts vier dagen nodig om de planken te produceren en een week om ze te leveren. Hun kwaliteit is hoog en de prijs is extreem laag. Ik betaalde slechts 13 USD voor 10 PCB's!

Daarnaast kon ik een andere kleur PCB's bestellen zonder prijsverhoging. Ik heb gele gekozen:-).

Ik voeg de gerber-bestanden toe volgens de ontwerpregels van "PCBway".

Stap 8: Solderen

Image
Image
Solderen
Solderen
Solderen
Solderen

Eerst heb ik de stroomvoorzieningscircuits gesoldeerd..

Na het testen van het voedingsblok, heb ik de Atmega328-chip gesoldeerd met zijn ondersteunende apparaten: kwartskristal, condensatoren, filterkappen en de ISP-connector. Zoals je ziet heb ik een jumper in de toevoerleiding van de AVR chip. Ik koppel hem los als ik de chip programmeer via de ISP. Ik gebruik daarvoor USBtiny programmer.

Als volgende stap heb ik de de-mux chip 74HC238 gesoldeerd, de LED's geven het frequentiebereik aan. Ik laadde een klein Arduino-programma in de Atmega-chip, dat de multiplexing aan het testen was. (zie de video onder de link hierboven)

Stap 9: Solderen…

Solderen…
Solderen…
Solderen…
Solderen…
Solderen…
Solderen…

Als volgende stap soldeerde ik de opamps werkend in de DC-modus (LM358) en de frequentie- en DADJ-instelpotentiometers en controleerde al hun functies.

Verder heb ik de BSS123 schakelaars, de frequentiebepalende condensatoren en de MAX039 chip gesoldeerd. Ik heb de functionele generator getest die het signaal aftast op de native chip-signaaluitgang. (Je kunt mijn oude Sovjet, geproduceerd in 1986, nog steeds werkende oscilloscoop in actie zien:-))

Stap 10: Meer solderen …

Meer Solderen…
Meer Solderen…
Meer Solderen…
Meer Solderen…
Meer Solderen…
Meer Solderen…

Daarna heb ik de socket voor het LCD-scherm gesoldeerd en getest met de "Hello world"-schets.

De overige opamps, condensatoren, potentiometers en de BNC-connectoren heb ik gesoldeerd.

Stap 11: Software

Image
Image
Software
Software

Voor het maken van de Atmega328 firmware heb ik de Arduino IDE gebruikt.

Voor de frequentiemeting heb ik de bibliotheek "FreqCounter" gebruikt. Het schetsbestand en de gebruikte bibliotheek zijn beschikbaar om te downloaden. Ik heb speciale symbolen gemaakt om de momenteel gebruikte modus weer te geven (sinus, rechthoekig, driehoek).

Op de bovenstaande afbeelding is de informatie te zien die op het LCD-scherm wordt weergegeven:

  • Frequentie F=xxxxxxxxx in Hz
  • Frequentiebereik Rx
  • Amplitude in mV A=xxxx
  • Offset in mV 0=xxxx
  • type van het signaal x

De functiegenerator heeft twee drukknoppen aan de voorkant aan de linkerkant - ze worden gebruikt om het frequentiebereik te wijzigen (stap omhoog - stap omlaag). Rechts daarvan is de schuifschakelaar voor het regelen van de modus, daarna volgt u van links naar rechts de potentiometer voor het regelen van de frequentie (cursus, fijn, DADJ), amplitude en de offset. Dicht bij de offset-instelpotentiometer is de schakelaar geplaatst die wordt gebruikt om te wisselen tussen de vaste op 2.5V DC-offset en de afgestemde.

Ik heb een kleine fout gevonden in de "Generator.ino"-code in het ZIP-bestand - de symbolen voor sinus- en driehoeksgolfvormen zijn verwisseld. In het enkele "Generator.ino"-bestand dat hier is bijgevoegd, is de fout gecorrigeerd.

Stap 12: Te doen …

Image
Image

Als laatste stap ben ik van plan een extra functie te implementeren - meting van de THD van het sinussignaal van de audiofrequentie in realtime met behulp van FFT. Dit is nodig, omdat de duty-cycle van het sinussignaal kan verschillen van 50%, wat kan worden veroorzaakt door interne chipmismatches en andere redenen en harmonische vervormingen kan veroorzaken. De duty-cycle kan worden aangepast door de potentiometer, maar zonder het signaal op de oscilloscoop of spectrumanalysator te observeren, is het onmogelijk om de vorm fijn te trimmen. Het berekenen van de THD op basis van het FFT-algoritme zou het probleem kunnen oplossen. Het resultaat van de THD-berekeningen wordt weergegeven op het LCD-scherm in de lege ruimte rechtsboven.

Op de video is het spectrum te zien dat wordt gegenereerd door het MAX038-sinussignaal. De spectrumanalysator is gebaseerd op het Arduino UNO-bord + 2,4 TFT-schild. De spectrumanalysator gebruikt de SpltRadex Arduino-bibliotheek die is ontwikkeld door Anatoly Kuzmenko om FFT in realtime uit te voeren.

Ik heb nog steeds niet besloten - om deze bibliotheek te gebruiken of om de FHT-bibliotheek te gebruiken die is gemaakt door de Musiclabs.

Ik ben van plan de informatie uit de metingen van de frequentiemeter te gebruiken om het juiste bemonsteringsvenster te berekenen en het gebruik van extra vensters tijdens de FFT-berekeningen op te schorten. Ik hoef alleen maar wat vrije tijd te vinden om dit te laten gebeuren. Ik hoop snel resultaat te hebben….

Aanbevolen: