Satellite Imagery An Unusual Approach to Introducing Physics A Princeton University “Freshman...
-
Upload
faith-gent -
Category
Documents
-
view
218 -
download
0
Transcript of Satellite Imagery An Unusual Approach to Introducing Physics A Princeton University “Freshman...
Satellite Imagery
An Unusual Approach to Introducing PhysicsA Princeton University “Freshman Seminar” created by Dan Marlow and Eric Prebys
The Problem
Try as we might, we have a hard time teaching students: Physics can be fun. Physics can be relevant. Physics can be intuitive.
Perhaps one problem is that by focusing on minute details, the students often miss the “big picture”.
The Idea
Build a class which revolves around a single project, which the students follow from beginning to end.
Introduce necessary physics concepts along the way.
For a change, concentrate on breadth, rather than depth.
Why focus on weather satellites?
Although it sounds like an obscure hobbyist’s niche, this topic will allow us to highlight a wide variety of basic physics topics, including… Newton’s laws and Kepplerian orbits (rocket and satellite
motion). Basic optics (image formation) Electromagnetic waves (signal transmission) Signal encoding (amplitude modulation, frequency
modulation) Fundamental electronics (construction of the FM receiver) Computerized data acquisition and analysis (decoding the
signal and displaying the picture) Dynamics of weather (convection, Coriolis force, etc).
How do weather satellites work?•Weather satellites have been in use since the early 60’s. We are primarily interested in those operated by the National Oceanographic and Atmospheric Administration (NOAA).
•These travel in a low polar orbit, remaining in a fixed plane as the earth rotates beneath them. With each orbit, they see a new “swath” of the earth below them.
• Images are broadcast “real time”, so people below can receive images from their part of the world.
Light levels from surface
2400 Hz AM signal
137.5 MHz FM signal
APT transmission format
A-sync: 7black-white cycles @ 1040 Hz
B-sync: 7black-white cycles @ 832 Hz
No vertical sync on ARPT pictures
Telemetry information
Visible Image IR Image
Receiving the satellite signals
The students constructed antennas to receive the FM signals from the satellites which are overhead. These will be placed on the roof of Jadwin hall.
They also constructed an FM demodulator to convert this signal into a 2400 Hz AM signal, which goes to the sound card of a PC (more about this later..).
What is a “freshman seminar”?
At Princeton, freshman seminars are special small courses, open only to freshman by application.
The idea is that they are small and and involve close interaction with faculty.
In most cases, faculty receive no credit for teaching these courses, so they are always a “labor of love”.
Although they fall outside the standard curriculum, most do fulfill some sort of “distribution requirement” - in our case, one of two required semesters of a science with a lab.
Format of the course…
The course was nominally one 3 hour lecture and one 3 hour lab each week.
In fact, the “lecture” was usually 1-1/2 hours, after which we would move to the lab room and do practical demonstrations and pedagogical exercises.
The lab was taken up primarily with the construction of the radio and the software. Students had keys and were free to do these things at their leisure.
Approximate course syllabus
Week 1- Intro, Overview, Ohm’s Law Week 2- Frequency Domain, RLC Circuits, Resonance. Week 3- Radio Spectrum, Receiver components, modulation Week 4- Transistors, Amplifiers, Oscillators, Mixers Week 5- Practical details of receiver Week 6- Orbital mechanics Week 7- Maxwell’s eqns., EM waves, antennas Week 8- Image acquisition and decoding Week 9- Blackbody radiation, Image interpretation Week 10- Dynamics of weather (convection, Coriolis force, etc).
Image interpretation Week 11- APT telemetry data, pixel remapping, false color, more
advanced image tools. Week 12- Software issues, some details of practical electronics
design and fabrication.
Lecture Example: Resonance
If you push someone on a swing, you will obviously be most effective if you apply force at the same point each time the swing goes by
…in other words, it the frequency of the driving force is the same as the natural frequency of the swing.
Lecture Example: Resonance in RLC Circuits
R
L
tV
ftVtV
sin
2sin)(
0
0
0LC
1at 0
1)( reactance Total
CLXXX CL
minimum22 XRZ
Lecture Example: Signal Multiplication (Heterodyning)
If we multiply two signals, we use the relationship
yxyx
yx
coscos2
1
sinsin
We see the sum and the difference of the two signals!
Decoding the signal
For much of the course, students could use a canned freeware program (WXSAT) to decode the image.
As an exercise, the students also had to write their own program to decode the signal.
This was done in the Java programming language, with some utility routines which we provided.
t
tyyyyA
sin
cos2 1021
20
t
y
t
Demodulation algorithm….
Discrete samples
A student program...
//// Example of how to read int a wave file in chunks//
import java.io.*;import java.lang.*;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;
public class Orionp4 { // Here are some constants which will be used by the // programs static final int BLOCKSIZE=1000; // Amount of data to read in at a time static final double CARRIER=2400.; // carrier frequency static final double TIMEPERLINE=.5; // time per line static final int PIXELSPERLINE=1040; // pixels per line static final int DUMPSIZE=5; // amount of data to dump // // This is the amount of data to read in pixelate data // // Constants for use by image generating routine static public final int XSIZE=1040; // Width of image static public final int YSIZE=0; // height of image
public static void main(String [] argv) {SatWaveFile wf = new SatWaveFile(); // This does nothingif(!wf.chooseFile()) { System.err.println("No .wav file specified"); System.exit(-1);}// The open routine opens the file, reads in and decodes// the header. If there's any problem, it returns false.if(!wf.open()) { System.err.println("Error opening .wav file."); System.exit(-2);}// If here, then file found, opened, and looked OK.// Get some of the file paramtersString fileName = wf.getFileName();int byteCount = wf.getByteCount();
int sampleRate = wf.getSampleRate();System.out.println("Selected file: "+
fileName+", Byte Count: "+ String.valueOf(byteCount)+ ", Sample Rate: "+ String.valueOf(sampleRate));
// Calculate some useful stuff// Sampling time stepdouble deltaT = 1.d/sampleRate;// Time between pixelsdouble pixelDeltaT = TIMEPERLINE/PIXELSPERLINE;// Total number of samples (two bytes per sample)int nSamples = byteCount/2;// Total number of pixels (more than one sample per pixel)int nPixels = (int) (nSamples*deltaT/pixelDeltaT)+1;// Total number of linesint nLines = (int) (nPixels/PIXELSPERLINE);// make an array to load with pixelsint amplitudes[] = new int[nPixels];// Constant used by amplitude demodulator (known phase)
final double beta = (6.28)*(2400)*(deltaT); //
//// Now we're going to read int the data in blocks. We'll// need to be careful to keep track of the actual sample// number AND the previous sample (to demodulate)//int iSample = 0;double y0 = 0.; // initialize previous sample to zero
while(iSample<nSamples) { // Read in a block of data and loop over it int samples[] = wf.getRawData(BLOCKSIZE); int nRead = samples.length; // Number of samples read in for(int i=0; i<nRead ;i++) {
double t= iSample*deltaT; // The time to this pointdouble y1 = samples[i]; // the value of this sample//// At this point in the loop y1 is THIS sample, and y0 is// the PREVIOUS sample. We can use to demodulate.// Demodulating the signal:
int a = (int) ((Math.sqrt((Math.pow(y1,2))+ (Math.pow(y0,2))-2*(y0)*(y1)* (Math.cos(beta))))/(Math.sin(beta)));
// Calculate the pixel number associated with this sampleint iPixel = (int) (t/pixelDeltaT);amplitudes[iPixel] = a;//// Now we increment the sample counter and set it up// so on the next time through the loop, THIS is y0y0 = y1; // Set for the next interationiSample++;
}}//// By the time we're out of this loop we've filled the// "amplitudes" array and can use it to make an image//System.out.println("This value of the last amplitude is "+
String.valueOf(amplitudes[nPixels-1]));
// First we need to create a Frame to put the panel intoFrame f = new Frame(" Here it is! "); // Frame to put image// This bit of code makes it so the program will exit// when the "X" button is hitf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}});//// Fill an array with increasing pixel values// This will fill with increasing intensity from the upper// left to lower right//
int amps[]=new int[XSIZE*YSIZE];for(int iy=0;iy<YSIZE; iy++) { for(int ix=0;ix<XSIZE; ix++) {
int k=iy*XSIZE+ix; // Calculate a linear position in the // arrayamps[k]=ix+iy;
}}//// Use the SatImagePanel class to turn these pixels into// an image.SatImagePanel image = new SatImagePanel();
// the "makeGrayPixels" method will generate// a grayscale image whose intensity is proportional// to the amplitude
image.makeGrayPixels(amplitudes,0,XSIZE,YSIZE);
//// Add it to an image and displayf.add(image);
f.pack();f.setVisible(true);
}
public class Sat {//------(CUT)--------- public static void main(String [] argv) { SatWaveFile wf = new SatWaveFile(); // This does nothing //-------(CUT)----------- while(iSample<nSamples) { // Read in a block of data and loop over it int samples[] = wf.getRawData(BLOCKSIZE); int nRead = samples.length; // Number of samples read in for(int i=0; i<nRead ;i++) { double t= iSample*deltaT; // The time to this point double y1 = samples[i]; // the value of this sample // int a = (int) ((Math.sqrt((Math.pow(y1,2))+ (Math.pow(y0,2))-2*(y0)*(y1)* (Math.cos(beta))))/(Math.sin(beta))); // Calculate the pixel number associated with this sample int iPixel = (int) (t/pixelDeltaT); amplitudes[iPixel] = a; y0 = y1; // Set for the next interation iSample++; } } SatImagePanel image = new SatImagePanel(); image.makeGrayPixels(amplitudes,0,XSIZE,YSIZE); //---------(CUT)---------- }}
We provide routines to read wave file, and display an image.
Students demodulate signal to generate pixels
Shortcomings of simple program
More samples than pixels leads to “aliasing” (banding effect)
No horizontal synchronization
Some extra credit...
For extra credit, students could add pixel averaging
If they were really motivated, could add sync finder
In the end, a very nice picture is obtained.
Interpreting the images
The satellites simultaneously transmit visual and infrared images. The visual data produces a black and white image
The infrared information can be added in the form of false color. This can be used to estimate the surface temperature as well as the water content of clouds and underlying precipitation.
By observing the motion of clouds over time, one can get an idea of the prevailing winds and major fronts.
The class at work..
Kalid Azad working on his radio
Orion Crisafulli building his antenna
Gabe Fossati working at the computer
Gabe Fossati and Atul Pkharel mounting an antenna on the roof.
How did the class go?
12 Students took the course. They ranged from potential physics majors to humanities students who were terrified of the “ST” requirement.
The course turned out to be very adaptable More technically-minded students enjoyed the radio and
programming aspects More “right-brained” students really liked manipulating
and interpreting the images. All reviews were good!
Students loved the hands-on aspect (“Do I really get to solder?”)
They generally felt “empowered” by the concrete nature of the topic.
How much did they really learn?
This sort of thing certainly won’t replace a rigorous curriculum; however
Most students commented that they had a much better feeling for the “big picture” of several physics topics.
Significantly, one student who has gone on to major in physics, has commented repeatedly that now he “understands the point” of several of the advanced topics. This was, really, our goal.