Wednesday, May 29, 2013

Drive Assembly

Mount all these components in order onto a M8x100mm hex bolt.
Bearing, BearHolderA , BearingHolderB, Bearing, M8 Hex bolt,M8 hex bolt, parametric gear 17teeth, two M8 washers, TrackMainRotor, M8 hex bolt.

Tuesday, May 28, 2013

Quick Quiz

Only one of these fits the tracks above. Which rotor fits the track above?
Answers forthcoming.

Monday, May 27, 2013

Update RCTank



Printed 24 tracks in Purple ABS plastic. The distance between bolts is about 22.2mm on average this changed from earlier track design. I will have to reprint the maintrackrotor with the new trackseglength.

Friday, May 24, 2013

Sunday, November 13, 2011

DSO-5200A SDK Modification FFT




Download the SDK from the Hantek Website:
DSO5200A_SDK.rar

This code was imported to Visual Studio 2008 to compile the code the MFC (microsoft foundation class) api will need to be imported from the Windows WDK. How to Download the WDK

VCDlg.cpp will need to be modified with the following code:
//start snippet        
int N=10256,M=5128;
 double data[20513],fdata[10129];
 int disp[500];
 double data1[10257];
 double data2[10257];
 double data3[10257];
 
 for(int n=0;n<N;n++){
  data1[n]=Ch1.HardwareData[n];
 }
 
 
 
 
 double data4[500];
 double ratio=10256.0/1000.0; //screen size to data size ratio
 
 

 double window[10257];
 double sum=0.0;
//////////////////Calculate the Window Function values into an array and
// calculate the sum of the input data
for(int i=0;i<N;i++){
  window[i]=0.5*(1-cos(2.0*M_PI*double(i)/double(N-1)));
  sum+=double(Ch1.HardwareData[i]);
 }

 double avg=sum/double(N);//determine average and adjust input signal
 for(int i=0;i<N;i++){data3[i]=double(Ch1.HardwareData[i])-avg;}
 
 //output to screen input multiplied by the Window Function
for(int q=0;q<10256;q++){
  m_dcImg.SelectObject(bluepen);
  m_dcImg.LineTo(int(double(q)/ratio),200+int(window[q]*data3[q]));
 }


 /////////Take Orignal Signal and Apply a Window Function////////
 for(int i=0;i<N;i++){
  data[2*i]=window[i]*data3[i]/1024.0;
  data[2*i+1]=0.0;
 }///////////////////////////////////////////////////////////////
//apply the fourier transform
four1(data,8192);
//data is complex output: c = data[j]+data[j+1]i
//calculate the amplitude of the complex data and store in fdata.
for(int j=0;j<8192;j++)fdata[j]=sqrt(data[2*j+1]*data[2*j+1]+data[2*j]*data[2*j]);
 double ratio2=4096.0/2000.0;//set ratio for frequency graph
 for(int k=0;k<2048;k++){
  
  m_dcImg.SetPixel(int(double(k)/ratio2),fdata[k],RGB(0,255,0));//draw pixels 
  m_dcImg.SelectObject(redpen);
  m_dcImg.LineTo(int(double(k)/ratio2),fdata[k]);//draw red lines
 }
//end snippet
//////////////////fourier transform algorithm///////////////////////////
////////////////////////////////////////////////////////////////////////
void four1(double* data, unsigned long nn)
{
    unsigned long n, mmax, m, j, istep, i;
    double wtemp, wr, wpr, wpi, wi, theta;
    double tempr, tempi;
 
    // reverse-binary reindexing
    n = nn<<1;
    j=1;
    for (i=1; i<n; i+=2) {
        if (j>i) {
   
            tempr=data[j-1];data[j-1]=data[i-1]; data[i-1]=tempr;
            tempr=data[j];data[j]=data[i]; data[i]=tempr;
        }
        m = nn;
        while (m>=2 && j>m) {
            j -= m;
            m >>= 1;
        }
        j += m;
    };
 
    // here begins the Danielson-Lanczos section
    mmax=2;
    while (n>mmax) {
        istep = mmax<<1;
        theta = -(2*M_PI/mmax);
        wtemp = sin(0.5*theta);
        wpr = -2.0*wtemp*wtemp;
        wpi = sin(theta);
        wr = 1.0;
        wi = 0.0;
        for (m=1; m < mmax; m += 2) {
            for (i=m; i <= n; i += istep) {
                j=i+mmax;
                tempr = wr*data[j-1] - wi*data[j];
                tempi = wr * data[j] + wi*data[j-1];
 
                data[j-1] = data[i-1] - tempr;
                data[j] = data[i] - tempi;
                data[i-1] += tempr;
                data[i] += tempi;
            }
            wtemp=wr;
            wr += wr*wpr - wi*wpi;
            wi += wi*wpr + wtemp*wpi;
        }
        mmax=istep;
    }
}



Wednesday, August 17, 2011

Copper Steel Plate Battery using Rochelle Salt and Cotton Wool

In reference to http://docsfreelunch.blogspot.com/ . Doc mentions a honey cotton wool and copper zinc plates as a good starter point and the low power circuit is handy.

So I built a rochelle salt ,copper and steel plated battery with cotton wool insulation.

The rochelle salts is made by mixing sodium carbonate and creme of tartar. Firstly heat gently vinegar and add slowly the sodium carbonate. Allow enough sodium carbonate to be soluble. Add the creme of tartar until no longer solubable. Cool down after the mixture has thickened.Place cotton wool  on a steel plate and pour mixture on the cotton wool. Press the copper plate on top and allow to cool. Once cooled ready to measure the voltage.
Here is a picture of the battery measuring 964 millivolts with a capacitor in series. The capacitor had no charge before attached to the battery. Measuring 20 micro amps puts this battery at about 18-15 micro watts.