Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Dat is de afstand in mV tussen in en uitschakelen (om 'zenuwachtig' gedrag te voorkomen)
Als je de comparator output extern niet nodig hebt kun je die ook uitzetten (heb je weer een pin over...)
Nou, het loopt allemaal als een tierelier.
Dat geef een hoop voldoening. Veel tijd in gestoken, veel hulp gehad, veel geleerd.
Het is dus een projectje geworden dat een signaal als output geeft, instelbaar tussen 0 en 12 Mhz.
Het signaal wordt geleverd door een AD9833 generator-printje. De ingestelde frequentie is af te lezen op een 0,96"OLED schermpje.
De vorm van het signaal is te kiezen uit sinus, triangel of blok.
De microcontroller is PIC 16F1847 en het programma is gemaakt in MikroBasic van Mikroe.
Edit: omwille van de omvang van de code en de post heb ik het project als .zip toegevoegd.
Alles werkt nu. En nog een beetje verder onderzoekend:
Ik gebruik Poort A.4 als output door de interne output van comparator 2 naar A.4 te brengen:
---
Dim CMP2_OUT As sbit At LATA.4 'pin 3 'Output Comparator
CM2CON0 = %10010111 'CMOUT pin disabled
---
---
While True
LATA.4 = CMOUT.1
Wend 'Dummy endless loop
Dit werkt.
Nu is A.4 ook de natuurlijke pin voor CM2OUT.
Dus dacht ik in mijn onschuld, als ik nu de CMOUT pin
enable, zou het effect hetzelfde moeten zijn:
---
CM2CON0 = %10110111 'CMOUT pin enabled
---
---
While True Wend
Maar op die output pin komt dan niks. Dat zou toch moeten werken?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
CM2CON0.0 staat nog steeds op 1 ('output synchroon met timer 1'). Zonder timer 1 gebeurt er dus niks... 
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.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ik heb er voor een applicatie een TPA3116D2 aan hangen (100W@1.6Ω
)
Generator resolutie 0.01Hz, bereik 20 tot 10.000Hz...
Voor de prijs hoef je het dan niet te laten...
https://nl.aliexpress.com/item/1005006941484849.html?spm=a2g0o.product…
nonius
set SCE to AUX.
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.
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.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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...
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?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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 (13%)]
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.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
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.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Deze heb ik eens gebruikt i.c.m. een AD9834 en AD9851 module.