Page 1 of 1

SWR METER DIGITAAL MAKEN

Posted: Fri Dec 15, 2017 1:38 am
by Pe1iwt
Ik heb een Arduino op Daiwa cn-101L aangepast om tot 50 mhz digitaal te kunnen uitlezen.
2 meter moet nog,i.v.m. een andere Correctie factor komt dit een ander keer,
En het schema.

Code: Select all

/*
  Lees analoge waarde op Pin 0 en Pin 1 en zet deze om naar Voltage en daarna naar Watt.
  Let op maximale ingangspanning is 5Volt!!!!!!!
  En zet dit om met correctie-factor c naar Power.
 */
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      //aansluitingen display

float fwd_voltage = 0.0;

float fwd_power = 0.0;

float ref_voltage = 0.0;

float ref_power = 0.0;

float c=0.0;                 //correctie factor c bij 100 watt c= 2.4 en bij 1 watt c=10.0 fwd power
float d=0.0;                 //correctie factor d bij 100 watt c= 2.4 en bij 1 watt c=10.0 ref power

int value=0;
float SWR=0.0 ;

//==================================================================================================================
void setup()
{
   Serial.begin(9600);     //  opens serial port, sets data rate to 9600 bps
   lcd.begin(16, 2);       //// set up the LCD's number of columns and rows: 
   lcd.print("PE1IWT SWR 1.5  ");
   delay(3000);
   
}
void loop()
{

//   Van fwd_voltage naar fwd_power ===============================================================================
   
   int fwd_analog_value = analogRead(A0);                    //ingangsspanning  A0 meten !!!!MAX 5Volt!!!!

  fwd_voltage = (fwd_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  fwd_power = (((fwd_analog_value * 5.0) / 1024.0)/c)*100;   // Corr.factor c=bij 100watt =2.4 en bij 1 watt=10.0
  

//  Van ref_voltage naar ref_power =================================================================================
   int ref_analog_value = analogRead(A1);                    //ingangsspanning  A1 meten !!!!MAX 5Volt!!!!

  ref_voltage = (ref_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  ref_power = (((ref_analog_value * 5.0) / 1024.0)/d)*100;   // Corr.factor d=bij 100watt =2.4 en bij 1 watt=10.0


// ====================================================================================================================
  
 
// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.

if (fwd_voltage > 0.05)              //correctie bij 1 watt OK
   {
     c=10.0;
   } 
if (fwd_voltage > 0.13)              //correctie bij 2 watt OK
   {
     c=7.0;
   } 
if (fwd_voltage > 0.16)              //correctie bij 3 watt OK
   {
     c=5.5;
   } 
if (fwd_voltage > 0.21)              //correctie bij 4 watt OK
   {
     c=5.5;
   } 
if (fwd_voltage > 0.25)              //correctie bij 5 watt ok
   {
     c=5.35;
   } 
if (fwd_voltage > 0.32)              //correctie bij 6 watt ok
   {
     c=5.35;
   } 
if (fwd_voltage > 0.36)              //correctie bij 7 watt ok
   {
     c=5.35;
   } 
if (fwd_voltage > 0.42)              //correctie bij 8 watt ok
   {
     c=5.39;
   } 
if (fwd_voltage > 0.47)              //correctie bij 9 watt ok
   {
     c=5.35;
   } 
if (fwd_voltage > 0.55)              //correctie bij 10 watt ok
   {
     c=5.3;
   } 

if (fwd_voltage > 0.6)              //correctie bij 15 watt
   {
     c=4.5;
   } 

if (fwd_voltage > 0.77)              //correctie bij 20 watt
   {
     c=4.0;
   } 

if (fwd_voltage > 1.03)              //correctie bij 30 watt
   {
     c=3.7;
   } 

if (fwd_voltage > 1.29)              //correctie bij 40 watt
   {
     c=3.3;
   } 

if (fwd_voltage > 1.57)              //correctie bij 50 watt
   {
     c=3.0;
   } 

if (fwd_voltage > 1.72)              //correctie bij 60 watt
   {
     c=2.85;
   } 

if (fwd_voltage > 1.89)              //correctie bij 70 watt
   {
     c=2.75;
   } 

if (fwd_voltage > 2.03)              //correctie bij 80 watt
   {
     c=2.6;
   } 

if (fwd_voltage > 2.21)              //correctie bij 90 watt
   {
     c=2.5;
   } 

if (fwd_voltage > 2.3)              //correctie bij 100 watt
   {
     c=2.4;
   } 

if (fwd_voltage < 0.09) 
   {
     fwd_voltage=0.0;
   }

//================================================================================================
// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.


if (ref_voltage > 0.05)              //correctie bij 1 watt OK
   {
     d=10.0;
   } 
if (ref_voltage > 0.13)              //correctie bij 2 watt OK
   {
     d=7.0;
   } 
if (ref_voltage > 0.16)              //correctie bij 3 watt OK
   {
     d=5.5;
   } 
if (ref_voltage > 0.21)              //correctie bij 4 watt OK
   {
     d=5.5;
   } 
if (ref_voltage > 0.25)              //correctie bij 5 watt ok
   {
     d=5.35;
   } 
if (ref_voltage > 0.32)              //correctie bij 6 watt ok
   {
     d=5.35;
   } 
if (ref_voltage > 0.36)              //correctie bij 7 watt ok
   {
     d=5.35;
   } 
if (ref_voltage > 0.42)              //correctie bij 8 watt ok
   {
     d=5.39;
   } 
if (ref_voltage > 0.47)              //correctie bij 9 watt ok
   {
     d=5.35;
   } 
if (ref_voltage > 0.55)              //correctie bij 10 watt ok
   {
     d=5.3;
   }



   // ============================== swr berekenen =============================================================
   
   {
    SWR=(sqrt(fwd_power)+sqrt(ref_power))/(sqrt(fwd_power)-sqrt(ref_power))     ;   // 100w fwd 20 w ref = 2.62
                                                                                    // 25 w fwd 5 w ref  = 2.62     
   }                                                                                //  5 w fwd 1 w ref  = 2.62
    
if (fwd_voltage < 0.1)     // niet de negatieve getallen te laten zien.
   {
     SWR=0.0;
   }

    if (SWR > 4.0)        //SWR boven de 4 is niet nodig.
   {
     SWR=4.5;
   }
  
//====================================================================================================================
    
   lcd.setCursor(0, 1);
   lcd.print("Antenne SWR= ");
   lcd.print(SWR);                      //SWR op display
   

   lcd.setCursor(0, 0);
   lcd.print("POWER FWD=  ");
   lcd.print(fwd_power);                      //POWER FWD op display
    delay(300);
    
    //lcd.print(fwd_power);            // fwd power naar display     
    //lcd.print(fwd_voltage);          // ingangs spanning op display ,eerst spanning meten en tabel maken
    //lcd.print(ref_voltage);          // ingangs spanning op display 
    //lcd.print(ref_power);            // ref power naar display
    //lcd.print(SWR);                      //SWR op display
    //lcd.print(c);                        //corectie factor

    
}
Image

Re: SWR METER DIGITAAL MAKEN

Posted: Sat Dec 16, 2017 10:39 am
by pe1br
Hoi Geert,

Ik heb de correctie factoren in arrays gezet zodat je ze sneller aan kunt passen aan de meetkop die je gebruikt.
Ik vraag me alleen af of ik het hier voor jou makkelijk mee maak ?

Code: Select all

/*
  Lees analoge waarde op Pin 0 en Pin 1 en zet deze om naar Voltage en daarna naar Watt.
  Let op maximale ingangspanning is 5Volt!!!!!!!
  En zet dit om met correctie-factor c naar Power.
 */
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      //aansluitingen display

float fwd_voltage = 0.0;

float fwd_power = 0.0;

float ref_voltage = 0.0;

float ref_power = 0.0;

float c=0.0;                 //correctie factor c bij 100 watt c= 2.4 en bij 1 watt c=10.0 fwd power
float d=0.0;                 //correctie factor d bij 100 watt c= 2.4 en bij 1 watt c=10.0 ref power

int value=0;
float SWR=0.0 ;

float fwdcorrectionvolt[]   ={0.05, 0.13, 0.16, 0.21, 0.25, 0.32, 0.36, 0.42, 0.47, 0.55,  0.6, 0.77, 1.03, 1.29, 1.57, 1.72, 1.89, 2.03, 2.21, 2.3};
float fwdcorrectionfactor[] ={10.0,  7.0,  5.5,  5.5, 5.35, 5.35, 5.35, 5.39, 5.35,  5.3, 5.45,  4.0,  3.7,  3.3,  3.0, 2.85, 2.75,  2.6,  2.5, 2.4};

float refcorrectionvolt[]   ={0.05, 0.13, 0.16, 0.21, 0.25, 0.32, 0.36, 0.42, 0.47, 0.55};
float refcorrectionfactor[] ={10.0,  7.0,  5.5,  5.5, 5.35, 5.35, 5.35, 5.39, 5.35,  5.3};
//==================================================================================================================
void setup()
{
   Serial.begin(9600);     //  opens serial port, sets data rate to 9600 bps
   lcd.begin(16, 2);       //// set up the LCD's number of columns and rows:
   lcd.print("PE1IWT SWR 1.5  ");
   delay(3000);
   
}
void loop()
{

//   Van fwd_voltage naar fwd_power ===============================================================================
   
   int fwd_analog_value = analogRead(A0);                    //ingangsspanning  A0 meten !!!!MAX 5Volt!!!!

  fwd_voltage = (fwd_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  fwd_power = (((fwd_analog_value * 5.0) / 1024.0)/c)*100;   // Corr.factor c=bij 100watt =2.4 en bij 1 watt=10.0
 

//  Van ref_voltage naar ref_power =================================================================================
   int ref_analog_value = analogRead(A1);                    //ingangsspanning  A1 meten !!!!MAX 5Volt!!!!

  ref_voltage = (ref_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  ref_power = (((ref_analog_value * 5.0) / 1024.0)/d)*100;   // Corr.factor d=bij 100watt =2.4 en bij 1 watt=10.0


// ====================================================================================================================

// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug forward.

for (int i = 0; i <= 19; i++) 
  {
    if (fwd_voltage > fwdcorrectionvolt[i])              //correctie bij 1 watt OK
     {
       c=fwdcorrectionfactor[i];
     }
  }

if (fwd_voltage < 0.09)
   {
     fwd_voltage=0.0;
   }


//================================================================================================
// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug reflect.

for (int i = 0; i <= 9; i++) 
  {
  if (ref_voltage > refcorrectionvolt[i])              //correctie bij 1 watt OK
    {
      d=refcorrectionfactor[i];
    }
  }

   // ============================== swr berekenen =============================================================
   
   {
    SWR=(sqrt(fwd_power)+sqrt(ref_power))/(sqrt(fwd_power)-sqrt(ref_power))     ;   // 100w fwd 20 w ref = 2.62
                                                                                    // 25 w fwd 5 w ref  = 2.62     
   }                                                                                //  5 w fwd 1 w ref  = 2.62
   
if (fwd_voltage < 0.1)     // niet de negatieve getallen te laten zien.
   {
     SWR=0.0;
   }

    if (SWR > 4.0)        //SWR boven de 4 is niet nodig.
   {
     SWR=4.5;
   }
 
//====================================================================================================================
   
   lcd.setCursor(0, 1);
   lcd.print("Antenne SWR= ");
   lcd.print(SWR);                      //SWR op display
   

   lcd.setCursor(0, 0);
   lcd.print("POWER FWD=  ");
   lcd.print(fwd_power);                      //POWER FWD op display
    delay(300);
   
    //lcd.print(fwd_power);            // fwd power naar display     
    //lcd.print(fwd_voltage);          // ingangs spanning op display ,eerst spanning meten en tabel maken
    //lcd.print(ref_voltage);          // ingangs spanning op display
    //lcd.print(ref_power);            // ref power naar display
    //lcd.print(SWR);                      //SWR op display
    //lcd.print(c);                        //corectie factor 
}

Re: SWR METER DIGITAAL MAKEN

Posted: Sat Dec 16, 2017 2:09 pm
by Pe1iwt
ZOALS DAT GAAT DIT IS VERSIE 1.6
MARCO IK ZAL JOUW ARAY VERSIE OOK TESTEN.

Code: Select all

[code]
/*
  Lees analoge waarde op Pin 0 en Pin 1 en zet deze om naar Voltage en daarna naar Watt.
  Let op maximale ingangspanning is 5Volt!!!!!!!
  En zet dit om met corectie-factor c naar Power.
  De uitlezing is iets onrustig....maar daarvoor is het ook mijn 1e Arduino expiriment.
  Verbeteringen/sugesties zie ik graag tegemoed.
  73 Geert PE1IWT
 */
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      //aansluitingen display

float fwd_voltage = 0.0;
float fwd_power = 0.0;
float ref_voltage = 0.0;
float ref_power = 0.0;
float c=0.0;                 //correctie factor c bij 100 watt c= 2.4 en bij 1 watt c=10.0 fwd power
float d=0.0;                 //correctie factor d bij 100 watt c= 2.4 en bij 1 watt c=10.0 ref power
int value=0;
float SWR=0.0;

//==================================================================================================================
void setup()
{
   lcd.begin(16, 2);       //// set up the LCD's number of columns and rows: 
   lcd.print("PE1IWT SWR 1.6  ");
   delay(3000);
}
void loop()
{ //BEGIN

// ==========================================  Van fwd_voltage naar fwd_power =====================================
   
   int fwd_analog_value = analogRead(A0);                    //ingangsspanning  A0 meten !!!!MAX 5Volt!!!!

  fwd_voltage = (fwd_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  fwd_power = (((fwd_analog_value * 5.0) / 1024.0)/c)*100;   // Corr.factor c=bij 100watt =2.4 en bij 1 watt=10.0
  

//  ============================== Van ref_voltage naar ref_power ==================================================
   int ref_analog_value = analogRead(A1);                    //ingangsspanning  A1 meten !!!!MAX 5Volt!!!!

  ref_voltage = (ref_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  ref_power = (((ref_analog_value * 5.0) / 1024.0)/d)*100;   // Corr.factor d=bij 100watt =2.4 en bij 1 watt=10.0
 

// ====================================================================================================================
  
 
// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.

if (fwd_voltage > 0.05){c=10.0;}  //correctie bij 1 watt OK
if (fwd_voltage > 0.13){c=7.0;}   //correctie bij 2 watt OK
if (fwd_voltage > 0.16){c=5.5;}   //correctie bij 3 watt OK
if (fwd_voltage > 0.21){c=5.5;}   //correctie bij 4 watt OK
if (fwd_voltage > 0.25){c=5.35;}  //correctie bij 5 watt ok
if (fwd_voltage > 0.32){c=5.35;}  //correctie bij 6 watt ok 
if (fwd_voltage > 0.36){c=5.35;}  //correctie bij 7 watt ok 
if (fwd_voltage > 0.42){c=5.39;}  //correctie bij 8 watt ok 
if (fwd_voltage > 0.47){c=5.35;}  //correctie bij 9 watt ok 
if (fwd_voltage > 0.55){c=5.3;}   //correctie bij 10 watt ok
if (fwd_voltage > 0.6){c=4.5;}    //correctie bij 15 watt
if (fwd_voltage > 0.77){c=4.0;}   //correctie bij 20 watt 
if (fwd_voltage > 1.03){c=3.7;}   //correctie bij 30 watt 
if (fwd_voltage > 1.29){c=3.3;}   //correctie bij 40 watt
if (fwd_voltage > 1.57){c=3.0;}   //correctie bij 50 watt
if (fwd_voltage > 1.72){c=2.85;}  //correctie bij 60 watt
if (fwd_voltage > 1.89){c=2.75;}  //correctie bij 70 watt
if (fwd_voltage > 2.03){c=2.6;}   //correctie bij 70 watt
if (fwd_voltage > 2.21){c=2.5;}   //correctie bij 90 watt
if (fwd_voltage > 2.3){c=2.4;}    //correctie bij 100 watt

if (fwd_voltage < 0.09){fwd_voltage=0.0;}

//================================================================================================
// Aanpassen corectiefactor d i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.


if (ref_voltage > 0.05){d=10.0;}  //correctie bij 1 watt 
if (ref_voltage > 0.13){d=7.0;}   //correctie bij 2 watt 
if (ref_voltage > 0.16){d=5.5;}   //correctie bij 3 watt 
if (ref_voltage > 0.21){d=5.5;}   //correctie bij 4 watt  
if (ref_voltage > 0.25){d=5.35;}  //correctie bij 5 watt 
if (ref_voltage > 0.32){d=5.35;}  //correctie bij 6 watt 
if (ref_voltage > 0.36){d=5.35;}  //correctie bij 7 watt  
if (ref_voltage > 0.42){d=5.39;}  //correctie bij 8 watt 
if (ref_voltage > 0.47){d=5.35;}  //correctie bij 9 watt 
if (ref_voltage > 0.55){d=5.3;}   //correctie bij 10 watt 



   // ============================== swr berekenen =============================================================
   
   {
    SWR=(sqrt(fwd_power)+sqrt(ref_power))/(sqrt(fwd_power)-sqrt(ref_power))     ;   // 100w fwd 20 w ref = 2.62
                                                                                    // 25 w fwd 5 w ref  = 2.62     
   }                                                                                //  5 w fwd 1 w ref  = 2.62
    
// =============================================================================================================
if (SWR > 4.3){SWR=4.5;}               //SWR boven de 4.3 is niet nodig.
if (fwd_voltage < 0.2){SWR=0.0;}       // DISPLAY NULLEN
if (fwd_voltage < 0.1){fwd_power=0.0;}
if (fwd_voltage < 0.12){ref_power=0.0;}
  
//================================== ZET DE GEGEVENS NAAR HET DISPLAY ==================================
    
   lcd.setCursor(0, 1);
   lcd.print("ANTENNE SWR =");
   lcd.print(SWR);                     //SWR op display
   
   //lcd.setCursor(12, 1);               // TEST REGEL
   //lcd.print(ref_power);               // REF POWER OP DISPLAY 

   lcd.setCursor(0, 0);
   lcd.print("POWER FWD=  ");
   lcd.print(fwd_power);               //POWER FWD op display
   delay(300);
   
//==================================== GEGEVENS DIE NAAR HET DIPLAY GESTUURD KUNNEN WORDEN ===============
  
    //lcd.print(fwd_power);            // fwd power naar display     
    //lcd.print(fwd_voltage);          // ingangs spanning op display ,eerst spanning meten en tabel maken
    //lcd.print(ref_voltage);          // ingangs spanning op display 
    //lcd.print(ref_power);            // ref power naar display
    //lcd.print(SWR);                      //SWR op display
    //lcd.print(c);                        //corectie factor fwd
    //lcd.print(d);                        //corectie factor ref
    
}//EIND
[/code]

Re: SWR METER DIGITAAL MAKEN

Posted: Mon Dec 18, 2017 9:39 pm
by Pe1iwt
Programma voor arnold

Code: Select all

[code]
/*
  Lees analoge waarde op Pin 0 en Pin 1 en zet deze om naar Voltage en daarna naar Watt.
  Let op maximale ingangspanning is 5Volt!!!!!!!
  En zet dit om met corectie-factor c naar Power.
  De uitlezing is iets onrustig....maar daarvoor is het ook mijn 1e Arduino expiriment.
  Verbeteringen/sugesties zie ik graag tegemoed.
  73 Geert PE1IWT
 */
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      //aansluitingen display

float fwd_voltage = 0.0;
float fwd_power = 0.0;
float ref_voltage = 0.0;
float ref_power = 0.0;
float c=0.0;                 //correctie factor c bij 100 watt c= 2.4 en bij 1 watt c=10.0 fwd power
float d=0.0;                 //correctie factor d bij 100 watt c= 2.4 en bij 1 watt c=10.0 ref power
int value=0;
float SWR=0.0;

//==================================================================================================================
void setup()
{
   lcd.begin(16, 2);       //// set up the LCD's number of columns and rows: 
   lcd.print("SWR 1.7     ");
   delay(3000);
}
void loop()
{ //BEGIN

// ==========================================  Van fwd_voltage naar fwd_power =====================================
   
   int fwd_analog_value = analogRead(A0);                    //ingangsspanning  A0 meten !!!!MAX 5Volt!!!!

  fwd_voltage = (fwd_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  fwd_power = (((fwd_analog_value * 5.0) / 1024.0)/c)*100;   // Corr.factor c=bij 100watt =2.4 en bij 1 watt=10.0
  

//  ============================== Van ref_voltage naar ref_power ==================================================
   int ref_analog_value = analogRead(A1);                    //ingangsspanning  A1 meten !!!!MAX 5Volt!!!!

  ref_voltage = (ref_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  ref_power = (((ref_analog_value * 5.0) / 1024.0)/d)*100;   // Corr.factor d=bij 100watt =2.4 en bij 1 watt=10.0
 

// ====================================================================================================================
  
 
// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.

if (fwd_voltage > 0.05){c=10.0;}  //correctie bij 1 watt OK
if (fwd_voltage > 0.13){c=7.0;}   //correctie bij 2 watt OK
if (fwd_voltage > 0.16){c=5.5;}   //correctie bij 3 watt OK
if (fwd_voltage > 0.21){c=5.5;}   //correctie bij 4 watt OK
if (fwd_voltage > 0.25){c=5.35;}  //correctie bij 5 watt ok
if (fwd_voltage > 0.32){c=5.35;}  //correctie bij 6 watt ok 
if (fwd_voltage > 0.36){c=5.35;}  //correctie bij 7 watt ok 
if (fwd_voltage > 0.42){c=5.39;}  //correctie bij 8 watt ok 
if (fwd_voltage > 0.47){c=5.35;}  //correctie bij 9 watt ok 
if (fwd_voltage > 0.55){c=5.3;}   //correctie bij 10 watt ok
if (fwd_voltage > 0.6){c=4.5;}    //correctie bij 15 watt
if (fwd_voltage > 0.77){c=4.0;}   //correctie bij 20 watt 
if (fwd_voltage > 1.03){c=3.7;}   //correctie bij 30 watt 
if (fwd_voltage > 1.29){c=3.3;}   //correctie bij 40 watt
if (fwd_voltage > 1.57){c=3.0;}   //correctie bij 50 watt
if (fwd_voltage > 1.72){c=2.85;}  //correctie bij 60 watt
if (fwd_voltage > 1.89){c=2.75;}  //correctie bij 70 watt
if (fwd_voltage > 2.03){c=2.6;}   //correctie bij 70 watt
if (fwd_voltage > 2.21){c=2.5;}   //correctie bij 90 watt
if (fwd_voltage > 2.3){c=2.4;}    //correctie bij 100 watt

if (fwd_voltage < 0.09){fwd_voltage=0.0;}

//================================================================================================
// Aanpassen corectiefactor d i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.


if (ref_voltage > 0.05){d=10.0;}  //correctie bij 1 watt 
if (ref_voltage > 0.13){d=7.0;}   //correctie bij 2 watt 
if (ref_voltage > 0.16){d=5.5;}   //correctie bij 3 watt 
if (ref_voltage > 0.21){d=5.5;}   //correctie bij 4 watt  
if (ref_voltage > 0.25){d=5.35;}  //correctie bij 5 watt 
if (ref_voltage > 0.32){d=5.35;}  //correctie bij 6 watt 
if (ref_voltage > 0.36){d=5.35;}  //correctie bij 7 watt  
if (ref_voltage > 0.42){d=5.39;}  //correctie bij 8 watt 
if (ref_voltage > 0.47){d=5.35;}  //correctie bij 9 watt 
if (ref_voltage > 0.55){d=5.3;}   //correctie bij 10 watt 



   // ============================== swr berekenen =============================================================
   
   {
    SWR=(sqrt(fwd_power)+sqrt(ref_power))/(sqrt(fwd_power)-sqrt(ref_power))     ;   // 100w fwd 20 w ref = 2.62
                                                                                    // 25 w fwd 5 w ref  = 2.62     
   }                                                                                //  5 w fwd 1 w ref  = 2.62
    
// =============================================================================================================
if (SWR > 4.3){SWR=4.5;}               //SWR boven de 4.3 is niet nodig.
if (fwd_voltage < 0.2){SWR=0.0;}       // DISPLAY NULLEN
if (fwd_voltage < 0.1){fwd_power=0.0;}
if (fwd_voltage < 0.12){ref_power=0.0;}
  
//================================== ZET DE GEGEVENS NAAR HET DISPLAY ==================================
    
   lcd.setCursor(0, 1);
   lcd.print("SWR=");
   lcd.print(SWR);                     //SWR op display
   
   lcd.setCursor(9, 1);               // TEST REGEL
   lcd.print("X=");                     //X op display
   lcd.print(fwd_voltage);               // METING X OP DISPLAY 

   lcd.setCursor(0, 0);
   lcd.print("PWR=  ");
   lcd.print(fwd_power);               //POWER FWD op display
   delay(300);
   
//==================================== GEGEVENS DIE NAAR HET DIPLAY GESTUURD KUNNEN WORDEN ===============
  
    //lcd.print(fwd_power);            // fwd power naar display     
    //lcd.print(fwd_voltage);          // ingangs spanning op display ,eerst spanning meten en tabel maken
    //lcd.print(ref_voltage);          // ingangs spanning op display 
    //lcd.print(ref_power);            // ref power naar display
    //lcd.print(SWR);                      //SWR op display
    //lcd.print(c);                        //corectie factor fwd
    //lcd.print(d);                        //corectie factor ref
    
}//EIND
[/code]

Re: SWR METER DIGITAAL MAKEN

Posted: Sun Feb 25, 2018 12:38 am
by Pe1iwt
ZOALS DAT GAAT DIT IS VERSIE 1.8

Code: Select all

/*
  Lees analoge waarde op Pin 0 en Pin 1 en zet deze om naar Voltage en daarna naar Watt.
  Let op maximale ingangspanning is 5Volt!!!!!!!
  En zet dit om met corectie-factor c naar Power.
  De uitlezing is iets onrustig....maar daarvoor is het ook mijn 1e Arduino experiment.
  Verbeteringen/sugesties zie ik graag tegemoed.
  73 Geert PE1IWT
 */
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      //aansluitingen display

float fwd_voltage = 0.0;      
float fwd_power = 0.0;         
float ref_voltage = 0.0;
float ref_power = 0.0;         
float c=0.0;                 //correctie factor c bij 100 watt c= 2.4 en bij 1 watt c=10.0 fwd power
float d=0.0;                 //correctie factor d bij 100 watt d= 2.4 en bij 1 watt d=7.5 ref power
int value=0;
float SWR=0.0;

//==================================================================================================================
void setup()
{
   lcd.begin(16, 2);       // set up the LCD's number of columns and rows: 
   lcd.print("SWR 1.8  "); // Versie
   delay(3000);
}
void loop()
{ //BEGIN

// ==========================================  Van fwd_voltage naar fwd_power =====================================
   
   int fwd_analog_value = analogRead(A0);                     //ingangsspanning  A0 meten !!!!MAX 5Volt!!!!
   
  fwd_voltage = (fwd_analog_value * 5.0) / 1024.0;            // voltage meting  0.00 tot 5.00 Volt in 1024 stapjes
  fwd_power = (((fwd_analog_value * 5.0) / 1024.0)/c)*100;    // Corr.factor c=bij 100watt =2.4 en bij 1 watt=10.0
  

//  ============================== Van ref_voltage naar ref_power ==================================================
   int ref_analog_value = analogRead(A1);                    //ingangsspanning  A1 meten !!!!MAX 5Volt!!!!

  ref_voltage = (ref_analog_value * 5.0) / 1024.0;           // voltage meting  0.00 tot 5.00 Volt
  ref_power = (((ref_analog_value * 5.0) / 1024.0)/d)*100;   // Corr.factor d=bij 100watt =2.4 en bij 1 watt=7.5
 

// ====================================================================================================================
  
 
// Aanpassen corectiefactor c i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.

if (fwd_voltage > 0.05){c=10.0;}  //correctie bij 1 watt
if (fwd_voltage > 0.13){c=7.0;}   //correctie bij 2 watt
if (fwd_voltage > 0.16){c=5.5;}   //correctie bij 3 watt
if (fwd_voltage > 0.21){c=5.5;}   //correctie bij 4 watt
if (fwd_voltage > 0.25){c=5.35;}  //correctie bij 5 watt
if (fwd_voltage > 0.32){c=5.35;}  //correctie bij 6 watt 
if (fwd_voltage > 0.36){c=5.35;}  //correctie bij 7 watt
if (fwd_voltage > 0.42){c=5.39;}  //correctie bij 8 watt 
if (fwd_voltage > 0.47){c=5.35;}  //correctie bij 9 watt
if (fwd_voltage > 0.55){c=5.3;}   //correctie bij 10 watt
if (fwd_voltage > 0.6){c=4.5;}    //correctie bij 15 watt
if (fwd_voltage > 0.77){c=4.0;}   //correctie bij 20 watt 
if (fwd_voltage > 1.03){c=3.7;}   //correctie bij 30 watt 
if (fwd_voltage > 1.29){c=3.3;}   //correctie bij 40 watt
if (fwd_voltage > 1.57){c=3.0;}   //correctie bij 50 watt
if (fwd_voltage > 1.72){c=2.85;}  //correctie bij 60 watt
if (fwd_voltage > 1.89){c=2.75;}  //correctie bij 70 watt
if (fwd_voltage > 2.03){c=2.6;}   //correctie bij 70 watt
if (fwd_voltage > 2.21){c=2.5;}   //correctie bij 90 watt
if (fwd_voltage > 2.3){c=2.4;}    //correctie bij 100 watt

if (fwd_voltage < 0.09){fwd_voltage=0.0;}

//================================================================================================
// Aanpassen corectiefactor d i.v.m. niet liniair gedrag van de diode spanning uit de meetbrug.


if (ref_voltage > 0.07){d=7.5;}  //correctie bij 1 watt ok
if (ref_voltage > 0.09){d=4.5;}   //correctie bij 2 watt ok
if (ref_voltage > 0.12){d=4.2;}   //correctie bij 3 watt ok
if (ref_voltage > 0.16){d=4.1;}   //correctie bij 4 watt ok
if (ref_voltage > 0.20){d=4.0;}  //correctie bij 5 watt ok
if (ref_voltage > 0.26){d=4.4;}  //correctie bij 6 watt ok
if (ref_voltage > 0.30){d=4.35;}  //correctie bij 7 watt ok
if (ref_voltage > 0.36){d=4.6;}  //correctie bij 8 watt ok
if (ref_voltage > 0.41){d=4.6;}  //correctie bij 9 watt ok
if (ref_voltage > 0.48){d=4.6;}   //correctie bij 10 watt ok
if (ref_voltage > 0.68){d=3.4;}   //correctie bij 20 watt ok
if (ref_voltage > 1.20){d=3.0;}   //correctie bij 50 watt 
   // ============================== swr berekenen =============================================================
   
if (ref_voltage <= 0.04){ref_power=0.00001;}   // VOORKOM DAT DE WORTEL UIT NUL BEREKEND MOET WORDEN.

   {
    SWR=(sqrt(fwd_power)+sqrt(ref_power))/(sqrt(fwd_power)-sqrt(ref_power))     ;   // 100w fwd 20 w ref = 2.62
                                                                                    // 25 w fwd 5 w ref  = 2.62     
   }                                                                                //  5 w fwd 1 w ref  = 2.62
    
// =============================================================================================================
if (SWR > 4.3){SWR=4.5;}               //SWR boven de 4.3 is niet nodig.
if (fwd_voltage < 0.2){SWR=0.0;}       // DISPLAY NULLEN
if (fwd_voltage < 0.1){fwd_power=0.0;}

 
//================================== ZET DE GEGEVENS NAAR HET DISPLAY ==================================

   lcd.setCursor(0, 0);
   lcd.print("PWR=");
   lcd.print(fwd_power);                //POWER FWD op display
   lcd.print(" WATT     ");              //lcd.setCursor(8, 0);  // TEST REGEL
    
   lcd.setCursor(0, 1);
   lcd.print("SWR=");
   lcd.print(SWR);                      //SWR op display
   
   //lcd.setCursor(9, 1);                  // TEST REGEL
   //lcd.print("X=");                      //LAAT ACHTER DE X DE GEWENSTE TEST VAIABELE ZIEN
   //lcd.print(ref_voltage);               // TEST GETAL OP DISPLAY 
   
   delay(300);
   
//==================================== GEGEVENS DIE NAAR HET DISPLAY GESTUURD KUNNEN WORDEN ===============
  
    //lcd.print(fwd_power);            // fwd power naar display     
    //lcd.print(fwd_voltage);          // ingangs spanning op display ,eerst spanning meten en tabel maken
    //lcd.print(ref_voltage);          // ingangs spanning op display 
    //lcd.print(ref_power);            // ref power naar display
    //lcd.print(SWR);                      //SWR op display
    //lcd.print(c);                        //corectie factor fwd
    //lcd.print(d);                        //corectie factor ref
    
}//EIND