ATNEL tech-forum
https://forum.atnel.pl/

sterowanie do odbiornika krótkofalsrskiego AM/SSB
https://forum.atnel.pl/topic24279.html
Strona 1 z 1

Autor:  studi [ 14 lip 2022, o 00:27 ]
Tytuł:  sterowanie do odbiornika krótkofalsrskiego AM/SSB

Tym razem projekt który robiłem dla jednego z małych forów dla elektroników skupionych wokół pewnego youtubera, celowo piszę takimi ogólnikami bo nasze drogi się rozeszły w dość nieprzyjemny sposób.

Opis projektu
Więc projekt polegał na opracowaniu radia krótkofalarskiego lampowego, ale z powiewem nowoczesności tzn. generatorami dla pierwszej i drugiej przemiany częstotliwości miał być układ SI5351 (potrójny generator sterowany I2C). Na początku padł pomysł sterowania tego generatora z gotowego programu napisanego na Arduino, szybko jednak okazało się, że nie spełnia on za bardzo oczekiwań i należy go trochę przerobić, do głównych wad należało m.in. to, że większość parametrów pracy generatora była ustawiana jako stałe w kodzie programu i niezmienna w czasie, program też niczego nie zapamiętywał.
Do rywalizacji w szranki stanęliśmy we dwóch, ja w C, drugi z kolegów w BASCOMie, założenia początkowe były proste, możliwość ustawienia i zapamiętania dowolnej częstotliwości pośredniej pierwszej przemiany VFO, odpowiedni zakres odstrojenia drugiej przemiany BFO, sterowanie opóźnionym załączeniem napięcia anodowego lamp, zapamiętanie ostatnio nastawionej częstotliwości odbioru. Z czasem projekt się rozrastał i została dodany układ automatycznego przełączania filtrów wejściowych, wskaźnik wysterowania/poziomu sygnału, sterowanie z pilota RC5, a ostatnią funkcją było dodanie nadawania.
W sumie projekt mimo wykonania 10 szt. płytek sterownika został zmontowany tylko przeze mnie jako egzemplarz testowy bez całego radia oraz przez jednego z kolegów, reszta forumowiczów z czasem jakoś straciła zainteresowanie projektem po początkowej euforii - tzw. słomiany zapał.

Sterowanie układu odbywało się z gotowego kupnego modułu KEY & LED zawierającego 8 diod świecących, 8 klawiszy oraz wyświetlacz led 8 segmentowy zbudowany na bazie układu TM1638, klawisze zawarte w tym układzie służyły do wyboru odpowiednich funkcji systemu, dodatkowo jako element regulacyjny do zmiany parametrów służył encoder pełno-okresowy 24 krokowy, a dodatkowo w systemie na czas strojenia (dokładniejsze opisy na wyświetlaczu) można było podłączyć wyświetlacz 2x16 sterowany w trybie 4bitowy, wskaźnik wysterowania zrobiony był na wyświetlaczu OLED 0.96" I2C, a selektorem wyjść przełącznika filtrów był multiplekser. Nie ustrzegłem się od małego błędu na płytce więc w zestawie trzeba było ciąć ścieżki i robić zworki ale nie były widoczne i schowane pod wyświetlaczem OLED, a zamienione były sygnały SDA i SCL do tegoż wyświetlacza. Układ proacował z ATmega328P lub ATmega328PB

Schemat układu wyglądał następująco
Obrazek

A układ po zmontowaniu prototypu tak bez i z założonymi wyświetlaczami
Obrazek
Obrazek
Obrazek
Obrazek

Opis programu
Program został napisany nie wiem czy z lenistwa, czy z pośpiechu w jednym pliku .c i do kompletu jednym pliku .h z ustawieniami i do tego oczywiście z bibliotekami wymaganymi do działania komponentów.

Użyte w programie zatem są następujące biblioteki
SI5351 -> https://github.com/NT7S/Si5351
TM1638 -> https://github.com/lpodkalicki/attiny-tm1638-library/
MK_OLED -> http://atnel.pl
IR_DECODE -> http://atnel.pl
LCD -> http://atnel.pl
przy czym biblioteki Atnelowskie zostały zapożyczone z pendrive do bluebooka, a ta do OLED chyba nawet zakupiona.

Biblioteka do sterowania SI w komplecie posiadała swoją własną implementację i2c, a biblioteka OLED swoją, więc musiałem nieco przerobić kod, wydaje mi się, że biblioteki OLED aby pracowały na jednej bibliotece i2c

Dokładne opisy zmiennych oraz klawiszy i ich znaczenia czy klawiszy z pilota rc-5 znajdują się w komentarzach więc nie będę tego przepisywał, jak kogoś zainteresuje zapraszam do kodu, w skrócie jedynie podam, że przy starcie systemu wszystkie nastawy i odbierana częstotliwość były odczytywane z pamięci EEPROM, następnie jeśli projekt był skompilowany z obsługą opóźnionego startu dla lamp to było wykonywane to opóźnienie, na jednym z pinów poprzez tranzystor sterujący załączany był stan do sterowania przekaźnikiem załączającym napięcie anodowe ok. 150V, zapis do EEPROMu następował za każdym razem gdy system wychodził z którejkolwiek procedury strojenia lub gdy w trybie normalnej pracy przez określony czas nie było zmienianej częstotliwości odbiorczej. Regulację częstotliwości można było dokonywać dokładnie co 1Hz lub zgrubnie wybierając dowolną z dekad. Trochę na kolanie została napisana procedura przełączania filtrów, gdyż była ona dodawana na końcu i tak właściwie tylko dla jednego z kolegów który całkowicie ukończył projekt, dla tego częstotliwości filtrów nie były ustawiane programowo, a wpisane w pliku .h na stałe i był to chyba jedyne odstępstwo w programie od zasady, że wszystko da się ustawić w pełni działającym systemie bez konieczności programowania ponownego wsadu. Program miał jedną ułomność, która wynikała z dostępnej biblioteki dla układu SI5351, otóż jej oryginał na arduino mógł sterować generatorami praktycznie od zera, a jedyna jaką wtedy znalazłem biblioteka w czystym c z powodu jakiś specyficznych obliczeń, a była pisana pod ATTiny potrafiła pracować dopiero od 1MHz więc projektu nie można było użyć na falach średnich lub długich a jedynie na falach krótkich.

Kod w załączeniu

Autor:  mirekk36 [ 14 lip 2022, o 00:54 ]
Tytuł:  Re: sterowanie do odbiornika krótkofalsrskiego AM/SSB

Z projektu na projekt - widać duży progress i to w każdym aspekcie i projektowania PCB i samego kodu ;) Przepięknie się na to patrzy. A kolejny projekt jak zwykle bardzo mocno rozbudowany sprzętowo ;)

Autor:  studi [ 14 lip 2022, o 01:04 ]
Tytuł:  Re: sterowanie do odbiornika krótkofalsrskiego AM/SSB

z kodu źródłowego usunąłem biblioteki chronione prawami autorskimi, kod ponownie załączam

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/