Ondeggiatore: Difference between revisions
(→uC) |
No edit summary |
||
Line 2: | Line 2: | ||
== DDS == | == DDS == | ||
pro: | |||
* agile | |||
contro: | |||
*spurie | |||
AD9834 http://www.analog.com/en/digital-to-analog-converters/direct-digital-synthesis-dds/ad9834/products/product.html | AD9834 http://www.analog.com/en/digital-to-analog-converters/direct-digital-synthesis-dds/ad9834/products/product.html |
Revision as of 17:02, 24 August 2015
VFO & controller per ricevitori a conversione diretta (e non)
DDS
pro:
- agile
contro:
- spurie
Filtro di ricostruzione
l'uscita del DDS va fatta passare per un 'filtro di ricostruzione', che tagli via per quanto possibile le spurie e le armoniche di campionamento del DAC
si puo copiare da questo: http://www.pongrance.com/super-dds.html che pero ha un clock di 80mhz (cambia poco)
o questo http://www.elecraft.com/manual/KX1_Owner%27s_Manual_Rev_E.pdf, che e' tagliato un po piu basso
http://www.analog.com/static/imported-files/application_notes/351016224AN_837.pdf
oscillatore
quel DDS non ha PLL, ergo bisogna trovare un oscillatore >= 75 mhz
http://global.kyocera.com/prdct/electro/pdf/clock/kc7050a_c3_e.pdf e' ok
Si570
Si570 CAC000141DG http://www.silabs.com/Support%20Documents/TechnicalDocs/si570.pdf
Fout = (fXTAL * RFREQ)/(HSDIV * N1)
- http://g4oep.atspace.com/si570vfo/570VFO.htm
- http://www.cliftonlaboratories.com/si570_kit_from_k5bcq.htm
uC
- riceve l'input dai tasti (6 pin) o dall'encoder (4 + 2)
- riceve l'input da eventuale PTT (shift) (1 pin)
- riceve l'input da eventuale Carrier Detect (per lo scan) (1 pin)
- controlla il LCD (SPI)
- controlla il DDS (SPI) / Oscillatore (I2C)
- controlla la Rset del DDS (1 pin)
- controlla il banco filtri (4 pin)
- controlla la backlight (1 pin)
- si interfaccia con la memoria EEPROM (SPI)
24 pin totali di I/O
- DDS, lcd e memoria esterna possono convivere sul modulo SPI
Mappa pin
Pin | Funzione | Nome | porta sul uC | I/O |
---|---|---|---|---|
1 | MCLR/RA5 | |||
2 | LCD_CS | RA0 | O | |
3 | LCD_RS | RA1 | O | |
4 | U2TX/PGED1 | RB0/PGED1/U2TX | O | |
5 | U2RX/PGEC1 | RB1/PGEC1/U2RX | I | |
6 | SDA2 | RB2/U1RX/SDA2 | I | |
7 | SCL2 | RB3/SCL2 | I | |
8 | VSS | |||
9 | GPIO_1/CD_IN | RA2 | O | |
10 | GPIO_2/PTT_IN | RA3 | O | |
11 | GPIO_3 | RB4 | O | |
12 | GPIO_4 | RA4 | O | |
13 | VDD | |||
14 | BACKLIGHT | RB5 | I | |
15 | QE_UD_CHANNEL_A | RB6 | I | |
16 | QE_UD_CHANNEL_B | RB7/U1TX | O | |
17 | ENTER_SW | RB8/SCL1 | I | |
18 | EXIT_SW | RB9/SDA1 | I | |
19 | QE_LR_CHANNEL_A | RA7 | I | |
20 | QE_LR_CHANNEL_B | RA6 | I | |
21 | SDI | RB10/SDI1 | I | |
22 | SCK | RB11/SCK1 | O | |
23 | RSET | RB12/DAC1OUT | O | |
24 | SDO | RB13/SDO1 | O | |
25 | EEPROM_CS | RB14 | O | |
26 | DDS_CS | RB15 | O | |
27 | AVSS | |||
28 | AVDD |
tasti
io sarei per una cosa stile nokia:
enter+exit
up+down
left+right (che potrebbe essere un encoder rotativo)
display
16x2 HD44780
- LCD a caratteri da 3.3v
oppure SPI
un fet IRLML2502 controlla l'accensione della backlight
memoria esterna
- EEPROM 256 kbit 25LC256 o 25LC512
Connettori
Controllo
Pin | Funzione | Nome |
---|---|---|
1 | FILTER_1 | |
2 | FILTER_2 | |
3 | FILTER_3 | |
4 | FILTER_4 | |
5 | CD | |
6 | PTT |
UART
Pin | Funzione | Nome |
---|---|---|
1 | Massa | GND |
2 | Uart tx | TX |
3 | Uart rx | RX |
Firmware
Features
- canali con nome alfanumerico su memoria esterna
- bande con nome alfanumerico su memoria esterna
- step (1,10,100,500,1000,1250,2500,5000,9000,10000,50000,100000,1000000) (4 byte) o semplicemente potenze di 10 ? su eeprom interna
- frequenza 0 - 30 MHz su eeprom interna (4 byte)
- shift TX/RX (+- 0 - 30 MHz) su eeprom interna (4 byte)
- IF (+- 0 - 30 MHz) su eeprom interna (4 byte)
- additiva: il display mostra la frequenza dell'IF + la frequenza del VFO
- sottrattiva: il display mostra la frequenza dell'IF - la frequenza del VFO
- scan (volatile)
- dentro banda
- dei canali
- filtri su eeprom interna
- numero (1 byte)
- fmin (4 byte)
- fmax (4 byte)
- phase register su eeprom interna
- frequency register su eeprom interna
- DDS clock
la memoria viene divisa in blocchi da 32byte
ogni nuovo canale/banda viene memorizzato nel primo blocco/canale flaggato come non attivo
quando si naviga tra i canali/bande, vengono letti i blocchi in ordine finche non si trova il successivo canale/banda
Flag
00 | non attivo |
01 | canale |
10 | gruppo |
11 | banda |
Canale
16-31 | 12-15 | 1 | 0 |
channel_name | frequency | group_id | flag |
Gruppo
16-31 | 1 | 0 |
group_name | group_id | flag |
Banda
16-31 | 12-15 | 8-11 | 4-7 | 0 |
band_name | band_step | frequency_min | frequency_max | flag |
interfaccia
- root
- menu rancio
- navigazione
- frequenza
- step/canale
- scan
- store frequenza corrente
- nome canale
- gruppo canale
- banda frequenze
- gruppo canali
- frequenza: 10 caratteri (mm.kkk.hhh)
- nome canale: 16 caratteri
- scan flag: 1 carattere (S/M) (scan, manual)
- tx flag: 1 carattere (T/R)
- mode flag: 1 carattere (F/C/G/B) (frequency, channel, group, band)