#include <OneWire.h> #include <LiquidCrystal.h> #include <FreqCount.h> #include "VSWR.h" #include "K08PA.h" #include "ATU.h" PA_State PA; int Pvor_input = A1; int Prueck_input = A0; float Pvor = 0; float Prueck = 0; float Pvor_mw=0; float Prueck_mw=0; float VSWR,Uvor,Urueck; int current_band; //aktuelles Band basierend auf aktuell gemessener Frequenz void setup() { Serial.begin(9600); Serial.println("+++Test+++"); init_CBank(); init_LBank(); for (int a=22; a<43; a++) //definiere 6 Ausgänge (22-27) für den TX_Filter { //definiere 8 Ausgänge (28-35) für die Kondensatoren-Bank und den vorn/hinten-Schalter pinMode(a, OUTPUT); // definiere 7 Ausgänge (36-42) für die Spulen-Bank } for (int a=22; a<28; a++) { digitalWrite(a, HIGH); //setze die Ausgänge für den TX-Filter auf High, da Relais mit 0 angesteuert werden } switch_band(PA.band); //setze initial den höchsten TX-Filter! for (int a=29; a<43; a++) { digitalWrite(a, LOW); //setze die Ausgänge für die bistabilen ATU-Relais auf LOW } //pinMode(48, INPUT); //Eingang fuer den Temperatur Sensor pinMode(49, INPUT); //Eingang fuer PTT pinMode(50, OUTPUT); //Ausgang fuer PTT zur PA digitalWrite(50, LOW); //BIAS abschalten - PTT OFF lcd.begin(16, 4); //Display mit 4 Zeilen a 16 Zeichen lcd.print("K08 mchfPA"); set_Kapa(127); set_Kapa(0); set_Kapa_Position(0); set_Indu(127); set_Indu(0); FreqCount.begin(1); //Den Frequenzzaehler starten Torzeit=1ms -> 7500 entspr. 7.500MHZ analogReference(DEFAULT); //Nutzen der 5V als Analogreferenzquelle } void loop() { static unsigned long lcd_timer=0; PA.Fwd_Pwr_mW = getFwdPwr(Pvor_input); PA.Ref_Pwr_mW = getRefPwr(Prueck_input); if (PA.Fwd_Pwr_mW > 5) PA.VSWR=SWR(PA.Fwd_Pwr_mW,PA.Ref_Pwr_mW); PA.current=get_current(); if ((millis()-lcd_timer) > 200) //alle 200ms das LCD refreshen { PA.temp=getTemp(); refresh_lcd(PA.VSWR,PA.Fwd_Pwr_mW,PA.Ref_Pwr_mW, PA.freq, PA.band, PA.current, PA.temp, PA.PTT_in, PA.active); lcd_timer=millis(); } PA.PTT_in=get_PTT_status(); if (PA.PTT_in == true) // { if (PA.PTT_was_on==false) { PA.PTT_was_on=true; //delay(10); PA.freq=get_freq(); //PA.freq=3.6; if (PA.freq > 0.0) { current_band=get_band(PA.freq); //Achtung anpassen!!!!! - aktuelles Band der gemessenen Frequenz ermitteln if (current_band!=PA.band) // hat die aktuelle Frequenz den aktiven Filterbereich verlassen? { digitalWrite(50,LOW); PA.active=false; //Vermeiden, dass in das falsche Filter gearbeitet wird delay(30); switch_band(current_band); //Filter: Bandwechsel! PA.band=current_band; // im PA-Status neues Band speichern delay(30); PA.active=true; digitalWrite(50, HIGH); } else { //Band ist noch korrekt PA.active=true; digitalWrite(50, HIGH); } } } } else { PA.PTT_was_on=false; PA.active=false; digitalWrite(50, LOW); } }