The Technology of the Fuzz Face - Picking transistors for FF Clones v.0.1

Started by karsten_h, January 24, 2024, 09:54:30 AM

Previous topic - Next topic

karsten_h

spend the day learning my first C programming and came out with this:  :icon_rolleyes: 


/* Picking transistors for FuzzFactory Clones v.0.2 */

/* this piece of software is based on the amazing work of R.G. Keen published at */
/* http://www.geofex.com/Article_Folders/fuzzface/fftech.htm#Picking%20transistors */
/* i am just standing on the shoulders of giants be it in elecronics, programming or */
/* guitar playing. i hope this is somehow considered useful by someone. */
/* would love to hear from you email@karstenharazim.de */

#include <stdio.h>

int main () {
float v1,v2,r1=2.472,r2=220000,V=9,Hfe,leak;
char wahl;
do{
printf("\n calculatitng PNP germanium transistor Hfe and leakage the R.G. Keen way ;)\n");
printf("\n measured voltage 1:   ");
scanf("%f", &v1);
printf("\n measured voltage 2:   ");
scanf("%f", &v2);
Hfe=(v2-v1)*100;
printf("\n transistor Hfe real is around: %.0f\n",Hfe);
leak=(v1/r1);
printf("\n device leakage is around: %.3f mA\n",leak);
if ((leak<=0.199))
printf ("\n we would consider that device to be a prime specimen ");
else if ((leak>=0.200) && (leak<=0.299))
printf ("\n we would consider that device to be OK ");
else if ((leak>=0.300) && (leak<=0.499))
printf ("\n we would consider that device to be suspicious but ");
else if ((leak>=0.500))
printf ("\n we would consider that device to be bad :( ");
if ((Hfe>=60) && (Hfe<=90))
printf ("and it fits Q1.\n");
else if ((Hfe>=110) && (Hfe<=140))
printf ("and it fits Q2.\n");
printf ("\n one more? (y/n) ");
scanf(" %c", &wahl);
}
while (wahl == 'y' || wahl == 'Y');
printf("\n thank you for using my program. goodbye!\n");
return 0;
}



so its v.0.2 now, added transistor position suggestions for fuzz factory clones based on the Hfe at the end. would like to work a little more on that and if anyone wants to jump in: great!

ideas right now are:

- to decide at first which circuit you want to select transistors for and have some hfe patterns for these stored in the backgound based on the suggestions for the most common circuits online that require germanium PNP (like rangemasters, tonebenders, zonks, fuzzfaces, fuzz factories, you name it...)

- to enter your actual environment like testing voltage, R1 and R2

- to do the calculations based on that information and without the approximation (V2-V2)*100=gain (i would really appreciate help getting the formulas right still learning the math)

do you think that can be of any use?
maybe it could go into an app in the end?  :icon_lol:


... just standing on the shoulders of the diy stompbox scene out there.

karsten_h

after some homework i come around with this:

I=U/R

gain=(U2-U1)/U*(R2/R1)-Ileak
Ileak=U1/R1

where U in volts, R in K ohm and Ileak in uA

U=9V
R1=2.473 K
R2=2200 K
U1=0.224 V
U2=1.330 V

Ileak=0.224V/2.472kohm=0,09061uA
gain=(1,330V-0.224V)/9V*(2200Kohm/2.472Kohm)-0,0906uA=1,106/9V*890-0,0906uA=0,1229*889,094=109

do you agree?  :icon_question:
... just standing on the shoulders of the diy stompbox scene out there.

karsten_h

not bad as afurther draft... but still alpha.

/*    picky_transistor_v.0.3                    */

/*    this piece of software is based on the amazing work of R.G. Keen published at        */
/*    http://www.geofex.com/Article_Folders/fuzzface/fftech.htm#Picking%20transistors     */
/*    i am just standing on the shoulders of giants be it in elecronics, programming or    */
/*    guitar playing. i hope this is somehow considered useful by someone.            */
/*    would love to hear from you email@karstenharazim.de                    */

#include <stdio.h>

int main ()

{

    float V,v1,v2,r1,r2,leak;
    int Hfe,circuit,a,b,c,d,e,f;
    char choose, name[] = "rangemaster";

    printf("\n what kind of circuit do you need transistors for?\n");
    printf("\n rangemaster \t\t1");
    printf("\n tonebender mk2 \t2");
    printf("\n zonk1 \t\t\t3");
    printf("\n fuzzfactory \t\t4\n\n");

    scanf("%i", &circuit);

    if (( circuit = 1 ))
        a = 75, b = 100;   
    else if ((  circuit = 2 ))
        a = 100, b = 120, c = 100, d = 120, e = 100, f = 120;
    else if (( circuit = 3 ))
        a = 100, b = 120, c = 100, d = 120, e = 100, f = 120;
    else if (( circuit = 4 ))
        a = 0, b = 0, c = 60, d = 90, e = 110, f = 140;
    else if (( circuit = 5 ))
        a = 0, b = 0, c = 60, d = 90, e = 110, f = 140;

    printf ("\n voltage used during tests (9V?):   ");
    scanf ("%f", &V);
    printf ("\n resistor1 in test circuit (2.472 Kohm?):   ");
    scanf ("%f", &r1);
    printf ("\n resistor2 in test circuit (2200 Kohm?):   ");
    scanf ("%f", &r2);

    do{

    printf ("\n calculatitng PNP germanium transistor Hfe and leakage the R.G. Keen way ;)\n");
    printf ("\n measured voltage 1:   ");
    scanf ("%f", &v1);
    printf ("\n measured voltage 2:   ");
    scanf( "%f", &v2);
   
    leak=(v1/r1);
    Hfe=(v2-v1)/V*(r2/r1)-leak;
   
    printf ("\n transistor Hfe real is around: %i\n",Hfe);
    printf ("\n device leakage is around: %.3f mA\n",leak);

    if (( leak <= 0.199 ))
        printf ("\n we would consider that device to be a prime specimen ");
    else if (( leak >= 0.200 ) && ( leak <= 0.299 ))
        printf ("\n we would consider that device to be OK ");
    else if (( leak >= 0.300 ) && ( leak <= 0.499 ))
        printf ("\n we would consider that device to be suspicious but ");
    else if (( leak >= 0.500 ))
        printf ("\n we would consider that device to be bad :( ");

    if (( Hfe >= a ) && (Hfe <= b ))
        printf ("and it fits Q1 of your %s circuit. \n",name);
    else if (( Hfe >= c ) && ( Hfe <= d ))
        printf ("and it fits Q2 of your %s circuit. \n",name);
    else if (( Hfe >= e ) && ( Hfe <= f ))
        printf ("and it fits Q3 of your %s circuit. \n",name);

    printf ("\n select one more? (y/n) ");
    scanf(" %c", &choose);
   
    }

    while (choose == 'y' || choose == 'Y');

    printf("\n thank you for using my program. goodbye!\n");    
   
    return 0;
}


... just standing on the shoulders of the diy stompbox scene out there.