PDA

View Full Version : Measure the speed of electricity...



Bean
11-02-2011, 01:18 AM
I have been inspired by "Laser Developer" and have made a DMTD (Dual Mixer Time Difference) measurement system using two propeller boards.

One board is simply a generator. It generates two 1MHz square waves that are 90 degrees (250nSec) out of phase.

These two signals are fed into a second propeller board that will sample the two signals at 1MHz. But because the two boards have seperate crystals there will be (should be) a small frequency difference between the two boards. In my setup the difference between the two was 19ppM (19Hz @ 1MHz). There MUST be some difference between the two for the system to work.

First the two signals are interconnected using short wires of the same length. The system can then be zeroed by pressing a key in PST. Then one of the short wires is replaced with a long wire to be measured. The system will measure the actual phase delay caused by the time it takes the signal to travel the length of the wire being measured.

I have hacked this up in PropBasic, but I want to re-write it in spin to make it more generic for Propeller users.

I've tried this on two different setups (one at work and one at home) and it seems to work. I used a 19 foot piece of wire and the system said it was 22 ft (but I don't think electricty flows at exactly 1 ft per nSec).

If you want to try this out, I used P0 and P1 for the signals (don't forget to connect the grounds together too).

Let me know if you try this. If there is enough interested I'll do a little write-up for it.

P.S. If you prefer there is a spin version posted further down.

Bean

ctwardell
11-02-2011, 01:54 AM
Cool experiment. The speed of a signal through a wire will be less than the speed of light, so your "longer" result would be expected.
I believe the difference in signal speed vs. speed of light is called Velocity Factor. It would be a good experiment to try coax vs. a single conductor as the VF of coax is usually pretty significant, on the order of .8 or more.

It is amazing to see some of the folks on here like you that are good at putting ideas into practice.

C.W.

Bean
11-02-2011, 02:31 AM
C.W.
Thanks, yeah I guess I should have made the units "nSec" instead of "ft".
It would be a great experiment to measure the velocity factors of different cables.

Bean

Humanoido
11-02-2011, 06:26 AM
Bean, this is a great project! I can see some apps for it in the Big Brain from array to array or coded up could examine the connections from props. It could be a great diagnostic tool and a benchmark to measure parts of the hardware connections and various interfacing.

Heater.
11-02-2011, 06:47 AM
Wow, for a while now I have been pondering on how to measure the speed of light. Why? Well just because I think it's something I should be able to do. We it back in uni with big and complicated arrangement of a laser and rotating octagonal mirror. Seemed to me that with todays MCU's laser diodes and such we should be able to do it much more directly.
Perhaps you have the solution there. Just run the signal through a laser/photo diode set up.
Anyway the speed of signals through wires might be close enough for me:)

FriedV
11-02-2011, 10:33 AM
Great experiment, Bean!
My friend works as a director/professor at our German standars lab PTB where they are doing very high precision speed & time measurement.
If you look in their publications there are lots of very interesting things to be found. But more to the normal user environment, I would suggest to use
GPS stabilized oszillators for such experiments, because standard quarz oszilators are not very good in terms of jitter & stability.
http://www.jrmiller.demon.co.uk/projects/ministd/frqstd.htm
Cheers, Fried

prof_braino
11-02-2011, 12:09 PM
The numbers are registering speed of electricity through the medium, so there should be different reading for say copper and aluminum wire?

What does DMTD stand for? Google comes up with noise...

Toby Seckshund
11-02-2011, 12:43 PM
And the speed of light from Switzerland to Italy is different ...

Bean
11-02-2011, 12:55 PM
Here is the spin versions. The DMTD reciever has some notes at the bottom to explain how the measurements are done.

DMTD is Dual Mixer Time Difference

The reading are pretty jittery, but using long wires of CU and AL should show some difference in speed.

Bean



Wagon Wheels & Stobe lights -
Have you ever seen in old movies when a wild west wagon is moving and the wheels seem to be turning very slowly (or even backwards) ?
This is because the movie is a series of still picture frames taken at 24 frames per second.
If the spokes in the wheel rotate just enough so that a spoke is in almost the same place as a different spoke in the previous frame,
it will look like the spoke barely moved at all from one frame to the next.
The same effect can be seen by using a strobe light and a fan. By adjusting the speed of the strobe and/or fan, you can make the fan
appear to stop or move very slowly.

Aliasing & Downconverting -
Well the same thing can be done for digital signals. This is called "Aliasing". Anytime you sample a signal at a frequency less than
twice the frequency of the signal itself, you will get aliasing.
For example if you have a squarewave at 1MHz and you sample it at 1,000,100 it will appear to be toggling at only 100Hz (the difference
between the two frequencies). The interesting thing is that the duty cycle will be correct. If the 1MHz signal has a duty cycle of
30% then the 100Hz signal seen by sampling it will also have a duty cycle of 30%. This process of converting a frequency to a lower
frequency is called "Downconverting".

Time Expansion -
It could be said that by downconverting the fast signal to a much slower rate (but keeping the waveform shape) is expanding time.
We took a signal that lasted only 1uSec and transformed it into an identical signal that lasts for 10mSec (10,000 times longer).
Of course we haven't REALLY expanded time because the signals need to be repeating.

Measuring the speed of electricity -
We can use this time expansion to accurately measure a phase error too. If we take TWO 1MHz signals that have a phase error, and sample
them at the same time we get two signals that are the same duty-cycle and have the same phase error (in degrees) as the originals.
So if the use two signals with 90 degrees of phase error (250nSec @ 1MHz), when we measure the phase error in the downconverted signals
the phase error will still be 90 degrees, but 90 degrees of 100Hz is 2.5mSec.
We can measure this 2.5mSec time very accurately by counting the samples. By introducing an additional phase change (like using a
longer piece of wire for one of the two signals) this phase change can be expanded and measured. Since the phase change is expanded
by 10,000 times, a 1nSec (about 1 foot of wire) change at the inputs will result in a 10uSec change at the outputs.

Propeller implementation -
Since we cannot get EXACTLY 100Hz of difference just by using the propeller boards, we will take what we get by chance.
No two crystals will be exactly 5MHz. And between any two propeller boards there will most likely be a significant enough variance
that we will get reasonable result. However if you don't, try a different board. The crystals may be too close or too far apart
to get good measurements.

prof_braino
11-02-2011, 01:17 PM
Could the signals be made less jittery by using say precision oscillators? Not that I know anything about them, its just a term I've seen.
If the signal was not so jittery, could something approaching the accuracy of Laser Developer's chip be made with a couple props?

Measuring very fast events using a relatively slow clock seems like kind of cool thing that might be useful. I love this stuff!

RS_Jim
11-02-2011, 01:20 PM
Bean, Could this be made into a TDR? That could be a nice hand held cable tester.
Jim

Bean
11-02-2011, 01:44 PM
Could the signals be made less jittery by using say precision oscillators? Not that I know anything about them, its just a term I've seen.
If the signal was not so jittery, could something approaching the accuracy of Laser Developer's chip be made with a couple props?
Measuring very fast events using a relatively slow clock seems like kind of cool thing that might be useful. I love this stuff!

Yes, if you had two oscillators (TCXOs) that where about 10ppM apart (or VCTCXOs) that would be ideal.

Bean

Sariel
11-02-2011, 03:05 PM
Bean, Could this be made into a TDR? That could be a nice hand held cable tester.

Exactly my thoughts. Now I'm interested because I have been thinking of an el'cheapo homebrew TDR for a while. I have tried a couple ideas out, but I could never get it to work accurately enough to be field-usable. If I ever get the non-exsistant spare time, I would love to set this up and see it in action. *glares menacingly at the HUGE stack of paperwork on my desk*

Lawson
11-02-2011, 03:46 PM
Have you tried this code running at 5MHz with the PLL disabled? That might make the base clock signal cleaner.

Lawson

Bean
11-02-2011, 05:02 PM
If you average consecutive readings the values are a lot more stable.
I used 16 averaged together and the results varied only by a couple tenths of a nSec.

Bean

prof_braino
11-03-2011, 01:00 PM
By TDR do you mean http://en.wikipedia.org/wiki/Time-domain_reflectometer ?

These undefined SF-TLA's make me crazy!

Sariel
11-03-2011, 01:00 PM
Been doing some heavy thinking on this, and how TDR's work. Wouldn't it be possible to use this as a base program where you enter in the known length of the cable, it does, say, 20 consecutive measurements to overcome the inconsistencies Bean noticed, average them out, and compares that data to the known cable length to output the fault location? The biggest problem I can think of is you would need a good storage medium for it, and compile lots of data on the cables you test to find an an average signal propagation speed of known good samples. There are a lot of factors to think about, and I would think that any number of them can bring about WILD inaccuracies... everything from cable and crystal temperature fluxuations to power supply spikes. I would think It would have to be one heck of a good design in order to have any kind of reliability.


By TDR do you mean http://en.wikipedia.org/wiki/Time-domain_reflectometer (http://en.wikipedia.org/wiki/Time-domain_reflectometer) ?

And yeah, Prof_Braino. Thaat's exactly what I'm talking about.

prof_braino
11-03-2011, 01:15 PM
The laser time of flight unit that Bean referenced as inspiration uses dozens to hundreds of samples to get accurate reading.
The fluctuations are small in the short term, so these average out. I think that you would want to limit sample taken to a single measurement session, as the large drift occure over the long term, in that case you would be measure the long term drift of the crystal and other parts of the system.

I would think one could store reading in EEPROM and transfer to PC later, or just store directly to SD.

The point of interest in this application would be the reflected signal, and the chanllenge would be to fliter out the reflection from other noise, is that correct?

This is a cool application, and might turn out to be useful!

Sariel
11-03-2011, 01:33 PM
Yeah your real measurements are taken from the time it takes the reflected signal to come back to you, with regard to cable length. the filtering would have to be VERY precice because minor intermittant failures on the professional models can and will show up as smaller peaks on the o'scope, as opposed to full breaks that are quite visible. I imagine it would be tough to know the difference in a lot of cases.


I would think one could store reading in EEPROM and transfer to PC later, or just store directly to SD.

When I was talking about storage, I was not implying the cable under test, I was meaning some sort of database with the average signal propegation for your stock of cables. Like for our purposes here, say 14ga wire made of copper would have a very different signal propegation than 30ga. nickel plated wire, and that would have to factor in to your calculations. I am by no means a math whiz, and would have to call in some big guns to help out with this, but I can't help but think it would work... but.. to repeat myself, accuracy would be my biggest fear. High-dollar TDR setups can detect faults down to the centimeter over miles and miles of cable, and the already inherant errors Bean saw is the biggest turn-off. High precision xtals would help, but not an end-all solution to it.


C'mon Bean. I know you are interested in this, where's your $0.02? :tongue:

Bean
11-03-2011, 02:24 PM
The number of samples is quite high. If you are downconverting to 100Hz you would need 10,000 (1,000,000 / 100) samples.

I tried it without the PLL (5 MHz instead of 80 MHz) and it didn't seem to make much difference.

Here is the latest version of the receiver with averaging and better edge handling. Before I started measuring after any jitter, now I start measuring at the first edge regardless of how much jitter comes after it.

Bean



' DMTD receiver for use with DMTD transmitter
' Receives two 1MHz square waves on P0 and P1
' The waveforms are normally offset by 90 degrees (250nSec)
' To create a phase shift, replace one of the wires on P0 or P1 with a longer wire.
' If you get a negative phase shift time, use the other wire.
'
' NOTES:
' This method relies on a small frequency difference between the clock of the transmitter
' and the receiver. If you are having trouble, try a different board for one or the other.
'
' see further information at bottom of this file...
'
CON
_ClkMode = XTAL1 + PLL16X
_XInFreq = 5000000

OBJ
pst : "Parallax Serial Terminal" ' Serial to PC
f : "Float32" ' IEEE-754 32-bit Floating Point Math
fp : "FloatString" ' Format 32-bit Floating Point Value for display

VAR
LONG newValue
LONG value
LONG sum
LONG offset
LONG divisor

PUB __Program
pst.Start(115200) ' For PC communication
f.Start ' Start the floating point math library
fp.SetPositiveChr(" ") ' Don't show '+' for positive numbers

value := -1 ' No value measured yet
offset := 0 ' No offset set yet
waitcnt(80_000_000 + cnt) ' Wait 1 seconds for things to settle
CogNew(@Init, @newValue) ' Start measurement cog

repeat ' Repeat forever
sum := 0 ' Start with sum of zero
repeat 10 ' Average 10 readings
repeat until newValue > -1 ' Wait for a new measurement
if ina[31] == 0 ' While waiting, see if user press a key to set new offset
offset := 0 ' If they DID press a key, set offset to zero (not set)

value := newValue ' Get measurement value
newValue := -1 ' Set value to no measurement (so we don't read it again)
if offset == 0 ' If offset is NOT set
offset := value ' Use this value for the offset
divisor := f.fdiv(f.ffloat(value), 250.0) ' Calculate nSec divisor

value-=offset ' Subtract offset from value
sum+=value ' Accumulate sum of values

sum:= sum / 10 ' Compute average of sum
sum:=f.fdiv(f.ffloat(sum), divisor) ' Divide to get nSec
pst.str(fp.FloatToString(sum))' Display value
pst.str(string(" nSec")) ' Display units
pst.char(13) ' Display one measurement per line



DAT
' PASM routine to measure the time expanded phase difference
' Store measurement in "newValue"
'
org 0
Init mov time,cnt ' Setup initial waitcnt value cnt+511
adds time,#511

WaitPhase waitcnt time,#80 ' Sync 1MHz (80 counts @ 80MHz)
mov temp,ina ' Read inputs
and temp,#3 ' Mask off bits we are interested in
cmps temp,#2 WZ, WC ' Are we in phase 2 ?
IF_NE jmp #WaitPhase ' No, jump back
Loop waitcnt time,#80 ' Sync 1MHz (80 counts @ 80MHz)
mov temp,ina ' Read inputs
and temp,#3 ' Mask off bits we are interested in
cmps temp,#1 WZ, WC ' Are we in phase 1 ?
IF_NE jmp #Loop ' No, jump back
mov _value,#0 ' Yes, zero loop counter
Wait waitcnt time,#80 ' Sync 1MHz (80 counts @ 80MHz)
mov temp,ina ' Read inputs
and temp,#3 ' Mask off bits we are interested in
adds _value,#1 ' Add 1 to counter
cmps temp,#1 WZ, WC ' Are we in phase 1 ?
IF_E jmp #Wait ' Yes, keep waiting (and counting)
cmps _value,#100 WZ, WC ' No, is the value =< 100 ?
IF_BE jmp #Wait ' Yes, Loop back (jitter in edges)
mov temp,par ' No, write value to HUB so spin code can read it
wrlong _value,temp
jmp #WaitPhase ' Repeat forever

In0 LONG 1 << 0
In1 LONG 1 << 1

time RES 1
temp RES 1
_value RES 1

{{
Wagon Wheels & Stobe lights -
Have you ever seen in old movies when a wild west wagon is moving and the wheels seem to be turning very slowly (or even backwards) ?
This is because the movie is a series of still picture frames taken at 24 frames per second.
If the spokes in the wheel rotate just enough so that a spoke is in almost the same place as a different spoke in the previous frame,
it will look like the spoke barely moved at all from one frame to the next.
The same effect can be seen by using a strobe light and a fan. By adjusting the speed of the strobe and/or fan, you can make the fan
appear to stop or move very slowly.

Aliasing & Downconverting -
Well the same thing can be done for digital signals. This is called "Aliasing". Anytime you sample a signal at a frequency less than
twice the frequency of the signal itself, you will get aliasing.
For example if you have a squarewave at 1MHz and you sample it at 1,000,100 it will appear to be toggling at only 100Hz (the difference
between the two frequencies). The interesting thing is that the duty cycle will be correct. If the 1MHz signal has a duty cycle of
30% then the 100Hz signal seen by sampling it will also have a duty cycle of 30%. This process of converting a frequency to a lower
frequency is called "Downconverting".

Time Expansion -
It could be said that by downconverting the fast signal to a much slower rate (but keeping the waveform shape) is expanding time.
We took a signal that lasted only 1uSec and transformed it into an identical signal that lasts for 10mSec (10,000 times longer).
Of course we haven't REALLY expanded time because the signals need to be repeating.

Measuring the speed of electricity -
We can use this time expansion to accurately measure a phase error too. If we take TWO 1MHz signals that have a phase error, and sample
them at the same time we get two signals that are the same duty-cycle and have the same phase error (in degrees) as the originals.
So if the use two signals with 90 degrees of phase error (250nSec @ 1MHz), when we measure the phase error in the downconverted signals
the phase error will still be 90 degrees, but 90 degrees of 100Hz is 2.5mSec.
We can measure this 2.5mSec time very accurately by counting the samples. By introducing an additional phase change (like using a
longer piece of wire for one of the two signals) this phase change can be expanded and measured. Since the phase change is expanded
by 10,000 times, a 1nSec (about 1 foot of wire) change at the inputs will result in a 10uSec change at the outputs.

Propeller implementation -
Since we cannot get EXACTLY 100Hz of difference just by using the propeller boards, we will take what we get by chance.
No two crystals will be exactly 5MHz. And between any two propeller boards there will most likely be a significant enough variance
that we will get reasonable result. However if you don't, try a different board. The crystals may be too close or too far apart
to get good measurements.
}}

prof_braino
11-03-2011, 03:34 PM
@Bean - Can I use your explanation of down-converting and time expansion in the DS00VQ100 documentation?

Bean
11-03-2011, 03:58 PM
@Prof_Braino - Sure you may use it as you like. You may modify it also if you wish. I don't claim it to be 100% accurate though...

Bean

Humanoido
11-03-2011, 04:09 PM
I originally measured the speed of light using the planet Jupiter and its moons.

http://Galileo.phys.Virginia.EDU/classes/109N/lectures/spedlite.html

It could be helpful as a baseline reference..

Bean
11-07-2011, 09:08 PM
I am working on making this work on a single Propeller.
So far it looks good, and the readings are more stable.

I should have something to post tomorrow, but right now it appears able to have about 50 picoSecond resolution. But I just got it working a couple minutes ago, so that may change.

This will be quite a nice demo of the capabilities of the Propeller chip.

Stay tuned...
Bean

Dr_Acula
11-07-2011, 11:49 PM
Humanoido post #23 - that is an excellent series of lectures - thankyou!

jmg
11-08-2011, 12:27 AM
I am working on making this work on a single Propeller.
So far it looks good, and the readings are more stable.


Interesting, how do you get around the need for 'all timeslot sampling', also known as two non-locked frequencies ?

'NOTES:
' This method relies on a small frequency difference between the clock of the transmitter
' and the receiver. If you are having trouble, try a different board for one or the other.
'
"

Bean
11-08-2011, 01:31 AM
jmg,
I'm trying to use the video generator, but it's not working too well.
Initially I was getting nice steady values, but they seem to jump large amounts. I guess because even though the video generator is creating a different frequency it is still phase locked to the crystal.
I'm going to try dithering the video frequency and see if that helps.

Bean

jmg
11-08-2011, 05:11 AM
jmg,
I'm trying to use the video generator, but it's not working too well.
Initially I was getting nice steady values, but they seem to jump large amounts. I guess because even though the video generator is creating a different frequency it is still phase locked to the crystal.
I'm going to try dithering the video frequency and see if that helps.


Why not add a simple device like a 74HC4060/LV4060, which has an oscillator and divider ?
Two crystals are always going to give a better result, if you want fractions of a ns averaging.

Bean
11-10-2011, 12:15 PM
Well the single board experiment is a bust. Doesn't look like it is possible.
Oh well. I tried....

Bean

Duane C. Johnson
11-10-2011, 03:55 PM
Just a bit of nit pick here:
Technically the velocity of electrons in the wire move very slowly.
Something like 1/2" per hour.
It's the wave through them that moves fast.
Nit pick off:
Duane

Kevin McCullough
11-10-2011, 09:59 PM
The electrons bounce and flow really fast all the time randomly throughout the wire (because the metal is above absolute zero) - their velocity is pretty fast. A chunk of copper has bazillions of electrons flowing all around between all the different atoms while it's just sitting there, but they only start to have a NET velocity or "drift" when we apply a voltage. It's the net drift of these electrons (under the influence of an electric field) from one point to another that is very slow. The net drift is slow because they are constantly bouncing all around in a random fashion - they don't have any sort of straight shot path in the direction they are being influenced before they slam and bounce into another atom (in contrast to something like a vacuum tube in which electrons are pretty much unimpeded). It's really the electric field we are observing which propagates quickly through a circuit. The electrons spend most of their time rapidly bouncing around (rapid velocity), but their net velocity is a slow drift through the circuit.

jmg
11-11-2011, 10:05 AM
Well the single board experiment is a bust. Doesn't look like it is possible.
Oh well. I tried....


Did you try a 4060 (or similar SO8 74HCT6323, for lower divide ratios) ?
Also, by my maths, you need a ppm difference in frequencies, that allows all time-slots to be covered in the sample time.
( otherwise your reading is less stable, and more quantized)

So some deliberate capacitor skewing will be beneficial, to get some tens of ppm offset.

prof_braino
11-11-2011, 09:08 PM
net drift of these electrons

Thanks for providing detail on this. I tend to forget the "like water in a pipe" comparison is just a model.

What about the "1/2 per hour" estimate? How does one determine the actual "net drift"? Is by statistics?

Duane C. Johnson
11-11-2011, 10:22 PM
http://en.wikipedia.org/wiki/Speed_of_electricity#Electric_drift
http://en.wikipedia.org/wiki/Drift_velocity#Numerical_example
Duane

Kevin McCullough
11-12-2011, 07:45 AM
Hey Duane, thanks for finding the Wikipedia links. It's been a few years since I've seen those equations, so that was a nice refresher!

prof_braino
11-12-2011, 01:47 PM
"... At any point in space, the electric field corresponds not to the condition of the electric energy flow at that moment, but to that of the flow at a moment earlier. "

I can feel my brain gettting bigger!!!

Thanks!

jmg
02-05-2012, 08:36 PM
I should have something to post tomorrow, but right now it appears able to have about 50 picoSecond resolution. But I just got it working a couple minutes ago, so that may change.
...
Stay tuned...

Another thread reminded me of this - Did you ever get more measurements on the usable ps resolution, and what sample counts are needed ?

It seems to me you can predict the measurement samples needed, and the "virtual timer" LSB, and perhaps even vary those to suit users requirements ?

Doing some maths on your earlier values of 1MHz and 19ppm, we have a 'time walk' of ~18.9996ps per cycle, which gives 52632.578 samples to cover all time-slots in a 1us aperture.
If you are measuring phase, this also gives a ceiling on 'run lengths' per phase

cavelamb
02-05-2012, 11:24 PM
Wow, for a while now I have been pondering on how to measure the speed of light. Why? Well just because I think it's something I should be able to do. We it back in uni with big and complicated arrangement of a laser and rotating octagonal mirror. Seemed to me that with todays MCU's laser diodes and such we should be able to do it much more directly.
Perhaps you have the solution there. Just run the signal through a laser/photo diode set up.
Anyway the speed of signals through wires might be close enough for me:)

In 1849, Armand Fizeau sent a beam of light through a rotating wheel with a large number
of teeth around the outside.
A mirror on the other side reflected the beam each time a gap appeared in the path of the
light. Fizeau realized that if the wheel rotated fast enough, the return beam would be blocked
by the next tooth as it came around. So he varied the speed of the wheel until the reflected
beam disappeared, performed a bit of math, and got a result of 315,000 km/second
(195,732 miles/second)—certainly in the ballpark. Meanwhile, Foucault was working on a different but equally clever technique, which he
demonstrated the following year. Foucault’s method was to shine a sharply focused beam
of light onto a rotating mirror, and from there onto a fixed mirror. Once the light hit the fixed
mirror, it bounced back onto the rotating mirror and then back toward the source.

But because the mirror was rotating, the angle at which it was positioned had changed slightly
by the time the beam made its return trip. Consequently, the reflected beam did not line up
precisely with the original. Foucault could easily measure the angle between the original light
source and the reflected beam, and along with known constants (the distances between the
various surfaces and the speed of the mirror’s rotation), it was a matter of a few straightforward
calculations to convert that small angle into a representation of speed. Using this technique,
Foucault produced a measurement of 298,000 km/second (185,167 miles/second), which is
shockingly close to the modern measurement of 299,792 km/second (186,282 miles/second),
keeping in mind that the latter figure applies only in a vacuum; light travels more slowly in air.



As for the tuning fork…Foucault used this to regulate the speed of the rotating mirror.
The apparatus that turned the mirror made a sound that varied with its speed; when the sound
exactly matched that of the tuning fork, Foucault knew precisely how many revolutions per
second it was making.


http://itotd.com/articles/284/measuring-the-speed-of-light/

g3cwi
02-06-2012, 10:56 AM
One easy way of measuring the speed of "light" is to use the network of chirp sounders around the world. These are radio transmitters that transmit across a wide range of frequencies (chirp) and are locked to GPS. Using them, it is easy to measure the time of flight of the radio wave.

http://www.qsl.net/zl1bpu/IONO/chirps.htm

I am sure that this could be the start of a nice Propellor application for someone!

They take about 138ms to go right round the earth and on a good day I have seen three complete circuits.

Regards

Richard