Sida 1 av 2

Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:07:31
av Corpze
Hej, Sitter och försöker förstå hur min Arduino ska visa mest precist resultat från min TSL237 "light-to-frequncy" sensor och enligt några på arduinos forum är det bättre att räkna pulser eftersom jag kommer att hamna på riktigt låga Hz (1-10Hz ca)

Men hur kommer det fungera ihop med att sensorn skickar Hz, om den nu gör det? går det att räkna pulser ändå?

PDF på sensorn: http://www.parallax.com/Portals/0/Downl ... L237-J.pdf

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:18:47
av 4kTRB
Du använder väl en logisk grind som släpper fram
signalen under en bestämd tid?
Sedan dividerar du antalet framsläppta pulser med tiden.

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:24:09
av Corpze
Det mesta är helt ologiskt enligt mig...

Det här biblioteket använder jag iaf: http://interface.khm.de/index.php/lab/e ... r-library/

Det jag gjort med hans exempelkod är att ändra gatetime'en till 1000ms då jag läst (vet ej om det faktiskt är så) att den räknar Hz då Hz betyder just "per sekund"

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:27:29
av mrOh
Vet inte om jag förstår vad du söker men du kan ju mäta tiden ganska noggrant genom att trigga ett interupt på rising eller falling flank och kolla millis()-lastTime eller liknande. Där du avslutar interuptrutinen med lastTime = millis();
exempel:

Kod: Markera allt

void interupt(){
time = millis()-lastTime;
lastTime = millis();
}
Vill du ha ökad upplösning kanske det funkar med micros() tänk bara på att den overflow'ar på 70 minuter typ.

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:28:52
av sodjan
> och enligt några på arduinos forum är det bättre att räkna pulser

Bättre än vadå? Alternativet är kanske att mäta tiden mellan
två pulser (inversen av att räkna pulser, kan man säga).
Vilket som är bäst beror nornalt på den aktuella frekvensen
och hur snabbt man behöver svaret.

> Men hur kommer det fungera ihop med att sensorn skickar Hz,

Nej, det gör den inte.
Det skickar ut pulser som varierar i frekvens med ljuset.
Enheten för att mäta hur snabbt pulserna kommer heter Hertz (Hz).

Det som att säga att en vattenkran "skickar ut liter" i stället för vatten.

> går det att räkna pulser ändå?

Ändå vadå? Men svaret är "ja".

> Det jag gjort med hans exempelkod är att ändra gatetime'en till 1000ms då jag läst (vet ej om det
> faktiskt är så) att den räknar Hz då Hz betyder just "per sekund"

Det är helt ointressant vilken mättid du använder!
Det viktiga är att du vet vilket antal pulser du förväntar dig
under den valda tiden. Vad ska värdete användas till? Ska värdet räknas
om till något slags absolut ljusstyrka eller ska du det "bara" vara ett "skymningsrelä" ?

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:30:06
av Corpze
Det kan jag prova med, jag kommer bara ha den aktiv så länge jag trycker ner en knapp för att mäta bakgrundsljus (2-10sek)

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:32:17
av sodjan
Notera också att sensorn har ett frekvensområde på ca 1-2 Hz
till flera 100 KHz! Så det aktuella mätområdet som önskas
är ju en viktig parameter här. Om du vill mäta i "flera 100 KHz"
området så är nog inte mätning av enstaka pulser ett alternativ.

> ...för att mäta bakgrundsljus

Och i vilket mätområde förväntas det ligga ?
Vilken noggranhet kräver mätningen? (Viktigt !!)

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:37:59
av Corpze
Nu börjar jag förstå, tack för förklaringarna Sodjan, dock hänger jag inte riktigt med i svängarna:

> och enligt några på arduinos forum är det bättre att räkna pulser

"Bättre än vadå? Alternativet är kanske att mäta tiden mellan
två pulser (inversen av att räkna pulser, kan man säga).
Vilket som är bäst beror nornalt på den aktuella frekvensen
och hur snabbt man behöver svaret."

De menar på att så låga Hz som jag kommer "hamna på" 2-20Hz medför stora felmarginaler, jag vet dock inte om det stämmer?

"Det är helt ointressant vilken mättid du använder!
Det viktiga är att du vet vilket antal pulser du förväntar dig
under den valda tiden. Vad ska värdete användas till? Ska värdet räknas
om till något slags absolut ljusstyrka eller ska du det "bara" vara ett "skymningsrelä" ?"

Ok, ang. pulserna så vet jag inte vad jag förväntar mig, förstår inte riktigt hur du menar?
Värdet skall omräknas till Magnitud/bågsekund2

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:39:44
av Corpze
sodjan skrev:Notera också att sensorn har ett frekvensområde på ca 1-2 Hz
till flera 100 KHz! Så det aktuella mätområdet som önskas
är ju en viktig parameter här. Om du vill mäta i "flera 100 KHz"
området så är nog inte mätning av enstaka pulser ett alternativ.

> ...för att mäta bakgrundsljus

Och i vilket mätområde förväntas det ligga ?
Vilken noggranhet kräver mätningen? (Viktigt !!)
1-100Hz, inte mer iaf.

Mätområdet kommer vara från 16-23 Mag/bågsekund2 och det mostvarar några lux ner till 0.001 lux, även om det inte är direkt jämförbart

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 12:50:08
av sodjan
> De menar på att så låga Hz som jag kommer "hamna på" 2-20Hz medför stora
> felmarginaler, jag vet dock inte om det stämmer?

Inte nödvändigtsvis.
Men om man ska räkna pulser vid låga frekvenser blir ju mättiden
väldigt lång om man vill ha någon slags noggrannhet. Om tiden bara
är 10 sek så blir det ju väldigt svajigt vid 2 Hz (5 eller 6 pulser ger
ett fel på upp till 20 %).

> Värdet skall omräknas till Magnitud/bågsekund2

OK, och noggranheten??
20%?, 5%?, 10 promille? 10 ppm?

> 1-100Hz, inte mer iaf.

OK. Vid 100 Hz för du 0.1% noggrannhet vid 10 sekunders mätning (1000 pulser).
D.v.s om sensorn i sig ger den noggrannheten. Det kanske är OK.

Vid 1 Hz är det kanske mer praktiskt att mäta pulstiden, eftersom mättiden
annars blir orimligt lång. Man kan ju göra båda delarna och ha en brytpunkt
där man byter mätmetod, kanske vid 10 Hz eller liknande. Det för matchas
mot önskade mättider o.s.v.

Vid 10 Hz behöver tidbasen en upplösning på 10 KHz för att få 0.1% noggrannhet
vid mätning av pulstiden. Sedan kan man räkna t.ex 10 pulser och klara sig med
en långsammare klocka. Eller hellre 8 eller 16 pulser av "binära" orsaker... :-)

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 13:15:25
av 4kTRB
Finns fler sätt att mäta frekvens på.
T.ex. så finns det F to V converters som färdiga ic.
Då får du mäta spänningen med Uno.

Edit:

Länk till olika F to V chip: http://www.datasheetdir.com/LM2917+Volt ... -Converter

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 13:23:40
av Corpze
Rent spontant så känns det som pulser kanske är at föredra, orginalapparaten som jag försöker efterlikna använder samma sensor fast mäter på ca 2sek som snabbast, jag kan tänka mig att kunna mäta i 10sek och noggrannheten är 0,1 mellan 16-23 mag/as2.

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 13:50:23
av 4kTRB
Tycker ändå att TC9400/9401/9402 från Microchip
verkar vara trevliga ic för dessa ändmål.

http://www.datasheetdir.com/TC9401+download

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 14:19:05
av Corpze
Nu vet jag inte hur orginalapparaten är konstruerad, men det chippet som är monterat på kretskortet, är det ett freq-volt chip tro?
SQM-board.jpg

Re: Räkna Hz eller Pulser med Arduino Uno?

Postat: 5 mars 2013, 14:27:56
av sodjan
Vilken "originalapparat"?
Är det den som ska ersättas med en Arduino lösning?
Vad är det som sitter på kortet? Ser ut som en PIC...
Är det ljussensorn till vänster? Har den någon märkning?
Den har en Xport så den är alltså nätverksansluten.
Har den någon produktsida eller dokumentation?