Problem with comparison.
/Designs/Measuring_instruments/RMDS02C/SW/PIC16F887/main.c |
---|
0,0 → 1,200 |
// Atomic counter with I2C and RS232 output |
// Usage conditions: |
// 1. The first I2C or RS232 readout can be performed minimally 20 s after power up. |
// 2. The I2C internal address 0 has to be read first. |
// 3. An I2C readout can be performed at 15-th, 35-th and 55-th second of UTC. |
// |
// Counter gives 32 bit value: |
// I2C register address 0 = LSB |
// I2C register address 3 = MSB |
#define ID "$Id: main.c 2916 2013-04-14 17:42:03Z kaklik $" |
#include "main.h" |
#use i2c(SLAVE, Fast, sda=PIN_C4, scl=PIN_C3, force_hw, address=0xA2) |
#include <string.h> |
#define SEL0 PIN_E0 // external counter division ratio |
#define SEL1 PIN_E1 // external counter division ratio |
#define MR PIN_E2 // external counter master reset |
#define CLKI PIN_C0 // internal counter input |
unsigned int32 count; // count per second |
int1 fire_setup; // flag for sending setup to GPS |
#define BUF_LEN 4 |
int8 buffer[BUF_LEN]; // I2C buffer |
int8 address=0; |
unsigned int16 of=0; // count of overflow |
// 1x 100 us per 10 s UTC synchronised; 40 configuration bytes |
char cmd[50]={40, 0xB5, 0x62, 0x06, 0x31, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0xE0, 0xC8, 0x10, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0xC6, 0x51}; |
// configure GPS |
void setup_GPS() |
{ |
int n; |
int len; |
len=cmd[0]; |
for (n=1;n<=len;n++) putc(cmd[n]); |
} |
#INT_SSP |
void ssp_interupt () |
{ |
int8 incoming, state; |
state = i2c_isr_state(); |
if(state < 0x80) //Master is sending data |
{ |
incoming = i2c_read(); // Read byte |
if(state == 1) //Second received byte is address of register |
{ |
address = incoming; |
} |
if(state == 2) //Thid received byte are configuration data |
{ |
if ((address==0)&&(incoming==0)) |
{ |
fire_setup = 1; // Write configuration to the GPS if configuration data length is 0 |
} |
else |
{ |
cmd[address] = incoming; // Store byte to configuration sentence |
} |
} |
} |
if(state == 0x80) //Master is requesting data |
{ |
//i2c_read(); // Dummy read of I2C device address |
if(address == 0) // Change buffer atomically at reading of the first byte |
{ |
buffer[0]=make8(count,0); |
buffer[1]=make8(count,1); |
buffer[2]=make8(count,2); |
buffer[3]=make8(count,3); |
} |
if(address <= BUF_LEN) |
{ |
i2c_write(buffer[address]); // Prepare one byte to SSP buffer |
} |
else |
{ |
i2c_write(0x00); // There is nothing to prepare, so zero |
} |
} |
if(state == 0x81) //Master is requesting data |
{ |
i2c_write(buffer[1]); // Prepare next byte to SSP buffer |
} |
if(state == 0x82) //Master is requesting data |
{ |
i2c_write(buffer[2]); // Prepare next byte to SSP buffer |
} |
if(state == 0x83) //Master is requesting data |
{ |
i2c_write(buffer[3]); // Prepare next byte to SSP buffer |
} |
if(state > 0x83) //Master is requesting data |
{ |
i2c_write(0x00); // There is nothing to prepare, so zero |
} |
} |
#int_EXT // Interrupt from 1PPS (RB0) |
void EXT_isr(void) |
{ |
unsigned int16 countH; |
unsigned int8 countL; |
int16 of2; |
of2=of; // read overflow counter |
countH=get_timer1(); // read internal counter |
countL=0; |
output_low(SEL0); |
output_low(SEL1); |
countL=input(CLKI); // read bit 0 of external counter |
output_high(SEL0); |
// output_low(SEL1); |
countL|=input(CLKI)<<1; // read bit 1 of external counter |
output_low(SEL0); |
output_high(SEL1); |
countL|=input(CLKI)<<2; // read bit 2 of external counter |
output_high(SEL0); |
// output_high(SEL1); |
countL|=input(CLKI)<<3; // read bit 3 of external counter |
output_low(MR); // External counter Master Reset |
output_high(MR); |
set_timer1(0); // Internal counter reset |
of=0; // Overflow counter reset |
count=((unsigned int32)of2<<20)+((unsigned int32)countH<<4)+(unsigned int32)countL; // concatenate |
// printf("%010Lu\r\n", count); |
} |
#int_TIMER1 // Interrupf from overflow |
void TIMER1_isr(void) |
{ |
of++; |
} |
void main() |
{ |
setup_adc_ports(NO_ANALOGS|VSS_VDD); |
setup_adc(ADC_OFF); |
// setup_spi(SPI_SS_DISABLED); //must not be set if I2C are in use! |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_wdt(WDT_2304MS); |
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); |
setup_timer_2(T2_DISABLED,0,1); |
setup_comparator(NC_NC_NC_NC); |
setup_vref(FALSE); |
restart_wdt(); |
delay_ms(1000); |
restart_wdt(); |
// setup GPS |
setup_GPS(); |
ext_int_edge( L_TO_H ); // set 1PPS active edge |
enable_interrupts(INT_TIMER1); |
enable_interrupts(INT_EXT); |
enable_interrupts(INT_SSP); |
enable_interrupts(GLOBAL); |
buffer[0]=0x0; // Clear I2C output buffer |
buffer[1]=0x0; |
buffer[2]=0x0; |
buffer[3]=0x0; |
//printf("\r\ncvak...\r\n"); |
fire_setup = 0; |
while(true) |
{ |
restart_wdt(); |
delay_ms(1000); |
if (fire_setup) |
{ |
setup_GPS(); // Write configuration to the GPS |
fire_setup = 0; |
} |
//printf("%X %X %X %X\r\n", buffer[0],buffer[1],buffer[2],buffer[3]); |
//printf("%010Lu\r\n", count); |
} |
} |
/Designs/Measuring_instruments/RMDS02C/SW/PIC16F887/main.hex |
---|
0,0 → 1,88 |
:1000000001308A00BD290000FF00030E8301A1001A |
:100010000A08A0008A010408A2007708A300780853 |
:10002000A4007908A5007A08A600831383120B1E8A |
:100030001B288B1838288C308400001C21280C18B1 |
:100040003B288C308400801D27288C193E282208EC |
:1000500084002308F7002408F8002508F900260882 |
:10006000FA0020088A00210E8300FF0E7F0E09008F |
:100070008A110A12BA288A110A128D298A110A12C3 |
:100080004E2813087008930014168C118316141848 |
:100090004728F8018312141AF80A08008316941AE4 |
:1000A00059288312E9018316141D59288312E91770 |
:1000B000831683126908E90AEE006E087F3C031C70 |
:1000C0007D2814138C1D622813081416ED006E0B86 |
:1000D0006B286D08B4006E08023C031D7D28B4082F |
:1000E000031D7728ED08031D77282F147D2837304E |
:1000F0003407840083136D0880006E08803C031D64 |
:100100009B28B408031D8C282B08B0002C08B100D4 |
:100110002D08B2002E08B3003408043C031C9928B3 |
:1001200030303407840083130008EF00F0004120D2 |
:100130009B28F00141206E08813C031DA228310854 |
:10014000F00041206E08823C031DA9283208F0000F |
:1001500041206E08833C031DB0283308F000412085 |
:100160006E08833C0318B628F00141208C118A11D7 |
:100170000A1227283608F1003508F0000F08FA00A7 |
:100180000E08F7000F087A02031DBE287708ED005D |
:100190007A08EE00EF018316091083120910831606 |
:1001A0008910831289102814280883168700831267 |
:1001B000EF010718EF0A8316091083120914281497 |
:1001C0002808831687000030831207180130F700D3 |
:1001D0000310F70D7708EF04831609108312091036 |
:1001E000831689108312891428142808831687001F |
:1001F0000030831207180130F700F70DF70DFC30BF |
:10020000F7057708EF0483160910831209142814E0 |
:100210002808831687000030831207180130F70082 |
:10022000F70DF70DF70DF830F7057708EF04831693 |
:1002300009118312091183160911831209158F01FF |
:100240008E01B601B5018316A301A2017108A100B8 |
:100250007008A0002108A3002008A200A001A101AD |
:10026000A20DA30DA20DA30DA20DA30DA20DA30D12 |
:10027000F030A205A801A70183126E088316A6001C |
:1002800083126D088316A500250DF700260DF800D2 |
:10029000270DF900280DFA00F70DF80DF90DFA0DEC |
:1002A000F70DF80DF90DFA0DF70DF80DF90DFA0D22 |
:1002B000F030F7057708A00778080318780FA10732 |
:1002C00079080318790FA2077A0803187A0FA30791 |
:1002D0008312F801F901FA016F08831620078312CF |
:1002E000AB00831621088312AC0078080318780F3E |
:1002F000AC07831622088312AD0079080318790F22 |
:10030000AD07831623088312AE007A0803187A0F0C |
:10031000AE078B108A110A122728B50A0319B60AEC |
:100320000C108A110A1227286B30840083130008EE |
:100330000319A7290630F800F701F70B9D29F80BE0 |
:100340009C297B30F700F70BA329800B9A29080022 |
:100350003708EB000130EA006A086B02031CBC2975 |
:1003600037306A07840083130008EC006C080C1E09 |
:10037000B7299900EA0AAC290800840183131F30C9 |
:10038000830583160317871508300313990002307D |
:100390009A00A6309800903083129800A81528087B |
:1003A0008316870083122816280883168700A23038 |
:1003B0009300363083129400B401B601B501831660 |
:1003C00003170908C039890003131F129F12003058 |
:1003D0000317880083128701880189010313A7018D |
:1003E000FF30A800A901AA012830B700B530B80035 |
:1003F0006230B9000630BA003130BB002030BC009A |
:10040000BD01BE01BF01C001C1013230C200C30144 |
:10041000C401C5018030C6009630C7009830C800BE |
:10042000C901E030CA00C830CB001030CC00CD018B |
:100430006430CE00CF01D001D101D201D301D4016B |
:10044000D501D601D701D801D9017330DA00DB011B |
:10045000DC01DD01C630DE005130DF00E001E101EA |
:10046000E201E301E401E501E601E701E80103300F |
:10047000E900831603170908C039890003131F1206 |
:100480009F12003003178800831203131F10831676 |
:100490000108C73908388100093083120317850025 |
:1004A0000F30F700031381018130840083130008AB |
:1004B000F0390738800064000008F739F719F0397F |
:1004C00077048000073090000030F8009200003080 |
:1004D000831692008312031787018801890183160E |
:1004E00003139701640004308312EA00FA30EB0032 |
:1004F0009421EA0B762A6400A821831601170C14B4 |
:1005000083120B1683168C15C03083128B04B00136 |
:10051000B101B201B3012F1064000430EA00FA30D7 |
:10052000EB009421EA0B8F2A2F1C982AA8212F1068 |
:040530008C2A6300AE |
:04400E00EA2CFF3F5A |
:00000001FF |
;PIC16F887 |
;CRC=EE34 CREATED="17-Oct-14 14:31" |
/Designs/Measuring_instruments/RMDS02C/SW/PIC16F887/main.h |
---|
0,0 → 1,21 |
#include <16F887.h> |
#device adc=8 |
#FUSES WDT //Watch Dog Timer |
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) |
#FUSES PUT //Power Up Timer |
#FUSES MCLR //Master Clear pin enabled |
#FUSES NOPROTECT //Code not protected from reading |
#FUSES NOCPD //No EE protection |
#FUSES NOBROWNOUT //No brownout reset |
#FUSES IESO //Internal External Switch Over mode enabled |
#FUSES FCMEN //Fail-safe clock monitor enabled |
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O |
#FUSES NODEBUG //No Debug mode for ICD |
#FUSES NOWRT //Program memory not write protected |
#FUSES BORV40 //Brownout reset at 4.0V |
#use delay(clock=20000000) |
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors) |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/setSi570.py |
---|
0,0 → 1,56 |
#!/usr/bin/python |
# |
# Utility for setting frequency of Si570 without a frequency measurement. |
# The factory calibration is used for changing the frequency. |
# This utility reset the Si570 to factory default 10 MHz first and than set a new frequency. |
# |
# This utility use an USBI2C01A module. |
# (c) MLAB 2014 |
import time |
import datetime |
import sys |
from pymlab import config |
import logging |
logging.basicConfig(level=logging.DEBUG) |
#### Script Arguments ############################################### |
if (len(sys.argv) != 3): |
sys.stderr.write("Invalid number of arguments.\n") |
sys.stderr.write("Usage: %s PORT_ADDRESS/0 REQUIERED_MHz\n" % (sys.argv[0], )) |
sys.exit(1) |
port = eval(sys.argv[1]) |
#### Sensor Configuration ########################################### |
cfg = config.Config( |
i2c = { |
"port": port, |
}, |
bus = [ |
{ |
"type": "i2chub", |
"address": 0x70, |
"children": [ |
{ "name":"clkgen", "type":"clkgen01", "channel": 1, }, |
], |
}, |
], |
) |
cfg.initialize() |
fgen = cfg.get_device("clkgen") |
sys.stdout.write("Frequency will be set to " + sys.argv[2] + " MHz.\r\n") |
fgen.route() |
time.sleep(3) |
fgen.recall_nvm() # Reload settings for 10 MHz |
time.sleep(3) |
fgen = cfg.get_device("clkgen") # Reopen CP2112 |
fgen.set_freq(10., float(eval(sys.argv[2]))) # Set frequency |
sys.stdout.write("Done.\r\n") |
sys.stdout.flush() |
sys.exit(0) |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/SDR_Record_jack.sh |
---|
0,0 → 1,8 |
#!/bin/bash |
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
#arecord -v --use-strftime -d720 -f dat -t wav -c2 /home/kaklik/Flyover_Svakov_%Y%m%d%H%M%S.wav >> /home/kaklik/record.log |
#arecord -v -f dat -t wav -c2 --max-file-time 3600 --use-strftime /mnt/Svakov/%Y/%m/%d/Radio_%Y%m%d%H%M%S.wav |
recordfile=/media/Radio_zaloha___/Svakov_HG/$(date +Radio_HG_%Y%m%d%H%M%S).wav |
#screen jack_capture -V -d 36 -c 2 -p alsa_in:capture* --filename $recordfile |
#screen jack_capture -V -c 2 -p alsa_in:capture* --filename $recordfile |
jack_capture -V -d 3605 -c 2 -p alsa_in:capture_1 -p alsa_in:capture_2 --filename $recordfile & |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/SDR_record_alsa.sh |
---|
0,0 → 1,3 |
#!/bin/bash |
#arecord -v --use-strftime -d720 -f dat -t wav -c2 /home/kaklik/Flyover_Svakov_%Y%m%d%H%M%S.wav >> /home/kaklik/record.log |
arecord -v -D hw:1 -f dat -t wav -c2 --max-file-time 3600 --use-strftime /mnt/Svakov_HG/%Y/%m/%d/Radio_%Y%m%d%H%M%S.wav |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/SDR_record.sh |
---|
0,0 → 1,2 |
#!/bin/bash |
pasuspender -- arecord -D hw:1,0 -v --buffer-time=500000 --use-strftime -d600 -f dat -t wav -c2 /mnt/ISS_Praha_%Y%m%d%H%M%S.wav >> /home/kaklik/SDR_record.log |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/frequency_log.py |
---|
0,0 → 1,78 |
#!/usr/bin/python |
# |
# Sample of measuring and frequency correction with ACOUNTER02A |
import time |
import datetime |
import sys |
from pymlab import config |
#### Script Arguments ############################################### |
if (len(sys.argv) > 3) or (len(sys.argv) < 2): |
sys.stderr.write("Invalid number of arguments.\n") |
sys.stderr.write("Usage: %s PORT_ADDRESS [REQUIERED_MHz]\n" % (sys.argv[0], )) |
sys.exit(1) |
port = eval(sys.argv[1]) |
#### Sensor Configuration ########################################### |
cfg = config.Config( |
i2c = { |
"port": port, |
}, |
bus = [ |
{ |
"type": "i2chub", |
"address": 0x70, |
"children": [ |
{ "name":"counter", "type":"acount02", "channel": 2, }, |
{ "name":"clkgen", "type":"clkgen01", "channel": 5, }, |
], |
}, |
], |
) |
cfg.initialize() |
print "RMDS Station frequency management test software \r\n" |
fcount = cfg.get_device("counter") |
fgen = cfg.get_device("clkgen") |
time.sleep(0.5) |
frequency = fcount.get_freq() |
rfreq = fgen.get_rfreq() |
hsdiv = fgen.get_hs_div() |
n1 = fgen.get_n1_div() |
#fdco = 0 |
#fxtal = 0 |
#regs = [0, 0, 0] |
#### Data Logging ################################################### |
try: |
with open("frequency.log", "a") as f: |
while True: |
now = datetime.datetime.now() |
if (now.second == 15) or (now.second == 35) or (now.second == 55): |
frequency = fcount.get_freq() |
if (len(sys.argv) == 3): |
regs = fgen.set_freq(frequency/1e6, float(eval(sys.argv[2]))) |
now = datetime.datetime.now() |
rfreq = fgen.get_rfreq() |
hsdiv = fgen.get_hs_div() |
n1 = fgen.get_n1_div() |
fdco = (frequency/1e6) * hsdiv * n1 |
fxtal = fdco / rfreq |
sys.stdout.write("frequency: " + str(frequency) + " Hz Time: " + str(now.second)) |
sys.stdout.write(" RFREQ: " + str(rfreq) + " HSDIV: " + str(hsdiv) + " N1: " + str(n1)) |
sys.stdout.write(" fdco: " + str(fdco) + " fxtal: " + str(fxtal) + "\r") |
f.write("%d\t%s\t%.3f\n" % (time.time(), datetime.datetime.now().isoformat(), frequency)) |
sys.stdout.flush() |
time.sleep(0.9) |
except KeyboardInterrupt: |
sys.stdout.write("\r\n") |
sys.exit(0) |
f.close() |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/SiliconLabs.rules |
---|
0,0 → 1,3 |
SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", MODE="0666" |
SUBSYSTEM=="usb_device", ATTRS{idVendor}=="10c4", MODE="0666" |
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/plot.gp |
---|
0,0 → 1,12 |
set terminal png size 800,640 |
set output "Frequency_time.png" |
set xdata time |
set timefmt "%s" |
set format x "%H:%M:%S" |
set key under |
set xlabel "Time" |
set ylabel "Freq deviation [Hz]" |
f0=140000000 |
plot "temperature.log" using 1:($3-f0) with linespoints title "CLKGEN01B 140 MHz" |
/Designs/Measuring_instruments/RMDS02C/SCH/RMDS02C_system.dia |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/SCH/RMDS02C_system.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/meteor_detector_Small.JPG |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/DOC/SRC/img/20140226_1107.JPG |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/DOC/SRC/img/20140226_1110.JPG |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/DOC/SRC/img/Sync_prototype.JPG |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/DOC/SRC/RMDS.en.tex |
---|
0,0 → 1,131 |
\documentclass[12pt,a4paper,oneside]{article} |
\usepackage[colorlinks=true]{hyperref} |
\usepackage[utf8]{inputenc} |
\usepackage[english]{babel} |
\usepackage{graphicx} |
\usepackage{pdfpages} |
\textwidth 16cm \textheight 25cm |
\topmargin -1.3cm |
\oddsidemargin 0cm |
\pagestyle{empty} |
\begin{document} |
\title{SDR meteor detector} |
\author{Jakub Kákona, kaklik@mlab.cz } |
\maketitle |
\begin{abstract} |
Construction of software defined radio meteor detector with possibility of advanced signal processing. |
\end{abstract} |
\begin{figure} [htbp] |
\begin{center} |
\includegraphics [width=80mm] {./img/meteor_detector_station.JPG} |
\end{center} |
\end{figure} |
\begin{figure} [b] |
\includegraphics [width=25mm] {./img/SDRX01C_QRcode.png} |
\end{figure} |
\newpage |
\tableofcontents |
\section{Technical parameters} |
\begin{table}[htbp] |
\begin{center} |
\begin{tabular}{|c|c|p{5cm}|} |
\hline |
\multicolumn{1}{|c|}{Parameter} & \multicolumn{1}{|c|}{Value} & \multicolumn{1}{|c|}{Note} \\ \hline |
Powering voltage for analogue part & $\pm$12V & 50mA \\ \hline |
Powering voltage for digital part & +5V & 300mA \\ \hline |
Bias of optional LNA & 9V & 500 mA maximum \footnote{Fused by 750mA on the reciver board} \\ \hline |
Frequency range & 0,5 - 200 MHz & Usually working at 143.05 MHz \\ \hline |
Gain & 90dB & Selectable by jumper and LNA configuration \\ \hline |
Self noise number & $<$ 30dB & \\ \hline |
\end{tabular} |
\end{center} |
\end{table} |
\newpage |
\section{Introduction} |
The detection of meteors by radio is most readily accomplished by a method known as "forward scatter". This technique usually exploits the existence of a VHF radio transmitter intended for some other purpose (such as historically analogue radio or TV broadcasting) and which is preferably situated some way beyond the optical horizon so that the direct signal does not desensitise the receiving equipment. The radio signal reflects mainly from the ionised meteor trail as it forms and dissipates, causing a brief signal to be heard on or close to the transmitter frequency. The trails form in the ionosphere (i.e., the upper atmosphere) at a height of about 100 $\pm$ 20 km. |
Direct reflection from the meteoroid itself is not so readily detected. Meteoroids are not necessarily reflective at radio frequencies, they are usually small (0.05 - 200mm) and they generally enter the ionosphere at supersonic velocities. Thus the direct signal is usually weak; and the initial Doppler shift is large, making it difficult to associate the signal with the transmitter. Sometimes however, a Doppler shifted signal is observed to slew onto or across the transmitter frequency at the beginning of the detection event. This is the reflection from the ball of plasma surrounding the meteoroid (as opposed to the trail left behind), and is known as the "head echo". |
The term "radar" is sometimes used to describe the forward scatter detection method. Note however, that 'radar' is an acronym for 'radio direction and ranging' and so, although distance and direction information can be extracted from data aggregated from an array of receivers, a single receiver installation does not constitute a radar system. A single receiver can only strictly report an estimate of the number of meteoroids which enter the ionosphere in the region illuminated by the chosen radio transmitter. Other interesting aspects of the meteor strike can be inferred from the recorded signals, but apparently obvious information, such as the relationship between signal strength and meteoroid mass is complicated by issues such as signal polarisation, trajectory and transmitter coverage. |
One advantage of radio detection is that it works when the sky is light or when the sky is dark but overcast. By choosing a sufficiently powerful host transmitter, it also possible to record meteors which are too faint for the human eye even in the darkest and clearest conditions. A figure of between 2 and 10 times as many meteors as can be seen by visual observation under ideal conditions is sometimes quoted; but this must depend on the transmitter power and radiation pattern. |
\section{Description of construction} |
This construction of radio meteor detector uses France GRAVES space-surveillance radar. The radar has transmitting power of several megawatts at frequency 143.05 MHz. |
\subsection{Antenna} |
The detector station usually uses modified ground plane antenna. Adjusted in angle of 30$^\circ$ to East this configuration seems to be optimal to detecting stations in the Czech Republic. |
\begin{figure} [htbp] |
\begin{center} |
\includegraphics [width=80mm] {./img/GP143MHz.JPG} |
\end{center} |
\caption{Antenna used at detection station} |
\end{figure} |
The received signal from antenna is amplified by specially constructed LNA. This step is needed for feeding the signal trough relative long (several metres) coax RG58. Construction of LNA01A is described on MLAB project site. |
\subsection{SDR receiver} |
The SDR receiver used is MLAB system SDRX01B direct sampling receiver. This receiver has ideal performance for UHF and lower band radioastronomy. So this receiver can be used even for radio meteor detection. |
\begin{figure} [htbp] |
\begin{center} |
\includegraphics [width=80mm] {./img/meteor-detector_receiver.JPG} |
\end{center} |
\caption{Example of meteor detector receiver setup} |
\end{figure} |
\begin{figure} [htbp] |
\begin{center} |
\includegraphics [width=150mm] {../../SCH/RMDS01C_system.png} |
\end{center} |
\caption{Schematic drawing of complete meteor detector} |
\end{figure} |
\subsection{Time synchronisation} |
Time synchronisation has crucial importance in any modern science measurement. There is possibility of using many synchronisation techniques. Such as NTP or GPS (see for our article at for our experiences) |
Suggested method for time synchronisation of a measuring station depends on level of desired information which would be obtained from meteor reflection event. |
For example: If we need hour count data only. We can use PC system time without any synchronisation. But if we have one more station and we would like to compare data with another stations then NTP syncing would be good choice. Highest level is trail parameters determination which need true radar signal processing and most precise time synchronisation which could be achieved by GPS receiver. |
\begin{figure}[htbp] |
\begin{center} |
\includegraphics [width=150mm] {./img/colorgram.png} |
\end{center} |
\caption{Example of measured hourly count of meteor showers} |
\end{figure} |
\section{Software setup} |
For simple PC based monitor station we are using SpectrumLab software with our configuration and detection script. |
Local oscillator of SDRX01B is a CLKGEN01B module with frequency tuning controller PIC18F4550v01A can be set up from PC or can be programmed for fixed start up frequency. If fixed start up frequency is correctly saved the only step for tuning the LO is provide power trough USB cable from PC and then press the RESET button of tuning microcomputer module. After that the LO shout be tuned on saved start up frequency. This frequency can be changed by |
\begin{thebibliography}{99} |
\bibitem{Spectrum_lab}{Spectrum Lab} |
\href{http://www.qsl.net/dl4yhf/spectra1.html}{http://www.qsl.net/dl4yhf/spectra1.html} |
\bibitem{Radio_meteor_detection}{Radio Meteor Detection} |
\href{http://www.gb2nlo.org/index.php/articles/meteordet}{http://www.gb2nlo.org/index.php/articles/meteordet} |
\bibitem{meteor_distance}{Meteor distance parameters} |
\href{http://www.amsmeteors.org/richardson/distance.html}{http://www.amsmeteors.org/richardson/distance.html} |
\end{thebibliography} |
\end{document} |
/Designs/Measuring_instruments/RMDS02C/DOC/RMDS.en.pdf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Designs/Measuring_instruments/RMDS02C/PrjInfo.txt |
---|
0,0 → 1,16 |
[InfoShortDescription.en] |
Radio Meteor Detection Station with GPS |
[InfoShortDescription.cs] |
Stanice pro radiovou detekci meteorů s GPS |
[InfoLongDescription.en] |
Radio meteor trail detection set. It is upgraded by GPS time and frequency synchronization to determining itner-station reflection variation and doppler shift. Station computer is single board ARM computer. |
[InfoLongDescription.cs] |
Set pro radiovou detekci meteorů. Je rozšířen o časovou synchronizaci a kmitočtovou stabilizaci LO k určení variací a doplerovského posunu odrazu přijatého několika stanicemi. Staniční počítač je jednodeskový ARM. |
[End] |