DIY Electronic projects

Full Version: Si5351 + PIC16F1455 USB controller
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10
Evo jedna moja zanimljiva konstrukcija za programibilni oscilator (VFO / clock) baziran na Silicon Labs Si5351 sa Microchip USB kontrolerom PIC16F1455.

[attachment=10791][attachment=10792]

U pitanju je sklop koji kada se poveze na USB sa racunarom u sistemu se pojavi nov seriski (COM) port preko koga moze da se komunicira sa ovim modulom iz nekog terminal programa.

Podesavanje frekvencije na jednom od 3 izlaza se vrsi postavljanjem odgovarajucih vrednosti u registre Si5351 oscilatora.

Posto je to previse komplikovano za pocetnike (a sticicete i dotle) u samom PIC kontroleru je ugradjen racun za freknciju i svodi se na jednostavno unosenje frekvencije poput "14.010" izrazenim u MHz preko terminala.
Ovaj racun poseduje dovoljnu preciznost za opste ne tako zahtevne namene jer postoji greska prilikom racuna i uzrokovana je limitom 24 bitne matematike implementirane u PIC kontroleru.

Pregled komandi:

Code:
//------------------------------------------------------------
//dekoder komandi --------------------------------------------
//------------------------------------------------------------
switch (RS232_Out_Data[0]) {

    case 0x30:
        //0 - write 1MHz 10MHz 100MHz without correction, 8pF
        Write1 (mem_si_1_10_100, sizeof(mem_si_1_10_100));
        putrsUSBUSART("OK");
    break;

    case 0x31:
        //1 - write 70MHz + 4.545MHz
        Write1 (mem_si_70, sizeof(mem_si_70));
        putrsUSBUSART("OK");
    break;

    case 0x32:
        //2 - write 80MHz
        Write1 (mem_si_80, sizeof(mem_si_80));
        putrsUSBUSART("OK");
    break;

    case 0x33:
        //3 - write 3.7MHz (14.8MHz)
        Write1 (mem_37_new, sizeof(mem_37_new));
    break;

    case 0x65:
        //e - write regs from adres with len
        Write_SI_Regs_x(RS232_Out_Data);
        putrsUSBUSART("OK");
    break;

    case 0x73:
        //s - set single register
        WriteSi5351_single(RS232_Out_Data[1], RS232_Out_Data[2]);
    break;

    case 0x70:
        //p - write PLLA regs to I2C
        Write_SI_Regs_8(26, RS232_Out_Data);
        putrsUSBUSART("OK");
    break;
    
    case 0x77:
        //w - write MSO regs to I2C
        Write_SI_Regs_8(42, RS232_Out_Data);
        putrsUSBUSART("OK");
    break;
  
    default:
    if(USBUSARTIsTxTrfReady())
    {
        putrsUSBUSART("ERR");
    }

}

Format komande je koncipiran tako da uvek prvi karakter predstavlja komandu (0,1,2,3,e,s,p,w) dok su ostali karakteri opcioni tj adresa i podatak.
Dakle kada se povezete preko terminala na uredjaj, stiskanjem tastera "0" (ASCII vrednost 0x30) PIC kontroler izvrsava podesavanje frekvecnije izlaza na 1,10 i 100MHz.
Stiskanjem tastera "1" se podesava drugi set frekvencija, isto tako za tastere "2" i "3".

Za postavljanje fekvencije npr 1.25MHz treba poslati komandu:
"c1.25"

Ili npr za 28.125MHz
"c28.125"

Za vecu preciznost je neophodan PC software koji radi racun frekvencije i kao rezultat daje potrebne vrednosti za registre koji se posle upisuju u Si5351. Za te potrebe, za pocetak se moze upotrebiti gotov Windows program od proizvodjaca dostupan na ovoj stranici:
http://www.silabs.com/products/clocksosc...tools.aspx

Sledi nastavak ...
Evo kako napreduje GUI za ovaj USB Si5351 + PIC16F1455 modul Smile
Pisano u JavaScript, tacnije u NodeJS i HTML, sjajna kombinacija, moze da se pravi sta hoces …

[Image: attachment.php?aid=11131]
Miki, svaka čast! Izgleda odlično, a prilično sam siguran i da radi Wink
Uh, prelepo. Bice to jako zanimljivo. Jako je lepo sto pokazuje ove opcije sta se radi, mozda nije lose ako se integrise u neki program za prijem SDR ili pak ostane tako da se ubaci dugme da pokaze samo osnovne informacije frekvencije i ko zeli dodatna klikne i otvore  se ove mogucnosti, no danas su monitori visokih rezolucija moze i tako. Bice jako jako zanimljiv taj uredjajcic u kombinaciji sa tvojim RX i TX semama za SDR, pa lagano kad naucim jos po nesto moguce je odraditi pcb sa tim SMD komponentama i nekim mikro relejima, pa da lepo se ukljuci band na kom se radi primer neki "low pass" pa i da nema ogranicenja u RX TX-u jeste da za amatera to ne treba ali cisto neka ima. NIkada se nezna kada ce prosiriti amaterski band a verujem da hoce. Na poslui mogu uraditi bilo kakvu kutijicu na Trumpf probijacici i da to bude kompletan uredjaj. Nek je zdravlja samo bice svega.

Veliki pozdrav ljudi.
Miki, sjajno to razvijas dalje. Po ko zna koji put potvrdjujes da si za svaki respekt!!!
Hvala drustvo!
Drago mi je da vam se ovo svidja.

To je samo pocetak jednog zanimljivog druzenja sa ovom za mene novom tehnikom (NodeJS) koja jako puno obecava i koja je napokon spustila na nivo desktop racunara/aplikacija WEB tehniku koja je vrlo laka za programiranje.
Pre pojave NodeJS ovakvi programcici su bili vrlo nezgodni za pisanje i zahtevalo je duboko poznavanje OS na kome se programira.
Sada je to svedeno na standardne komande i bukvalno svaka gore implementirana funkcija se svodi na 3-4-5 linija code-a!

Ovo je moja razvojna verzija gde ja sad malo experimentisem svim tim stvarima i moze da se napravi bukvalno sta hocete. Takodje vizuelno moze da se "shminka" do prekosutra Smile
Recimo ovu sweep funkciju koju sam dodao, to za SDR prakticno i ne treba ali sa tim sam ovu spravicu protvorio i u nesto jos korisnije, sweep generator sa kojim moze da se vrse razna merenje, npr snimanje karakteristika LPF/HPF/BPF filtera, analizator antena i slicne stvarcice.

U svakom slucaju trebam ovde dodati jos nekoliko stvari, recimo predefinisane memorije za RA bandove, 1.8MHz, 3.5MHz itd, pa trebam dodati opcije za setovanje pojedinacnih registra u Si, pa onda iscitavanje registra i na kraju mogucnost da se to sve "snimi" kako bi moglo da se nakon gasenja/paljenja programa podeseni parametri "vrate" gde su bili …
Izmisljam funkcije, sve moze da se napravi i to stvarno vrlo prosto …

BTW: Ovaj Si5351 stvarno mnogo lepo radi, odusevljen sam mogucnoscu sto moze da se menja frekvencija bez primentnih prekida ili puckanja ili cega vec (zakljucavanje PLL-a), radi bukvalno kao neki analogni VFO, "klizi" menjanje frekvencije. Cak mislim da to toliko dobro i brzo radi da mozda moze da se vrsi i digitalna FM modulacija PLL-a ili npr da se uz pomoc nekog faznog komparatora + A/D od MCU radi digitalno mnozenje frekvencija sa cime "kuburimo" kod Audio DAC-ova (npr RPi + RaspyPlay 2) Wink

Mali programerski trikovi: cache, ovde ima racun za frekvenciju, prilicno zahtevan, ali uzme se jedna varijabla array[] i stave se sve pozvane/generisane frekvencije do tad (kljuc je frekvencija) a u pod-array se stave rezultati za Si registre, i recimo bez toga bi za neke freq svaki put izvrsavao od 20-3000 iteracija a sa cache? 1 Smile
Dobra fora, stavim HPF filter mali od kablovske TV i slusam FM radio na 7. (moze i 3. 5.) harmoniku na HF SDR, stereo sve full + RDS info Smile

[attachment=11138]

PS: Mora u 192kbps sa se sampluje audio za Wideband FM radio, mnogo radio spektra zauzima
[Image: mrzim.jpg]   Mrzim kad je sve jednostavno.... 
Hehe probacemo imam HPF. Kakva je osetljivost? Verovatno lokalni signali no dobro. Mozes li primiti na primer 89.7 radio Beograd sa Crnog Vrha? Ako moze to je onda sasvim prihvatljivo.
Osetljivost je zanimljiva, prvo to je KT antena prikljucena Smile a drugo je sto je harmonicno "uhvaceno" i tako cujem jedno 10-15 FM stanica ovde u lokalu, TDI, RSG, B92, Bravo i ostale …
Stavim malu neku teleskop antenu, radi losije
Prebacim se na KT (evo sad vec vece) morao sam da stavim atenuator ispred ulaza u ZMSDR jer je prejak signal, imam spoljni step atenuator od 1-12dB i drzim ga recimo na -3dB ili -6dB, nekad dobro radi i na -12dB!
Dakle ne treba mi pre-amp, mora atenuator da se koristi kolika je osetljivost Smile
Ma sta reci, svaka cast. Koji to softver koristis?
SDR# neku stariju verziju i DSPRadio …

Inace uspeo sam detektujem signal od -139dBm, tacnije -127dBm mi je najnizi (poznat) nivo iz generatora i jos sam na to dodao -12dB atenuator i to sam sve mogao da vidim na SDR prijemniku!
Odlicno covece! Strasno Smile
Hehe, to sam uzeo ZMSDR v2 i dobudzio malo, slucajno se tu zatekla OPA2211 u demodulatoru pa mi je bilo vrlo zanimljivo za testiranje Smile
10k je FB otpornik pa malac ima gain u samom mixeru podosta Smile
Odlicno, danas cu cipovi sve bolji i bolji a sve manji i manji Smile Ide zanimljivo vreme pa trebamo uzivati u tome. Nazalost vremena je sve manje i manje sta se moze...
(12-10-2014, 07:15 PM)Omegakg Wrote: [ -> ]Odlicno, danas cu cipovi sve bolji i bolji a sve manji i manji Smile Ide zanimljivo vreme pa trebamo uzivati u tome. Nazalost vremena je sve manje i manje sta se moze...

makar se negdje nalazi podudaranje Sad da se makar i to sve kraće vrijeme podudara sa kvalitetom čipova...
Heh sta sam upecao 14.2MHz … DF9CK "ostampan" modulacijom da moze da se vidi direktno u waterfall display-u a dole u cosku nisam video *XFR odgovor … heh, vrlo zanimljiva komunikacija Smile
U 2.4k BW modulacije je ostampan znak, vidite kakav kontrast moze da napravi i kako je precizno ostapan. Dobra fora …
(12-14-2014, 01:00 PM)mikikg Wrote: [ -> ]Heh sta sam upecao 14.2MHz … DF9CK "ostampan" modulacijom da moze da se vidi direktno u waterfall display-u a dole u cosku nisam video *XFR odgovor … heh, vrlo zanimljiva komunikacija Smile
U 2.4k BW modulacije je ostampan znak, vidite kakav kontrast moze da napravi i kako je precizno ostapan. Dobra fora …

U ima toga dosta, taj je bas dobar.

[Image: psk125_with_73_pic.jpg][Image: waterfall_pic_sstv_2.jpg]
Probao sam gore opisanu spravicu i radi savrseno bas kao sto je i opisano. Uskoro bi trebalo da mi stigne kit za gradnju SDR-a taj sdr ima LO ali nema po celom opsegu, ali poseduje eksterni prikljucak za LO tako da ce ovo da legne inzvaredno. Jos mi nije potpuno jasno no nije bitno procitacu cim budem imao vremena detaljno. Radi promena frekvencije 0123 itd... Primetio sam da 3.7Mhz signala ima na jednom izvodu dok je 10Mhz na trecem, da li to tako treba? 
Izasla nova verzija kontrolera v0.2b i evo prvi relese istog Big Grin
Trebalo bi da radi za sve platforme uz odgovarajuci NW.js runtime.
Moze da se pokrene iz bez interfejsa pa ako moze neko da proba za Win i Linux bio bih mu zahvalan.
Vise detalja kako pokrenuti NW aplikaciju ovde.


[Image: attachment.php?aid=17021]
Pages: 1 2 3 4 5 6 7 8 9 10