Friday, April 27, 2007

Completed Noise Sources




The low band version of the Sabin Noise Source from the 2007 ARRL Handbook (Schematic on 25.28)





And from EBay, the Elgenco 602A Gaussian noise generator.
This needed a repair to the power connection. Its output was verified with the ADC_Analyzer software. may need further work on its VRMS meter, but schematics are hard to come by.

Test Equipment

The AD56645 14 Bit A/D converter takes 105 mega samples a second, which implies a Nyquist limit of 52.5 MHz.
In actual sampling operation the 2 LSBs are ignored. The output of the A/D converter is can be saved to a comma delineated Excel file 16,384 samples at a time, stored in 16 bit range.

The oscilloscope is a Tektronix 2230 100 MHz job with a nifty digital storage feature that will take 1K or 4K of samples (from Ebay). Its sampling rate is 20 mega samples a second.


Since the scopes visual mode is faster than the software ADC version, and the ADCs sampling rate is faster than the scopes sampling rate, the pair of them are useful in conjunction.

Friday, April 20, 2007

Gave my research presentation today...

At the 15th annual NEIU Student Research and Creative Activities Symposium.

My research was to create and test a noise generator for testing Digital Filters.

I had never been to the Symposium and it was an amazingly fun time. I got to meet alot of outgoing and interesting people doing very fun stuff.

It was cool to see how people appreciated different aspects of the project depending on what their domain of expertise was.

I got a few questions about use for noise generators in radio astronomy. That is definantly a use, this research paper on Jovian emmissions used the same thermionic diode that was in one of the noise generators I worked on.

I also got a question about the amplification necessary. I skipped over that in my presentation, due to only having 15 minutes to talk, but it was a HUGE problem to amplify the noise enough to sample it (especially over a wide bandwith). I used THREE of the Mini Circuits GVA-84+ amplifiers with around 24 dB of gain each, PLUS an Analog Devices AD8351 amplifier with 26dB of gain. for a total of 98(!!!!) dB of gain. And this STILL didn't full scale my Analog to Digital Converter. (which had a negative effect on my FIPS tests, but I ran out of time to get more amplification before presenting).

The amplifiers have basically 4 components. Input blocking capacitor and and output blocking capacitor that have to be of very high quality (no parasitic inductance, high purity materials). There is an RF Choke working as a voltage pull up and it also has to be of high quality (no parasitic capacitance). The RFC is a fairly big piece of high permiability core with very little wire, to minimize group delay and parasitic capacitance. By using a large core, it stays away from saturation and still looks linear. If any of these aren't functioning near there theoretical limits, it will limit our bandwith. The last part is the amplifier itself, which is usually electrically simple, but employs very fancy physics for the transistors. The Mini Circuits amplifiers use an InGaP HBT technology, and the Analog Devices amp uses an "advanced silicon bipolar process."

I also got a question the FIPS tests. To go into a little more detail, the Monobit test asks: If our numbers resulted from flipping a coin, is the coin neutrally balanced?

The Poker test asks: Given our four bit chunks, Do we get equal distribution of the possible "hands."

The Short Runs test asks: Do our numbers correspond to our expected statistical distrobution? (I haven't calculated what type of distrobution the expect yet.)

The Long Runs tests: Do we have values OUTSIDE our expected distrobution.


All in all, it was very thrilling time.

Friday, March 23, 2007

Filament Power Control Installation.


The filament power control was mounted after the rheostat was tested for overheating.

Also created a Faraday cage to isolate the signal elemants from RF interference.

Wednesday, March 21, 2007

Filament power control

Installed Rheostat

Today my father and I went to an undisclosed location in the western part of the state, to buy this rheostat:


The rheostat is rated at 10 Ohms and 25 watts. In circuit this provided us with a current range across our filament from 0.5 to 1.4 Amperes. This is great since 1.6 amperes is the max current recommendation in the Sylvania datasheet.


Using a non-contact pyrometer we tested the rheostat knob for heating...

10:32 83 degrees (Room temperature for our third floor apartment with radiator heat!)

10:35 87 degrees.


This is fine, as Sylvania only recommends using the tube in five minute bursts.

While the rheostat is lossy in terms of power it has the benefit of adding only random noise, whereas a transistor under (op-amp) control could add noise from its feedback control system that could pollute our noise with causal signals.

I also installed a shielded tube socket without screw terminals for better signal quality. An ebay order came with tubes for a possible thermionic noise pre amp. They were previously used by silent key Billy G. Orock, Sr. (W7GSY) and I hope he approves of their new home.

Tuesday, March 20, 2007

RFCs





This is the filament RF Choke. This is a high current, low potential conduction path, is a 114A size toroid in 43 mix with 10 turns of 16 guage litzendraht wire. This measures at 110 microhenries




This is the plate RF Choke measuring at 1 milliHenry. It has very low current at very high potentials, and was purchased from surplus. Note the difference in windings, with very many turns of thin wire around an air core. Next to it is a .01uFd Silver Mica DC blocking capacitor. It is soviet military surplus and features high speed, low leakage and high stability.

Wednesday, March 14, 2007

Wow.



It's like a little sun in there.

Monday, March 12, 2007

More noise source work

DC Block and RF Choke from the noise tube to its SMA connector, as well as amplifier power.


The Red meter should show about 120 Volts from batteries for our high (Plate) voltage.
The Green meter will show the heater current. This is important to not burn out the tube and will be controlled by a Rheostat.
The Analog meter will show the Plate current.

Common Mode and Differential mode suppression ferrites for the amplifier. This will help conserve its supply noise rejection. The single wire beads are for the Common mode, and the dual bead is for the Differential mode.

Sunday, March 11, 2007

Suitability of filter test input.

In the end, digital filters are manifest entities that are expected to perform to some standard. This performance can be affected by sampling errors, round off errors and implementation errors. In order to confidently use a digital filter, it must not only be designed from a proper theoretical point of view, the actual implementation must be rigorously tested.

A key point to this testing comes from the design of filters. These filters look at the input as a sum of different frequencies. While discussing the topic with a friend, the question was posed “Why not use a voltage source and a potentiometer” to provide the input. This would be inadequate to actually test a filter, because the Fourier decomposition of a ramp has relatively few frequencies. And a rigorous test would involve applying all possible frequencies to the digital filter. Luckily, there is a type of signal that manifests all frequencies and phases: Noise.

5722 Noise source board

Friday, January 26, 2007

Problems with implementing a generic digital filter class.

Hamming mentions near the end of section 1.1 the "initial data" problem.

The output of a non-recursive filter is the weighted sum of the current input sample and some

number of samples before and after the current position.

This begs the question, "What values are used for the samples 'before' the first sample and 'after'

the last sample?"

Assuming zero values is one possibility. This is relatively easy for both the writer of the

library and the libraries users. However, this potentially introduces a non-linearity in the

filter output. (Which is especially problematic in a recursive filter, where such non-linearities

can continue with every subsequent value of the filter.)

Another possibility is to pass enough "before" and "after" values in the function call to fill in

these gaps. This is vaguely "unclean" as the number of values that are needed to be passed change

when the number of filter coefficients change, so the function must be written to accept a generic

number of variables. This also puts a fairly large burden on the user of the library to initialize

and maintain these values as necessary.

Yet another possibility would be to assume that the initial and final values in the given Sample

are ment to be used as the starting coefficients, and that only the "interior" values of the sample

are ment to be actually filtered. This seemes elegant at first, however, if the Sample is passed

through several filters, the output will get progressively shorter, losing information, unless the

user adds the necessary samples to the beginning and end of each output step before inputting it to

a new filter.

The answer, in my current opinion, is to provide all three methods in the Filter class. When

nature presents a fork in the road, take it.

noise: Sample class version 1.0

#include stdlib
#include vector
#include iostream

//---------------------------------------------------------------------------
// Sample: Fills an array of doubles with random integers. This is an example of digital noise
// One obvious use of a non recursive digital filter would be to scale
// the random ints into a specified range of doubles.
// e.g. a filter with a single coefficient of 0.001
class Sample
{
std::vector Samples;
int SampleSize;
public:
void Fill(int sampleSize)
{

Samples.resize(sampleSize); // resize STL "Array"
randomize(); // initialize random number generator.
SampleSize = sampleSize; // keep track in the class
for( int n = 0; n < sampleSize; n ++) // fill
{
Samples[n]=rand();
}
}

void PrintSamples()
{
for( int n = 0 ; n < SampleSize; n++)
{
std::cout << n << ": " << Samples[n] << std::endl;
}
}


};


int main(int argc, char* argv[])
{

Sample test;
test.Fill(3);

test.PrintSamples();
int wait;

std::cin >> wait;

return 0;
}

Thursday, January 25, 2007

This is my blog for my independant study class.

I'm a student at NEIU, and my theory of computation teacher agreed to do an independant study based on R.W. Hamming's book "Digital Filters."

So this is where I'll be keeping track of all the stuff I do for that class.