obara Opublikowano 14 Marca 2007 Opublikowano 14 Marca 2007 Opracowalem przy pomocy naszych wspolnych znajomych projekt oswietlenia modelu. Pozwole sobie zachowac pierwszy post w tym watku na finalna wersje tego ukladu wraz z opisem uruchomienia i programowania. Moja wiedza w temacie programowania mikrokontrolerow jest niezbyt wielka, ale mam wielkie ambicje. Projekt jest open-source bo po co mialbym go tworzyc przy Waszym udziale i trzymac na tym lape jednoczesnie. Mam nadzieje, ze skorzysta z niego wiele osob i kiedys zobacze, ze to cos lata w ktoryms z Waszych cudow. Oglaszam jednoczesnie, ze dwom losowo wybranym osobom, z tych ktore pomoga mi ten uklad dokonczyc, funduje zestaw czesci, lub zmontowany uklad wg zyczenia. Moja uczciwosc w tym zamysle potwierdzi TomekR (mam nadzieje ). ---------------------------------------------------------------------------------- Aktualna wersja oswietlenia do modeli Schemat ukladu: Wyglad plytki i rozmieszczenie elementow: Kod zrodlowy wsadu procesora $regfile = "attiny13.dat" $crystal = 9600000 Dim Timer_main As Byte 'zegar zliczajacy 2s Dim Timer_signal As Byte 'zegar zliczajacy 10ms Dim Flag_1_overflow As Bit 'flaga pierwszego przepelnienia Timer_signal Dim Signal_start As Byte 'poczatek impulsu Dim Signal_width As Byte 'szerokosc impulsu Dim Mask As Byte 'maska swiatla ladowania Dim Flag_idle As Bit 'flaga pracy w trybie AWARIA Config Portb = &B111101 'ustawienie wejsc i wyjsc Portb = &B011101 'zapalenie diodek Flag_1_overflow = 0 Flag_idle = 0 Mask = &B000010 Config Int0 = Change 'zewnetrzne przerwanie na zmiane stanu PB1 Config Timer0 = Timer , Prescale = 64 'wystartowanie timera zliczajacego 100us Timer0 = 241 'ustawienie stanu poczatkowego timera Enable Int0 'uruchomienie przerwania zewnetrznego Enable Timer0 'uruchomienie przerwania od timera Enable Interrupts 'odblokowanie przerwan On Int0 Signal_int 'wskazanie procedury obslugi przerwania On Timer0 100us 'wskazanie procedury obslugi przerwania Do 'poczatek programu If Timer_signal = 100 Then 'jesli minelo 10ms Timer_signal = 0 'wyzeruj zegar zliczajacy 10ms Incr Timer_main 'dodaj 1 do zegara zliczajacego 2s If Flag_1_overflow = 0 Then 'jesli zegar 10ms nie przepelnil sie Flag_1_overflow = 1 'oznacz flage przepelnienia zegara 10ms 1 raz End If End If If Timer_main = 200 Then 'jesli minely 2s Timer_main = 0 'wyzeruj zegar zliczajacy 2s If Flag_idle = 0 Then 'jesli program nie pracuje w trybie AWARIA If Signal_width < 15 Then 'jesli impuls krotszy niz 1,5ms Mask = &B110111 'ustaw maske gaszacej swiatlo ladowania Else 'jesli impuls dluzszy niz 1,5ms Mask = &B111111 'ustaw maske zapalajacej swiatlo ladowania End If If Signal_width < 9 Then 'jesli impuls krotszy niz 0,9ms Flag_idle = 1 'oznacz flage pracy w trybie AWARIA End If If Signal_width > 21 Then 'jesli impuls dluzszy niz 2,1ms Flag_idle = 1 'oznacz flage pracy w trybie AWARIA End If End If Signal_width = 0 'wyzerowanie odczytanego stanu End If If Flag_idle = 0 Then 'jesli program nie pracuje w trybie AWARIA Select Case Timer_main Case 0 To 1 : Portb = &B011100 And Mask Case 30 To 31 : Portb = &B011001 And Mask Case 100 To 101 : Portb = &B011100 And Mask Case Else : Portb = &B011000 And Mask End Select Else 'jesli program pracuje w trybie AWARIA Select Case Timer_main Case 0 To 1 : Portb = &B010100 Case 25 To 26 : Portb = &B010001 Case 40 To 41 : Portb = &B010001 Case 100 To 101 : Portb = &B010100 Case Else : Portb = &B010000 End Select End If Loop End 'koniec programu 100us: 'procedura obslugi przerwania od timera Timer0 = 241 'ustawienie stanu poczatkowego timera Incr Timer_signal 'zwiekszenie stanu zegara zliczajacego 10ms Return Signal_int: 'procedura obslugi przerwania zewnetrznego If Pinb.1 = 1 Then 'jesli przerwanie rozpoczynajace impuls Signal_start = Timer_signal 'zapamietanie stanu zegara 10ms na przerwaniu Flag_1_overflow = 0 'wyzerowanie flag przepelnienia zegara 10ms Flag_idle = 0 'wyzerowanie flagi pracy w trybie AWARIA Else 'jesli przerwanie konczace impuls If Flag_1_overflow = 0 Then 'jesli zegar 10ms nie przepelnil sie Signal_width = Timer_signal - Signal_start Else 'jesli zegar 10ms przepelnil sie 1 raz Signal_width = 149 + Timer_signal Signal_width = Signal_width - Signal_start Flag_1_overflow = 0 End If End If Return Ustawienia fusebitow: Zdjecie plytki: Zdjecie plytki: (uwaga dla wnikliwych! na zdjeciu jest plytka niezgodna z powyzszym rozmieszczeniem elementow i schematem) Video z dzialania ukladu: (lepiej przyciszyc glosniczki, slabe odswiezanie kamerki w telefonie spowodowale, ze w trybie bez sterowania niezbyt dobrze widac podwojny blysk swiatel mrygajacych co 2sek - tych na koncowki skrzydel) http://www.obara.pl/elektronika/oswietlenie_samolotu/oswietlenie.3gp
tomekr Opublikowano 14 Marca 2007 Opublikowano 14 Marca 2007 On pewnie już je ma, jak znam życie to kupił kilka kompletów, tak jak kiedyś z silnikami z Chin, do jednego modelu kilka, a model był jednosilnikowy :mrgreen:
obara Opublikowano 14 Marca 2007 Autor Opublikowano 14 Marca 2007 Tomku! Wolne zarty. Uklad sterowany ma byc z odbiornika RC. Sercem ukladu jest mikrokontroler ATTiny13. Przewidziane tryby swiecenia: AWARIA - tryb, w ktorym brak sygnalow z odbiornika lub sygnal zostal utracony (moze sluzyc jako lokalizator utraconego modelu) STROBE - tryb normalnej pracy swiatel pozycyjnych, stroboskopow na koncowkach skrzydel i stroboskopow pod i nad samolotem (beacon lights) LANDING - j/w + wlaczone swiatla ladowania Schemat ukladu jest w miare ostateczny: Tutaj byl schemat ukladu. Teraz to z czym problem jest najwiekszy. Kod do ATTiny w Bascomie: Tutaj byl niedzialajacy kod. Moje pytanie brzmi. Kto zna sie na tym na tyle, aby pomoc dokonczyc dziela. W tej chwili procek powoduje rozne nieoczekiwane dzialania ukladu. Wiecej szegolow po konkretnych pytaniach. To tyle jak na pierwszy raz.
a_skot Opublikowano 15 Marca 2007 Opublikowano 15 Marca 2007 Na moją pomoc w tym zakresie liczyć niestety nie możesz. Tu jestem totalnym lejkiem :wink: , ale drąż temat dalej. Sam jestem zainteresowany taką konstrukcją
obara Opublikowano 15 Marca 2007 Autor Opublikowano 15 Marca 2007 Na szczescie i nieszczescie skonczylem uklad. Wychodzi na to, ze nagrod nie bedzie, ale jesli ktos chce to moge podeslac zaprogramowany procesor. Na wydanie przeznaczam 4 procesory. Jesli ktos chcialby taki procesor otrzymac, prosze o informacje na ten temat w watku. Zanim jednak zaczne je wysylac chcialbym aby ktos z Was przetestowal w "warunkach bojowych" uklad i zdal na forum relacje z jego dzialania. Teraz moge sie wziac za nastepne rozwiazania.
tomekr Opublikowano 16 Marca 2007 Opublikowano 16 Marca 2007 gratuluję Bartek, czytałem na innym forum o problemach z zmieszczeniem oprogramowania, udało się czy dalej testujemy i walczymy z softem 8)
obara Opublikowano 16 Marca 2007 Autor Opublikowano 16 Marca 2007 Napisalem tutaj i na "innym forum", ze problemow juz nie ma i projekt jest zakonczony. Teraz pozostalo przetestowac to w realnym otoczeniu i potwierdzic prawidlowosc dzialania.
marcin133 Opublikowano 16 Marca 2007 Opublikowano 16 Marca 2007 Projekt Super! Pewnego czasu z kolegą poszukiwaliśmy podobnych rozwiązań. Czy jest możliwość abyś wstawił filmik przedstawiający działanie układu? Oczywiście nie musi być to zamontowane w modelu
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.