Nu börjar det lossna, jag har börjat från scratch och mätte frekvensen, sedan fick jag hjälp med att hitta rätt formel, dvs, Msqm = A - 2.5Log(f)
A är en magnitudkonstant som provas fram och f är frekvensen från givaren.
koden blev såhär:
Kod: Markera allt
#include <FreqCounter.h>
#include <Math.h>
long Msqm;
float A = 22;
void setup() {
Serial.begin(57600); // connect to the serial port
Serial.println("Frequency Counter");
}
long int frq;
void loop() {
FreqCounter::f_comp= 100; // Set compensation to 12
FreqCounter::start(1000); // Start counting with gatetime of 100ms // CHANGED TO 1000/
while (FreqCounter::f_ready == 0) // wait until counter ready
frq=FreqCounter::f_freq; // read result
Serial.print(frq); // print result
Serial.print(" Hz ");
Serial.print(Msqm);
Serial.println(" Mag/Arcsecond2 ");
delay(20);
Msqm = A - 2.5*log(frq);
return;
}
Och såhär blev resultatet i Monitorn:
767 Hz 4.26 Mag/Arcsecond2
55 Hz 5.39 Mag/Arcsecond2
2 Hz 11.98 Mag/Arcsecond2
1 Hz 20.27 Mag/Arcsecond2
1 Hz 22.00 Mag/Arcsecond2
2 Hz 22.00 Mag/Arcsecond2
2 Hz 20.27 Mag/Arcsecond2
2 Hz 20.27 Mag/Arcsecond2
1 Hz 20.27 Mag/Arcsecond2
2 Hz 22.00 Mag/Arcsecond2
3 Hz 20.27 Mag/Arcsecond2
2 Hz 19.25 Mag/Arcsecond2
Men det verkar som att decimalerna inte gör så mkt då de är mer eller mindre fasta, det är nästan så man skulle behöva större upplösning på frekvensen... kan man på nåt smidigt sätt lösa det?