Frequentiegenerator ontwerpen

Pagina: 1
Acties:
  • 427 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een project heb ik nood aan een schakeling die als uitgang een sinusvormige spanning met vooraf instelbare frequentie geeft. In principe hoeft de frequentie niet regelbaar te zijn tijdens gebruik, maar een voordeel zou wel zijn moest het achteraf nog mogelijk zijn om de frequentie te wijzigen, zonder hiervoor bepaalde componenten uit de schakeling te moeten verwijderen om bv. via PC te herprogrammeren.
(Ik denk bv. aan een methode zoals vaak gebruikt bij in-amps, waar de gain geregeld wordt door 1 uitwendige weerstand)

Voor deze schakeling heb ik beschikking over +15V en -15V DC, 15V AC 50Hz en natuurlijk 230V 50Hz AC. Een extra pluspunt zou dus zijn moest die schakeling hier mee te voeden zijn (maar dit is geen vereiste, dat valt altijd wel op te lossen).

Nu heb ik natuurlijk zelf ook al wat opgezocht. Een van de zaken die ik gevonden heb, is dat Direct Digital Synthesis (DSS), steeds vaker gebruikt wordt en zijn pluspunten heeft. Maar...die componenten kosten rond de 15 euro. Op zich niet gek veel geld, maar mijn budget is beperkt, en deze schakeling is maar een heel klein deel van het volledige project. Ik zou dus graag wat alternatieven kennen hiervoor.

Volgens sommige mensen die ik gesproken heb, is een eenvoudige schakeling met een oscillator een mogelijkheid. Een andere persoon beweert ooit een schakeling gezien te hebben op basis van een MAX232 die een signaal kon genereren (dit zou ooit in Elektuur gestaan hebben zelf). Over dit laatste heb ik wel mijn twijfels, omdat de MAX232 volgens mij louter dient voor communicatie met de COM-poort van PC's e.d.

Graag jullie tips/schakelingen om frequentie-generatoren te maken, binnen een beperkt budget.

Acties:
  • 0 Henk 'm!

  • HammerT
  • Registratie: April 2004
  • Laatst online: 05-08 21:40
Colpitts
Hartley
Clapp
Multivibrator

Verder hangt het er natuurlijk vanaf wat je er mee wilt bereiken en waar hij aan moet voldoen.

hoop dat je er wat aan hebt :)

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
DDS is gewoon makkelijkste methode als je wilt dat hij ook precies doet waarop je hem instelt. Als dat niet zo belangrijk is dan kan je één van de vele normale oscillatoren gebruiken, zie hammerts post.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is uiteindelijk de bedoeling om met deze spanning een brug van Wheatstone te voeden, die opgebouwd is uit rekstrookjes. De uitgangsspanning van de brug wordt dan met instrumentatieversterkers versterker en nadien gedemoduleerd om tenslotte ingelezen te worden op PC.

Aangezien het signaal versterkt moet worden, is het dus redelijk belangrijk dat de sinus nauwkeurig gevormd wordt. Anders gaan er te veel harmonischen in de trilling aanwezig zijn, die een storend effect zouden hebben op de versterking lijkt mij.

De exactheid van de frequentie is niet van primordiaal belang (maar wel mooi meegenomen).

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Een mooi filtertje erachter kan natuurlijk ook nog helpen. Een DDS is digitaal, en zal dus altijd hogere harmonische erin hebben. Hoeveel het is ligt aan de DDS.

Uit multivibrator komen blokgolven, die andere moeten iets geven wat op een sinus lijkt

Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 03-08 20:43

Gwannoes

Solderen moet je leren

furby-killer schreef op donderdag 22 maart 2007 @ 22:17:
.... Een DDS is digitaal, en zal dus altijd hogere harmonische erin hebben. Hoeveel het is ligt aan de DDS.

...
Kolder!!!! Digitaal kan net zo veel/weinig harmonischen hebben als analoog. Je kunt een D/A-converter hebben die -100dB THD geeft bij 10MHz, maar je analoge opamps kunnen dat vaak niet net zo schoon versterken.

[ Voor 41% gewijzigd door Gwannoes op 22-03-2007 22:23 ]

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu wat verder zitten lezen over DDS. Het lijkt mij dat dit de meest getrouwe sinus zal geven. Uit de simulaties op de website van Analog Devices blijkt dat de harmonischen ver verwijdert liggen van de gevraagde frequentie én heel wat lager zijn in amplitude. Met een eenvoudig RC-filter kunnen de storende harmonischen dus waarschijnlijk wel weggefilterd worden.

Wat ik mij nu wel afvroeg bij al dat lezen:
Hoe complex is het om een DDS in een schakeling op te nemen en om hem te programmeren. Ik ben op dit ogenblik aan het kijken naar de AD9852, maar bij de datasheets vind ik geen voorbeeldschakelingen e.d.Ondertussen heeft die component wel 80 pins dus. Ook over het programmeren van de component vind ik weinig info in de datasheets (een elektronicus weet waarschijnlijk zelf wel hoe hij zo'n zaken moet doen, maar ik ben ntl geen elektronicus). Tenslotte kan ik ook nergens terugvinden met wat voor spanningen die device gevoed moet worden...

Kan iemand wat verduidelijking brengen, zodat ik kan inschatten of deze component bruikbaar is voor mij of niet?

Acties:
  • 0 Henk 'm!

Verwijderd

"Beperkt budget" is een nogal rekbaar begrip. Verder is het misschien handig om even te melden binnen welke grenzen de frequentie instelbaar moet zijn. Maar misschien is dit iets voor je:
Aangezien je blijkbaar een PC tot je beschikking hebt, waarom de PC dan niet het signaal laten leveren? Ik kwam dit tegen. Daar is wellicht ook een zelfbouw versie van te vinden.

edit: Sorry TS niet goed gelezen dus dat apparaat zal wel te duur zijn maar d'r is wellicht een simpele zelfbouw oplossing om het signaal door je PC te laten genereren.

[ Voor 14% gewijzigd door Verwijderd op 22-03-2007 23:13 ]


Acties:
  • 0 Henk 'm!

  • DJSmiley
  • Registratie: Mei 2000
  • Laatst online: 13:12
HammerT schreef op donderdag 22 maart 2007 @ 21:10:
Multivibrator

Verder hangt het er natuurlijk vanaf wat je er mee wilt bereiken en waar hij aan moet voldoen.

hoop dat je er wat aan hebt :)
De welbekende flipflop geeft standaard een blokgolf, TS zoekt een sinusgenerator.

Je zou eventueel ook kunnen kijken naar een simpele all-in-one chip.
Intersil heeft een leuke, ICL8038. In de datasheet hiervan staan kant- en klare voorbeelden, incl een 20Hz - 20kHz generator.
http://www.futurlec.com/Datasheet/Linear/8038CCPD.pdf
Ik lees alleen nergens welk frequentiebereik je wilt hebben.
Ook met de voeding kom je uit, dat ding heeft +/- 10V nodig. Prima uit je +/-15V te halen.

Ding is ook betaalbaar, nog geen $4 (Futurlec)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De frequentie ligt nog niet vast, maar zal minimum 500Hz zijn, en als het kan nog veel hoger (5Khz of meer). De demodulator die ik ga gebruiken (AD630) werkt van DC tot 2MHz. Om er zeker van te zijn dat de demodulator goed kan volgen, ligt de absolute bovengrens dus op 1MHz. Het probleem zit hem echter in de in-amp (AD8221). Door zijn CMRR op gain=1000 zou ik het signaal zeker begrenzen tot 5-10kHz.

Aangezien het grootste deel van mijn schakeling opgebouwd is uit Analog Devices componenten (lang leve de gratis samples), zou een DDS dus ideaal zijn. Ik ga vandaag eens op zoek gaan of ik wat meer vind over de manier van schakelen van die DDS'en want dat lijkt mij op dit ogenblik nog te complex.

Oh ja, we hebben tijdens het opbouwen beschikking over PC's e.d., maar het is de bedoeling om uiteindelijk een versterkerverschakeling te bouwen die niet door de PC moet aangestuurd worden. Het eindresultaat moet dus enkel een PC gebruiken om zijn gegevens naartoe te sturen (dat gaat waarschijnlijk gebeuren met een NI DAQPad-6016 of vergelijkbaar), en niet meer dan dat.

[ Voor 30% gewijzigd door Verwijderd op 23-03-2007 09:59 ]


Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 03-08 20:43

Gwannoes

Solderen moet je leren

Verwijderd schreef op vrijdag 23 maart 2007 @ 09:26:
De frequentie ligt nog niet vast, maar zal minimum 500Hz zijn, en als het kan nog veel hoger (5Khz of meer). De demodulator die ik ga gebruiken (AD630) werkt van DC tot 2MHz. Om er zeker van te zijn dat de demodulator goed kan volgen, ligt de absolute bovengrens dus op 1MHz. Het probleem zit hem echter in de in-amp (AD8221). Door zijn CMRR op gain=1000 zou ik het signaal zeker begrenzen tot 5-10kHz.

Aangezien het grootste deel van mijn schakeling opgebouwd is uit Analog Devices componenten (lang leve de gratis samples), zou een DDS dus ideaal zijn. Ik ga vandaag eens op zoek gaan of ik wat meer vind over de manier van schakelen van die DDS'en want dat lijkt mij op dit ogenblik nog te complex.

Oh ja, we hebben tijdens het opbouwen beschikking over PC's e.d., maar het is de bedoeling om uiteindelijk een versterkerverschakeling te bouwen die niet door de PC moet aangestuurd worden. Het eindresultaat moet dus enkel een PC gebruiken om zijn gegevens naartoe te sturen (dat gaat waarschijnlijk gebeuren met een NI DAQPad-6016 of vergelijkbaar), en niet meer dan dat.
Om die DDS aan te sturen zul je minstens een microcontroller moeten hebben. Je moet namelijk diverse registers beschrijven om de frequentie etc. in te stellen. Op zich is het verder niet zo heel moeilijk.

Nog een tipje: Je krijgt het minste mengproducten in het spectrum als je de sample-frequentie flink hoger maakt dan de signaalfrequentie. Bovendien kun je dan deze overige spurious signalen makkelijker filteren. Maar als het goed is geeft de Analog Devices simulator dat ook wel aan.

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gwannoes schreef op vrijdag 23 maart 2007 @ 13:16:
[...]

Om die DDS aan te sturen zul je minstens een microcontroller moeten hebben. Je moet namelijk diverse registers beschrijven om de frequentie etc. in te stellen. Op zich is het verder niet zo heel moeilijk.

Nog een tipje: Je krijgt het minste mengproducten in het spectrum als je de sample-frequentie flink hoger maakt dan de signaalfrequentie. Bovendien kun je dan deze overige spurious signalen makkelijker filteren. Maar als het goed is geeft de Analog Devices simulator dat ook wel aan.
Kan je dit wat verder uitleggen a.u.b.? Ik heb de hele dag allerlei PDF's zitten lezen, maar raak er echt niet wijs uit. Ik hoopte dat ik de DDS kon voorprogrammeren via de PC bijvoorbeeld, en dat die daarna op eigen houtje zijn werk zou doen.

Kan je misschien een link geven o.i.d. naar een eenvoudige schakeling waar een DDS gebruikt wordt om een sinusvormig signaal te genereren?

Ik begin ook als maar meer het gevoel te krijgen dat een DDS té complex gaat worden. Als het niet zonder PIC kan, dan betekend dat, dat we die PIC ook nog eens moeten voorprogrammeren om te doen wat nodig is...dus nog een extra niveau complexiteit.

Hoe goed zou een kristal-oscillator kunnen voldoen aan onze verwachtingen? (bv deze schakeling)

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Gwannoes schreef op donderdag 22 maart 2007 @ 22:22:
[...]

Kolder!!!! Digitaal kan net zo veel/weinig harmonischen hebben als analoog. Je kunt een D/A-converter hebben die -100dB THD geeft bij 10MHz, maar je analoge opamps kunnen dat vaak niet net zo schoon versterken.
TS heeft redelijk duidelijk aangegeven dat het budget beperkt is. En als je de goedkoopste DDS pakt die een sinus kan maken, dan heb ik mijn twijfels dat hij geen last van harmonische zal hebben. Probleem is dat andere schakelingen ook last van harmonischen zullen hebben.


Een kristal oscillator schijnt een redelijke sinus te maken, maar enige keer dat ik er 1 gebruikt heb leek het nog geen eens op een sinus wat eruit kwam, was wel andere schakeling dan die van circuits-online (en toen ging het mij alleen om de frequentie, en die was wel goed, dus maakte ik me er niet echt druk om).
Bedenk wel dat je de frequentie nauwlijks kan veranderen zonder ander kristal

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
furby-killer schreef op vrijdag 23 maart 2007 @ 19:23:
[...]


TS heeft redelijk duidelijk aangegeven dat het budget beperkt is. En als je de goedkoopste DDS pakt die een sinus kan maken, dan heb ik mijn twijfels dat hij geen last van harmonische zal hebben. Probleem is dat andere schakelingen ook last van harmonischen zullen hebben.


Een kristal oscillator schijnt een redelijke sinus te maken, maar enige keer dat ik er 1 gebruikt heb leek het nog geen eens op een sinus wat eruit kwam, was wel andere schakeling dan die van circuits-online (en toen ging het mij alleen om de frequentie, en die was wel goed, dus maakte ik me er niet echt druk om).
Bedenk wel dat je de frequentie nauwlijks kan veranderen zonder ander kristal
Ja, een DDS is duur...maar van heel wat Analog Devices DDS'en zijn gratis samples. De AD9951 bv. heeft gratis samples en die is volgens mij meer dan goed genoeg. Het probleem is dat ik nergens een uitleg kan vinden op mijn niveau van hoe ik zoiets in een schakeling moet verwerken.

Acties:
  • 0 Henk 'm!

  • Mr_gadget
  • Registratie: Juni 2004
  • Nu online

Mr_gadget

C8H10N4O2 powered

Waarom de rekstrookjes met een wisselspanning voeden?

Ik volg nu zelf een project aan de TU Delft waarvoor ik ook een opstelling met rekstrookjes moest maken. Dat was wel met standaardbouw blokjes maar toch.

We gebruiken daarvoor een EP2 sensor waar een brug van wheatstone inzit, deze voeden we met 12V DC. Uitgangssignaal in een verschilversterker met een op-amp en dat door de AD converter van de PC.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mr_gadget schreef op vrijdag 23 maart 2007 @ 20:04:
Waarom de rekstrookjes met een wisselspanning voeden?

Ik volg nu zelf een project aan de TU Delft waarvoor ik ook een opstelling met rekstrookjes moest maken. Dat was wel met standaardbouw blokjes maar toch.

We gebruiken daarvoor een EP2 sensor waar een brug van wheatstone inzit, deze voeden we met 12V DC. Uitgangssignaal in een verschilversterker met een op-amp en dat door de AD converter van de PC.
Omdat volgens de handleidingen die ik gelezen heb, een AC signaal beter zou werken om ruis weg te werken in het signaal, dan wanneer DC gebruikt wordt.

Acties:
  • 0 Henk 'm!

  • Mr_gadget
  • Registratie: Juni 2004
  • Nu online

Mr_gadget

C8H10N4O2 powered

De brug van wheatstone filtert al storingen weg door temperatuur ed. De verschilversterker zorgt voor het wegfilteren van ruis. Maar het ligt natuurlijk aan de gebruikte sensor en de grootte van de belastingen..

[ Voor 8% gewijzigd door Mr_gadget op 23-03-2007 20:35 ]


Acties:
  • 0 Henk 'm!

  • HammerT
  • Registratie: April 2004
  • Laatst online: 05-08 21:40
Ik heb in de toepassingen die ik heb gemaakt met rekstrookjes nog nooit een frequentie gebruikt hoor :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit project is een soort onderzoeksproject voor mijn studies. Het is dus sowieso een meerwaarde als ik een vergelijking kan maken tussen voeden met DC of met AC. Bovendien gebruikt alle professionele apparatuur die ik al gezien heb voor rekstrookjes ook AC.

k weet natuurlijk niet wat voor projecten jullie al met rekstrookjes gedaan hebben. In mijn project gaat het wel zeer specifiek over minimale veranderingen. Misschien komt daar dan het nut van AC meer naar voor?

Nu heb ik vanavond eindelijk een degelijke link gevonden over DDS (http://hem.passagen.se/communication/dds.html). Hier snap ik ongeveer 90% van. Maar mijn probleem zit nog altijd in het instellen van de registers (frequency word en zo). Los van het feit dat ik de manier van programmeren nog maar nauwelijks begrijp, snap ik de nood niet aan PIC's e.d. Is het niet zo dat eens je de frequentie erin gestoken hebt, die erin blijft? Dan heb je toch geen PIC meer nodig? Mij lijkt het dat die enkel dient om nieuwe waarden naar de DDS te schrijven...Iemand verlichting?

Acties:
  • 0 Henk 'm!

  • HammerT
  • Registratie: April 2004
  • Laatst online: 05-08 21:40
Verwijderd schreef op vrijdag 23 maart 2007 @ 21:41:
k weet natuurlijk niet wat voor projecten jullie al met rekstrookjes gedaan hebben. In mijn project gaat het wel zeer specifiek over minimale veranderingen. Misschien komt daar dan het nut van AC meer naar voor?
Het gaat meestal over minimale veranderingen met rekstrookjes, maar heb je misschien een bron waarom of wat het voordeel is van frequenties gebruiken i.c.m. rekstrookjes?

Over DDS weet ik niets dus kan je daar verder niet mee helpen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
HammerT schreef op vrijdag 23 maart 2007 @ 23:28:
[...]

Het gaat meestal over minimale veranderingen met rekstrookjes, maar heb je misschien een bron waarom of wat het voordeel is van frequenties gebruiken i.c.m. rekstrookjes?

Over DDS weet ik niets dus kan je daar verder niet mee helpen
De bron waar dit meest expliciet in staat is de cursus Industriele Elektrische Metingen die bij ons aan UGent gegeven wordt. Deze cursus is enkel via een VPN verbinding te bekijken dus ik kan je de link niet sturen. De specifieke reden die daarin aangehaald wordt is om foutspanning door thermokoppels (die ontstaan tussen gesoldeerde onderdelen) te elimineren. Bij kleine brugspanningen zou die foutspanning belangrijk worden en de metingen verstoren. Door een AC-signaal te gebruiken zou die foutspanning geëlimineerd worden

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
DDS gebruikt registers, zodra spanning eraf is zijn die dus weer leeg. Theoretisch kan je hem wel aan je computer knopen en een programma schrijven om de juiste waarden in registers te stoppen, maar ik denk niet dat dat makkelijker is dan een uC te gebruiken, en je moet elke keer dat je hem aan zet hem weer aan de computer hangen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
furby-killer schreef op zaterdag 24 maart 2007 @ 14:04:
DDS gebruikt registers, zodra spanning eraf is zijn die dus weer leeg. Theoretisch kan je hem wel aan je computer knopen en een programma schrijven om de juiste waarden in registers te stoppen, maar ik denk niet dat dat makkelijker is dan een uC te gebruiken, en je moet elke keer dat je hem aan zet hem weer aan de computer hangen
Dus eigenlijk werkt de uC gewoon als een geheugenmodule voor de DDS?
Hij stuurt dus gewoon voorgeprogrammeerde gegevens naar de DDS zodat die na een power-down toch de goeie frequentie produceert?

(En dan kan je de uC dus zo uitgebreid programmeren als je wil om andere frequenties mogelijk te maken [door bv interactie met de PC]?)

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Ja daar komt het wel op neer. Maar dat kan je ook zo uitgebreid maken als je zelf wilt.

Je kan ook een num pad aan de uc koppelen, en een lcd scherm en dan kan je leuk intikken wat je wilt en zie je alle info op het lcd scherm. Je kan alles maken tussen dat, en de uC als geheugen gebruiken. Voor jouw doel kan het handig zijn om hem zo te maken dat je uit frequenties kan kiezen door op een knop te drukken (schakelaar om tussen frequentie A en B te kiezen bijv), aan pc koppelen kan natuurlijk ook, maar ik denk niet dat je verder dan dat wil gaan.

[ Voor 3% gewijzigd door Sissors op 24-03-2007 17:08 ]


Acties:
  • 0 Henk 'm!

  • The Bad Seed
  • Registratie: November 2001
  • Laatst online: 13-08 23:53

The Bad Seed

Chaotic since 1983

Als de oplossing met een DDS te complex lijkt kan je ook eens kijken naar de MAX038 , van maxim-ic.
Dit ic-tje kan onder andere mooie sinusen genereren van minder dan een Hz tot tientallen MHz.
Deze wordt niet meer gemaakt, maar ik heb een tijd geleden een paar sample chips aangevraagd voor een projectje dat nooit verder van de grond is gekomen. Als je denkt deze te kunnen gebruiken mag je die gerust hebben.

Hail to the guardians of the watchtowers of the north


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu de voorbije 24 uur weer heel wat bij gelezen over programmeren van uC's en de DDS, en vroeg mij af of ik het nu beet heb. Ik zou willen werken met een PIC16F84 en een AD9852. Ik zou serieel programmeren voor de eenvoud.

Eerst omtrent het instellen van de correcte frequentie:
Uit de datasheet van de DDS haal ik dat de default MSB-first is. Bovendien lees ik daar ook dat je eerst een instructiebyte moet sturen. Als ik naar FREQ1 wil schrijven (de eerste van de 2 registers dus), moet ik instructie-bit 2 als enige hoog plaatsen. Dus stuur ik in volgorde
code:
1
0100 0000
naar de DDS. Waarbij het tweede signaal dat naar de DDS gaat dus al de 1 is

Stel dat ik een kristal van 10MHz heb, en ik wil een frequentie van 5kHz instellen, dan bereken ik een 5000*2^48/10E6 = 140737488400. Als ik dat omzet naar HEX is dat 20C49BA610. Aangezien de default MSB-first is gok ik dus dat ik volgende bytes moet doorsturen:
code:
1
2
3
4
5
6
byte 1: 00
byte 2: 20
byte 3: C4
byte 4: 9B
byte 5: A6
byte 6: 10

Waarbij ik net zoals bij de instructie-bit de bit "van rechts naar links" doorstuur. Byte 2 zou ik dus doorsturen als volgt: 0000 0100.

Dan nog omtrent het effectief doorsturen tussen uC en DDS:
Uit de datasheet begrijp ik dat ik pin 21 SCLK telkens moet pulsen als ik een nieuwe bit naar de DDS wil sturen. Ik moet dus eerst de bit instellen op de uitgangspin van de uC en daarna de pin die verbonden is met SCLK hoog maken en terug laag. Hierna zou ik dan terug verder kunnen met de volgende bit.
Ik denk ook te begrijpen dat ik pin 18 op de DDS moet gebruiken om data te schrijven.
Wat ik niet zo duidelijk vind is hoe ik de data effectief in het register moet laten inladen. Klopt het dat ik hiervoor (nadat alle bytes verzonden zijn), de IO Reset (pin 17) moet triggeren?

Als dat allemaal klopt dan zou ik héél blij zijn. Kan iemand mij corrigeren indien het fout is? (Ik weet dat het veel gevraagd is, maar mijn tijd is heel krap om dit te realiseren, als ik zelf nog eerst een week moet zitten prutsen met experimenteren met de DDS kan ik beter al direct opgeven, want daar heb ik de tijd niet voor)

Dan rest mij nog enkele meer eenvoudige vragen:
Wat moet ik in de programmatie van de uC aanvangen eens ik de frequentie ingesteld heb? Moet ik gewoon een oneindige loop doen die elke keer opnieuw dezelfde informatie schrijft (lijkt mij nogal gek), of kan ik de uC gewoon volledig stopzetten en nooit niets meer naar de DDS sturen (tot de stroom uitvalt en de uC reset natuurlijk)?
Tenslotte, de DDS die ik wil gebruiken is van pins voorzien aan elke zijde. Zijn er oplossingen om zoiets op een breadboard te plaatsen om te testen? Want als ik dat zo op een breadboard plaats krijg ik toch gewoon kortsluitingen?

Degen die de moeite doet om dit te lezen: bedankt! DDS'en zijn op dit moment een beetje out of my league, en zonder jullie hulp zou ik niet staan waar ik nu al geraakt ben.

Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 03-08 20:43

Gwannoes

Solderen moet je leren

Verwijderd schreef op zondag 25 maart 2007 @ 15:47:
Ik heb nu de voorbije 24 uur weer heel wat bij gelezen over programmeren van uC's en de DDS, en vroeg mij af of ik het nu beet heb. Ik zou willen werken met een PIC16F84 en een AD9852. Ik zou serieel programmeren voor de eenvoud.
Ik vraag me af of dat inderdaad eenvoudiger is. Ik vind serieel in ieder geval vaak lastiger te debuggen, omdat je niet snel even alle lijntjes af kunt met de oscilloscoop of voltmeter om te kijken welke data je schrijft.
Maar het kan zeker wel, en zo gek veel maakt het nu ook weer niet uit.
Eerst omtrent het instellen van de correcte frequentie:
Uit de datasheet van de DDS haal ik dat de default MSB-first is. Bovendien lees ik daar ook dat je eerst een instructiebyte moet sturen. Als ik naar FREQ1 wil schrijven (de eerste van de 2 registers dus), moet ik instructie-bit 2 als enige hoog plaatsen. Dus stuur ik in volgorde
code:
1
0100 0000
naar de DDS. Waarbij het tweede signaal dat naar de DDS gaat dus al de 1 is
Euhm, dat doe je geloof ik net verkeerd om. Instruction byte moet 0xxx0010 zijn, dus de 1 is als een-na-laatste aan de beurt.
Stel dat ik een kristal van 10MHz heb, en ik wil een frequentie van 5kHz instellen, dan bereken ik een 5000*2^48/10E6 = 140737488400. Als ik dat omzet naar HEX is dat 20C49BA610. Aangezien de default MSB-first is gok ik dus dat ik volgende bytes moet doorsturen:
code:
1
2
3
4
5
6
byte 1: 00
byte 2: 20
byte 3: C4
byte 4: 9B
byte 5: A6
byte 6: 10

Waarbij ik net zoals bij de instructie-bit de bit "van rechts naar links" doorstuur. Byte 2 zou ik dus doorsturen als volgt: 0000 0100.
Het rekenwerk van de frequentie heb ik even niet gecontroleerd: kom je vanzelf achter als je het uitprobeert :)
De volgorde van de bytes is wel goed, maar volgens mij doe je de volgorde van de bitjes weer verkeerd.
Dan nog omtrent het effectief doorsturen tussen uC en DDS:
Uit de datasheet begrijp ik dat ik pin 21 SCLK telkens moet pulsen als ik een nieuwe bit naar de DDS wil sturen. Ik moet dus eerst de bit instellen op de uitgangspin van de uC en daarna de pin die verbonden is met SCLK hoog maken en terug laag. Hierna zou ik dan terug verder kunnen met de volgende bit.
klopt
Ik denk ook te begrijpen dat ik pin 18 op de DDS moet gebruiken om data te schrijven.
Ik zou pin 19 (A0/SDIO) gebruiken. Pin 18 is alleen data OUT, en jij wilt data IN de DDS schrijven.
Wat ik niet zo duidelijk vind is hoe ik de data effectief in het register moet laten inladen. Klopt het dat ik hiervoor (nadat alle bytes verzonden zijn), de IO Reset (pin 17) moet triggeren?
Klopt niet helemaal. De DDS lijkt zelf bij te houden hoeveel bytes er komen, en als hij dit ontvangen heeft, neemt hij deze waarde over. Je moet dus ook niet meer klokpulsen geven dan nodig is, anders denkt hij dat de volgende instruction byte er al weer aankomt. Heb je per ongelukt toch iets raars met de communicatie, dan kun je de I/O RESET pin gebruiken, om de communicatie te resetten. (zie ook pag. 36 van de datasheet)

Als je wilt triggeren, kun je pin20 (I/O UD CLK) gebruiken, maar hij kan ook zelf triggeren op zijn "Internal Update Clock". Zie pagina 28 van de datasheet. Nadeel van de interne updateclock is dat je geen data moet schrijven op het moment dat deze updateclock komt. Da's lastig. Ik adviseer je om de internal Update clock te disabelen, en pin 20 te gebruiken voor triggeren.
Als dat allemaal klopt dan zou ik héél blij zijn. Kan iemand mij corrigeren indien het fout is? (Ik weet dat het veel gevraagd is, maar mijn tijd is heel krap om dit te realiseren, als ik zelf nog eerst een week moet zitten prutsen met experimenteren met de DDS kan ik beter al direct opgeven, want daar heb ik de tijd niet voor)

Dan rest mij nog enkele meer eenvoudige vragen:
Wat moet ik in de programmatie van de uC aanvangen eens ik de frequentie ingesteld heb? Moet ik gewoon een oneindige loop doen die elke keer opnieuw dezelfde informatie schrijft (lijkt mij nogal gek), of kan ik de uC gewoon volledig stopzetten en nooit niets meer naar de DDS sturen (tot de stroom uitvalt en de uC reset natuurlijk)?
Nee, gewoon helemaal niets doen. Je zou hem inderdaad volledig stop kunnen zetten als je zeker weet dat de frequentie niet meer veranderd hoeft te worden.
Tenslotte, de DDS die ik wil gebruiken is van pins voorzien aan elke zijde. Zijn er oplossingen om zoiets op een breadboard te plaatsen om te testen? Want als ik dat zo op een breadboard plaats krijg ik toch gewoon kortsluitingen?
Hmm, lastig. Ik zou zeggen: om hem via een breadboard aan te willen sluiten is vragen om moeilijkheden.
Degen die de moeite doet om dit te lezen: bedankt! DDS'en zijn op dit moment een beetje out of my league, en zonder jullie hulp zou ik niet staan waar ik nu al geraakt ben.
Nog wat algemene tips:
  1. Vergeet niet het control register (addres 0x7, zie pag. 33 van de datasheet) in te stellen elke keer dat de DDS op spanning komt! Gewoon even elke bitje langsgaan en kijken welke status hij moet hebben. Voor een uitleg over de bitjes zie pag. 37 van de datasheet,
  2. Ik denk dat je de interne clock multiplier/PLL niet nodig hebt; kost alleen maar stroom, en jij hebt toch niet zo hoge frequenties nodig.
  3. Vergeet niet je uitganssignaal te filteren; dit vermindert vervorming en andere spurious signalen in je spectrum. Mocht je moeite hebben met filters ontwerpen, dan moet je Filter Free zeker eens proberen. Werkt erg eenvoudig, en gratis.

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gwannoes schreef op zondag 25 maart 2007 @ 16:58:
[...]

Ik vraag me af of dat inderdaad eenvoudiger is. Ik vind serieel in ieder geval vaak lastiger te debuggen, omdat je niet snel even alle lijntjes af kunt met de oscilloscoop of voltmeter om te kijken welke data je schrijft.
Maar het kan zeker wel, en zo gek veel maakt het nu ook weer niet uit.
Hmm en hoe verloopt dat parallel programmeren dan net? De voorbeelden die ik op internet vond over hoe uC's geprogrammeerd worden gaan altijd uit van serieel dus dat kan ik iets of wat volgen. Maar parallel is een beetje een mysterie.

Ik heb het proberen begrijpen en zo zou ik het doen:
D0 tot D7 verbinden met een poort van de uC. In de uC zet ik dan meteen de volledige byte over de poorten die verbonden zijn met de DDS (poort naar D0 is de laatste/laagste bit in de byte, dus de meeste rechtse). Op de pinnen A0 tot A5 zet ik de byte voor het register aan te duiden (dus 0000 0010 voor FREQ1). Daarna maak ik pin 21 (WR) hoog, en dan vermoed ik dat de byte die over D0-D7 staat, in het geheugen wordt geladen.
Als dat al klopt is dat al 1 iets, maar wat moet ik dan doet om de volgende byte in datzelfde register te laden? En welke byte moet eerst geladen worden, de MSB of LSB? Never mind deze vraag, de adressen zijn anders voor parallel dan voor serieel.

En betekend dit dan ook dat ik meteen een uC moet hebben met minstens 15 poorten moet hebben (8 voor D0-D7, 6 voor A0-A5, 1 voor WR)? Dan moet ik namelijk al een andere PIC zoeken want de PIC16F84 heeft te weinig poorten dan.

Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 03-08 20:43

Gwannoes

Solderen moet je leren

Verwijderd schreef op zondag 25 maart 2007 @ 20:47:
[...]

Hmm en hoe verloopt dat parallel programmeren dan net? De voorbeelden die ik op internet vond over hoe uC's geprogrammeerd worden gaan altijd uit van serieel dus dat kan ik iets of wat volgen. Maar parallel is een beetje een mysterie.
Ik vermoed dat het dan gaat over het daadwerkelijk PROGRAMMEREN van een uC, dus de programmacode in een non-volatile geheugen schrijven. Dat gaat inderdaad meestal serieel.
Met programmeren van de DDS bedoelen we eigenlijk gewoon een register beschrijven.
Ik heb het proberen begrijpen en zo zou ik het doen:
D0 tot D7 verbinden met een poort van de uC. In de uC zet ik dan meteen de volledige byte over de poorten die verbonden zijn met de DDS (poort naar D0 is de laatste/laagste bit in de byte, dus de meeste rechtse). Op de pinnen A0 tot A5 zet ik de byte voor het register aan te duiden (dus 0000 0010 voor FREQ1). Daarna maak ik pin 21 (WR) hoog, en dan vermoed ik dat de byte die over D0-D7 staat, in het geheugen wordt geladen.
Als dat al klopt is dat al 1 iets, maar wat moet ik dan doet om de volgende byte in datzelfde register te laden? En welke byte moet eerst geladen worden, de MSB of LSB? Never mind deze vraag, de adressen zijn anders voor parallel dan voor serieel.

En betekend dit dan ook dat ik meteen een uC moet hebben met minstens 15 poorten moet hebben (8 voor D0-D7, 6 voor A0-A5, 1 voor WR)? Dan moet ik namelijk al een andere PIC zoeken want de PIC16F84 heeft te weinig poorten dan.
Volledig juist!
Zie voor de volgorde van signalen ook pag. 34 van de datasheet; daar staat een tijd-volgorde-diagram voor het lezen en schrijven van een register in de DDS.
Je hebt inderdaad dan een PIC nodig met wat meer pinnen, maar ik denk dat je het dan wel veel sneller werkend hebt!

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hier ben ik weer met een vraag :|

Ik was vandaag de definitieve schema's aan het uittekenen zodat ik die nog een laatste keer kon laten goedkeuren door begeleiders, om dan alles te bestellen. Maar nu stoot ik op een probleem omtrent de PIC.

Ik zou dus graag parallel programmeren, en dus heb ik minstens een PIC nodig met 20 pins (8 voor D0-D7, 6 voor A0-A5, 1 voor WR = 15 I/O pins + VDD + VSS + 2x clock = 19 pins). Nu wou ik de PIC16F628A gebruiken (28-pin QFN variant), maar daar kan ik geen eenvoudige schakelschema's voor vinden om hem te programmeren (voorgefabriceerde programmers zijn waarschijnlijk te duur).

Kent iemand van jullie dus ofwel:
  • Een schakelschema (met niet té veel onderdelen) om de PIC16F628A te programmeren
  • Een PIC met minstens 20 pins, waarvan eenvoudige programmeerschema's bestaan.

Acties:
  • 0 Henk 'm!

  • DuDePrOdUcTiOnS
  • Registratie: Augustus 2001
  • Laatst online: 10-08 13:50
Gewoon een standaard JDM programmer maken, de 3 benodigde pinnen voor het programmeren (VPP, PGM en PGD) naar buiten voeren met een headertje en je kan hem gewoon netjes via de COM poort programmeren. :)

www.teamgenie.nl
You raise the blade, you make the change
You re-arrange me till I'm sane
You lock the door, and throw away the key
There's someone in my head but it's not me


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DuDePrOdUcTiOnS schreef op maandag 26 maart 2007 @ 19:58:
Gewoon een standaard JDM programmer maken, de 3 benodigde pinnen voor het programmeren (VPP, PGM en PGD) naar buiten voeren met een headertje en je kan hem gewoon netjes via de COM poort programmeren. :)
Ik heb de links wat afgeschuimd en dit is een schakeling die ik realiseerbaar acht (en de moeite om 1 PIC te proggen).
Maar, volgens de site kan hij de PIC16F877 proggen, maar die is nu obsolete en vervangen door de PIC16F877A. Kan ik die PIC daar ook gewoon mee proggen of niet?
En wat is die 74HCT573? Is dat een normale component die je zo out-of-the-box gebruikt? Of moet die ook nog eens geprogrammeerd worden? (Dat is mijn probleem met de WISP628. Om die te bouwen moet je al een programmer hebben om de sturende IC te proggen...een vicieuze cirkel dus)

Acties:
  • 0 Henk 'm!

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 08:15
Ik vroeg me af of het niet toch heel makkelijk is om een sinusgolf te krijgen met een NE555..

NE555 stuurt een blokgolf uit, en als je daarachter met een opamp een integratortje maakt, kijg je dus een driehoeksgolf. Daar weer een integratortje achter en je gaat iets krijgen wat op een sinus lijkt (maar dan gemaakt van parabolen). Klein filtertje erachter en je hebt een mooie sinus.. of ziet ik het verkeerd? :)

/me heeft eindelijk ook een icoontje.. woef.. boeien..


Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 03-08 20:43

Gwannoes

Solderen moet je leren

*Kick*

Hoe staat het er nu mee? Al een schakeling ontworpen? Al resultaten?

Hmmz, hier komt dus m'n sig

Pagina: 1