Witam
Dziękuję Panom ślicznie za uwagi. Anteny nie będę skracał ale muszę ją ułożyć
jakoś tak (ta biała linia na rysunku) :
To jest jedyny obszar, w którym jest stosunkowo mało zakłóceń. Można jeszcze na górnej połówce, ale to zaraz łączenie do dolnej, czyli cięcie anteny. Jak będzie bardzo źle, to podejmę
heroiczną próbę umieszczenia jej w kiosku. Na wystawienie anteny poza kadłub za pomocą tyczki,
taczki, czy wykałaczki się nie zgadzam. Nie muszę pływać w Bajkale, wystarczy w fontannie.
I wreszczie ile ja będę pływał - 15 minut ? Jak już będzie wiadomo, że okręt robi co robić ma,
to cała zabawa uraci sens. Trzeba będzie zbudować drugi model, który będzie wolny od błędów
poprzednika. Aby oszczędzić wszystkim domysłów, co to będzie, to będzie model amerykańskiego
okrętu podwodnego o numerze taktycznym 688.
Co do filmu, to jakoś nie mam ochoty zamieszczać kolejnego sequela „Masakry
Teksańską Piłą Mechaniczną 77”. Nie ma znaczących różnic w zachowaniu się
modelu, to i film nie będzie nic znaczył. Będzie tylko zajmował miejsce w Eprzestrzeni.
Teraz Mariusz :
Oczywiście, że próbowałem z procedurą predykcyjną.
Mam nawet takie funkcje :
Kod: Zaznacz cały
char WartoscInklinacjiZa300msInklinometr( )
{
char cret;
cli();
if ( iI0 == iI1 )
{
sei();
return iI1;
}
else
{
int y1 = iI1;
int dy = (int)iI1 - (int)iI0;
dy *= (int)DeltaCzasuwMilisekundach( iTI1 ) + CZAS_PREDYKCJI;
sei();
dy /= ( 3 * CZAS_POMIEDZY_POMIARAMI_ADC );
cret = (char)( y1 + dy );
}
return cret;
}
unsigned char StanZanurzeniaZa300msInklinometr( unsigned char ZanurzenieZadane )
{
unsigned char ZanPocz;
cli();
if ( iZ0 == iZ1 )
{
ZanPocz = iZ1;
sei();
if ( ZanurzenieZadane > ZanPocz )
{
return ZWIEKSZYC_ZANURZENIE;
}
else if( ZanPocz == ZanurzenieZadane )
{
return ZANURZENIE_OK;
}
else //if( Zanurzeniezadane < ZanPocz )
{
return ZMNIEJSZYC_ZANURZENIE;
}
}
else
{
unsigned char ZanZa300;
int y1 = (int)( ZanPocz = iZ1);
int dy = (int)iZ1 - (int)iZ0;
dy *= ( (int)DeltaCzasuwMilisekundach( iTZ1 ) + CZAS_PREDYKCJI );
sei();
dy /= ( 3 * CZAS_POMIEDZY_POMIARAMI_ADC );
ZanZa300 = (unsigned char)( y1 + dy );
if ( ZanZa300 < ZanPocz )
{// okret sie wynurza
if ( ZanurzenieZadane < ZanZa300 )return ZMNIEJSZYC_ZANURZENIE;
if ( ZanurzenieZadane <= ZanPocz )return ZANURZENIE_OK;
return ZWIEKSZYC_ZANURZENIE;
}
else if ( ZanZa300 == ZanPocz )
{// pozostaje na stalej glebokosci
if ( ZanurzenieZadane < ZanZa300 )return ZWIEKSZYC_ZANURZENIE;
if ( ZanurzenieZadane == ZanZa300 )return ZANURZENIE_OK;
return ZMNIEJSZYC_ZANURZENIE;
}
else //if( ZanZa300 > ZanPocz )
{// sie zanurza
if ( ZanurzenieZadane > ZanZa300 )return ZWIEKSZYC_ZANURZENIE;
if ( ZanurzenieZadane >= ZanPocz )return ZANURZENIE_OK;
return ZMNIEJSZYC_ZANURZENIE;
}
}
}
Mam jeszcze jeden pomysł, aby przez pół sekundy zajmować się zanurzaniem okrętu, a przez drugie
pół trymowaniem – może tak będzie lepiej.
To jest algorytmicznie prostsze niż wprowadzenie hamowania przeciwprądem.
Sterowanie okrętem będzie aparaturą.
Lewo-prawo (ster) to sygnał z aparatury wprost.
Przód tył (silnik główny) już idzie przez procesor, ale też w zasadzie będzie przekazywane
jeden do jeden na silnik główny.
Jeden kanał będzie służył do ustalenia głębokości. Wychylenie drążka na pewien czas i powrót do
do położenia neutralnego będzie skutkowało zanurzeniem okrętu.
W drugą stronę wynurzeniem.
Teraz stery głębokości, to czwarty kanał. Gdy okręt jest zanurzony, to stery głębokości
będą powodował zmianę głębokości – tak se wymyśliłem.
Ale o pewnych sprawach będzie decydował procesor. Gdy pojawi się woda na pokładzie,
to okręt ma się wynurzyć, gdy napięcie zasilania spadnie poniżej pewnej wartości, też.
O trzymaniu poziomu - też decyduje procesor, o trzymaniu głębokości też.
O braku sukcesów już wkrótce.
Z ukłonami
Andrzej Korycki