Zobrazují se příspěvky se štítkembcc stackmatch. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkembcc stackmatch. Zobrazit všechny příspěvky

21. listopadu 2007

BCC Stack-Match III. - úprava fw

Původní verze firmware měla na pevno nastavené vysílání do ant 1 a 2 při PTT. V této verzi je možno antény, do kterých se vysílá ,možno naprogramovat. V zapojení přibyl spínač S4 připojený na port PD0. Při programování je třeba mít nastaveno spínání antén jak to má být při PTT. Při zapnutí napájení stiskneme S4 a konfigurace se uloží do EEPROM.
/*--------------------------------------------
BCC Stackmatch controler 0.2
(c)OK1CDJ, OK1CDK 2007
Pin Function
6 PD2 PTT IN (0=PTT)
7 PD3 Switch 1 (0=ON)
8 PD4 Switch 2 (0=ON)
9 PD5 Switch 3 (0=ON)
12 PB0 REL. 1 (1=ON)
13 PB1 REL. 2 (1=ON)
14 PB2 REL. 3 (1=ON)
15 PB3 REL. 4 (1=ON)
*/
#include <avr/io.h>
#include <avr/eeprom.h>
unsigned char bit(unsigned char param);
#define ON 1 // turned on
#define OFF 0 // turned off
unsigned char PTT=OFF;
unsigned char cfgmem __attribute__((section(".eeprom")));
unsigned char cfg;
#define PTTIN PD2
#define S1 PD3
#define S2 PD4
#define S3 PD5
#define S4 PD0
#define R1 PB0
#define R2 PB1
#define R3 PB2
#define R4 PB3
int main(void) {
unsigned char portstatus;
unsigned char PTT=OFF;
DDRD = 0x0;
// PD2 PD3 PD4 internal pullups high
PORTD |= _BV(S4);
PORTD |= _BV(PTTIN);
PORTD |= _BV(S1);
PORTD |= _BV(S2);
PORTD |= _BV(S3);
//PORTD = 0xFF;
// PB1,2,3 as output
DDRB = 0xFF;
PORTB = 0x0;
PTT=ON;
// programovani eeprom po startu
portstatus = PIND;
if( ! bit_is_set(PIND, S4) )//je stiknuto S4 pro programovani
{
switch(portstatus & 56) {
case 48: {
//S1
cfg = 1;
}
break;
case 40: //S2
{
cfg = 2;
}
break;
case 24: //S3
{
cfg = 4;
}
break;
case 32: //S1+2
{
cfg = 11;
}
break;
case 16: //S1+3
{
cfg = 13;
}
break;
case 8: //S2+3
{
cfg = 14;
}
break;
case 0: //S1+2+3
{
cfg = 15;
}
break;
case 56: //Nic nesepnuto - vsechny 3 anteny
{
cfg = 15;
}
break;
}
eeprom_write_byte(&cfgmem,cfg);
}
cfg = eeprom_read_byte(&cfgmem);
if (cfg==0xFF) cfg=15;
//
while(1) // +++++++++++++++++++++++ main loop +++++
{
//PORTB |= _BV(R3);
portstatus = PIND;
if( ! bit_is_set(PIND, PTTIN) )//if PTT = 0 klicovani
{
//PORTB |= _BV(R3);
if (PTT == OFF)
{
PTT=ON;
PORTB= cfg;
}
}
if( bit_is_set(PIND, PTTIN) )//if PTT = 1 odklicovani
{
if (PTT == ON) {
PTT=OFF;
}
switch(portstatus & 56) {
case 48: {
//S1
PORTB = 1;
}
break;
case 40: //S2
{
PORTB = 2;
}
break;
case 24: //S3
{
PORTB = 4;
}
break;
case 32: //S1+2
{
PORTB = 11;
}
break;
case 16: //S1+3
{
PORTB = 13;
}
break;
case 8: //S2+3
{
PORTB = 14;
}
break;
case 0: //S1+2+3
{
PORTB = 15;
}
break;
case 56: //Nic nesepnuto
{
PORTB = 0;
}
break;
// }
}
}
}
return(0); // to avoid a compiler warning
}

1. listopadu 2007

BCC Stack-Match II.

Ovládání je postaveno pomocí mikroprocesoru ATtiny2313. Schéma zapojení je zde:

Relátka spínám proti zemi. Vypínače s LED na přepínání antén jsou proti zemi a v procesoru je zapnut interni pullup. Příjem je možný z libovolné kombinace antén. Při sepnutí PTT na zem se vysílá pouze do antnény 1 a 2.
Zdrojový kód je napsaný v GCC pro AVR je zde:
/*--------------------------------------------------
BCC Stackmatch controler 0.1
(c)OK1CDJ, OK1CDK 2007
Pin Function
6 PD2 PTT IN (0=PTT)
7 PD3 Switch 1 (0=ON)
8 PD4 Switch 2 (0=ON)
9 PD5 Switch 3 (0=ON)
12 PB0 REL. 1 (1=ON)
13 PB1 REL. 2 (1=ON)
14 PB2 REL. 3 (1=ON)
15 PB3 REL. 4 (1=ON)
*/
#include
unsigned char bit(unsigned char param);
#define ON 1 // turned on
#define OFF 0 // turned off
unsigned char PTT=OFF;
#define PTTIN PD2
#define S1 PD3
#define S2 PD4
#define S3 PD5
#define R1 PB0
#define R2 PB1
#define R3 PB2
#define R4 PB3
int main(void)
{
unsigned char portstatus;
unsigned char PTT=OFF;
DDRD = 0x0;

PORTD |= _BV(PTTIN); //PD3 = 1
PORTD |= _BV(S1);
PORTD |= _BV(S2);
PORTD |= _BV(S3);
// PB1,2,3,4 as output
DDRB = 0xFF;
PORTB = 0x0;
PTT=ON;
while(1) //
{
portstatus = PIND;
if( ! bit_is_set(PIND, PTTIN) ) //if PTT = 0 klicovani
{
if (PTT == OFF)
{
PTT=ON;
PORTB= 0xB;
}
}
if( bit_is_set(PIND, PTTIN) )//if PTT = 1 odklicovani
{
if (PTT == ON)
{
PTT=OFF;
}
switch(portstatus & 56) // stavy spinacu
{
case 48:
{ //S1
PORTB = 1;
}break;
case 40: //S2
{
PORTB = 2;
}break;
case 24: //S3
{
PORTB = 4;
}break;
case 32: //S1+2
{
PORTB = 11;
}break;
case 16: //S1+3
{
PORTB = 13;
}break;
case 8: //S2+3
{
PORTB = 14;
}break;
case 0: //S1+2+3
{
PORTB = 15;
}break;
case 56: //Nic nesepnuto
{
PORTB = 0;
}break;
}
}
}
return(0);// to avoid a compiler warning
}
}

Toto ovládání jsme používali v CQ WW 2007 na 20m a 80m a nebyl v průběhu závodu
nebyl jediný problém.
V příští verzi firmware dodělám ukládání konfigurace vysílacích antén do EEPROM.

19. října 2007

BCC Stack-Match I.

Na KV QTH mám 2 antény. Jak dostat výkon do obou ? Řešení je popsáno na stránkách Bavarian Contest Clubu - BCC Stack-Match. Popsané zařízení dokáže libovolně kombinovat 3 antény. Pro transformaci je použit širokopásmový transformátor navinutý na jádře od firmy Amidon FT-240-61. Tento transformátor převádí impedanci 50 Ohm na 22.2 Ohmů. Takže optimální přizpůsobení je při 2 připojených anténách a pro 3 je to už mírný kompromis. V zařízení jsou pro přepínání antén použity relátka Matsushita Typ JW1FSN (u nás zle koupit u http://www.rs-components.cz/) . Zajímavé typy na vhodná relé pro přepínání na krátkých vlnách ke zde. Cele zařízení je vestavěno do vodotěsné hliníkové krabičky. Ovládání jsem nakonec vyřešil pomocí mikroprocesoru ATtiny2313 protože potřebuji vždy vysílat jen do 2 antém a pro příjem volit libovolnou kombinaci 3. Dofám, že nebou nějaké problémy s rušením a VF. To se uvidí až po několika odjetých závodech.

Pohled na ovládací inteligenci.


Měření odrazu na vstupu všech 3 variant připojení.

Po otestování příští týden v CQ WW SSB, přidám pokračování kde bude plošný spoj a firmware do procesoru.