Przeskocz do treści

Miernik częstotliwości do Lidia 80

Po przejrzeniu gotowych odbiorników Lidia 80 na stronie Włodka  SP5DDJ zamarzył mi się miernik częstotliwości ale wyposażony w wyświetlacz LCD. W sklepie AVT wypatrzyłem taki miernik AVT2831  lecz nie pasował zakres mierzonej częstotliwości. Po przeanalizowaniu schematu zobaczyłem, że w torze pomiarowym jest zabudowany układ scalony, który jest dzielnikiem częstotliwości. Jeżeli usunie się ten układ to przesunie się zakres pomiaru w dół. Do projektu dołączony jest program źródłowy microkontrolera Atiny, na którym oparto budowę miernika. Zamówiłem kit i przystąpiłem do zabawy. Na początku zmontowałem cały kit zgodnie z instrukcją,  układ LB3500 zabudowałem w podstawce, którą mozna uzyskać przecinając  wzdłuż DIL18  i uruchomiłem. Na testach miernik mierzył poprawnie. Przeróbka polega na usunięciu preskalera LB3500 i przeróbce programu. Wyjście układu (nóżka 9) zwarłem do listwy do wejścia.

Następnie trzeba było zmienić program. Wystarczy poprawić w linii 47 oryginalnego programu korekcję na wartość 0.0000040694875 i miernik zacznie wskazywać poprawną wartość. Ilość pustych znaków wyświetlacza skłoniła mnie jeszcze do dodania nazwy radia, emisji i znaku. Moim zadaniem jeżeli ktoś planuje wsadzenie tego miernika do Lidii to nie trzeba wlutować tych elementów jak na poniższym schemacie. Czerwonym przewodem jest zaznaczony mostek który można wykonać kynarem. Elementy w czerwonym polu są zbędne.

Poniżej zamieściłem zmodyfikowany program, który został skompilowany baskomem i wgrany w układ ATiny programatorem.


 
$regfile = "attiny2313.dat"
 Enable Interrupts
 $crystal = 16000000
 Config Lcd = 16 * 2 'konfiguracja LCD
 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
 Config Portd = Input
 Set Portd.5
 Dim Freq As Long
 Dim F As Single
 Dim Pomoc As Byte
 Dim L As Byte
 Cursor Off
 Dim S As String * 4
 Config Timer1 = Counter , Edge = Rising 'konfiguracja timerow
 Enable Timer1
 Start Timer1
 Config Timer0 = Timer , Prescale = 1024
 Enable Timer0
 Start Timer0

On Timer0 Sek
 On Timer1 Fr
 Cls
 Do
 Loop

Fr:
 Incr Pomoc 'jesli przepełnienie timera1 to zwieksz zmienna pomocnicza
 Return 'potrzebna do obliczenia czestotliwosci

Sek:
 Incr L
 If L = 61 Then Gosub Licz 'jezeli procesor odliczy jedna sekunde to skok do podprogramu licz
 Return

Licz:
 Stop Timer1
 L = 0
 Cls

Freq = 65536 * Pomoc
 Freq = Freq + Timer1 'tutaj mozna wprowadzić offset'np offset -455kHz to odjecie od zmiennej freq wartosci 455000/32.5559
 F = Freq * 0.0000040694875 'obliczenie czestotliwosci i korekcja wpływu rezonatora i pojemnosci z nim pracujacych oraz niedokładności odmierzenia 1 sekundy

S = Fusing(f , "#.#####") 'formatowanie wyniku i wyswietlenie go na wyswietlaczu
 Locate 1 , 1
 Lcd "*Lidia80* ZNAK" 'tu możesz wpisać swój znak wywoławczy
 Locate 2 , 1
 Lcd S ; " MHz, SSB"
 Pomoc = 0
 Timer0 = 0 'zerowanie timerow i zmiennych pomocniczych
 Timer1 = 0
 Start Timer1

Return