Mäta pulsbredd med pic processor

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
optimizer
Inlägg: 74
Blev medlem: 5 juli 2006, 17:35:10
Ort: norrköping
Kontakt:

Mäta pulsbredd med pic processor

Inlägg av optimizer »

Har ett litet projekt under uppbyggnad då jag vill mäta bredden (duty %) på pulser... Alltså 0-100% pulsbredd.
Detta ska göras med en pic 18f452 processor. Min ide var att koppla på rb0/int0 att trigga på positiv flank och sen rb1/int1 att trigga på negativ flank. Sedan koppla ihop dessa två ingångar till källan.
Sen med hjälp av en räknare spara timer värden vid positiv flank och sen negativ flank och sen vid nästa positiv flank så subtrahera och räkna ut bredden.
Är min ide att gå över ån efter vatten? :) Om nån har någon annan smart ide så är jag tacksam för ideer.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Vilken frekvens handlar det om och med vilken nogrannhet måste du mäta? En väldigt enkel variant är ju att ta t.ex. 10000 sample, räkna antalet höga, dividera med 100 och du har duty-cykeln i procent. Detta förutsatt att frekvensen du mäter är relativt låg och att ett mindre mätfel inte gör något.

OM du använder interrupt-ingång så bör det räcka med EN ingång som du ställer om vid varje "mottagning":

1. Ställ om till positiv flanktrigg
2. Vänta på flank
3. Nollställ räknare
4. Ställ om till negativ flanktrigg.
5. Vänta på flank
6. Spara undan räknarvärde A
7. Ställ om till positiv flanktrigg
8. Vänta på flank
9. Spara undan räknarvärde B (Duty = A / B)
10. GOTO "3"...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Vilken frekvens handlar det om och med vilken nogrannhet måste du mäta?

Kan bara instämma. Helt avgörande uppgifter för lösningen... :-)
optimizer
Inlägg: 74
Blev medlem: 5 juli 2006, 17:35:10
Ort: norrköping
Kontakt:

Inlägg av optimizer »

Frekvensen är varierande mellan 10 och 200hz. Men nogranheten är inte högre än heltal 0-100%.
Hade ju varit enkelt om frenvensen varit konstant. Då hade ju OJSAN's första idee varit skitenkel.

Men den andra ideen med att ändra vilken flank den triggar på funkar ju. Samt att jag inte behöver använda 2 olika interrupter med 2 olika ben. Kanon! Med den här lösningen så kan man ju samtidigt räkna ut frekvensen när man har alla värden.

Man fastnar lite själv i sina egna ideer ibland.

Tack ska ni ha.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Bra, ett steg avklarat. Nästa fråga: Hur ofta måste du uppdatera värdet?
Problemet med sampling är ju att du kan råka sampla t.ex. 10,5 perioder och där igenom få ett felaktigt resultat. Med lite enkla operationer skulle du dock kunna plocka bort "halva vågor" i början och slutet av samplingen och på så sätt få ett rätt bra resultat.

Men om du föredrar flanktriggning så är det ju helt klart snyggare och kräver mindre resurser.
Skriv svar