Forum Koga • Strona główna - Koga Portal - Modele - Żaglowce - Statki - Okręty - Forum modelarskie • SSN-688 - Strona 93
Strona 93 z 101

Re: SSN-688

: 02 sie 2011, 10:03
autor: Andrzej1
Witam

Uruchomiłem kanały sterowane z odbiornika i zaczęła się magia. Można tu przestawić
drążek, a w modelu coś się dzieje. Niestety nie dzieje się dobrze. Silnik główny
pobiera taki prąd, że napięcie zasilania spada do 5V i serwa głupieją. Będę musiał
zmienić silnik główny na trochę słabszy. A to pociąga za sobą zmianę przekładni,
wału Cardana i łoża silnika. Do Zjazdu mogę nie zdążyć, ale będę próbował.

Teraz opiszę coś, z NASA. Jak za pomocą jednego timera obsłużyć trzy kanały
z aparatury i kontrolować stery głębokości.
Telegram z odbiornika wygląda tak, że co 20milisekund przychodzą (na kolejnych
liniach odbiornika) impulsy o długościach od 1 do 2 milisekund. Impulsy te
przychodzą bez żadnego odstępu, to znaczy odstęp jest niemierzalny
za pomocą procesora z kwarcem 16MHz. Trzy z czterech kanałów są podłączone
do procesora tak, aby pojawiały się przerwania przy pojawianiu się impulsów.
Cały czas chodzi timer z częstotliwością 250 kHz. Timer z tą częstotliwością
zwiększa swój licznik, który może być w dowolnej chwili odczytany.
Licznik timera zmienia się od 0 do 65535 po czym generowane jest przerwanie.
Przeliczenie od 0 do 65535 trwa około 0.26 sekundy.
Pierwsze dwa impulsy z aparatury generują przerwanie na zboczu narastającym, trzecie generuje
przerwanie na zboczu narastającym, a obsługa przerwania przestawia je tak, aby
następne przerwanie było na zboczu opadającym impulsu. Z kolei to przerwanie
na zboczu opadającym przestawia siebie tak, aby następne było na zboczu narastającym
impulsu i system jest gotów do obsługi następnego telegramu RC.
Pierwsze przerwanie ustawia licznik timera na zero (pomysł Gury – mocno uprościł obsługę
przerwań). Drugie przerwanie odczytuje stan timera i zapamiętuje go jako długość impulsu
z pierwszego kanału a następnie zeruje timer. Trzecie przerwanie na zboczu narastającym
odczytuje timer i zapisuje go jako długość impulsu z kanału drugiego i zeruje timer.
Na zboczu opadającym odczytuje timer i zapisuje go jako długość impulsu trzeciego kanału.
Następnie ustawia timer tak, że następne przerwanie z timera zostanie wygenerowane za
2 milisekundy. Zakładam, że przez 2 milisekundy zdążę wypracować sygnał dla sterów
głębokości.
Przerwanie timera ustawia siebie tak, aby następne było wygenerowane po czasie trwania
impulsu dla sterów głębokości. Po upływie tego czasu timer powraca do liczenia od 0 do
65535 i czekania na impulsy z aparatury. Całość obsługi zajmuje max 3*2 + 2 + 2 = 10ms
i powtarza się z częstotliwością wysyłania telegramu przez odbiornik RC.
A oto stosowny kawałek programu :

Kod: Zaznacz cały

//            Aparatura RC sygna│y z aparatury
//====================================================
// Przerwania przychodza po kolei. Pierwsze przerwanie na zbocze
// narastajace.
// Pomiedzy zboczami moze byc co najwyzej 3 ms przerwy
// Pomiar czasu dokonywany jest poprzez zapamietanie TCNT1 zmieniane co 1/250ms
// CH1 - lewo prawo - bezposrednio na serwo
// CH2 - silnik glowny     INT1
// CH3 - zanurzenie        INT2
// CH4 - ster glebokosci   INT0
// Kolejnosc impulsow jest taka jak kolejnosc kanalow
volatile unsigned char cKanal;
// W jednostkach 0.004 ms czyli 250 na 1 ms
// 375 - to zero
volatile unsigned int iRCDlugImpSilnikaGlownego;
volatile unsigned int iRCDlugImpSteruGlebokosci;
volatile unsigned int iRCDlugImpZanurzenia;
unsigned char cNaZboczuNarastajacym = 1;
// Silnik glowny
// Przerwanie pojawia sie przy narastajacym
SIGNAL( SIG_INTERRUPT1 )
{
   TCNT1 = 0;
}
// Zanurzenie
// przerwanie jest tylko przy narastajacym zboczu
SIGNAL( SIG_INTERRUPT2 )
{
   iRCDlugImpSilnikaGlownego = TCNT1;
   TCNT1 = 0;
}

// Ster glebokosci
// Przerwanie pojawia sie przy narastajacym a potem jest przelaczane  na opadajace zbocze
SIGNAL( SIG_INTERRUPT0 )
{
   if ( cNaZboczuNarastajacym )
   {
      iRCDlugImpZanurzenia = TCNT1;
      TCNT1 = 0;
// Przeprogramowanie na zbocze opadajace   
      MCUCR = 0b00001110;
      cNaZboczuNarastajacym = 0;
   }
   else
   {
      iRCDlugImpSteruGlebokosci = TCNT1;
      MCUCR = 0b00001111;
      cNaZboczuNarastajacym = 1;
      TCNT1 = 0xFFFF - 500; // Przerwanie TIMER1 OVERFLOW za 2 ms
      cCtrlTimer1 = 1;
   }
}

i obsługa timera :

Kod: Zaznacz cały

//--------------------------------------------------
//         Przerwanie od Timer1
//     Zmienne ustawiane w przerwaniu
//--------------------------------------------------
volatile unsigned char cCtrlTimer1 = 0;
// w 1/250 czesciach milisekundy
volatile unsigned int DlugImpulsuNaSterGlebokosci;
//******************************************************************************
SIGNAL(SIG_OVERFLOW1)
{
// TCNT1 musi byc przeladowywany
// Timer tyka zgodnie z zaprogramowanymi wartosciami
// Przy kazdym tyknieciu zwieksza TCNT1.
// Przy osiagnieciu 0xFFFF generowane jest to przerwanie
//   TCNT1 = 0xFFFF - 5000; // przerwanie co 20ms

   switch ( cCtrlTimer1 )
   {
   case 0 : // normalna praca
      break;
   case 1:
      TCNT1 = 0xFFFF - DlugImpulsuNaSterGlebokosci;
      PORTD |= _BV( SterGlebPWM );
      ++cCtrlTimer1;
      PORTB |=  _BV( LED_TEST );
      break;
   case 2:
      PORTD &= ~_BV( SterGlebPWM );
      PORTB &=  ~_BV( LED_TEST );
      cCtrlTimer1 = 0;
      break;
   default:
      break;
   }
   

}


Z ukłonami
Andrzej Korycki

Re: SSN-688

: 02 sie 2011, 10:35
autor: Tomasz_D
Andrzej1 pisze:...
Telegram z odbiornika wygląda tak, że co 20milisekund przychodzą...........................................................................................zajmuje max 3*2 + 2 + 2 = 10ms
i powtarza się z częstotliwością wysyłania telegramu przez odbiornik RC.


No popatrz, a ja podłączam wszystko do siebie i działa - musi być że my obydwaj zalogowani w innej rzeczywistości jesteśmy :lol:

Re: SSN-688

: 02 sie 2011, 12:25
autor: Andrzej1
Tomasz_D pisze:No popatrz, a ja podłączam wszystko do siebie i działa - musi być że my obydwaj zalogowani w innej rzeczywistości jesteśmy :lol:


Może to błąd, ale nic do siebie nie podłączałem. Nikt mi nie powiedział, że mam coś do siebie
podłączyć. Zresztą druty będą przeszkadzały przy zanurzaniu.
Z tego wynika, że rzeczywistość Twoja i moja, Tomaszu, jest inna.

Z ukłonami
Andrzej Korycki

P.S.
Za pewien czas coś do mnie podłączą, ale z pewnością nie będzie to dobry czas.
Przynajmniej dla mnie.

Re: SSN-688

: 06 sie 2011, 01:04
autor: Andrzej1
Witam

Silniki dotarły. Na zdjęciu dla porównania silnik klasy 600 – ten co zarzynał akumulator
i silnik klasy 400, co kręci śrubą w wodzie jak głupi. Wydaje się, że dostarcza dość mocy.
Silnik klasy 400 pobiera 9,7A i powoduje kawitację. Spadek napięcia na akumulatorze
z 7.7V do 6.5V. Dużo lepiej niż 600-tka.
Oto oba potwory :

Silniki.JPG


I zestaw do testów w wodzie :

Hamownia.JPG


Muszę dołożyć 124 g balastu i nadbudować stare uchwyty silnika.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 08 sie 2011, 01:06
autor: Andrzej1
Witam

Oto 124 gramy :

124Gramy.JPG
124Gramy.JPG (33.1 KiB) Przejrzano 4967 razy


i 124 gramy w kadłubie :

124GrWKadlubie.JPG


oraz 124 gramy w kadłubie i nowy silnik ( też w kadłubie ) :

124GrISilnik.JPG


Widoczne na zdjęciu(ach) śmieci pochodzą, ze śpiesznej obróbki skorbaniem łoża silnika.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 09 sie 2011, 13:10
autor: Andrzej1
Witam

W miejsce planowanego dotychczas wału Cardana pojawiło się sprzęgło kłowe oparte na pomyśle
przekazanym dawno temu przez jednego z Kogowiczów.
Wykonałem rysunek, następnie poszedłem z nim do kolegi z tokarką i wyrezałem takie oto :

Sprzeglo1.JPG


Jakość wykonania znacznie odbiega od niedościgłych wyrobów Zdzisia.
Z prawej strony wydrukowane na folii samoprzylepnej szablony do wiercenia otworów w tarczach
i gumie. Guma silikonowa - trudna do estetycznego wiercenia. Ta nieregularna dziura pośrodku
ma za zadanie uczynić przekładkę bardziej elastyczną. Czy się uda - nie wiadomo.
Jajo z gumy wycięte za pomocą wycinaka do otworów i obrobione wałkiem z papierem
ściernym w Dremelu.
Po złożeniu prezentuje się to tak :

Sprzeglo2.JPG


I wreszcie w modelu :

Sprzeglo3.JPG


Jak widać paprochów nie ubyło.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 17 sie 2011, 11:47
autor: Andrzej1
Witam

W czynie zjazdowym zmieniamy z Gurą rozdzielnicę w LAli.
Stara wygląda tak :

StaraR.JPG


A nowa, nowej jeszcze nie ma.

Powodem zmiany są drgające serwa - najprawdopodobniej dostają za wysokie napięcie
i ze szczęścia w "drgafki fpadują". Poza tym zostanie rozdzielone zabezpieczenie na zbiorniki
i silnik główny.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 18 sie 2011, 13:35
autor: Andrzej1
Witam

Nowa rozdzielnica prezentuje się tak :

Rozdzielnica.JPG


Niestety inne okoliczności powodują, że z pływania w Tczewie nici. Zabrakło dwóch dni.
Obniżenie napięcia zasilania serw spowodowało, że już nie drgają, natomiast na płycie głównej
był układ sprawdzający napięcie akumulatorów mocy. Napięcie do sprawdzania było brane
z napięcia serw. Teraz serwa mają 5V a układ wykrywa za niskie napięcie akumulatora mocy.
Muszę zmienić to w programie. Nie jest to jedyna zmiana i dlatego nie zdążę do jutra bez żadnych
prób w wodzie. Na sucho coś pokażę.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 18 sie 2011, 16:08
autor: rychenko
Witaj Andrzejku jestem pełen podziwu dla twojego uporu nie jeden już dawno by wywalił wszystko do kosza a ciebie żadne trudności nie zniechęcają , a tak swoja drogą to pokaz w końcu model a nie wnętrze od telewizora :lol:

Re: SSN-688

: 18 sie 2011, 18:33
autor: Andrzej1
rychenko pisze:Witaj Andrzejku...
, a tak swoja drogą to pokaz w końcu model a nie wnętrze od telewizora :lol:


Witaj Ryszardzie i Ty Kogowiczu

Tu mam kłopot pewien, bo ja mam tylko zrobiony własnoręcznie telewizor, a nie żaden
model. To co mam pokazywać ? jak nie mam co ?
Mam obudowę do telewizora, też wykonaną, ale to nie model.
Poza wszystkim, to ja nie jestem modelarzem - tak się sobie przyglądłem w lustrze
i nic na modelarza nie wyglądało. Przykro mi, że nie mogę spełnić Twojej prośby.

Z ukłonami
Andrzej Korycki