Author Topic: DIY 0.1 to 10Hz Noise Amplifier  (Read 22204 times)

0 Members and 2 Guests are viewing this topic.

Offline Alex Nikitin

  • Super Contributor
  • ***
  • Posts: 1237
  • Country: gb
  • Femtoampnut and Tapehead.
    • A.N.T. Audio
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #100 on: April 22, 2024, 03:18:09 am »

What sample rates are you using with each DMM?

1 NPLC, roughly 20 Hz

Cheers

Alex
 

Online Kleinstein

  • Super Contributor
  • ***
  • Posts: 14466
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #101 on: April 22, 2024, 07:41:03 am »
The 1 PLC (20 ms in Europe) integration already effects the bandwidth. With the usual AZ mode the meter only reads the input a little less than half the time. This adds some sensitivity to frequencies around 25 Hz. Together with a 1st order filter this gives a frequency response that looks a bit complicated. Not a simple 10 Hz upper limit, though a somewhat comparable equivalent noise bandwidth.

The effective frequencies anyway depend on the filter details. IFAIK there is not strict standard of the filter response and the comparison of noise data from different filter (including the AC coupling) setups can thus be a bit tricky.
 

Offline Alex Nikitin

  • Super Contributor
  • ***
  • Posts: 1237
  • Country: gb
  • Femtoampnut and Tapehead.
    • A.N.T. Audio
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #102 on: April 22, 2024, 10:37:35 am »
Yes, there is (obviously) some aliasing, I did check the response with a sweep generator, though for a noise signal the effects of narrow band variations should be reasonably benign. On the first screen shot below the sweep is linear, 60s, from 2Hz to 20Hz, with the filter, at 1NPLC, on the second it is 2Hz to 62Hz, and on the third is 2Hz to 62Hz without the filter.

Cheers

Alex
« Last Edit: April 23, 2024, 11:57:51 am by Alex Nikitin »
 

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #103 on: April 22, 2024, 07:04:03 pm »
That's definitely still useful, if you have such a low-noise DMM already!!
Very cool to see multiple approaches at this. 
Personal website: eedesignpro.com   Contact me
 
The following users thanked this post: Alex Nikitin

Offline andrewtaylor

  • Contributor
  • Posts: 16
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #104 on: April 23, 2024, 10:54:24 am »
Hi Richard,

great project, congratulations!
Is it possible you add the PCB layout files (I think you might have orderd your pcb from JLCPCB) on your project homepage later?

would appreciate this.
 

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #105 on: April 23, 2024, 05:29:45 pm »
Hi Richard,

great project, congratulations!
Is it possible you add the PCB layout files (I think you might have orderd your pcb from JLCPCB) on your project homepage later?

would appreciate this.

Thanks!  You can order bare PCB's, assembled PCB's, or enclosed LNA's from me if you'd like one!  will not be sharing the gerbers or placement files.  It turns out this design is a good alternative to the $500 Euler precision LNA, and I don't want my entire design to be copied with zero effort by some manufacturer, I hope you understand.  Instead I'm selling my design for much less to recoup some of the development costs, but still making it accessible to hobbyists and engineers.  Please contact me if you're interested! 

I have a new batch with some extra features arriving in about 1 week, I'll be adding updates on this thread soon!
Personal website: eedesignpro.com   Contact me
 

Offline MegaVolt

  • Frequent Contributor
  • **
  • Posts: 926
  • Country: by
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #106 on: April 29, 2024, 02:41:43 pm »
There are also battery measurements performed by Walls at NIST, time-frequency group.
I think the filename is 1111.pdf, but it is a moving target on their server.
https://tf.nist.gov/general/pdf/1133.pdf
 
The following users thanked this post: Victorman222

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #107 on: May 03, 2024, 05:06:46 am »
I've received the latest batch of LNA boards, this revision has a few updates, and I've shipped out orders for 5 of them so far.

Notable new features:
  • Metal EMI shield over the 1st gain stage circuit, clipped on to allow rework/modification
  • Threaded BNC connectors for easy panel mounting and better shielding
  • Negative input warning LED
  • Protection against swapped inputs/outputs (accomplished through rework)
  • Wire pads for easy gain switch installation

New board with EMI shield


EMI shield clip close-up


New Board with EMI shield removed


Bottom side rework and labelling


Fully enclosed unit.  This one has a custom 0.1-100Hz bandwidth for someone interested in using it to measure small 60Hz signals.
The red LED on the left lights up if the LNA is powered on and the DC input voltage goes below -10mV. 
The input protection limits the current to ±2mA, which buys me some time when I inevitably hook up my input backwards!


The new Hammond 1590Y enclosure fits everything nicely.  The foam keeps the battery from rattling around, a good re-use of the packaging these PCB's came in.
The threaded BNC connectors make mounting the board much simpler. 


In past revisions I definitely stressed input protection, since having such a large input capacitor paired with low input impedance is a recipie for trouble.  However, I neglected to protect the signal outputs from any accidental connection to DC sources of up to +30V.  With past revisions that would surely damage or completely destroy the LNA.  On these boards I reworked some series resistors and TVS diodes on the bottom side of the board.  These limit and clamp any injected current, and they do not significantly change any output characteristics when used with 1MΩ scope inputs.

x250 output protection: Series 4.99kΩ 1206 resistor and a TVS diode:


Main output protection: 2kΩ series resistor.  The DC blocking cap also helps with protection.


Since I had a few orders for these boards, I wrote an automated test script so that every LNA would be fully and consistently tested before I shipped them out.  It checks gain at input current, gain at 1Hz, shorted-input noise floor, and it does an FFT based frequency response measurement. Below is a frequency response measurement example.  I know the lines are fuzzy, and that immediately makes all of us noise-freaks think that there is something fishy going on, but that's just part of this FFT method I'm using!!!


Here is how the FFT method I use works:

I use my RTB2004 to record the un-attenuated signal generator output and the LNA outputs.  The signal generator output starts at 0V, then steps to +4V halfway through the capture.  I take each channels time-domain data and use python to calculate the FFT of each.  Then I divide the magnitude of each output by the magnitude of the input, and I get a pretty good frequency response plot!  However, since the input function I'm using is just a step function, it does not have much energy in the higher frequencies, and I quickly run into the noise floor of my scope.  I actually do two of these captures, one with a 180 second capture time, and one with a 6 second capture time.  This covered the 0.1Hz to 10Hz range well, but you definitely can see lots of fuzz up near 500Hz. 

I use this method because it is much faster than injecting one sine wave at a time and measuring the gain.  That takes hours at these low frequencies, but only a few minutes with this method.  For me that's well worth a little fuzz on the resulting plots.  I am working on some more advanced excitation signals to try and get cleaner results.  I've tried a sin(x)/x input, and that cleaned up the higher frequencies, but at the expense of the low frequencies.  One promising input signal is a sum of approximately log-spaced input frequencies.  If each input frequency is a multiple of some base frequency, then the pattern repeats cleanly and can be loaded as an arbitrary waveform in my signal generator.  Focusing the spectral energy on a log spaced of points could result in a group of clean data points that would make a good bode plot, but it leaves a lot of points with no energy, so those would have to be removed from the plot to keep it clean.  Anyways, I will share how that goes if I get around to it!
« Last Edit: May 03, 2024, 06:17:23 am by trtr6842 »
Personal website: eedesignpro.com   Contact me
 
The following users thanked this post: ch_scr, MegaVolt, Svgeesus

Online gf

  • Super Contributor
  • ***
  • Posts: 1302
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #108 on: May 03, 2024, 09:15:07 am »
One promising input signal is a sum of approximately log-spaced input frequencies.  If each input frequency is a multiple of some base frequency, then the pattern repeats cleanly and can be loaded as an arbitrary waveform in my signal generator.

Since the peak amplitude is limited, the key to good SNR is a signal with a low crest factor.
The script I found here some time ago tries to find a phase for each tone of a multi-tone signal, so that the crest factor is minimzed.
It seems to work nicely as long as the spectrum is populated sparsely enough.
Since it uses FFT internally, the frequencies of all tones are integer multiples of a base frequency, which meets your desire, too.
 
The following users thanked this post: MegaVolt

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #109 on: May 03, 2024, 04:39:08 pm »
Interesting script!

Here is what I've got: The script is trying to add 100 sines together, approximately log-spaced from 0.02Hz to 10Hz.  Since a lot of the lower ones overlap when rounded to the nearest multiple of the base frequency, the script ends up giving 70 tones.  To get a small enough resolution bandwidth on the FFT, the pattern is repeated 4 times before the FFT is computed.  Right now each sine has the same amplitude, but I do want to start shaping the amplitude profile to optimize SNR for the expected LNA frequency response.

Basic sum-of-sines, no phase shift:  Vpp = 28.6x the amplitude of a single sine


Flipped phase for every-other frequency:  Vpp = 23.7x the base amplitude


Linear phase shift, each frequency's starting phase is evenly spread out over 360°, Vpp = 16.9x the base amplitude, which feels pretty good considering there are 70 tones added together.  I'm curious what kind of Vpp to tone amplitude ratios the random iterative script can accomplish.


Here is the script I used to generate the time domain signals:
Code: [Select]
import numpy as np
class WaveformMath:       
    def sum_logspace_sines(n_points, f_max_ratio, n_f, n_cycles=1):
        # n_points is how many time-domain samples you want.  The resulting signal will have fewer tones, since tones that are too close together will be skipped
        # f_max ratio is the ratio of the max frequency to the min frequency (the lowest frequency is normalized to 1.0, so this is how you define the max frequency)
        # n_f is the number of frequencies you'd like
        # n_cycles is how may times you'd like the pattern to repeat within the number of points given

        x = np.linspace(0, n_cycles, n_points)  # 0.0 to 1.0 normalized sample time
        y = np.zeros(n_points)
        f_log = np.logspace(0, np.log10(f_max_ratio), n_f)  # ideal set of log-spaced tones
       
        f_approx = []
        f_max = 0
       
        for f in f_log:
            fa = (f*n_cycles//1)/n_cycles  # round down to nearest frequency
            if fa > f_max:
                f_approx.append(fa)
                f_max = fa
               
        for i in range(len(f_approx)):
            # y += np.sin(2*np.pi*f_approx[i]*x)  # straight sum
            y += np.sin(2*np.pi*f_approx[i]*(x+n_cycles*i/len(f_approx)))  # linear shifted phase based on index
           
            # if i%2 == 0:  # Flipped sign every other frequency
            #     y += np.sin(2*np.pi*f_approx[i]*x)
            # else:
            #     y += np.sin(2*np.pi*f_approx[i]*x*-1)

        # print('Number of tones: %d' % len(f_approx))
        # print('peak: %.3f' % (max(y)/2-min(y)/2))
        y = 2 * y / (max(y)-min(y))   # normalize Vpp to 1.0
        # print(y[0])  # print initial DC offset (DC average is stil 0)
           
        return x, y
Personal website: eedesignpro.com   Contact me
 

Online gf

  • Super Contributor
  • ***
  • Posts: 1302
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #110 on: May 03, 2024, 05:25:59 pm »
Right now each sine has the same amplitude, but I do want to start shaping the amplitude profile to optimize SNR for the expected LNA frequency response.

If I remember correcly, the script I refereced also lets you specify the desired amplitude (gain) for each frequency.

EDIT: I digged out the script again. When I feed it with your parameters (70 log-spaced frequencies in the 0.02...10Hz range, quantized to multiples of 0.02 Hz), then I get crest factors of about 2.1 (each run gives different results, as it starts with random phases). I have not yet considered different amplitude/gain for each frequency.

Modified script:

Code: [Select]
%% script to do a mutlitone low crest factor noise signal

nx = 10000;
fx0 = zeros(nx/2+1,1);
% fx0(floor(logspace(log10(0.02),log10(10),100)/0.02+0.5)+1) = 1; // round to nearest
fx0(floor(logspace(log10(0.02),log10(10),100)/0.02)+1) = 1; // round down
ifr = find(fx0 != 0);
nf = length(ifr);
gains = ones(nf,1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% initialize
phi = 2*pi*rand(nf,1); % random phase
fx0 = zeros(nx/2+1,1);
fx = fx0;
fx(ifr,:) = gains.*exp(1i*phi);
% fx0(ifr,:) = gains;

%% main iteration loop
% numIter = 1000;
numIter = 500;
for i = 1:numIter
  % make conjugate symmetric
  fx1 = [fx; conj(fx(end-1:-1:2))];
  % time domain
  x = real(ifft(fx1));
  % clip at a target crest factor of 2
  % xmax = 2*rms(x);
  xmax = 2*sqrt(mean(x.*x));
  x( x > xmax)= xmax;
  x( x < -xmax) = -xmax;
  % go back to frequency domain
  fx1 = fft(x);
  % transfer phase
  fx(ifr,:) = gains.*fx1(ifr,:)./abs(fx1(ifr,:));
end
% final time domain signal
fx1 = [fx; conj(fx(end-1:-1:2))];
% time domain
x = real(ifft(fx1));
fprintf('final crest factor = %f\n', max(abs(x))./std(x));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clf

subplot(3,1,1)
plot(x/max(abs(x)))
grid on

subplot(3,1,2)
plot([-nx/2:nx/2-1]*0.02,fftshift(abs(fx1)))
grid on
xlim([-10 10])
ylim([0 1.1])
xlabel("Hz")

subplot(3,1,3)
plot([-nx/2:nx/2-1]*0.02,fftshift(arg(fx1)))
grid on
xlim([-10 10])
ylim([-pi pi])
xlabel("Hz")
ylabel("phase")

EDIT:

Quote
Linear phase shift, each frequency's starting phase is evenly spread out over 360°, Vpp = 16.9x the base amplitude, which feels pretty good considering there are 70 tones added together.

Do you really mean peak-to-peak, and not peak? And "base amplitude" means just the (single-sided) peak amplitude of the sine?
Then 16.9 would imply a crest factor of 16.9/2/(sqrt(0.5)*sqrt(70)) = 1.4283, which would very good for the sum (a single sine wave already has crest factor sqrt(2)).

If you mean this value, then it would be only approx peak, not peak-to-peak.
Code: [Select]
# print('peak: %.3f' % (max(y)/2-min(y)/2))
« Last Edit: May 03, 2024, 09:13:21 pm by gf »
 

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #111 on: May 03, 2024, 09:20:36 pm »
Quote
Linear phase shift, each frequency's starting phase is evenly spread out over 360°, Vpp = 16.9x the base amplitude, which feels pretty good considering there are 70 tones added together.

Do you really mean peak-to-peak, and not peak? And "base amplitude" means just the (single-sided) peak amplitude of the sine?
Then 16.9 would imply a crest factor of 16.9/2/(sqrt(0.5)*sqrt(70)) = 1.4283, which would very good for the sum (a single sine wave already has crest factor sqrt(2)).

If you mean this value, then it would be only approx peak, not peak-to-peak.
Code: [Select]
# print('peak: %.3f' % (max(y)/2-min(y)/2))

Thanks for sharing your results!

To try and clarify, when I said "Vpp=16.9x the base signal amplitude", I was incorrect, thanks for catching that!. I actually calculated the Vpp of the end signal and divided it by the Vpp of a single tone.  Each tone is calculated as sin(2*pi*N), so the amplitude is 1.0, and Vpp would be 2.0.  So that value would be same as the overall single-ended amplitude divided by the single-tone single-ended amplitude (what a tongue twister!)

So for crest factor, I think the actual with the linear-phase method is 2.853.  I added this code at the end of my script, after the normalization (which doesn't affect crest factor):
Code: [Select]
        vpp = (max(y) - min(y))
        vp = vpp/2
        ac_rms = np.std(y) # AC rms and standard deviation are mathematically equivalent
       
        print('peak to peak: %.3f' % vpp)
        print('peak (SE): %.3f' % vp)
        print('std-dev (AC RMS): %.3f' % ac_rms)
        print('Crest Factor: %.3f' % (vp/ac_rms))
and I got:

peak to peak: 2.000
peak (SE): 1.000
std-dev (AC RMS): 0.350
Crest Factor: 2.853

So your iterative phase guessing is about 35% (2.6dB) better.  I'm curious if that would make a noticeable difference, I'm not sure.  How quickly does your example script run for the 10kpt 1000 iteration script you shared?
Personal website: eedesignpro.com   Contact me
 

Online gf

  • Super Contributor
  • ***
  • Posts: 1302
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #112 on: May 03, 2024, 10:34:17 pm »
peak to peak: 2.000
peak (SE): 1.000
std-dev (AC RMS): 0.350
Crest Factor: 2.853

So your iterative phase guessing is about 35% (2.6dB) better.  I'm curious if that would make a noticeable difference, I'm not sure.  How quickly does your example script run for the 10kpt 1000 iteration script you shared?

About 0.4 seconds, on my 12 years old notbook, without plotting. And about 2 seconds with nx=100000.
Don't know if 1000 iterations are really necessary, but the original value was obviously too low, so I increased it generously to 1000.

Crest factor 2.85 is not bad, IMO :-+
 

Online gf

  • Super Contributor
  • ***
  • Posts: 1302
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #113 on: May 03, 2024, 11:24:22 pm »
I do want to start shaping the amplitude profile to optimize SNR for the expected LNA frequency response.

Tried to add-in the inverse frequency response of a 3rd order highpass with 10 0.1 Hz cutoff.
Crest factor only around 1.6, but the resulting signal is of course strongly dominated the lowest (0.02...0.1 Hz) frequencies.

EDIT:

Alone the 0.02 Hz tone contributes ~98% of the total signal power, and the frequencies <= 0.1 Hz together about 99.6% of the total power  :scared:

I don't know what the exact aim is. Weighting with the inverse filter response will lead to a flat ouput. But if the aim is to get the same SNR at each frequency, then the amplitude of the stimulus tones should be rather weighted by the input-referred noise PSD.
« Last Edit: May 04, 2024, 09:19:47 am by gf »
 

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #114 on: May 10, 2024, 06:02:40 pm »
I started a github repo for the python scripts for FFT frequency response analysis here, there's a little demo script for the FFT frequency response plotting that should be easy for anyone to plug in their own scope data and use.

I also wrote a script to perform noise spectral density analysis, and used it to characterize the noise floor of this LNA.  Credit to Curtis Seizert and his incredible ultralow noise LNA project for sharing the basic code that got me started on my own script.  Here are the results:


Noise floor is pretty flat at 3.2nV/√Hz, about what was expected from the RMS noise measurements, but cool to confirm.

It takes a lot of time-domain data to get clean curves.  That plot represents almost 7 hours of captured data, but the averaged results are good.
In the script I can choose what minimum frequency to calculate the VSD plot down to. 

Picking lower values makes the curves a lot rougher.  Here are the results using the same captured data but calculated down to 1mHz:

Overall both plots agree, but the 50mHz one definitely looks better!
« Last Edit: May 10, 2024, 06:06:14 pm by trtr6842 »
Personal website: eedesignpro.com   Contact me
 
The following users thanked this post: KE5FX

Offline Svgeesus

  • Regular Contributor
  • *
  • Posts: 78
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #115 on: May 12, 2024, 11:21:04 pm »
The red LED on the left lights up if the LNA is powered on and the DC input voltage goes below -10mV. 
The input protection limits the current to ±2mA, which buys me some time when I inevitably hook up my input backwards!

In past revisions I definitely stressed input protection, since having such a large input capacitor paired with low input impedance is a recipie for trouble.  However, I neglected to protect the signal outputs from any accidental connection to DC sources of up to +30V.  With past revisions that would surely damage or completely destroy the LNA.  On these boards I reworked some series resistors and TVS diodes on the bottom side of the board.  These limit and clamp any injected current, and they do not significantly change any output characteristics when used with 1MΩ scope inputs.

Just checking and sorry if this is obvious. So, measuring noise on a +12V source is fine, but to measure noise on a -12V source I need to have a floating DUT ground and connect -12V to LNA ground and 0V to LNA input, right?
 

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #116 on: May 13, 2024, 02:12:18 am »
@Svgeesus correct, the LNA ground is tied to the scope gnd, and the LNA cannot handle negative inputs without damaging the electrolytic input capacitor.  However it would be simple to swap the polarity of the input capacitor and that would make the LNA capable of only measuring negative input voltages.

Either flipping the input cap, or floating the whole LNA, swapping the input polarity to make it positive with respect to the LNA input, and using a differential probe/amp on the LNA output would allow for measuring negative inputs.
« Last Edit: May 13, 2024, 02:14:25 am by trtr6842 »
Personal website: eedesignpro.com   Contact me
 
The following users thanked this post: Svgeesus

Offline Alex Nikitin

  • Super Contributor
  • ***
  • Posts: 1237
  • Country: gb
  • Femtoampnut and Tapehead.
    • A.N.T. Audio
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #117 on: May 13, 2024, 11:06:12 am »
 

Online Kleinstein

  • Super Contributor
  • ***
  • Posts: 14466
  • Country: de
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #118 on: May 13, 2024, 12:47:04 pm »
Not many voltmeters are really low enough in noise to be useful fora direct noise analysis. This would be manily nV meters and a few more special ones. Also the autozero mode complicated the effective band width. One could get close / comparable, but not really the standard 0.1 - 10 Hz band.  E.g. 40 ms integration would give a 12.5 Hz effective noise bandwidth and the length of the interval to look at would set the lower frequency limit.  So 20 PLC, non AZ mode an looking at some 10 seconds would be relatively close.
 

Offline trtr6842Topic starter

  • Regular Contributor
  • *
  • Posts: 55
  • Country: us
Re: DIY 0.1 to 10Hz Noise Amplifier
« Reply #119 on: July 08, 2024, 09:00:53 pm »
So I've ordered another round of LNA's with some revisions.  I included all the rework from the Rev A units, plus I added a couple features.
New features are:
  • Increased input voltage protection range to +30V indefinitely and -30V temporarily, with no restriction on how fast you can switch between the two
  • Fixed ≤2mA input current limit for positive limits, regardless of supply voltage
  • Automatic negative input cutoff to reduce input capacitor reverse current to ≤30µA
  • Supply voltage up to 24V for more battery options
  • Active opamp split rail supply
  • OPA2182 1st stage opamps for slightly lower noise floor (66nVpp 9.7nVrms typical)

Online specs are available on my website

If anyone is interested in assembled boards or enclosed LNA's I have 8 available from this batch, and I made them available on this Ebay listing





« Last Edit: July 08, 2024, 09:03:13 pm by trtr6842 »
Personal website: eedesignpro.com   Contact me
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf