Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Cyfrowy miernik mocy i SWR
SQ9MDD Offline
Rysiek
****

Liczba postów: 380
Dołączył: 01-02-2009
Post: #18
RE: Cyfrowy miernik mocy i SWR
(26-01-2014 14:38)SP5MNL napisał(a):  W programie jest wyłączony HF - widocznie autor używał SWR tylko do UKF
Oto ten fragment programu

BAND = EEPROM.read(2);
if (BAND == 0) {
BAND = 3; // No HF for time being, default = 2m
PowCal = PowCalHF;}
if (BAND == 1) {
PowCal = PowCal6m;}
if (BAND == 2) {
PowCal = PowCal4m;}
if (BAND == 3) {
PowCal = PowCal2m;}
if (BAND == 4) {
PowCal = PowCal70;}
if (BAND == 5) {
PowCal = PowCal23;}
if (BAND == 6) {
PowCal = PowCal13;}

Usuń linię BAND = 3; // No HF for time being, default = 2m
żeby było tak
if (BAND == 0) {
PowCal = PowCalHF;}

powinno pomóc.
Jeżeli chodzi o kalibrację to zmierz napięcie (VoltFWD) na wejściu fali padającej i oblicz wg wzoru PowCal=(VoltFWD²/Power) / 1000 (gdzie Power = moc na 50 Ohm w watach)
to co ci wyjdzie wpisz do programu w nawias zamiast 100
#define PowCalHF (100) // HF band

powodzenia

Trzeba jeszcze od-komentować samo przełączanie pasm w pętli głównej programu, to powyżej dotyczy ładowania pasma z pamięci eeprom przy starcie urządzenia, też się dałem złapać na to za pierwszym razem Wink

Kod:
if (digitalRead (BANDSwitch) == 1) {   // released
              
                  beepband = 0;
                  
                          BAND = BAND + 1;  
                            
                            if (BAND >= 7) BAND = 1;    // set 0 if HF is enabled !
                          
                            EEPROM.write(2,BAND);       // store new mode permanently
                            
                            if (BAND == 0) {            //set proper calibration constants
                                  PowCal = PowCalHF;}
                            if (BAND == 1) {        
                                  PowCal = PowCal6m;}    
                            if (BAND == 2) {        
                                  PowCal = PowCal4m;}
                            if (BAND == 3) {        
                                  PowCal = PowCal2m;}    
                            if (BAND == 4) {        
                                  PowCal = PowCal70;}
                            if (BAND == 5) {        
                                  PowCal = PowCal23;}    
                            if (BAND == 6) {        
                                  PowCal = PowCal13;}

Dokładnie chodzi o linię:

Kod:
if (BAND >= 7) BAND = 1;    // set 0 if HF is enabled !

Zmieniamy tam na 0 tak jak jest opisane w komentarzu

Z tego co widzę wyświetlana moc jest liniowo zależna od napięcia na przetworniku procesora. Nie widziałem jakiegoś specjalnego przeliczania, użyta została krzywa dwupunktowa na anjprostszej funkcji map. Więc jeśli mostek pomiarowy nie pracuje liniowo to należało by chyba to skompensować programowo. Podejrzewam że dla każdego pasma osobno bo będą rozbieżności.
Może ktoś kto ma większe doświadczenie w pomiarach by to opisał to można by posiedzieć nad softem.
Jeśli będzie bardzo tragicznie z tymi pomiarami to można by wprowadzić krzywą na przykład trzy punktową albo więcej tak by jak najwierniej małym nakładem pracy poprawić odczyty

...przede wszystkim nie zakłócać...
27-01-2014 10:57
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Cyfrowy miernik mocy i SWR - SP4LVC - 28-12-2013, 1:01
RE: Cyfrowy miernik mocy i SWR - SQ9MDD - 27-01-2014 10:57

Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości