Mijn destijds gebouwde exemplaar van de smeerpijp heeft de tand des tijds nauwelijks doorstaan, zie foto 1. de Smeerpijp-11 Die vraagt dus nodig om een update, en dat gaat dan gebeuren op de digitale toer, vandaar de naam van de nieuwe boreling: "Smeerpijp-11". Een wobbulator voor 50 Hz tot 70 MHz Dit is een nabouwartikel, maar tevens neemt het u mee op de ontdekkingsreis van het realiseren van deze schakeling, een spannende en veel plezier gevende reis, die U wellicht stimuleert om ook eens aan echte zelfbouw te doen, wat een combinatie is van denken, ontwerpen, veranderen, verwonderen, meten en bouwen, zoveel mogelijk met aanwezig junkbox-spul, mits de kwaliteit van je boreling daar niet onder lijdt. PAoWV Inleiding Destijds, lang geleden rond 1956, publiceerde PAoCX in Electron het "orgaan" van de Veron een artikel waarin "de Smeerpijp" werd beschreven. Een lang nalichtend kathodestraalbuisje met een P-11 fosfor werd via buizenversterkers horizontaal afgebogen met een handbediende potmeter die op een as zat gemonteerd samen met een afstemcondensator. Het concept ontwerp De opzet maakt gebruik van een digitaal instelbare sinus- oscillator van Analog Devices, de AD9851 met een samplefrequentie fs van 180 MHz. Die DDS (digital direct synthesizer) moet gevolgd door een laagdoorlatend filter om stoorfrequenties op (180-fc) MHz te verwijderen, waarbij fc de gewenste uitgangsfrequentie is. Om op 50 ohm uit te komen en om de filtercurve en de natuurlijke afval van het signaal bij toenemende frequentie fc volgens Si (pi*fc/fs) te compenseren is een in verzwakking regelbare versterker erachter vereist, waarvoor het Analog Devices type AD8321 geschikt is. Die is zelfs regelbaar over 53 dB, in 71 stapjes van ongeveer 0,75 dB en in doorlaatkarakteristiek recht van DC tot 100 MHz. De AD9851 draait op een sample frequentie van 180 MHz, zodat filters die we met de wobbulator willen meten, tot ruim 70 MHz bemeten kunnen worden, zonder hoge eisen aan het laagdoorlatende filter achter de AD9851 te hoeven stellen. Die afstem-C varieerde de frequentie van een oscillator rond de 455 kHz, zeg maar + en - 20 kHz. Het oscillatorsignaal werd in een cascade dubbel lattice filter gestopt, dat opgebouwd was uit toen vlot in de dump verkrijgbare FT243 kristallen, en de uitgang van dat filter werd middels een piekgelijkrichter de amplitude van bepaald. Die amplitude zorgde voor de verticale afbuiging van de kathodestraal. Aldus kon je een middenfrequentfilter, in casu dat lattice filter, trachten af te regelen, omdat de doorlaatcurve op de smeerpijp kwam te staan als je een zwengel aan de potmeter gaf. Wel lastig want er was geen logaritmische versterker voor de verticale afbuiging, dus dieper dan pakweg 30 dB kon je niet meten. Dat alles zit reeds in een in Elektuur door PE1GIC gepubliceerde uit twee delen bestaande signaalgenerator.(nr 10 2003) Het analoge ingeblikte deel is hier als bouwdoosje aangeschaft en in elkaar gesoldeerd, om er een wobbulator mee te maken met een instelbare centraalfrequentie en instelbare sweep. De print is heden nog leverbaar bij Elektor onder nummer 020299-1 en benodigd omdat SMD IC's zonder print uiterst moeilijk zijn aan te sluiten. Detectie van het uitgangssignaal na het te meten filter, oftewel het DUT (=device under test), gebeurt door eveneens een IC van Analog Devices, AD8307, 1 Dit bedrag hebben we nodig om bij elke op de display ingestelde frequentie fc de instelling van de AD9851 te berekenen, door die ingestelde frequentie met 10 maal dat bedrag te vermenigvuldigen. Dat bedrag is met een ad hoc geschreven Cprogrammaatje bepaald als binair getal: dat in hexadecimale notatie luidt: 2,62D6FCB00F. Nu is het vanzelfsprekend zo, dat we liefst zo weinig mogelijk binaire decimalen (beter: binimalen) meenemen om rekentijden te bekorten en daarom is met een ander programmaatje vastgesteld hoeveel groepjes van 8 binimalen (bytes) je mee moet nemen, om bij een instelling van 90 MHz, het theoretische maximum, niet meer dan 0,1 Hz instelfout te hebben tengevolge van de afronding. Dat blijken dan 4 bytes te zijn. Een en ander is ook wel op zijn Jan-Boeren-Fluitjes oftewel JBF te bepalen door te beredeneren dat je bij vermenigvuldiging van 90 MHz met een fout van 0,1 Hz op 1/(9E8) = 1.1E-9 nauwkeurig moet rekenen en binair zijn dat 3,32 maal zoveel binimalen, dus 30, zodat we, omdat we met hele bytes werken, op 4 bytes mantisse uitkomen. Het bewuste getal waarmee we zullen werken is aldus in hex notatie bepaald op 2,62D6FCB. die een log versterker en detectiefunctie heeft over ruim 90 dB. Je kunt daardoor een verticale schaal op de display hebben die logaritmisch over 90 dB de filtercurve laat zien, dus 10 dB/div verticaal, en horizontaal lineair de frequentie. Voor de display kan het makkelijkste gebruik worden gemaakt van een scope met XY inputmogelijkheid. De bandbreedte van de laagfrequentsignalen die aangeboden worden aan de scope is maar een paar honderd Hz, dus vrijwel elk exemplaar, hoe simpel ook, volstaat, mits de X en Y afbuiging extern aanstuurbaar zijn. Je kunt er natuurlijk ook een apart 7 cm kathodestraalbuisje met elektrostatische afbuiging uit de junkbox voor gebruiken, van het type dat foto 1 toont, dat je aanstuurt met een paar torren in long tailed pair, (buizen mogen ook...) die een paar honderd volt op de collector kunnen hebben. X en Y positie en de X en Y versterking moeten regelbaar zijn om het beeldscherm te kunnen calibreren. De ingangsimpedantie van de versterkers moet hoog (> 1Mohm), en de gevoeligheid van X en Y ingang moet minimaal 0,25V/div zijn. De AD9851 heeft een samplefrequentie van 180 MHz, inwendig is een 12 bits DAC aanwezig, die voor een sinusvormige omhullende van de monsterpulsen zorgt, de frequentie kan worden ingesteld met 5 bytes die serieel of parallel kunnen worden ingeklokt, waarvan er 4 stuks = 32 bits de frequentie bepalen. Het eerste byte is altijd een voorloper voor instelling van een eventuele faseverschuiving, en nog wat mode-instellingen. Het aantal binimalen n dat nodig is om een decimaal getal D te representeren is te berekenen uit n=log (D)/log(2). Kom je dan uit op, laten we zeggen, 31,1 dan niet naar beneden afronden tot 31, maar naar 32 benodigde binimalen. Als je immers volgens berekening 31,1 levende apen in een telefooncel kan proppen, gaan er 31 levend in geen 32. Je kunt als je langzaam je frequentie wilt wijzigen, wat belangrijk is bij erg scherpe filters, de smeerpijp geheugenfunctie van een nalichtende fosfor ook digitaal bereiken door de scope om te transformeren tot een geheugenscope. Dat gebeurt dan door de meetwaarden uit de logaritmische detector AD8307 voor ten hoogste 256 frequenties, waarin de sweep in de X richting verdeeld kan worden, te digitaliseren met een 8 bits ADC en op te slaan in het SRAM van de gebruikte Atmel processor AT90S8515 die met 512 bytes SRAM daar ruim voldoende gelegenheid voor biedt, en die dan periodiek ongeveer 50 keer per seconde dat plaatje afspeelt, vergezeld van een zaagtandoutput. Daar wordt verderop nog nader op ingegaan. Het increment in afgegeven frequentie als het aangeboden 32 bits frequentiedeel van het digitale woord met 1 verhoogd wordt, is dus 180 MHz/2^32 en dat is ongeveer 0,04191 Hz, om precies te zijn: 9*5^7/2^24 Hz. (zie artikel synthesizer CQ-PA 2008 nr 3 van mijn hand voor uitleg, dat is te vinden op http://pa0wv.home.xs4all.nl/zelfbouw.html onder de link DDS) We willen het increment bepalen voor de verhoging van de frequentie met 0,1 Hz voor de ingestelde centraalfrequentie fc van de wobbelaar, omdat we dat bedrag als kleinste instelincrement willen hebben. Zoiets is namelijk nodig als je kwartskristallen als DUT gaat bemeten. Dat increment is dan het reciproque van het berekende bedrag gedeeld door 10. Dus 2^23/(3^2*5^8). Een 2 regelig 16 karakter/regel LCD display op uitgangsport-B van de processor toont de benodigde instelgegevens, de bediening gebeurt door een met een MC14490 debounced actuator - een ordinair C'tje werkt wellicht ook als debouncer- en voorts 2 dBm optimaal kunnen trachten te gebruiken, en een veld op de display dat aangeeft of de frequentieaanduiding op de LCD de sweep-grootte per schaaldeel of de centraalfrequentie fc is en, later in het ontwerpproces aangebracht, de meettijd per sweep is. Onder de meettijd per sweep wordt de totale tijd verstaan die gemoeid is met het opnieuw meten van de frequentieresponse van het DUT over de volle op de scopebuis getoonde sweep. Door scherpe filters kun je namelijk niet zomaar met een noodgang raak sweepen, want dan klopt de output niet meer. Uitleg volgt verderop. met een drukknop die de mode bepaalt, zoals die ook in mijn opgemelde synthesizerontwerp zijn toegepast. Bourne, de fabrikant van de actuator, adviseert dit IC als debouncer, inclusief de grootte van de C voor de intern opgewekte klok. Ik had het IC'tje liggen, maar de debouncing zou ook met de processor moeten kunnen gebeuren. Een wachtloop in de interrupt is geen tijd voor, omdat de display op de scope dan hapert, maar als een volgende (bounce) interrupt te snel optreedt blijkens de stand van een in de processor aanwezige teller_1 die bij elke interrupt gereset wordt, wordt die interrupt gewoon genegeerd en dus na het resetten van de teller direct weer uit de interrupt gesprongen zonder verdere actie. Bovendien worden eventuele pending interrupts, vlak voor de interruptafhandelingsroutine verlaten wordt, gereset, omdat die gelet op de korte duur van de afhandeling sowieso geklassificeerd dienen te worden als resultaat van bounce. Omdat het debouncer IC prima werkt, is dat alternatief verder niet onderzocht. Kiezen we daar sweep (S), dan verandert het veld dat de centrale frequentie aangeeft dus in de sweep in Hz/div op de scopebuis, of als je T kiest, de totale meettijd per sweep, die alle met de actuator gewijzigd kunnen worden in andere waarden van het geboden palet. Het is niet zinvol voor de sweep elke willekeurige waarde in te kunnen stellen, daarom heb ik aanvankelijk gekozen voor sweeps bij 256 metingen per 10 schaaldelen op de horizontale as van de oscillograaf, dat geeft echter een vreemde waarde van 2,56 Hz per schaaldeel op het ksb-scherm (ksb is kathodestraalbuis) tot 25,6 MHz per schaaldeel in stappen van 10. Horizontaal zijn er over de breedte (10 schaaldelen) van het scopebeeld dan altijd 256 metingen, die samen dan een continue lijn kunnen vormen, die de gemeten filtercurve representeert. Na enig gereken blijkt dat als je minder dan 256 metingen namelijk 239 stuks over de horizontale as neemt, je uitkomt op hele waarden voor de sweep namelijk 1 Hz/div tot 10 MHz/div op de KSB, als je van de minimale stapgrootte van de frequentie (0,04191 Hz) van de DDS chip gebruik gaat maken. Een met de modedrukknop naar 4 verschillende posities verplaatsbare * (ster) op de display geeft dan aan welke parameter op dat moment door de draaiknop van de actuator bediend wordt. Wat betreft de bounce gelden daar dezelfde overwegingen en tegenmaatregelen voor. De MC14440 kan 5 kanalen gelijktijdig debouncen, twee voor de actuator en nu de derde voor de modeknop, dus dat vergt verder geen moeite. We hebben dan (zie fig 6 met Door ook een 0 sweep toe te laten, is het apparaat tevens als signaalgenerator te gebruiken. Er hoeft dan niet gesweept te worden en de zaagtand hoeft dan ook niet te worden afgegeven. Oppassen dat je KSB dan niet inbrandt, oudere kathodestraalbuizen kun je daar makkelijk mee vernielen. Dat is de reden dat ik bij de 0 sweep toch een zaagtand afgeef maar alle metingen op dezelfde frequentie fc gebeuren. Dat is dus 0 Hz/div op de buis. Het beveiligen van de buis zou overigens automatisch kunnen gebeuren, als de X zaagtandamplitude 0 is, dat gegeven dan gebruikt wordt om het negatief op de wehnelt op te voeren. een indeling van de display) een frequentieaanduiding van fc met 0,1 Hz resolutie, een frequentieincrement delta van fc tussen 0,1 Hz en 10 MHz per actuatorklik, een frequentie-increment van de sweep in stappen van een factor 10, over de breedte van 10 schaaldelen op de kathodestraalbuis, tussen 1Hz en 10 MHz per schaaldeel; een dB outputlevel van de signaalgenerator, zodat we het dynamische bereik van de logaritmische detector van +17 dBm tot -80 Als de ingestelde sweep tijdens het sweepen beneden de minimale instelling van de oscillator komt, 3 die 50 Hz is gekozen in verband met de scheidingscondensatoren, of boven de 72 MHz, dan wordt, om misinterpretatie van het beeld te vermijden, de functielijn op de beeldbuis geforceerd langs de nullijn op de beeldbuis gehouden. Dat kan door in die gebieden de oscillator uit te schakelen. Daar is geen voorziening voor op de Elektuurdoos maar 0 Hz instelling van de DDS heeft ook het gewenste resultaat, omdat de oscillator dan fasecontinu overgaat in het afgeven van een gelijkspanning die niet door de koppelelco's heen kan. Er is ook een powerdown bit in de digitale sturing en verder is het ook mogelijk om als je buiten die meetgrenzen komt de meting op slag in het displaygeheugen 0 te maken onafhankelijk van wat de signaaloutput is van het te bemeten filter. Dat laatste heb ik gedaan, met het gewenste resultaat. Het laden van de DDS met die frequentiewaarden buiten het meetbereik wordt dan tevens achterwege gelaten. De aansluitingen van de blikken doos met de signaalgenerator op de controller zijn om pragmatische 4 proutine voor we het hebben kunnen inklokken in de DDS- chip. redenen hetzelfde gekozen als bij het meetzenderontwerp op portA en portC van de Atmel controller AT90S8515. Het voordeel daarvan is dat je, als je al eerder een meetzender hebt gebouwd, of nog gaat bouwen, je het doosje daaruit kan lenen en zo om kunt prikken met de twee bandkabeltjes. De versterker AD8321 vereist een 9V voedingsspanning. Deze versterker geeft tot maximaal 11 dBm af in een load van 75 ohm. Met een half Tweerstandnetwerkje en wat vermogensverlies wordt daar 50 ohm van gemaakt in de Elektuurdoos, de gebruikelijke impedantie voor hoogfrequentwerk. Dat vermogen hebben we hard nodig, want de AD8307 logaritmische detector heeft voor volledig gebruik van zijn dynamic range 17 dBm als bovengrens nodig. Zes dB zijn we dus al kwijt door signaalgebrek bij passieve DUT's als meetobject. De LCD zit op portB waarop tijdens de ontwikkeling van de software ook de in-circuit programming gebeurt, via de daartoe speciaal gemonteerde 10 pens boxed header gemerkt ICP in het schema van fig 1. Dat eist een pentoekenning op de controller, die voorkomt dat tijdens programmeren de LCD enabled wordt. De actuator en modeknop vereisen beide een externe interrupt en zitten dus op portD aangesloten. Op PortD zat ook een jumper die de maximaal instelbare demping bepaalt, waarover verderop meer detail. De versterking kan digitaal worden geregeld over 53,4 dB in stappen van 0,75 dB, door binair serieel de vereiste verzwakking in te klokken, via bandkabel K2 Daarbij is bytewaarde 0 maximale verzwakking en 71 de minimale is. Wel even schrikken als je tijdens ontwikkeling 0 instelt, daarmee denkt maximaal signaal te zien en er komt op de scope niks zichtbaars uit de versterker, het regelt dus net andersom. Dat regelen kunnen we gebruiken om het uitgangssignaal onafhankelijk te maken van de frequentie. Kost ook weer een paar (2,4) dB. Of eigenlijk ook niet, want bij lagere frequenties uit de DDS is de versterker bij volle gain toch wat overstuurd. De aansturing van de meetzenderdoos De DDS AD9851 wordt parallel aangestuurd met 5 bytes via bandkabel K1 (zie schema in fig 1). Het eerste byte is altijd 0x01, dat staat namelijk voor een 5 bits fasehoek die 0 is, 1 bit powerdown mode op 0, een bit 0 dat aangeeft dat byte-parallel wordt gestuurd en niet serieel, en tot slot een bit op 1 dat aangeeft dat de interne clock multiplier die 30 MHz klokinput naar 180 MHz vermenigvuldigt, in moet staan. De bedieningspoten voor de versterker AD8321 zijn DATEN op portbit PC2, clk op portbit PC3 en SDATA op portbit PC4. Als DATEN laag is kan er een data byte serieel ingeklokt worden, het in te klokken bit moet gedurende de op- en de neerflank van de klok geldig zijn. Het dempingsbyte wordt met het MSB (meest significante bit) het eerst aangeboden. Met een en ander is in de sturingssoftware rekening gehouden. Omdat de stappen slechts 0,7526 dB zijn moet de gewenste dB waarde met de reciproque waarde daarvan worden vermenigvuldigd, dat is het binaire getal in hex notatie $1,54. Meer nibbles heeft geen zin, omdat het verschil buiten de 8 instellingsbits valt. Dan komen er 4 bytes die het 32 bits frequentiewoord vertegenwoordigen. Het meest significante eerst. Die 5 bytes worden per stuk ingeklokt door een opflank van W_Clk. En als dat voor de 5 bytes gebeurd is dan wordt de DDS opgedragen om de nieuw geladen frequentie te gaan genereren op een opflank van FQ_UD, wat staat voor frequentie update. Bij initialisatie wordt de DDS ingesteld op 10 MHz met de 5 bytes 01 0E 38 E3 8E, dat gebeurt door die bytes aan te bieden via port A van de microcontroller, de W_clk op PC7, de FQ_UD puls op PC6. Voor het IC op deze wijze ingesteld mag worden moet er na power-up eerst een Reset worden aangeboden, die actief hoog is op PC5. We zullen zien dat port A onder andere ook door een interrupt serviceroutine wordt gebruikt, het is dus noodzakelijk om, als we een byte voor de DDS gaan laden in port A, de interrupt enable even af te zetten anders kan dat byte vervangen worden door de interru- Zet je de sweep op 0, dan is het apparaat dus als signaalgenerator (meetzender is een te groot woord) te gebruiken. Omdat de actuator en de modeknop ervoor zorgen dat de hele programmering van display, en berekenen van de ingestelde waarden, tezamen met wijziging van de DDS frequenties de activiteit van de processor is, kan als de sweep 0 wordt gekozen 5 scope te verzorgen, alsmede het SRAM periodiek uit te lezen. de processor worden stilgezet. Hij ontwaakt dan weer op een interrupt, omdat je een knop bedient. Groot voordeel hiervan is dat de processor geen storingen in het meetzendersignaal geeft, wat bij het oorspronkelijke ontwerp uit Elektuur wel het geval blijkt te zijn omdat de processor in rusttoestand steeds een keyboard staat af te scannen. Daarbij bleek mij dat bij vergroten van de demping, die storing niet afneemt op de uitgangsconnector, ook al was het meetzenderdoosje gesloten met een deksel en het signaalkabeltje een teflon coaxkabeltje, die met de mantel aan het blikken doosje is gesoldeerd. Experimenten met die slaapstand stuitte wel op bezwaren, want het weer ontwaken van de processor op een externe interrupt van de processor door de actuator, gaat te langzaam gebeuren, het duurt langer dan de herhalingstijd van de pulsen die de bedieningsorganen genereren. Omdat bovendien het wegvallen van de XY sturing de display kan beschadigen, is hier van afgezien. Normaal gebruik ik een controller AT89S8253 voor ontwerpen, maar die heeft te weinig RAM aan boord voor de geheugenscope functie. De nu gebruikte processor was in de grijpvoorraad aanwezig, en bruikbaar. De instructieset is echter niet vriendelijk, zo moet je als je bij conversie van getallen de ontbrekende deelinstructie simuleren door herhaald af te trekken. Ook add immediate instructies met en zonder carry ontbreken, en tot slot ontbreekt een atomaire instructie om de inhoud van 2 registers kruislings te wisselen, wat on the fly stelen en resetten van waarden uit een interruptroutine dan compliceert. Aangezien alle 4 ports in gebruik zijn, zoals fig 1 toont, te weten voor de LCD, interrupt voor de bedieningsknoppen jumper en latchklokken, en 2 ports voor de sturing van de DDS en de versterker, is er geen port van 8 bits over om de zaagtand af te geven in de vorm van 8 bit words. Daarom is om te beginnen een 8 bits latch 74HCT573P geinstalleerd, die samen met de DDS op portA staat, zodat de DDS sturing en de zaagtand op port A gemultiplexed kunnen worden. Pen PD0 op port D klokt de 8 bits latch voor de zaagtand. Het kloksignaal bepaalt dan welk van de aangesloten functies de data op portA inslikt. Voor de wobbulator kun je, indien gewenst, op de inhoud van de blikken doos besparen door de 3 (dure) small signal relais en andere verzwakker onderdelen weg te laten voor de 64 en 32 dB verzwakkers. Om beide keuzes open te laten was er een jumper opgenomen. Laat je die open dan zijn de relais nodig en worden ze bestuurd en gaat de display tot -142 dBm, zinloos, sluit je de jumper dan worden de relais niet bestuurd, zijn ze dus onnodig en kunnen ze weggelaten worden, en loopt de display tot -53 dB, lager instellen is dan niet mogelijk. Overigens zijn die hoge dempingen toch niet werkzaam door stoorsignalen, zoals beschreven en door overwaaien door capacitieve koppelingen in de relaisgestuurde verzwakkertrappen. Een spectrumanalyser helpt je uit de droom, als je die al mocht koesteren. De verzwakker tot 53 dB kan nuttige diensten bewijzen als je op de ingang van een versterker- of mengtrap meet waarachter het filter is opgenomen. En het vormt tevens een goede controle op de verticale calibratie van de display. Er zou ook gekozen kunnen worden voor een 8 bits parallel output teller die geinstalleerd wordt en dan twee besturingspennen van de controller vergt, namelijk klok en reset op 0. Mijn keuze is bepaald door dreigend gebrek aan voldoende I/O pennen en de inhoud van de junk-box; met een verfafbrander zijn 2 latches 74HCT573 van een stel dumpprinten gesloopt. Ruikt niet gezond, en is derhalve mijn bijdrage om de AOW betaalbaar te houden. Die blijken overigens slechts 22 cent te kosten bij Conrad (bestelnummer 151335), maar dat wist ik op dat moment niet. Maak je gebruik van de wobbelfunctie dan moet de processor altijd blijven werken om voortdurend andere frequentiewaarden in de DDS te sturen; en de zaagtand voor de horizontale afbuiging van de XY 6 troonbandje waar ze inzitten om de 10 stuks een merkteken aangebracht en er 100 gemeten met een meter die 4 cijfers aangeeft en dus die resolutie heeft. Die 100 metingen heb ik in een programma gestopt dat ik heb geschreven in C, en dat een aantal zaken uitrekent. Elke algemene programmeertaal is geschikt, voor dat soort werk. Basic dus eventueel ook. Het gemiddelde van die 100 weerstanden is (4 cijfers) 3299. De kleinste was 3229 en de grootste 3378. Dat betekent dus een tolerantie van 2,36%. Voor 2 DAC's heb ik samen 20 stuks 2R nodig (zie de print layout in fig 5). Een tweede latch aangesloten op portA, slikt de Y waarde in, die op de scope moet verschijnen. Die wordt geklokt door PD1 De output van de ene latch moet analoog gemaakt worden tot een zaagtand en van de andere latch moet de output tot de bijbehorende Y waarde op de scope worden getransformeerd. Dat eist dus voor elk een digital to analog conversion oftewel een DAC. Dat kan gebeuren door een gemonteerd R-2R netwerkje van handelsweerstanden. Uitleg staat in het artikel over de genoemde synthesizer, fig 3 toont de schakeling. Ik gebruikte 33 K weerstanden voor 2R en twee stuks 33K parallel voor R. Het beste kun je ze uitzoeken op gelijkheid. Je kunt natuurlijk officiele DACs gebruiken zoals de ADDAC80 die ik (tks PAoLQ) in de junkbox had liggen en die smartelijk om een toepassing riepen. Nadeel echter: Je hebt + en - 12 volt nodig voor de voeding ervan, ze zijn prijzig en tevens lastig verkrijgbaar voor nabouwers. Omdat we minder dan 0,1 schaaldeel op de scope niet of nauwelijks kunnen onderscheiden is de vereiste nauwkeurigheid niet zo hoog, officieel 1% van de uitgangsspanning. De analoge uitgang wordt door de scope X-ingang hoogohmig belast, de nauwkeurigheid van R-2R volstaat dan dus, en we hebben geen extra voeding nodig van + en - 12 volt die een ADDAC80 eist; dus daarvoor is gekozen. Het is namelijk voor dit doel een veel te goed onderdeel, 12 bits er worden er 8 gebruikt, en de aanvankelijke toepassing werd dan ook uitsluitend bepaald door de directe beschikbaarheid hier. Dus die zijn ten behoeve van nabouwers vervangen door het R-2R netwerk uit fig 3. Daarom heb ik de beste 20 die het dichtst bij het gemiddelde liggen door het programma laten bepalen. Het blijkt dat de grootste afwijking van het gemiddelde van die twintig 6 is, dat is dus 0,18% tolerantieveld. De overige 7 weerstanden per DAC zijn R, en bestaan uit twee weerstanden van 33K parallel. Daarvoor hebben we dus voor 2 DAC's totaal 28 weerstanden van 33K nodig. Nu is het zo dat je die kunt paren zodat als de ene delta groter is dan het gemiddelde 3299 de andere delta kleiner is, want totaal levert dat dan 3299/2 op, als delta klein is. Daarvoor is het programma verder uitgebreid om de beste 14 paren te zoeken in de overgebleven 80 weerstanden. Het blijkt dat er 18 paren zijn in de overgebleven set van 80 gemeten weerstanden die precies aan de voorwaarde voldoen dat de parallelschakeling van de twee de nominale vereiste waarde is. Er is dus zelfs reserve. DAC fout De grootste fout in de DAC treedt op als bij een signaal 01111111 wordt overgegaan 1 hoger naar 10000000. Twee factoren spelen een rol: de gelijkheid van de Q outputs van de latch en de gelijkheid van de weerstanden. Voor de weerstanden heb ik 33K gebruikt, omdat die hier in grote hoeveelheid op voorraad liggen sinds 1975, het geboortejaar van de Ikunullius. Deze 33K weerstanden hebben naast 3 oranje een goud ringetje en ik meen dat dat 5% betekent. Het gaat niet om de absolute waarde van de weerstanden maar om de onderlinge verschillen. Ik heb daarom op het pa7 het oplopen van de zaagtand op de halve piekwaarde, waar de overgang van 01111111 naar 10000000 zit. De schakeling levert, als die wordt gemonteerd zoals figuur 4 aangeeft, een breedte van 30 mm en een lengte van 80 mm op als printgebruik. Daarom zouden twee stukjes printplaat afgezaagd moeten worden waar de zaak opgezet wordt zodat die verticaal staande op de hoofdprint gemonteerd kunnen worden. Andere methode is de weerstanden rechtop te monteren zoals fig 5 aangeeft, dan wordt een veel compacter geheel verkregen, en gemak dient de mens. Dat heb ik dus gedaan en foto42.jpg geeft een beeld van de DAC opgebouwd uit de gesorteerde weerstanden. Je kunt er een lineaal langsleggen. Dat nodigde dus uit om met succes de tweede DAC op de tweede latch te monteren. Ook die blijkt kaarsrecht te zijn. Scope in XY mode Volgende stap is het SRAM geheugen te testen door daar wat bekende inhoud in te programmeren en de scope in XY mode aan te drijven. met het 50 maal per seconde uitlezen van dat geheugen als Y waarde en het bijbehorende X coordinaat op de X output te zetten. Gaat ook perfect, foto 45 toont het resultaat. De display is 239 punten breed te verdelen over 10 schaaldelen horizontaal op de scope in de XY mode. De Y as is 256 punten over 9 schaaldelen. Omdat je dat wilt kunnen instellen als calibratie op de scope die voor display gebruikt gaat worden, is er bij initialisatie van de controller een signaal in het SRAM gezet, dat 33 punten in de x richting op 255 hoog staat, vervolgens over 85 punten in de x richting 3 per punt daalt, zodat het op 0 uitkomt, dan weer over 85 punten 3 per punt stijgt naar 255, om weer horizontaal te eindigen op x=238 en Y=255 op de bovenste rasterlijn. Dat levert dus een V met horizontale stukjes op het einde van de poten. Daarmee kun je dus met de versterking van de scope en de positieregeling op de scope het beeld over 10 schaaldelen breed en 9 schaaldelen hoog precies vullend in het 9 hoog en 10 brede raster zetten. Vervolgens is "Eating the proof of the pudding" Derhalve heb ik alvorens de tweede DAC te monteren de processor geprogrammeerd op het afgeven van een zaagtand aan de DAC door een oplopende De noodzaak van een trage sweep Tijdens het in elkaar breien van de schakeling begon ik me in een vroeg stadium zorgen te maken over de verticale respons. Je biedt immers 50 keer per sec- tellerstand aan te bieden. En zoals foto 44 toont is er op een scope geen onregelmatigheid te ontdekken in 8 Nog meer werk voor de processor dus. Het kan als de uitlezing van de amplitude per frequentie ook als vierde toepassing van portA wordt genomen. Op die port zit reeds de DDS, de X binair gecodeerde zaagtand en de Y of verticale amplitude waarde voor de scope. De omzetting van gemeten amplitude in een byte gebeurt door een ADC 0804LCN, zal vast niet optimaal zijn, maar lag ook dankzij PAoLQ in de junk box hier, op een mooi zwart antistatisch prikkussentje uit te rusten van een vorig leven, te herkennen aan soldeerresten op zijn pootjes. Die IC's zijn nog vlot leverbaar en kosten 4,58 euro bij Conrad bestelnummer: 174505. onde 239 frequenties aan het te bemeten filter aan, die al of niet in de doorlaat ervan liggen, als je net zo snel meet als je sweept. De tijd dat je _een_ frequentie die in de doorlaat ligt aanbiedt is dus slechts 1/ (50*239) seconde en dat is minder dan 0,1 milliseconde. Wil de output van het filter tot volle wasdom komen dan kun je dat kortstondige signaal voor de eenvoud en in eerste benadering opvatten als een amplitude gemoduleerd signaal, dat van 0 tot maximum groeit in 0,1 ms. Dat eist dat de erbijbehorende zijbanden, die dus op 5 kHz afstand liggen bij AM in dat geval, OOK door dat filter komen. Alle filters smaller dan 10 kHz komen door de kortstondigheid van de zichtbaarheid van het passerende signaal dus niet tot volle wasdom qua outputspanning. Dat is de gedachtengang. Dat IC heeft intern een latch, en is tri-state, zodat we die direct op portA als inmiddels vierde deelnemer, in dit geval voor input, kunnen aansluiten. Het behoeft wel sturing, namelijk: voor start conversie de WR puls laaggaand en weer terug, voorts kijken (eventueel) of de conversie klaar is op de INTR pen, conversie duurt ongeveer 100 microseconde, en lees tot slot het geconverteerde signaal als byte uit met de RD puls, die hem uit zijn tri state output haalt, zolang die laag is. Testen tijdens ontwikkeling gebeurt dan door DC uit een potmetertje op zijn ingang aan te bieden, en de geconverteerde waarde in hex op de LCD te zetten. Dat werkte niet, die gaf altijd FF af. Het bleek dat dat kwam doordat de RD puls van de DAC niet snel genoeg de DAC waarde aanbiedt, zodat wat vertraging met enkele NOP instructies alvorens die waarde op port A in te lezen, volstond. Nu is het wel weer zo dat je bijvoorbeeld voor het meten van notches in kristalfilters kunt teruggaan tot 239 frequenties over slechts 1 Hz per division dus totaal 10 Hz over de volle beeldbreedte uitgespreid. Om het effect experimenteel te kunnen bepalen (weet je wel we zijn als Hollanders wellicht lid van een Vereniging voor _Experimenteel_ Radioonderzoek, ja Hollanders, Grunningers tellen niet mee wat die staan onder water als het gas op is en wonen in een woonboot op “Het verdronken land van Ome Loek) moet je langzamer meten. Dus de frequentie veel langzamer laten oplopen en de zaagtand veel langzamer over het scherm schrijven. Dan heb je weer een trage fosfor nodig en zijn we terug in 1955. Je kunt ook gaan knoeien met het nemen van foto's met je digitale camera met een lange belichtingstijd van je scopescherm. Om experimenteel te kunnen kijken of we langzaam genoeg meten is de meetsnelheid regelbaar gemaakt van 500 seconde per sweep in 10 stappen 200 50 20 et cetera tot 50 ms per sweep. Nog een insteltaak voor de actuatorknop erbij dus. Dat laatste betekent dat niet alle instellingen in een keer op de display kunnen staan, maar dat de instellingsregel die actief is altijd zichtbaar gemaakt wordt. Omflippen gebeurt met de mode-drukknop naar het veld FST rechtsboven in de display. Dat laat dan drie keuzes toe middels de actuator, F S en T respectievelijk de centraalfrequentie, de sweepgrootte en de tijd die gemoeid is met meting van een hele set van 239 frequenties. Bij elk van de drie keuzes verschijnt onmiddellijk links ervan de betreffende display van de gekozen parameter. De volgorde van de modeknop is zo geprogrammeerd dat een keer drukken direct de gekozen instelling wijzigbaar maakt met de actuator. Er is echter een andere oplossing, namelijk het beeld toch met 50 Hz schrijven ("rustiger voor de ogen"), maar de meting veel langzamer doen. Dat kan als je de metingen, 239 stuks, per stuk in een byte bewaart, dat in SRAM van de controller wordt opgeslagen. De hele serie van 239 bytes wordt altijd pakweg 50 keer per seconde afgespeeld, en met een (veel) lagere snelheid worden de verschillende frequenties beurtelings aan het te bemeten filter aangeboden en de outputamplitude wordt door een 8 bits (256 niveaus verticaal) ADC omgezet in een byte dat door de processor wordt ingeslikt en dat het SRAM byte dat zojuist gemeten is, ververst. Het kan een andere waarde hebben dan de vorige keer, omdat je bijvoorbeeld aan een trimmer of een kern van het DUT hebt gedraaid. 9 heb voor de eenvoud 31250 interrupts per seconde gekozen, en van elke 3 interrupts wordt er twee bijna niks gedaan en elke derde is er werk aan de winkel want dan wordt een meetwaarde uit het SRAM als punt op het scherm gezet. Dan zijn er geen geconcentreerde wachttijden meer en ziet de display er gelikt uit. De eigenschappen zijn dan 10417 punten per seconde op de buis en dat is bijna 44 Hz display herhalingsfrequentie. Ook wel goed. Om de zaak, die qua complexiteit op dit punt toeneemt, beheersbaar te houden wordt de display van de beeldpunten in het SRAM geheel op eigen houtje door een (derde) interruptroutine verzorgd, die triggert op de overflow van de interne een byte grote timer_0 van de controller. We kunnen tijdens het ontwerp kiezen of we slechts een punt per interrupt op de buis zetten, of meer punten, in een keer, dat spaart overhead van ophalen en opbergen van pointers die aanduiden hoever we gebleven waren. Daar zijn met de scope metingen voor gedaan. Dat meten kan als je aan het begin van de interrupt een portpen hoog zet en aan het einde weer laag. De jumperpen is de aangewezen pen om die daarvoor te programmeren, want daar kun je de scope probe makkelijk aanhangen. De breedte van de puls op die pen heeft dan de tijd aan die de interruptroutine nodig heeft. We komen op de volgende resultaten uit: inter- Puntenper interrupts CPU be- 6,5 us 1 11950 7,8% 11 us 3 3983 4,4% 27 us 10 1195 3,2% 72 us 30 398 2,9% 230 us 100 120 2,8% Het programma Het programma bevat routines voor de aansturing van de LCD, voorts 11 routines voor incrementeren en decrementeren van de parameters op de display. 7 routines voor display van de velden, namelijk modeindicatie, sweep, centraalfrequentie, tijd, demping en increment van de centraalfrequentie per klik van de actuator en tot slot een indicatie of het frequentieveld de sweep of de centraalfrequentie, danwel de tijdsduur per meetsweep bevat. Wijziging van de actuator roept een interrupt aan dus het ligt voor de hand dit alles in een interrupt af te handelen. Dat is echter niet verstandig want dat kost tijd, en dat onderbreekt de display, die in de vorm van feller groene puntjesgespetter dat laat zien. Voorts moet je alle gebruikte variabelen in een interrupt op de stack drukken. Het alternatief is de interruptroutine alleen vlaggen (een achttal) te laten zetten die aangeven welke parameter er gewijzigd is, omhoog of omlaag, en in de hoofdroutine, buiten de interruptafhandeling dus, dan die vlaggen stuk voor stuk te besnuffelen en te resetten nadat de gevraagde actie van wijziging van een parameter en update van de LCD display is gebeurd. Niet alle vlaggen hebben invloed op de meetsweep, alleen de tijdparameter de sweepparameter en de centraalfrequentie, vandaar dat die vlaggen apart gecopieerd worden, en de sweeproutine daarmee werkt, dat wil zeggen: op elke wijziging de meetsweep onderbreekt, en ingeval van frequentie en sweepwijziging de beginwaarde en de stapgrootte voor de DDS opnieuw berekent. Het is echter toch nodig de sweeproutine altijd af te breken bij een wijziging van een instelling, omdat de display anders niet onmiddellijk reageert, op de bedieningsknoppen, wat ongewenst is. De eerste 2 kolommen zijn de meetresultaten en de rechtse twee zijn de daaruit berekende CPU belasting en het benodigde aantal interrupts per seconde voor een 50 Hz herhalingsfrequentie op de display. Het aantal interrupts van timer0 dat zonder heisa gekozen kan worden is niet willekeurig, dat is afhankelijk van een instelbare prescaler 31250, 3906, 488, 122 en 30/s in de gebruikte controller. We kiezen voor 488 interrupts/s en schrijven dan per interrupt 24 punten. Allemaal leuk bedacht zul je wellicht denken. Maar helaas dat werkt niet. Iedere keer als 24 punten geschreven zijn staat de displaypunt 97% van de tijd stil op het scherm van de scope, en wordt dus een dikke vette groene vuurwerkkogel op je scope. De display heeft dus wel de goede vorm, maar er zitten 9 bewegende dikke felle groene punten als een kralenketting op. Enige oplossing die dan overblijft is een punt per interrupt en zoveel interrupts dat je met 239 punten en 50 Hz uitkomt. Die 50 Hz is ook geen heilig getal, dus ik Een en ander is bloksgewijze ontwikkeld en elk blok is apart gedebugged, tot het naar wens werkte. Voorts bevat het programma aanstuurroutines voor de versterkerdemping en de DDS in het blikken 10 doosje, en dan rekenroutines om de instelling van de DDS te berekenen uit de ingestelde frequentie en sweepwaarden. Er draaien 3 interruptroutines een voor de externe interrupt van de modeswitch een voor bewegen van de actuator, en een derde op een timeroverflow voor de display die 44 keer per seconde ververst wordt door de daemon. Deze bedient 31250 interrupts per seconde. Bij de overflowinterruptafhandeling wordt twee van de drie keer nagenoeg niets gedaan, namelijk slechts het verhogen van een klokbyte om de 32 microseconde en een modulus 3 interruptteller. Bij elke derde interrupt wordt het volgende punt van de totaal 239 uit de SRAM gehaald en op de XY DACs gezet. Als 239 wordt gehaald worden de pointers in SRAM weer teruggezet op het begin van de signaalbuffer en de x zaagtandteller die tevens dienst doet als index in die signaalbuffer, weer op 0 gezet. Valt die daemonroutine uit uit dan staat er een dikke stralende punt op het scherm van de KSB en dat is op zijn minst vervelend. Daarom is gebruik gemaakt van de zogenaamde watchdog timer, die moet steeds gereset door het lopende programma, anders gaat hij een processorreset geven, waardoor alles weer in de uitgangspositie terecht komt. Die watchdog is afgesteld op ongeveer 60 ms en de reset gebeurt elke keer in de daemon intteruptafhandeling. Valt die daemon uit dan zorgt de watchdog ervoor via een processor reset dat hij weer wordt opgestart. Na de initialisaties worden de interrupts vrijgegeven. Het programma draait dan alleen de daemon displayroutine, de sweep is op 0 geinitialiseerd, en de signaalbuffer is tijdens initialisatie gevuld met de V vormige calibratieplaat die instelling van de oscillograafbuis toelaat. Tevens draait er dan een DDS controleroutine die er beurtelings periodiek om de 6 seconde een andere frequentie uit laat komen van een set van 16 stuks, die naar wens met een teller kunnen worden nagemeten. Iets wat minstens een keer na gereedkomen van het apparaat dient te gebeuren. teneinde de goede werking van de DDS te controleren. Zodra je de actuator of modeknop bedient, verdwijnt die plaat en wordt vervangen door wat er gemeten wordt aan de DUT. Dat twee van de drie keer overslaan van actie is gedaan omdat een hogere herhalingsfrequentie van het beeld geen doel dient, en de processorbelasting door die daemon wordt daardoor teruggebracht tot ruim 7 %, terwijl de granulatie van de klok toch 32 microseconde is. Dat is eenvoudig na te meten door in de interruptroutine aan het begin een pen hoog te maken en aan het einde laag. Met een draaispoelmeter meet je dan de gemiddelde dutycycle van de uitgangspulsen (steeds twee korte gevolgd door een langere) en dat is dan de processorbelasting door die routine. 11 jde van het conversiegebied wordt bepaald door Vref/2 (pen 9 van de ADC) input en de onderzijde van het conversiebereik door de spanning op VIN(-) op pen 7 van de ADC. Daar zijn twee multiturn trimpotmeters voor gemonteerd. Testen is gebeurd door de output hex op de display te zetten en met een (derde) potmeter de DC ingangsspanning op de input Vin+ van de ADC te varieren. Dat gaat goed, alle niveaus zijn duidelijk te onderscheiden en zonder merkbare hysteresis stabiel, zodat er kennelijk geen hinderlijke stoorspanningen meeliften naar de input. de ADC routine en de ADC op de print gemonteerd, op de wijze zoals het schema in fig 1 laat zien. De ADC Dat is de 20 pens DIL ADC0803, die heeft een tri state 8 bits brede output, die ook, als vierde klant, met port A wordt verbonden, zoals het schema in fig 1 aangeeft. Eigenschappen van IC's kun je vinden op www.datasheetcatalog.com , in die datasheets staan doorgaans ook toepassingen. Het blijkt dat het IC een interne klok heeft waarvan je de frequentie regelt met een externe R en C. R=10k en C=56 pF volstaan om de klok ruwweg op 1 MHz te zetten, wat de voorkeursfrequentie is, namelijk snel en niet zo snel dat er nauwkeurigheid verloren gaat. Chip select moet laag staan als je hem wilt gebruiken, en dat willen we, dus die is hard aan de grd van de print gesoldeerd. Een laag gaande puls op de WR input start de conversie van het analoge signaal. Als dat klaar is (na ongeveer 100 microseconde) gaat de INTR output laag. Als je dan vervolgens de RD een laag gaande puls geeft, wordt de output 8 bits breed aan de uitgang gepresenteerd, zolang read nog hoog is is de output tristate (hoogohmig) en die output kan dus zondermeer ook op PortA gezet worden, wat dan ook gedaan is. De WR puls wordt bediend door PB3 en de INTR wordt dan bewaakt tot die laag gaat door PD6, en vervolgens wordt de output beschikbaar gemaakt door de RD puls op PD7. Omdat de conversie ongeveer 100 microseconde duurt en er mij 20 ms per sweep per meting 83 microseconde totaal beschikbaar is, is op dit punt van het ontwerp besloten het snelste sweepbereik 50 ms/ sweep te maken en 20 ms/sweep, wat die aanvankelijk was, te schrappen. De log converter AD8307 Dit IC is verkrijgbaar in 8 pens DIL, en in SMD uitvoering. Kent Electronics heeft ze in de aanbieding in SMD met een klein verloopprintje erbij om ze in een 8 pens dilvoetje te kunnen steken. Nog voordeliger zijn ze te koop in 8 pins DIL uitvoering, die ik gebruikt heb, bij de shop van Funkamateur.de, Daar kun je ook die MMIC versterkers kopen. De routine die de ADC bedient is voorzien van een timeout, waar ook de daemon interrupt 32 microseconde clock voor wordt gebruikt. Is die groter dan 160 microseconde en de conversie nog niet klaar, dan verlaat hij de polling loop van PD6 en de routine met een carry set, als teken van mislukking. Dat voorkomt dat om welke reden ook de zaak blijft hangen als er eens een conversie de mist in zou gaan. Alvorens de read puls laag te maken wordt portA op input-mode gezet en de interrupts afgeschakeld. Zodra de geconverteerde data ingeslikt is via portA wordt die weer teruggezet op output en de interrupts weer enabled, na de ADC weer in de tristate toestand te hebben gebracht door de RD hoog te maken. We betreden hiermee de analoge wereld dus dat geeft moeilijkheden en zwarte kunst. Het IC is inwendig tussen de trappen DC doorgekoppeld omdat er geen ruimte is voor C's op de chip, die trouwens de bandbreedte aan de hoge zijde zouden verlagen. Daarom is hij vanaf DC bruikbaar, maar de gevoeligheid is vanaf 50 microvolt, dus DC offset drift die wel 400 microvolt teruggerekend naar de ingang kan zijn, zou hem gelijk degraderen qua dynamic range omdat de drift als (DC) signaal wordt opgevat en de AC signalen in de orde van 50 microvolt kunnen liggen. Daarom heeft de fabrikant intern een DC tegenkoppeling aangebracht, die de DC offset bijna op 0 houdt; die terugkoppeling mag echter niet voor AC gelden en daarom is er op de chip zelf een C opgenomen. Kantelpunt 700 kHz of zo, dus daar beneden gaat het de foute kant op wat AC gevoeligheid betreft. Nu is het wel zo dat dit alleen In de analoge wereld moet de output van de logconverter AD8307, die ongeveer 0,3 tot 2,8 volt beloopt, worden omgezet in 256 niveau's. Dat vereist dat de seinspan van de ADC geregeld kan worden om zich aan te passen aan dat gebied, omdat we daar alle 256 stapjes voor willen gebruiken. De bovenzi12 je omgekeerd dan mag je uitgangsC niet groter zijn dan 8 nF, ik heb 5n6 gemonteerd, teneinde een RC tijd te behalen die minder is dan 100 us. Dat heb ik gekozen. Beneden 12,5 kHz moet je dan rekening houden met afwijkingen. Wil je dat niet dan pak je 1 uF, dan werkt hij vanaf 100 Hz goed maar moet je altijd langzaam sweepen ook op hoge frequenties. Je kunt dus kiezen voor een hogere waarde en dan word je altijd gedwongen langzaam te sweepen. Of voor een lagere waarde dan is er effect op de uitlezing beneden 12 kHz. geldt zolang de eerste trap van de 6 hard limiting versterkertrappen van de logconverter niet is vastgelopen en dat doet hij bij ongeveer 14 dB boven dat laagst detecteerbare niveau. Dus je merkt het alleen bij meting van zwakke signalen tussen 50 en 500 microvolt, daarboven levert het geen fout op. De onderste 2 div. van de display kan erdoor worden verstoord dus, hogere waarden niet. Omdat ze het IC ook aanprijzen voor audiogebruik is er derhalve een poot OFS, pen 3, waar je extern een C extra kunt opnemen, parallel aan die op de chip, om het kantelpunt naar wens te verlagen. Een tantaal van 1 uF laat het reeds dalen tot 10 Hz, dus die heb ik erin gesoldeerd. In feite 10 uF, omdat dat de enige tantaals waren die ik nog had liggen. Daarmee zijn we af van die mogelijke vervorming voor de lagere sweep-frequenties. Een en ander is na voltooiing van het apparaat het effect van te bekijken door de signaalgenerator output direct naar de DUT ingang door te koppelen en de display te bekijken bij diverse met de attenuator instelbare ingangsniveaus. Dan tot slot de ingang van de log versterker/detector, die is breedbandig, en gevoelig (50 uV) dat wil dus zeggen dat alle digitale rommel die wordt opgepikt, signalen van omroepzenders etc de ruisvloer (en dus de laagste outputspanning van de detector) ophoogt tot ongekende hoogte over de volle breedte van de display, onafhankelijk van de ingestelde sweep; dat vanwege de afwezigheid van selectiviteit. Het IC dient dus als je zo laag mogelijke ruisvloer wilt hebben ingeblikt (beter: ingekoperd) te worden, en van een apart regulatortje te worden voorzien voor de voeding, en de differentiele input moet met een kort coax kabeltje en een geisoleerde BNC connector in het frontpaneel, naar het DUT waar de signaalaarde gebruikt wordt. De common mode input moet middels een paar weerstanden op de halve hoogte van de voedingsspanning worden ingesteld, maar dat is intern al gebeurd. Asymmetrisch werken, dus een poot van de ingang voor RF ontkoppelen kan ook, dan kost je dat 6 dB dynamic range in dit geval aan de hoog signaalzijde en dat merk je dus niet, als je aan passieve DUT's meet, want die power hebben we niet beschikbaar uit de Elektuurdoos. Voorts demoduleert het IC, er komt een gelijkspanning uit tussen nominaal 0,3 en 2,8 volt op de OUT pen, over de range van ingangssignalen die 90 dB in sterkte verschillen. Met de ADC onderscheiden we daarin 256 stapjes, dat is dus per 10 mV een stapje. Er zitten echter bij de detectie resten van twee maal de draaggolffrequentie (het ingangssignaal) op gesuperponeerd als rimpel. Dat mag dus niet meer zijn dan 10 mV en dat is het zonder maatregelen wel. Je moet dus extern extra capaciteit aanbrengen op de OUT pen4; die pen heeft een Ri van 12K5. Dat extra uitgangs C'tje verlengt echter de tijd die nodig is om bij stabiel aangeboden ingangssignaal de eindwaarde op OUT te bereiken, die een dB evenredige stroombron als input heeft op de interne 12,5 K. Hij gedraagt zich dus als een spanningsbron met een Ri van 12K5. Is die C te klein en de superpositie dus (aanzienlijk) meer dan 10 mV voor lagere (wobbel) frequenties, dan uit zich dat in ADC conversie die per sweep verschilt, en dus een dikkere lijn bij snel sweepen zal geven. Dat is te voorkomen door voldoende langzaam te sweepen. Er zit weinig anders op, want als je bij de onderzijde van het sweepbereik op 50 Hz, minder dan 10 mV 50 Hz rimpel wilt moet je een C hebben van 2 uF en die heeft met 12,5K een tijdconstante van 25 milliseconde, zodat de output pas na ongeveer die tijd binnen 10 mV van de eindwaarde komt, en als je snel sweept (239 metingen in 50 ms sweeptijd) heb je slechts 209 us per meting beschikbaar waarvan er 100 worden gebruikt door de ADC. Het gaat echt om de lage frequenties, op 10,7 MHz heb je bijvoorbeeld zelfs zonder externe C nog maar een rimpel van 12,5 mV. Redeneer Omdat HF metingen doorgaans op 50 ohm gebeuren wordt het IC voorzien van DC blokkerende C's (weer uit de 10uF tantaalvoorraad) en een 56 ohm weerstand (de ingangsimpedantie van 1k1 tussen de ingangspoten staat er voor HF aan parallel), zodat we uitkomen op 53 ohm. Dat kun je dus ook nog perfectioneren met een wat minder makkelijk verkrijgbare weerstand dan 56 ohm. Die weerstand zit voor de koppel C's zodat de RC tijd naar de input die 1K1 is 20 keer groter is bij dezelfde C-waarde. 50 Hz kantelpunt eist bij 1K1 dus zo'n 20 uF, we hebben er 5uF zitten van twee van 10uF, die voor de 13 RC tijd bepaling immers in serie staan. Lage werkspanning van enkele volt volstaat reeds, eventueel inductief gedrag op hogere frequenties kan de kop worden ingedrukt met een extra keramische C er aan parallel. Of dat nodig is kun je altijd met het apparaat zelf bekijken door op maximale sweep de Controle op de juiste werking signaalgenerator Als je als nabouwer een geprogrammeerd IC gebruikt heb je de zorgen niet over wat er allemaal fout kan gaan want dat gaat dan goed. Maar de meetzenderdoos werkt niet altijd goed, als je niet ervaren bent in het solderen van SMD componenten. Het is dus niet verantwoord om, als het display een frequentie opgeeft er blindelings op te vertrouwen dat die er ook uitkomt. Mijn exemplaar was met de trimmer de kristalfrequentie overal te krijgen, vervanging van het 10 MHz kristal loste dat probleem op. Het is dus verstandig met een scope te kijken op de klokingang van de AD9851 DDS, of er wel een display te bekijken. Dan wordt dus eventueel de eerste daadwerkelijke toepassing van de Smeerpijp, om zichzelf te controleren. Die lage impedantie van 50 ohm maakt de capacitieve pickup van de ingang ook bijna 30 dB lager. En je kunt je schaal en attenuator dan ijken in dBm, in de display is dat gebeurd, die geeft het signaalgeneratorniveau aan als de signaalgenerator is afgesloten met 50 ohm, in dBm. Interesseert dat lage gebied je niet, dan volstaan kleinere koppel C's. Een alternatief zou een koppeltrafo op een ringkern kunnen zijn, maar kernen die getrouw tussen 50 Hz en 72 MHz de transformatieverhouding aanhouden, zou ik zo snel niet weten te vinden. D7=1 351562.50 D7=0 348815.92 D6=1 175781.25 D6=0 524597.17 D5=1 87890.62 D5=0 612487.79 D4=1 43945.31 D4=0 656433.11 D3=1 21972.66 D3=0 678405.76 D2=1 10986.33 D2=0 689392.09 D1=1 5493.16 D1=0 694885.25 D0=1 2746.58 D0=0 697631.84 bruikbaar kloksignaal op staat van 30 MHz. Op het aluminiumbusje (de - dus) van de elco's C35 en C36 , van het schema in Elektuur, kan gekeken worden of daar signaal staat. Zet de stapgrootte op 1 MHz en kijk of bij draaien van 1 tot 72 MHz beide signalen een normaal verloop hebben, dat wil zeggen niet meer dan een factor 4 in amplitude varieren over dat frequentiegebied. Dan kan geluisterd worden als de relais gemonteerd zijn of die klikken rond 32, 64 en 96 dB dempinginstelling. Bij lage demping moet het signaal op de uitgang zichtbaar zijn op een scope (2 volt piek-piek). Het solderen van de DDS is een moeilijke zaak, zeker voor een oldtimer, en het is mogelijk dat de aansturing niet deugt, doordat er twee poten zijn doorverbonden, of een poot steeds op 1 of op 0 hangt. Om dat te controleren kiezen we als frequentiewoord 4 bytes, waarvan er drie 0x00 zijn en het op een na meest significante byte slechts een 1 bevat en dan kijken of Om te weten hoe een en ander uitpakt als je niks bijzonders doet, heb ik de zaak gewoon open en bloot op de print gemonteerd in de buurt van de ADC en op de normale 5V voeding van de print aangesloten, wel ontkoppeld en coax naar de geisoleerde coaxconnector in het frontje gebruikt. Dan wordt in ieder geval bekend of het resultaat te accepteren is en zo niet dan weet je wat je verbetert als je het anders doet. Dat geeft ook gelegenheid de AC rimpel te meten op het uitgangssignaal. Een methode om daar vanaf te komen zou kunnen zijn om niet steeds oude metingen te wissen maar voor elke meetposistie het lopende gemiddelde te bepalen over een stuk of wat sweeps. Het resulterende schema van de log comverter is apart getekend in figuur 8. 14 De opbouw Als je zoiets maakt en de software schrijft werkt het geheid niet, Daarom wordt het in blokken opgebouwd die na voltooiing per stuk getest worden. Dat testen gebeurt door waarden die verwacht worden op de LCD display te zetten met een daarvoor geschreven debugroutine. Als er een langzame sweep gekozen is, zou de sweepmeetroutine er 500 seconde over kunnen doen om een set metingen te verversen, inmiddels zou je actuator dood lijken, want de display wijzigt niet omdat de interruptvlaggen niet worden besnuffeld. Dat is zeer ongewenst en daarom werd in de sweep meet delay routine die tussen het wijzigen van de frequentie en het meten van de output van de DUT zit, in de delaylus steeds naar die vlaggen gekeken, en zodra er aan de knoppen is gezeten, wordt de meetroutine afgebroken en worden de vlaggen eerst afgehandeld, alvorens weer te gaan meten met de nieuwe instellingen. Bij elke wijziging van de knoppen wordt nu onmiddellijk gereageerd op de knoppen, ook bijvoorbeeld bij wijziging van delta die niets met de lopende meting te maken heeft, omdat anders de LCD display niet direct reageert op de wijziging. De opbouw was: Eerst de display activeren, dan de daemon; testen van de DAC's. Vervolgens de actuator en de modeknop met alle bijbehorende routines, waarvan je op de display ziet of ze naar wens werken. De berekening van de DDS startfrequentieinstelling en het increment per meting. De ADC is daarbij voorlopig vervangen door een fake_ADC routine die een omgekeerde V als plaat in SRAM zet. Zet je dan de instellingen van de centraalfrequentie en de sweep zo dat de grenzen van 50 Hz en 72 MHz worden overschreden dan moet je dus zien dat delen van die V links en of rechts naar de nullijn gaan. Als dat niet werkt, en dat deed het aanvankelijk niet, de getallen die in de berekeningen zitten dumpen op de LCD, dan kom je erachter waar je moet zoeken en vinden. Werkt dat, dan de DDS aansluiten op de kabeltjes. De dempingsvariatie bekijken op de scope van het uitgangssignaal. Bij trage sweep van 500 seconde kun je met een teller controleren of de uitgangsfrequenties (2 seconde per frequentie om te meten) goed zijn, zoals verwacht. Heb je geen teller, dan kun je op een scope kijken naar het harmonicasignaal, of je kunt de centraalfrequentie op 1000 Hz zetten en de sweep op 100Hz per divison en met een koptelefoon luisteren naar het signaal. Door de sweeptijd te varieren kun je dan horen dat die ook werkt, tevens krijg je dan respect voor vogeltjes in de bomen die het verkregen geluid zomaar instinctief produceren om een leuk wijfje te lokken. Het bleek dat de DDS af en toe op hol sloeg. Kan best want er wordt nog al aan de teugels gerukt, maar volgens de specs mag dat. Oorzaak was op het moment van schrijven niet bekend, maar door na elke afgemaakte sweep de DDS te resetten, werd eventueel afwijkend gedrag in de kiem gesmoord. Daarna werd de fake_ADC routine vervangen door De delayroutine die de metingen na elke instelling van de DDS vertraagt om aan de ingestelde meettijd te komen, is niet gewoon een afteller, want die zou steeds onderbroken worden door diverse interrupts met name die van de XY-display. De displayinterrupt van de daemon verhoogt elke keer dat hij afgaat, dus om de 32 microseconde een tellerbyte, na 256*32E-6 = 8 ms is die een keer rond. Zover komt het niet, want de delayroutine trekt van de ingestelde delay, die bij de sweeptjd hoort, steeds de stand van die teller af (veelvouden van 32 us dus) en zet die teller dan tevens terug op 0. Een swap atomaire instructie kent de 90S8515 ook niet, maar voor een delay is dat ook geen ramp, Voor het ophalen van de teller en het resetten op 0 daarna, zijn dan twee instructies nodig, die dan geflankeerd worden door twee instructies die de interrupts uit en weer aan zetten. Een aantal power up initialisatieroutines completeren het geheel. 15 opgedeeld in 26 gebieden. Met een 100 MHz bandbreedte scope is de verzwakking voor die gebieden bepaald uitgedrukt in dempingseenheden voor de versterker en opgenomen in een tabel. Afhankelijk van de frequentie die in de DDS geladen gaat worden, wordt nagegaan in welk gebied de frequentie ligt. Vijf bits van het meest signifcante DDS frequentiebyte volstaan daartoe, en de bijbehorende verzwakkercorrectie att_cor wordt opgezocht in een tabel en als correctie op de reguliere verzwakking att_reg aangebracht en geladen in de AD8321 versterker, direct voordat de nieuwe frequentie in de DDS geladen wordt. Dat echter alleen als tijdens de sweep het frequentiegebied in een van de andere 25 wijzigt. de frequentie op een teller of general coverage ontvanger klopt. Door keuze van het hoger significante byte is de aanwijsfout tengevolge van een defect minstens 180E6/2^16= 2746 Hz, geen zorgen maken dus over een paar Hz ten gevolge van bijvoorbeeld kristal- of tellerafwijkingen, een fout is heel duidelijk waarneembaar en tevens is vast te stellen uit de afwijkingen wat er aan de hand is zodat gericht gezocht kan worden. Nooit met een ohmmeter aan die IC's gaan hangen, altijd een doorpieper nemen, die zo weinig spanning afgeeft, 0,05 volt of minder, zodat de halfgeleiderdrempels niet worden overschreden. De test wordt herhaald met in dat byte allemaal enen op een 0 na, die dus ook op 8 posities kan staan, zodat we totaal op 16 frequenties uitkomen. Het lijstje dat gecontroleerd kan worden is: De voeding Omdat het lastig is die codes aan te bieden heb ik daar een testroutine voor geschreven die elke frequentie, eerst de eerste en dan de tweede bovenstaande kolom. gedurende 6 seconde opwekt. Dat doet hij alleen tijdens calibratieperiode. Zodra je na het inschakelen van de netspanning een bedieningsknop gebruikt, gaat hij daaruit. Tijdens de calibratie kun je de displayscope instellen en indien gewenst de frequenties dus controleren met een teller op de onderste (DUT) connector op het frontpaneel. Dat moet na de bouw eenmalig zeker gebeuren, om te controleren of de DDS goed gesoldeerd is en de Elektuurdoos goed werkt. Ik heb (fig 2) een trafootje P310 van Amroh gebruikt. Dat is 9 volt bij 0,5 ampere bij wisselstroombelasting en primair 220. Je mag hem zelfs continu belasten met 0,8A maar dan moet je genoegen nemen met 8 volt uitgangswisselspanning. Inmiddels De verzwakker De waarde van de verzwakker geldt in dBm als de uitgang is afgesloten met 50 ohm. Bij elke wijziging van de verzwakking op de display, wordt die als binair getal opgeslagen in de variabele 'atten' in SRAM. Daarmee kan bewaakt worden of de verzwakking niet buiten het toegelaten bereik komt. Tevens wordt bij wijziging van de verzwakking met de actuator de bijbehorende waarde berekend die in de versterker moet worden geladen, die staat in att_reg. Omdat de signaalspanning afneemt met toenemende frequentie is het frequentiegebied van 0 tot 72 MHz 16 Iedereen kan zijn voeding anders maken uit beschikbare onderdelen, daarvoor is het van belang het verbruik van de schakeling te weten 300 mA inclusief de displayverlichting en de Elektuurdoos.. hebben ze de netspanning sluipend als een dief in de nacht verhoogd, wat al heel wat gloeilampen heeft gekost want 5% spanningsverhoging op een gloeilamp verkort de levensduur met 50%, maar ook trafo's kunnen er vaak slecht tegen. Met een kleine serieweerstand of een stroomprobe en een scope is dat te meten, je ziet dan primair geen nullaststroom die een beetje piekt maar een beetje heel erg veel piekt in de toppen. Het ijzer komt dan in de verzadiging. Die trafo's worden van nullast al opvallend warm als ze een paar uur instaan. De ijzerverliezen nemen toe en de nullastkoperverliezen ook onevenredig veel door de gepiekte nullaststroom. Daar is wat aan te doen als je een flinke 230V/10V volt trafo, pakweg 10V bij 10 ampere op het net aansluit en de 10 volt secundaire in serie zet met de voeding van je stopcontactplanken die je 220V apparatuur voeden in je shack. Wel op de wikkelrichting letten, want je hebt 50% kans dat je anders de netspanning 10 volt verhoogt in plaats van verlaagt. Nameten dus. Software Als voorbeeld van de software is een flowchart getekend in fig 7 die de werking van de meetsweeproutine laat zien. Dergelijke flowcharts kunnen worden gebruikt om de software naar een willekeurige andere processor over te zetten. Ze bepalen namelijk de werking zonder zich te uiten over de instructieset van de controller. Ruim 2000 regels assembly zijn ingetikt en debugged om tot een goed werkend geheel te komen. Of het nu bugfree is weet ik niet, Eigenlijk weet ik het wel, want het adagium van informatici is "There is no such program as a bugfree program" en die geloof ik op hun woord. Goed, die 9 V trafo in de wobbeler wordt belast met een brug, en daar staat een elco op. Die brug trekt dus alleen maar stroom als de trafo spanning hoger is dan de elcospanning plus twee doorlaatspanningen van silicium diodes, Een dergelijke piekvormige stroom heeft een veel ongunstiger verhouding effectieve waarde/gemiddelde waarde dan een sinusvormige belasting, daarom wordt de trafo met een brug erop bij slechts ongeveer 65% gelijkstroom belasting van de toegelaten wisselstroombelasting al even heet. Kortom dat trafootje kun je ongeveer belasten met 65% van 0,8 A en dat is 0,5 A wat ze er voor de zekerheid ook opgedrukt hebben. De uitgangsspanning blijkt bij volle belasting iets te krap voor de 9 volt regulator die de versterker AD8621 van spanning voorziet, er verschijn brom op de uitgang van de 9V regulator voor dat IC in het Elektuurblikje. Twee oplossingen: een grotere elco dan de gebruikte 1000 uF en wat wikkelingen bijleggen op de trafosecundaire, die daar ruimte voor biedt. Een proefwinding levert met de scope erop 200 mV top top, dus 14 windingen per volt. Het middenbeen van de trafo is 2,56 vierkante cm, zodat met de vuistregel 50/O 19 windingen per volt verwacht zou worden. Krap ontworpen dus, maar ja de merknaam moest ook betaald worden, of het kernblik is kwalitatief heel erg goed voor die tijd. Maar een tweetal elco's erbijgezet, zodat aan de in het schema vermelde waarde is gekomen. Calibratie Zet de netspanning in. Er komt dan een V met horizontale poten in de toppen van de V op het scherm te staan (zie foto 4) van de scope in XY mode. Regel 17 dan de display zo af dat de V vertikaal over 9 divisions staat en horizontaal over 10 divisions. Dan klopt de dB en de frequentieschaal op de scope met de LCDisplay waarden. die tijd op zijn input staat is niet interessant, mits de klokken maar laag blijven. Dat nu blijkt in deze schakeling niet goed te werken. Port A stoort de DDS. Om na te gaan of het wellicht de klokken waren die naalden oppikken heb ik de interrupt de klokken wel maar port A niet laten bedienen, dus niet de X en Y latch inhoud wijzigen. Dan gaat het goed. Vervolgens de interrupt helemaal de port en de klokken niet laten bedienen, en in de 6 seconde vertragingslus van de testroutine port A op en neer getrokken. De klokken dus niet. Ook dan gaat het Draai aan de actuator. De V verdwijnt dan, en het apparaat werkt. We willen nu 0 dBm langs de bovenkant en -90 dBm langs de onderkant van het scherm. Dat is te regelen met de trim potmeters van de ADC. De Vref/2 regeling regelt de bovenzijde en de VIN(-) potmeter regelt de onderzijde. Die twee regelingen beinvloeden elkaar ietwat. Als de lijn op de XY display niet meer verschuift met draaien heb je tever gedraaid. Door de DUT signaaloutput van de signaalgenerator direct te verbinden via een coaxkabeltje met de de analoge input van de logversterker, kunnen we met de dB regeling van de actuator de meetlijn in stappen van 10 dB omlaag brengen. Dat is tevens een controle op het aantal dB per schaaldeel. Eventueel bijregelen met twee genoemde potmeters. Moeilijkheden Tot zover was het eigenlijk een realisatie van ideeen zonder veel problemen. De problemen ontstonden bij aansturing van de DDS via de bandkabel uit portA. De frequentietest liet zien dat die niet geheel stabiel was, en de noodzakelijke opname van de reset in de sweeproutine gaf al aan dat er eigenlijk wat aan de hand was. fout. De bedrading van de klokken verlegd; in de bandkabel de 3 buitenste draden waar de klokken over lopen, gescheiden van de port A draden. Tot slot een nieuwe korte bandkabel gemaakt met ferriet platte ringen eromheen. Geen verbetering. Wordt port A niet bediend dan is er geen probleem. Een pen van port A op en neer halen geeft ook geen probleem. Een nibble wel, zowel het lage als het hoge. Na dit alles geprobeerd te hebben besloten dan maar een latch tussen te voegen, zodat diens output rust geeft op de DDS buiten zijn laadtijd. Dat is een Het bleek dat als de daemon interrupt werkt, die port A ook gebruikt dat dat de DDS beinvloedt. Buiten zijn laadtijd want dan staat de interrupt enable af. De DDS heeft via de bandkabel die signalen op zijn dak, maar volgens de specs heeft hij een 40 bit latch, die je byte voor byte in kan klokken en dan vervolgens doorgeven aan de core van de DDS. Wat buiten 18 majeure operatie, die bovendien wegens gebrek aan pennen de jumperpen opeist als latch klok. De wijziging van het schema staat in fig 9. Omdat het toch gewenst blijft te kunnen kiezen voor demping met en zonder relais in de Elektuurdoos, is het nu zo dat na inschakelen van het apparaat, en dus in de calibratiefase, het afhangt van of de actuatorknop links of rechts omgedraaid wordt om de calibratie te beeindigen, dat set of reset een vlag in SRAM die bepaalt of de dempingrelais al of niet bestuurd worden. Tot slot is de uitgangsspanning beperkt op 0 dBM, het is een schaalwijziging, waardoor de maximale instelbare demping 16 dB minder diep is. De gecorrigeerde demping verzorgt een vlak niveau over het gehele meetbereik. Mocht er behoefte bestaan aan meer vermogen, dan kan een externe versterker worden opgenomen. Funkamateur heeft een servicebureau dat verkoopt MMIC chips, die dat bewerkstelligen 50 ohm in- en uitgangsimpedantie ettelijke honderden MHz breed. Test Ik heb aan het apparaat ter demonstratie een kristalfilter gehangen dat ik in Bentheim voor een euro op de vlooienmarkt kocht. Het meldt EP4032.4842 KVG 21.4 MHz 2,5 kHz. (zie het resultaat op foto 5) Op plak- etiketten druk ik de titels en benamingen af Daarbij is het filter gevoed uit de 50 ohm uitgang van de signaalgenerator en aan de uitgang hangt een ingang van Smeerpijp-11 die op de log converter is aangesloten. Mijn scope is door een defecte regeling niet horizontaal qua breedte regelbaar, maar de volle groene lijnbreedte op de display is hier 10 kHz (1kHz/div), de centraalfrequentie 21,4 MHz (foto 4) De meetsweeptijd 2 seconde. Per meting is er dus een frequentieverschil van 10 kHz/239, ruwweg 40 Hz, aan de hand van dat gegeven en de spreiding van de meetpuntjes op de flanken kun je dus de steilheid van het filter nauwkeurig beoordelen. Metaalwerk (fig 12), knip die uit en plak ze op de kast en de print, zodat zichtbaar is wat voor instrument het is en eventuele toekomstige reparaties vereenvoudigd worden. Aan de hand van de beschikbare onderdelen teken ik boorplannen, (fig 10 en fig 11) op ware grootte met een tekenprogramma (SPlan) druk die af, snijd ze uit, positioneer ze op de te bewerken kast, neem de boorpunten over en kras de zaaglijnen in. Nabeschouwing 19 Het was een hele klus dit apparaat te bouwen, nabouw kan echter met een dag werk gebeuren, zoals bij de FS30-GPS is ervaren waarvan ik drie exemplaren heb gebouwd. Een kant en klaar geprogrammeerd controller IC kunt u voor 16 euro inclusief verzend- en verpakkingskosten aanschaffen, neem daartoe contact op via email met [email protected], waarbij u mijncall uiteraard moet vervangen door PA0WV 20
© Copyright 2025 ExpyDoc