AD9833 met PIC en MikroBasic

Bavelt

Golden Member

Ja:


  ANSELA     =  %00000001                   'A.0 Analog
  ANSELB     =  %00000000                   'All Port B Digital
  TRISA      =  %00000001                   'Port A0 input for Comparator 2
  TRISB      =  %00000000                   'All Poert B Output
  OSCCON     =  %01110000                   '8Mhz internal

  CM2CON0    =  %10110111                    CMOUT pin enabled
  CM2CON1    =  %00010000                   '- To C12IN0-, + to DAC
  DACCON0    =  %11110000
  DACCON1    =  %000000001                  'Ref = 0,14V

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

CM2CON0.0 staat nog steeds op 1 ('output synchroon met timer 1'). Zonder timer 1 gebeurt er dus niks... :)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Ik heb er zelfs nog een potmeter aan gehangen, waarmee ik de frequentie kan instellen.
En een extra button voor de range x1, x10, x100, x1000 en x10000.
Was makkelijk te doen met ADC_Read(), op pen 1 (A.2).
Is 10-bites resolutie, gaat van 0-1024.

Wat me nu rest is om de output te versterken. Ik wacht nu op mijn MCP6002 OpAmpen...

Dan wordt het nog een heuse generator.

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Ik heb er voor een applicatie een TPA3116D2 aan hangen (100W@1.6Ω :+)
Generator resolutie 0.01Hz, bereik 20 tot 10.000Hz...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Fouten zijn het bewijs dat je het probeert..

Wat me nu rest is om de output te versterken. Ik wacht nu op mijn MCP6002 OpAmpen... Dan wordt het nog een heuse generator.

Voor mij hoort een goede signaalgenerator ook moduleerbaar te zijn (mag een vaste toon zijn, zeg 500 Hz) en een instelbare verzwakker te hebben....

PS: als u toch bezig bent met programmeren, is het misschien ook een optie om een sweepfunctie te implementeren? Dus een start-frequentie en een stopfrequentie, en evt. ook de sweepsnelheid tussen die twee frequenties. Dat kan helpen bij het doorfluiten van MF-filters. Wobbulator-achtig.

set SCE to AUX.
Bavelt

Golden Member

Op zaterdag 28 december 2024 18:52:41 schreef Arco:
Ik heb er voor een applicatie een TPA3116D2 aan hangen (100W@1.6Ω :+)
Generator resolutie 0.01Hz, bereik 20 tot 10.000Hz...

Ik had hier ook nog zoiets liggen. (Vreselijk lelijke knoppen ;().

Daar zitten twee OpAmps NE5532 in.
Het werkt voor het audio-gebied, maar als ik zo tussen de 1 en 1,5 Mhz wil hebben moet ik toch iets anders verzinnen.

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Ik gebruik 'm als stemgenerator, dus dan wil je juist wel het audiobereik hebben... :)

Dubbele eurokaart met maar weinig onderdelen. Verving een kast ter grootte van 2 schoenendozen met 15 eurokaarten en honderden ic's en transistoren.
(de nieuwe is daarbij ook nog 300x nauwkeuriger...)

Zegt wel iets over de vooruitgang in electronica: de oude unit was niet zo oud: uit 1993...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Ik speel wat met de frequenties van de generator.

Als ik een frequentie kies van 1,1 Mhz, dan komt er uit de AD9833 keurig een 1,1 Mhz (schrijven registers gaat dus goed).

Maar de comparator 2 van de PIC16F1847 houdt het niet bij; hierdoor staat zijn output een beetje zenuwachtig rond de 634 Khz te dansen.
Ik heb de oscillator frequentie op maximaal staan: 32 Mhz (met PLL enabled).

Toch gaat dit te snel voor hem. Zou dat kunnen, zo'n beperking?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Voor zulke enorm hoge snelheden is de comparator niet bedoeld, max wat gegarandeerd wordt is 800kHz...
Rise + Fall time is 1200nS...

[Bericht gewijzigd door Arco op zondag 29 december 2024 21:49:43 (13%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Je ziet ook dat bij frequenties boven de 1Mhz het niveau van de output sterk daalt. Ik heb er even een 74HCT132 achter gehangen, een NAND met Schmitt Trigger input.
Maar ook na die poort blijft er (merkwaardigerwijs) nagenoeg hetzelfde signaal over. (je zou verwachten mooie 0 of +Vcc).

Maar enfin, dit is dus de beperking. Omdat het signaal van de AD9833 wel goed is, kan ik het wellicht anders oplossen denk ik door aan de presentatie-kant te werken met x1, x10, etc.

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Geldt die beperking ook voor de Reference Clock Module van deze PIC?

Fouten zijn het bewijs dat je het probeert..

De clock module zal allicht bedoeld zijn voor snelheden tot 8 of 16MHz. Of dat dezelfde is als wat jij "reference clock module" noemt weet ik niet zeker.

Die comparator in de PIC is, net als de MCP6002, bedoeld voor langzamere signalen.

Ik zou "voor de gein" wel even controleren of wat je in de AD9833 klopt met wat je er uit krijgt. Maar voor productie zou ik gewoon er op vertrouwen dat wat je er in stopt er ook uit komt.

Ik heb meegeholpen aan een groot apparaat, waar een DDS in zit. Weinig teruglezen of terugmeten, gewoon write-and-forget. Daar zit dan ergens een (nouja 6 of 12 stuks) groter (vooral sneller) broertje van de ad9833 in. Draait sinds 1997.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

De reference clock module werkt tot clock / divider, verder geen beperking.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op zondag 29 december 2024 22:57:11 schreef rew:
De clock module zal allicht bedoeld zijn voor snelheden tot 8 of 16MHz. Of dat dezelfde is als wat jij "reference clock module" noemt weet ik niet zeker.

Die comparator in de PIC is, net als de MCP6002, bedoeld voor langzamere signalen.

Ik zou "voor de gein" wel even controleren of wat je in de AD9833 klopt met wat je er uit krijgt. Maar voor productie zou ik gewoon er op vertrouwen dat wat je er in stopt er ook uit komt.

Ik heb meegeholpen aan een groot apparaat, waar een DDS in zit. Weinig teruglezen of terugmeten, gewoon write-and-forget. Daar zit dan ergens een (nouja 6 of 12 stuks) groter (vooral sneller) broertje van de ad9833 in. Draait sinds 1997.

De output van de AD9833 klopt met wat ik er in stop.
Het uitgangsniveau is echter wat karig (ca 0,2V), ik wilde dat wat oppeppen. Maar ik begrijp dat dat met de MCP6002 ook niet gaat lukken.
Wat is dan wel de oplossing? Een versterkertje met BF-torren?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Als je het signaal zelf opwekt, waarom zou je het dan willen meten?
(ic is echt heel nauwkeurig!)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op maandag 30 december 2024 02:40:55 schreef Arco:
Als je het signaal zelf opwekt, waarom zou je het dan willen meten?
(ic is echt heel nauwkeurig!)

Het meten had in eerste instantie een funtie bij het testen van dit projectje; komt er uit wat ik er in (denk) te stoppen?
Ik heb er nu een los frequentiemetertje aan hangen.
Tweede doel is dat wanneer ik dit ding straks gebruik als univerxele signaalgenerator, de frequentie meteen zichtbaar wordt gemaakt ipv vakjes tellen op de scope.
Omdat ik het programma nu werkend heb, zou het meten kunnen worden vervangen door het tonen van de ingestelde waarde.

De output in square is toereikend om een schmitt trigger aan te sturen. De sinus en triangel outputwaarden zijn te laag om er verder wat mee te doen. Vandaar dat ik wat zoek naar een versterkertje tot 12 Mhz

Fouten zijn het bewijs dat je het probeert..
marcob

Golden Member

Deze heb ik eens gebruikt i.c.m. een AD9834 en AD9851 module.

https://nl.aliexpress.com/item/4000196238612.html

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Bavelt

Golden Member

Wat zou nu een (makkelijke) oplossing kunnen zijn om het signaal AM te kunnen moduleren?

Fouten zijn het bewijs dat je het probeert..