Duty-Cycle detector

Beste vrienden, ik heb hier een opnemer, die de te meten grootheid direct omzet in een Duty-Cycle zo rond de 4 Khz.
Het is een traag 1e orde proces waaraan gemeten wordt.
Dus als ik 1 x per seconde sample is dat ruim voldoende.
Dit zou met een µC een fluitje van een cent zijn denk ik.
MAAAR het moet per se zonder µprocessor uitgevoerd worden.
Dus denk ik dan aan het tellen van de "on" cycle, vervolgens het tellen van de periodetijd, en deze 2 waarden vervolgens op elkaar delen.
De factor 0-100% die ik dan krijg is representatief voor de meetwaarde.
Heeft iemand al eens iets dergelijks gemaakt ? voordat ik het wiel opnieuw ga uitvinden.....
Henri.

Kromme Volten zijn niet gevaarlijk

hmm, is dit een opdracht voor je studie?

waarom moeilijk doen als het makkelijk kan... gewoon een uC pakken en de klant er van overtuigen dat dit de simpelste methode is

IF you can't convince them, then confuse them!

Eh.. Dat tellen en delen... Allemaal zelf opbouwen? En wat komt er uit dan? Iets analoogs? Of een counter die je uit kunt lezen?

Naar mijn idee is een simpele uC toch het handigste...

Zorg dat je NOOIT, NOOIT, NOOIT wat met Versatel Tele2 te maken krijgt!
elmowww

Golden Member

Kan je er niet een elco mee laden/ontladen? bijvoorbeeld...

Spanning erover is een maat voor de duty cycle. Laadstroom kiezen in het goede frequentiegebied, daarna kan je eventueel nog een spanningsvolger zetten die wéér een andere elco oplaad (met kleinere stroom) en daar dan de spanning over.

[Bericht gewijzigd door elmowww op zondag 5 februari 2006 10:25:28

PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling

Studie ? ik ben al bijna 60 als ik nu nog moet studeren?
Nee gewoon eens zien of we echt met handen en voeten gebonden zijn aan µicro's.
Maar als ik zo de eerste reacties aftast, denk ik niet dat dit topic een succes gaat worden.
Ik heb wel al een vergevorderd idee in mijn hoofd, maar wilde dat eens toetsen aan de ideen van anderen.
Zoals je dat in het bedrijfsleven doet, overleg binnen de groep.
Niettemin toch mijn dank.
Henri.

Kromme Volten zijn niet gevaarlijk
JoWi

Special Member

Op 5 februari 2006 10:20:36 schreef Marco69:
Naar mijn idee is een simpele uC toch het handigste...

Met een laagdoorlaatfilter ben je ook klaar. elmowww was me voor.....

Ignorance is bliss

@ elmo, inderdaad integreren, is een van de eerste opties.
Maar of dit redelijk nauwkeurig is ?
Aan de andere kant, denk ik dat ik dan beter meteen voor een analoge opnemer zou kiezen.
De grap is nu juist het digitaal te doen ZONDER micro.
H.

Kromme Volten zijn niet gevaarlijk

Ah, dus toch niet zoals in het bedrijfsleven gebruikelijk is (snel, goedkoop, betrouwbaar, uuuuuuuuuuuren over geouwehoerd), maar een hobby-project... Da's andere koek.

Integreren is inderdaad dan denk ik wel de meest voor de hand liggende weg. Of je moet wat met counters willen?

Zorg dat je NOOIT, NOOIT, NOOIT wat met Versatel Tele2 te maken krijgt!
JoWi

Special Member

Op 5 februari 2006 10:33:38 schreef Henri Laprador:
De grap is nu juist het digitaal te doen ZONDER micro.

Ja, dat je de output digitaal wou hebben zei je er niet bij, en een simpel laagdoorlaatfilter is nauwkeurig genoeg.
Maar als het digitaal moet: gebruik een updowncounter op bijv. 200 kHz. De counter reset je op de flank van je sensorsignaal. Als de input hoog is tel je op, als de input laag is tel je af. Bij 50% is de output 0, bij 0% staat de teller op -50, bij 100% op +50. Dus je hebt alleen wat simpele poortjes nodig en geen deler (die kost een hoop poortjes). Voor een stabiele aflezing moet je natuurlijk wel de output van dit systeem latchen elke keer wanneer je weer een telling start.

Ignorance is bliss

De huidige oplossing is met counters.
Het meetsignaal tijdens de "on" cycle gebruiken om pulsjes te tellen, de waarde hiervan naar een BCD rate multiplier voeren, en de periodetijd ook in puljes uitdrukken, van dezelfde clock uiteraard, en deze ook aan de BCD RM aanbieden, het aanpulsen achter de BCD RM is dan representatief voor de Duty Cycle.

Ik had gehoopt dat er iemand nog met een slimmer idee zou komen.

Henri.

Kromme Volten zijn niet gevaarlijk

@ Jowi, dat idee heeft ergens ook al mijn achterhoofd gespeeld, heb jij daar ervaring mee?
Lijkt mij ook wel slim.
H.

Kromme Volten zijn niet gevaarlijk
JoWi

Special Member

Op 5 februari 2006 10:44:04 schreef Henri Laprador:
De huidige oplossing is met counters.
Ik had gehoopt dat er iemand nog met een slimmer idee zou komen.

Ja, nu is de simpelste manier niet goed (RC filter en DC component pakken). Gooi ik de deler eruit (moeilijkste operatie) en hou het beperkt tot tellen en moet het nog slimmer :'(
Wat bedoel je daarmee ? Minder componenten ??

Ignorance is bliss

Nee deze opmerking was voor jouw idee bedoelt.
ben hem inmiddels aan het simuleren in Profilab.
Resultaten hoor je nog.
H.

Kromme Volten zijn niet gevaarlijk
JoWi

Special Member

Op 5 februari 2006 10:45:57 schreef Henri Laprador:
@ Jowi, dat idee heeft ergens ook al mijn achterhoofd gespeeld, heb jij daar ervaring mee?

Nee, dat verzin ik terplekke. Maar delen lijkt mij niet simpel in poortjes, vandaar de up-down methode. De afwijking in deze methode zit hem in de frequentiestabiliteit van de signalen, als het meetsignaal precies 4 kHz is (maar soms bijv. 3.8 kHz) dan varieert natuurlijk de maximale waarde in de teller (zowel in + als - kant). Om van de +/- af te komen kan je natuurlijk de counter ofsetten (sommige kan je preloaden). Maar het is een gedachtenspinsel wat volgens mij zou werken.
Zelf pak ik snel een micro, zelfs voor een PWM generator waar een NE555 natuurlijk ook voldoet. Maar in plaats van tientallen tot honderden logica chips in mijn hobbyvoorraad red ik het nu voor de meeste zaken met een paar verschillende micros en wat delers, latches en poortjes in de grijpbakjes. Discreet doe ik het alleen wanneer de snelheid dat vereist.

Ignorance is bliss
free_electron

Silicon Member

dalende flank van signaal start integrator.
je meet dus de 'AF' tijd en zet die om in ene spanning.

de integrator maak je uit ene opamp met condensator erover. de 'ontlader' is ene mosje die de capaciteit kortsluit.
ingang van de integrator hangt aan grond.

op het moment dat de ingang hoog wordt. sampel je de spanning over de integrator cap. ( of uitgang van opamp en converteer je met een A/D

het enige wat je moet doen is ene klein circuitje maken met een monoshot : rising edge van ingang : sampel integrator uitgang , en start de monosohot. 1 microseconde of zo later toggelt die monoshot en stuurt de mos aan ( integrator wordt geshort. de monoshot is niet hertirggerbaar maar kan gerest worden door het laag zijn van de ingang.

tis te maken met ene op27 , een polypropyleencapje , ene paar weerstanden en normale capjes en een 4528 ( denk ik )
pak een A/D convertor met sample ingang.

klaar is kees

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
free_electron

Silicon Member

nog een mogelijkheid :
2 counters.

counter 1 count gedurende ene HIGH niveau , counter 2 gedurende laag nivea

counter 1 reset op stijgende flank
counter 2 reset op dalende flank

2 registers copieren count waardes.
register 1 copieert counter 1 op dalende flank
register 2 copieert counter 2 op stijgende flank

klaar.

je hebt nu 2 waardes die je de tijdsduur aangeven van het hoog zijn en het laag zijn.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
JoWi

Special Member

Hee free ? Je wordt zeker net wakker ??
Kon het niet laten.. :)

Ignorance is bliss

Kijk, daar ben ik weer.
Zie twee reacties van free, de eerste lijkt mij toch weer veel analoog gedoe, met c'tjes monoflop's.
De tweede echter spreekt mij duidelijk meer aan, lijkt veel op het voorstel van Jowi, die 1 teller gebruikt die up en down telt.
Ga de zaak even verder bestuderen, en laat jullie het resutaat nog weten.
Henri.

Kromme Volten zijn niet gevaarlijk

hmm, ander ideetje.
je signaal is ca. 4 kHz.
maak een oscillator/pll-schakeling (rond een 4046) die rond 400 kHz oscilleert. (i.i.g. rond een factor 100 hoger)
dan 2 decimaaltellertjes (4518 heeft er 2 in 1 chipje)
achter elkaar schakelen. De BCD-uitgangen van de tellertjes naar display decoders 4543. De latch van dit display stuurt het ingangssignaal. zolang dit hoog is, tellerstand doorgeven, zodra dit laag is, tellerstand vasthouden.
door de uitgangen 2 en 8 van de tweede teller via een en-poortje aan de 4046 terug te geven bereik je dat de oscillator exact 100x je ingangssignaal is (als de PLL gelocked is)
de teller geeft van 0 tot 99% de dutycycle weer.

edit: schiet me te binnen elektuur heeft in de hgg van 1987 ook zo'n soortgelijke schakeling gepubliceerd.

@DC2PCC
bedankt voor het meedenken, ik moet jouw oplossing nog even verwerken, ik heb het nog niet meteen op mijn netvlies staan.
Het is echter wel zo, dat de F niet constant is.
Alleen de Duty Cycle bevat de meetwaarde, de F kan varieren tussen 1 en 4 Khz.
Gaat jouw idee dan nog op ?
H.

Kromme Volten zijn niet gevaarlijk

Das wel een slimme oplossing dc2 :)

En het is inderdaad niet afhankelijk van de frequentie, zolang die PLL maar op 100x kan locken (gaat gemakkelijk met de interne oscillator van een 4046).

Het enige dat wel wat uitvogelwerk zal vergen is het goed timen van resetten-tellen-latchen van de data, maar zoiets moet kunnen. Voordeel van deze aanpak is trouwens dat het supersnel is, in principe update het display op ieder inkomend blokje (afgezien van locktijd als de frequentie verschuift).

http://www.webchemistry.nl - Internet Ontwikkeling en Web Design | http://www.scienceflicks.com Science Videos | http://www.merghart.com/p/26/Electronics My electronics projects

nee, de tellers lopen gewoon verder tot 100 en daarna staan ze weer op 0. het zijn deicmaaltellers die 4518. tellen 0-1-2-3-4-5-6-7-8-9-0. Dus een reset is overbodig. Het enige is de overname van de data op het moment dat de ingang omlaag gaat. misschien de latch dan kort (1 telpuls) open zetten.

@H.l. ja, dat is nou het leuke van die 4046, de ingebouwde oscillator kan over een vrij groot bereik meelopen met je ingangssignaal. en door de delerketen (de 4518's) wordt-ie op exact 100x de ingangsfrequentie vastgepind. je hoeft nu alleen nog maar te tellen hoe veel van deze 100 periodes je ingangssignaal hoog is. De duty-cycle is dan precies dit getal.

Je zou zelfs kunnen overwegen een 74HCT9046 te gebruiken en die 1000x sneller dan het ingangssignaal te laten lopen. Dan heb je 3 cijfers, dus op 0,1% gemeten.

heb al gezegd, ideetje is niet van mij, maar de HGG 1987 van elektuur heeft een soortgelijk ontwerpje met een paar andere tellers.

Henri Laprador,
Wat is het uiteindelijke doel van het verwerkte signaal? Wordt dit analoog of digitaal verder verwerkt?

Je schrijft ergens "... beter meteen voor een analoge opnemer zou kiezen". Dit geeft mij de indruk dat je het resultaat verder analoog wilt verwerken. Kies in dat geval dan voor een analoge bewerking van het puls-breedte signaal.

Als je het sensor signaal aanbied aan een eenvoudig RC laagdoorlaatfilter is het resultaat de gemiddelde spanning.
(Ugem = Umax * duty-cycle / 100%).
De nauwkeurigheid is afhankelijk van het de stabiliteit en vervorming van het binnenkomende signaal. Eventueel kun je het binnenkomende signaal conditioneren met een schmitt-trigger (40106 oid) gevoed met een referentiespanning.

Nog even dit: Integreren is wat anders dan middelen. Een laagdoorlaatfilter is geen integrator. Een integrator bepaald het oppervlak van u(t)dt, en een laagdoorlaatfilter het gemiddelde van u(t)dt.

@DC2PCC
Artikel gevonden, blz. 139 artikel 90 HG1987
Ik moet het nog even bestuderen, om de werking helemaal te snappen, ik heb niet zoveel, zeg maar bijna niets, ervaring met PLL's.
Ik begrijp het grondprincipe wel, maar heb er nog nooit iets mee gedaan.
De grap is dat de nauwkeurigheid uitsluitend bepaald wordt door de +/- 1 fout.
Bedankt voor de hulp in deze.

@Freddy
Je hebt gelijk, intergreren is niet hetzelfde als middelen.
Het doel is een simpele aan/uit regeling voor een verwarmingselement.
Maar ik wil per se vertrekken van een opnemer met PWM uitgang, als ik de DutyCycle weet, hoef ik die alleen maar met een bepaalde factor te vermenigvuldigen, en ik heb de exacte waarde.
Als deze waarde onder het setpoint is, gaat het element stoken, als de waarde gehaald wordt, stopt het stoken, de temp vliegt natuurlijk nog een beetje door (overshoot).
Maar dat mag binnen zekere grenzen.
Als de zaak weer afkoeld, en de temp komt onder het setpunt dan herhaalt de geschiedenis zich weer.
Natuurlijk kun je dit ook analoog, doen, maar de bedoeling was nu juist om het eens anders te doen.
Ik denk dat de schakeling met de PLL zeer goed gaat voldoen.
Ik dank jullie allemaal voor jullie input.
Henri.

Kromme Volten zijn niet gevaarlijk

Henri, wel oppassen met een aan/uit regeling voor temperaturen, je moet de warmtetraagheid meten van de ruimte.

Dus als het verwarmingselement uitgaat meten hoe lang het duurt voor de temperatuur stopt met stijgen en daar rekening mee houden.

Koffie, het bier van de wiskundigen en natuurkundigen.