HomeMade

Pełna wersja: Piligrim SMD z DW Radio
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Witam,

Kolego, na początek zapoznaj się ze stroną 12 tego wątku.
Wydaje się że mam nowszą już poprawioną wersję płytki bo kondensator jest plusem do masy
Z filmu wyglada na to że Pilgrim działa i się przestraja.
Sprawdź licznikiem częstotliwości, albo na innym radiu częstotliwość heterodyny.
Jeśli nie dysponujesz taką możliwością, to przestrajaj syntezę poza pasmami, może w pewnym momencie załapiesz któreś z pasm amatorskich.
Najlepiej byłoi by 40m.
Na moje oko to na wyjściu syntezy masz nie taką częstotliwość jaka powinna być do odbieranej częstotliwości.

Co do kondensatora, to odwrotnie wlutowany kondensator powoduje tylko że automatyka nie wraca do pełnej czułości po odebraniu silnego sygnału. reszta działa OK.
(26-08-2017 23:43)M72M72 napisał(a): [ -> ]Synteza własnej konstrukcji na SI5351 sprawdzona w bit-x40 i jest sprawna. Częstotliwość syntezy jest ustawiona na F*4.

Może w syntezie masz ustawienie pośredniej z bit-x40.
Nie wystarczy tylko ustawić F*x4.IF też trzeba zmienić.
Piszesz,że synteza własnej konstrukcji na SI5351.Czy sam pisałeś program?
(27-08-2017 12:58)SPO3O2OL napisał(a): [ -> ]Nie wystarczy tylko ustawić F*x4.IF też trzeba zmienić.
Piszesz,że synteza własnej konstrukcji na SI5351.Czy sam pisałeś program?

Kolego jakie IF masz na myśli ?
Program piszę sam w arduino.
Znalazłem błąd, miałem źle zdefiniowany typ zmiennej odpowiedzialnej za częstotliwość.
Kod:
void set_f(){
  si5351.set_freq(f*100*4, SI5351_CLK2);
  si5351.update_status();
}
zmienna "f" przyjmuje wartości do ok 28000000 po pomnożeniu przez 4 a następnie przez 100 bo tak wymaga układ SI5351 daje ogromne liczby które wykraczają poza pojemność typu zmiennej "long" bo tak miałem to zdefiniowane.
Po zmianie na "float" radio ruszyło.

Dziwi mnie tylko jedno, mając antenę na 40m nie powinienem odbierać czegoś na pozostałych pasmach, nawet słabo ?
Pytam bo w zasadzie mam ciszę oprócz 40m.
(31-08-2017 3:02)M72M72 napisał(a): [ -> ]Kolego jakie IF masz na myśli ?
Program piszę sam w arduino.

IF w bit-x40 ma 12MHz,przynajmniej w gotowej płycie z Indii.
IF w homodynie? Przyjmijmy do obliczeń 0kHz.


bit-x40
pasmo 40m
IF-12MHz
mnożnik F-x0
DDS do obsługi pasma 40m w zależności od przemiany
działać ma od 4.8 do 5MHz lub od 19 do 19.2MHz

homodyna
pasmo 40m
IF-0kHz
mnożnik F-x4
DDS do obsługi pasma 40m działać ma od 28 do 28.8MHz

Zmienne "f" nic mi nie mówią ale mam nadzieję,że sobie poradzisz.
Synteza napisana pod bit-x40 nie może w/g mnie bez zmiany IF dobrze funkcjonować w homodynie nawet gdy F wyjściowa zostanie pomnożona x4.Konieczna jest zmiana IF w programie z 12MHz na kHz.
Podłącz miernik częstotliwości na wyjście syntezy i sprawdź jaką częstotliwość generuje na poszczególnych pasmach.
(31-08-2017 3:02)M72M72 napisał(a): [ -> ]Znalazłem błąd, miałem źle zdefiniowany typ zmiennej odpowiedzialnej za częstotliwość.
Kod:
void set_f(){
  si5351.set_freq(f*100*4, SI5351_CLK2);
  si5351.update_status();
}
zmienna "f" przyjmuje wartości do ok 28000000 po pomnożeniu przez 4 a następnie przez 100 bo tak wymaga układ SI5351 daje ogromne liczby które wykraczają poza pojemność typu zmiennej "long" bo tak miałem to zdefiniowane.
Po zmianie na "float" radio ruszyło.

Dziwi mnie tylko jedno, mając antenę na 40m nie powinienem odbierać czegoś na pozostałych pasmach, nawet słabo ?
Pytam bo w zasadzie mam ciszę oprócz 40m.

Częstotliwość powinna być podana w formacie żądanym przez funkcję biblioteczną
si5351.set_freq i jest najprawdopodobniej hercach (bez mnożnika 100), typ zmiennej uint64_t.
Poniżej nagłówek funkcji

Kod:
/*
* set_freq(uint64_t freq, enum si5351_clock clk)
*
* Sets the clock frequency of the specified CLK output.
* Frequency range of 8 kHz to 150 MHz
*
* freq - Output frequency in Hz
* clk - Clock output
*   (use the si5351_clock enum)
*/
uint8_t Si5351::set_freq(uint64_t freq, enum si5351_clock clk)

Częstotliwość można sprawdzić bez oscyloskopu.
Wystarczy ustawić częstotliwość odbioru 2kHz i podłączyć słuchawkę.
Pozdrawiam
Witam,

Kolego M72M72, aby uniknąć szukania problemów w Twoim egzemplarzu Piligrima doprowadź swój kod do prawidłowego działania.
Do tego bardzo przyda Ci się częstościomierz. Podpinasz go pod wyjście generatora i widzisz jak na dłoni, czy si5351 generuje prawidłową częstotliwość. Wnioskując po Twoich pytaniach nie masz najmniejszego pojęcia, czy częstotliwość na wyjściu si5351 odpowiada wyświetlanej wartości *4.

Jeżeli nie posiadasz jeszcze częstościomierza, to go zakup lub zrób w pierwszej kolejności, a następnie składaj syntezę i pisz dla niej program. Można również użyć innego prawidłowo działającego (t)rx-a do sprawdzenia generowanej częstotliwości.

Co do programu - przeglądnij w pierwszej kolejności bibliotekę obsługi si5351 której używasz lub chociaż plik nagłówkowy tej biblioteki. Będziesz wiedział jakich argumentów dana funkcja wymaga.

Piszesz, że zamieniłeś swoją zmienną f na float, kiedy funkcja ustawiania częstotliwości si5351 wymaga zmiennej uint64_t . Jesteś pewien, że po niejawnym rzutowaniu ( a takie ma tu miejsce ) z float na uint64_t funkcja dostała prawidłową wartość ? Swoją drogą poszukaj może jeszcze innej biblioteki do obsługi si5351, bo używanie uint64_t do przekazania częstotliwości nie świadczy zbyt dobrze o niej, tym bardziej, że używasz atmegi 328 - jeżeli dobrze zauważyłem na zdjęciach ( arduino nano ).
Niby wszystko działa ale "prawie". Generalnie częstotliwość sygnału jest F*4 ale nie na wszystkich pasmach.
1
2
3
4
5
6
7
8
9
10
Zapewne przyczyną jest zły typ zmiennej odpowiedzialnej za częstotliwość. Ma być uint64_t a ja mam float. Muszę trochę pogrzebać w kodzie bo po zmianie na uint64_t wysypują mi się inne funkcje od wyświetlacza o których teraz nie ma co pisać.
Z tego co widzę to częstotliwość ma być mnożona przez 100
Wtam,

Cytat:Generalnie częstotliwość sygnału jest F*4 ale nie na wszystkich pasmach.

Na żadnym zamieszczonym obrazku częstościomierz nie pokazuje prawidłowej wartości.

Wyrzuć tego float-a koniecznie, zrób rzutowanie jawne, jeżeli musisz tej biblioteki używać oraz podziel się wynikami

Kod:
long f;    // jeżeli zmienna f nie będzie miała wartości ujemnych
             // to zamiast long użyj unsigned long ( uint32_t ),
            // szkoda marnować połowę zakresu zmiennej
...
...
si5351.set_freq( (uint64_t)f*400, SI5351_CLK2 );

Ale to nie temat o programowaniu.....
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Przekierowanie