Skocz do zawartości

atMegaTona

Użytkownicy
  • Zawartość

    72
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

atMegaTona wygrał w ostatnim dniu 12 maja

atMegaTona ma najbardziej lubianą zawartość!

Reputacja

16 Dobra

1 obserwujący

O atMegaTona

  • Ranga
    4/10

Informacje

  • Płeć
    Brak informacji
  • Języki programowania
    C, ASM

Ostatnio na profilu byli

131 wyświetleń profilu
  1. Warto to sobie często powtarzać. Nie masz się czego obawiać Marku nasz drogi, nie chcę Ci robić konkurencji na ilość wpisów a Twój autorytet na forbocie jest niepodważalny i nie do obalenia (przynajmniej w większości przypadków). @ttmdear Podłącz sobie tak: albo bez Q0
  2. @deshipu nie czaruj A zastanowiłeś się jak autor ma to zrobić kiedy nie ma o tym pojęcia? Ano w taki, że kiedy tracą pojemność i przestają skutecznie filtrować napięcie szczytowe wzrasta i może się odkładać na innym kondensatorze w dalszej części układu co z kolei powoduje przepływ większego niż zamierzony prądu przez np. rezystor sterujący bazą tranzystora choćby tylko o kilka-kilkanaście procent, co z kolei może powodować przepływ prądu kolektora większego o (kilka-kilkanaście procent)*hfe tranzystora co z kolei może powodować podwyższenie napięcia, zwiększenie prądu przez co transformator jest źle wysterowany i może to powodować taki efekt jak opisany przez autora. Może ale nie musi. Chyba nie, wygląda dobrze. Osobiście nie przypuszczam aby zasadniczy wpływ na takie zachowanie miały same kondensatory filtrujące zasilanie i o ile nie są spuchnięte spróbował bym wymienić jednak ten rezystor i ewentualnie ten mniejszy kondensator bo od nich zależy m.in. wysterowanie transformatora (przynajmniej tak to wygląda na pierwszy rzut oka) z nadzieją, że żaden element półprzewodnikowy nie uległ jeszcze zupełnemu uszkodzeniu. Koszt niemal zerowy a jest szansa, że uda się naprawić.
  3. 74 nie mają ale np ekspandery sterowane z I2C czasami mają, nie pamiętam niestety które dokładnie, trzeba by poszukać po necie. Suwak bo "przesuwny" :).
  4. Należało by odpowiedzieć sobie na pytanie jaką funkcję pełnią w zasilaczach kondensatory a jaką rezystory i od czego zależy ten "prąd zepsucia" a później zacząć wymieniać podzespoły od tej najbardziej logicznej odpowiedzi. @deshipu masz trochę racji, ale na ogół większość starych rezystorów jakie miałem okazję mierzyć miały rezystancję mniejszą od nominalnej. Wpływ kondensatorów oczywiście też ma znaczenie bo od nich często zależy napięcie które to ma wpływ z kolei na "prąd zepsucia" płynący przez rezystor i inne elementy. Często jednak wystarczy wymienić rezystor i wystarcza na dłuższy czas pod warunkiem, że reszta elementów nie uległa uszkodzeniu.
  5. I z dużym prawdopodobieństwem jest to wina opornika. Z czasem pod wpływem prądu tracą rezystancję po czym zbyt duży prąd psuje resztę podzespołów za rezystorem. Jest jednak szansa na to, że będzie działać po wymianie. "Naprawiłem" tak kilka urządzeń i działają bez problemu a czasami było wizualnie gorzej niż na tej Twojej płytce. Tak czy siak pewności nie ma czy to działać będzie po wymianie ale rezystory drogie nie są więc chyba warto spróbować. Nie jest jeszcze najgorzej bo kondensatory nie spuchły. Czasami w leciwych urządzeniach wystarczy powymieniać kondensatory i rezystory w obwodach zasilających i działają jak nowe, najczęściej jednak tranzystory też się nadają do wymiany.
  6. Wydłuż sobie komendy np. żeby reakcja na sygnał z pilota była po odebraniu 10 poprawnych ramek z pilota inaczej ignoruj. Poza tym jaką masz tam antenkę? Ten odbiornik to delikatnie mówiąc lipa, zbiera zakłócenia co nie znaczy, że nie da się z tego korzystać. Miałem kiedyś taki. Od anteny bardzo dużo zależy w tym przypadku a nawet przy dobrej antenie i tak gubi znaki więc trzeba mu to powtarzać.
  7. Wymień R10 i spróbuj, jak nie pomoże to zostaw sobie ten zasilacz "na później" i kup nowy. Tylko PODŁĄCZAĆ PO WŁOŻENIU DO OBUDOWY
  8. Jeszcze raz postanowiłem sprawdzić na ile miernik pozwolił. Ustaliłem co następuje: Uc na pewno nie bazuje na pojemności tego kabla bo musiał by to robić w wyrafinowany sposób i po zwarciu końca przewodu kamera by się nie włączyła bo pojemność spadłaby diametralnie. Po zwarciu końca przewodu do ekranu/masy kamera włącza się normalnie a pobierany prąd wzrasta nieznacznie. Różnica potencjałów (wartości skuteczne na ile miernik pozwolił) pomiędzy początkiem a końcem przewodu sugeruje, że część mocy jest wypromieniowywane drutem w eter falą o częstotliwości ok 220MHz na co wskazuje długość przewodu i ta różnica napięć w odniesieniu do masy. Uc bardzo precyzyjnie mierzy impedancję kabla dlatego nie udało mi się dobrać rezystancji zastępczej potencjometrem. Wypromieniowywana moc wynosi mniej-więcej ((3.6V/2)/75)*((1.8v/2)-0.5V) = 31.2mW Możliwe rozwiązania: Próbować do skutku dobrać rezystancję zastępczą. Ekranować ekran na przewodzie w celu ograniczenia emisji promieniowania. Postanowiłem tymczasowo zaekranować przewód żeby nikomu dronów nie zakłócać. Docelowo pobawię się jeszcze z doborem rezystancji. Co ciekawe, podróby, które mi zostały po nieudanych transakcjach nie mają tej przypadłości i włączają się na dowolnym kablu
  9. Racja, zapomniałem, że ten suwak nie ma wewnętrznych podciągów. Kiedyś bawiłem się tak jak autor tego wątku, klikanie przyciskami wystarcza do sprawdzenia działania, podłącz sobie jeszcze diodę do Q7' to będziesz widział kiedy "przeklikałeś". Zwieranie wszystkich nóżek czasem pomaga bo rozładowuje pojemności, miałem przypadek że się zaciął przy tym klikaniu na stykówce.
  10. Zgadza się, dlatego wspomniałem o rezystancji powietrza jednak z pomiarów wynika, że ten drucik ma również impedancję skoro od strony wyjścia z kamery jest połowa VCC a na końcu drutu 0.5V. Nie sądzę aby chodziło o pojemność na 60cm drutu jest zapewne znikoma. Wszystko wskazuje na to, że ten drut gdy jest niepodłączony do odbiornika robi za typową antenę półfalową 220MHz więc teoretycznie wystarczył by rezystor zamiast tego kabla.
  11. Spróbuj zewrzeć wszystkie nóżki ze sobą, później podłącz sobie kondensator przed przyciskami do masy i spróbuj ponownie. Jeśli układ nie zadziała to znaczy że się popsuł. Jeśli zadziała i nadal nie będzie stabilnie zmieniał stanów na wyjściu to dodaj jeszcze rezystory albo popróbuj z większymi kondensatorami. Udanej zabawy. zacznij od kondensatorów 100n
  12. Racja, zasugerowałem się migawką z tv gdzie pokazywali sady wiśniowe w Chinach ale nie o wiśnie tu idzie tylko co z tym drutem, jakieś pomysły? Rozwiązałem problem drogą okrężną - podłączyłem się bezpośrednio pod baterię ale to rozwiązanie tymczasowe ponieważ wtedy funkcja automatycznego nagrywania nie działa. ----------------- @deshipu już poprawione. Wybacz jeśli Cię uraziłem. Pragnę też przeprosić tu przede wszystkim wszystkich Japończyków przeglądających dział 'inne' na forum forbota.
  13. Mówi się często „proste jak drut” a tymczasem to proste niekoniecznie musi być tak proste jak się wstępnie wydawać mogło, szczególnie kiedy to coś pochodzi z kraju jedynie słusznej wizji utopijnej. „Proste jak drut” w przypadku tytułowej kamerki skomplikowało się co najmniej do formy chińskiego osiem ale o tym za moment. Chcąc sobie zorganizować niedrogi rejestrator do roweru rozejrzałem się nieco po necie i wpadła mi w oko kamerka sq11 na pierwszy rzut oka spełniająca wszystkie wstępne wymagania: nagrywanie w pętli, automatyczny start nagrywania po podłączeniu zasilania, wysoka jakość video. Posiada również podświetlanie IR oraz detektor ruchu choć jest to raczej dekoracja dodatkowa niż funkcja użytkowa. Kamerka ta umożliwia nie tylko zapis video na kartę SD ale również transmisję video za pomocą kabla po podłączeniu do odbiornika. Może mieć to zastosowanie w różnych projektach np. przy budowie dronów dzięki jej niewielkim wymiarom (20x20mm) po wyjęciu z obudowy i znikomej wadze. Https://youtu.be/z9vsqhxtfYA UWAGA NA PODRÓBY! Po odebraniu przesyłki od polskiego dystrybutora handlującego tymi kamerkami na znanym portalu aukcyjnym okazało się, że to co wygląda z zewnątrz na zamawiany produkt jest o wiele gorszą jakościowo podróbą: format video inny od deklarowanego i o wiele gorsza jakość nagrań, brak kilku funkcji, brak lub niesprawne podświetlanie IR (świeciła 1 dioda) i o połowę mniejsza bateria. Po zgłoszeniu reklamacji sprzedający jednak nie miał większych problemów ze zwrotem pieniędzy. Postanowiłem więc kupić od kogoś innego i niestety tym razem również pudło. Znowu otrzymałem podróbę, tym razem jednak bardziej zbliżoną do oryginału. Po złożeniu reklamacji i odpowiedniemu ocenieniu transakcji sprzedający uległ urokowi programu ochrony kupujących do tego stopnia, że zwrócił wpłacone pieniądze łącznie z kosztem przesyłki stwierdzając jednocześnie, że mogę zatrzymać podróbki abym się nie czół się pokrzywdzony Za trzecim podejściem do zakupów w końcu otrzymałem dokładnie to co chciałem za cenę o kilka zł. wyższą. Po pierwszych testach postanowiłem wydłużyć sobie kabelek zasilający i tu zaczął się problem z „prostotą drutu”. Po kilku sekundach od podłączenia zasilania kamerka przechodzi w tryb 720p i automatycznie rozpoczyna rejestrowanie wysyłając jednocześnie obraz przez kabelek bez różnicy czy jest on podłączony do komputera czy ładowarki. Nie potrzebowałem w tym wypadku analogowego wyjścia a wiszący przewód będzie mi tylko przeszkadzał. Pierwsza myśl: utnę przewód i po sprawie. Jednak jak uczy doświadczenie – pierwszą myśl należy zawsze weryfikować z drugą i trzecią myślą więc wziąłem miernik i zmierzyłem napięcie na tym przewodzie analogowym. Wynosiło 0.5V. Typowe wyjścia analogowe video mają zazwyczaj 50 – 75 ohm impedancji więc wziąłem rezystor 75 ohm i połączyłem nim wyjście sygnału z masą. Niestety kamerka się nie włączyła. Aby sprawdzić czy nie zniszczyłem tym zabiegiem tranzystorów na wyjściu podłączyłem oryginalny przewód. Nie było żadnych problemów z uruchomieniem. Wywnioskowałem więc z tego, że musiałem źle dobrać rezystancję więc przylutowałem potencjometr z przekonaniem, że w końcu ustawię właściwą rezystancję kompensującą impedancję wyjścia. Próby uruchomienia kamerki przy różnych nastawach potencjometru nie przyniosły żadnego rezultatu. Poirytowany odłączyłem obciążenie. Bez obciążenia napięcie na wyjściu wzrosło do poziomu napięcia zasilania uc czyli do ok. 3.6V i to by się zgadzało. Przy rezystorze 75 ohm napięcie na wyjściu spadło do ok. połowy napięcia zasilania więc to też by się zgadzało i potwierdzało wstępne założenia co do impedancji wyjścia. Na końcu przewodu sygnałowego w oryginalnym kablu było jedynie 0.5V co znaczyć może, że większa część mocy została wypromieniowana w ekran lub eter ale to już mniej istotne. Dodam tylko, że w tym kabelku nie ma ekranu a jedynie 2 przewody: jeden sygnałowy a drugi podłączony do (-) we wtyczce. Owe 0.5V musi więc być napięciem produkowanym na końcu przewodu (rezystancja powietrza/izolatora) przez prądy odbić w tym przypadku, kiedy przewód ten nie jest podłączony do żadnego odbiornika. Jednak coś mi w tych rozważaniach nadal nie pasuje ponieważ próbowałem z różnymi wartościami rezystancji i mimo usilnych starań nic z tego. Pobiera w tym czasie, zależnie od zadanej rezystancji od 100 do kilku mA prądu lecz mimo to kamerka się nie włącza. Wynika z tego tyle, że albo przeoczyłem coś oczywistego i przez braki wiedzy nie zdołałem opanować tak elementarnego elementu każdego układu elektrycznego jak przewodnik z prądem albo to wyjście sygnału jest bardzo precyzyjnie monitorowane przez uc kamerki, że nie zdołałem ręcznie dopasować odpowiedniej rezystancji. Być może to takie zabezpieczenie aby nie można było wykorzystać innego kabla jak ten dołączony do tego urządzenia, który w tym wypadku pełni funkcję również anteny? Nie mam niestety czym tego obadać tak aby mieć pewność, wiadomo jedynie, że kabel sygnałowy niepodłączony do niczego promieniuje elektromagnetycznie. Ostatecznie w akcie desperacji i pod wpływem rodzących się wątpliwości co do właściwego polutowania tego dłuższego kabla wpadłem na pomysł ostatecznego przekonania się co do słuszności powyższych rozważań i zwyczajnie odciąłem przewód sygnałowy od oryginalnego kabla od kamerki i... kamera przestała się włączać zupełnie tak jak przy tym kablu dorobionym. Jeśli macie pojęcie jak to obejść i co może być przyczyną takiego zachowania to dajcie znać bo straciłem nad tym już sporo czasu a nie mam czym tego dokładnie obadać.
  14. Chciałem na szybko i wyszło jak zwyklę. Poświęciłem chwilę czasu na wymyślanie koła od nowa i opanowałem temat a nawet dowiedziałem się czegoś nowego. Nie przypuszczałem, że będę musiał ponownie od podstaw zmagać się z atmegą i różnymi niuansami z nią związanymi. Swego czasu miałem opracowane rozwiązania takich różnych problemów związanych z avr niestety przepadły razem z pamięcią masową. Było to spowodowane brakiem opóźnienia zaraz po wybudzeniu. Okazało się, że kiedy nie zaczeka się na ustabilizowanie oscylatora wewnętrznego to rejestry sprzętowe nie funkcjonują prawidłowo nawet kiedy już oscylator się rozpędzi. Wystarczyło wprowadzić odpowiednie opóźnienie. Problem z usartem też został rozwiązany. Okazało się, że również wystarczył niewielki delay na końcu i czyszczenie bufora.. odbiorczego. (sic) W komentarzach dodatkowe info. Poprawiony program nie zawiera już "baboli" i może komuś oszczędzi czas kiedy będzie chciał zrobić zegarek z płytki arduino. /// Includes #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> /// Defines #define _NBV(bit) ~_BV(bit) #define delay_us_(cnt) for(uint16_t c=(cnt);c;--c){\ asm volatile("nop"::);\ asm volatile("nop"::);\ asm volatile("nop"::);\ asm volatile("nop"::);} // power-save sleep mode #define _SLEEP_ SMCR |= _BV(SM1)|_BV(SM0)|_BV(SE);\ asm volatile("nop");\ asm volatile("sleep") /// Flags // G³ówny rejestr flag, pierwsze 5 bitów na licznik przerwañ do 16 #define MAIN_FLAG_REG GPIOR0 ////////////////////////////////// #define RTC_SEC_FLAG 5 void usart_put_string(char *string){ char garbage = 0; garbage |= garbage ; /// Mimo iz receiver jest wylaczony to jednak zbiera /// smiecie podczas wybudzania a pozniejniej sa one przepisywane do /// do wspoldzielonego rejestru UDR0 ( coz za niespodzianka! ) DDRD |= _BV(PD1); //output UCSR0B |= _BV(TXEN0); asm volatile("nop"::); for(; *string; string++){ while (!(UCSR0A & _BV(UDRE0))); // oczekiwanie na oproznienie bufora nadawczego garbage = UDR0; // czyszczenie bufora UDR0 = *string; } while (!(UCSR0A & _BV(UDRE0))); // zglasza gotowosc bufora ale dane sa nadal wysylane... UCSR0B &= _NBV(TXEN0); DDRD &= _NBV(PD1); //input -> Tx fizycznie podciagniety do VDD przez 3k3 PORTD |= _BV(PB1); //pullup bo szkoda pradu } /* // HD44780 const char battery_font[6][8] PROGMEM = { {0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F}, // empty- {0x1F, 0x18, 0x18, 0x1C, 0x1C, 0x1C, 0x1E, 0x1F}, // half- {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // full- {0x1E, 0x02, 0x03, 0x01, 0x01, 0x03, 0x02, 0x1E}, // empty+ {0x1E, 0x12, 0x13, 0x11, 0x19, 0x1B, 0x1A, 0x1E}, // half+ {0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x1E}};// full+ */ /// //////////////////////////////////////////////////////// int main(void){ /// Init: //RTC ASSR |= _BV(AS2); TCNT2 = 0; while(ASSR & _BV(TCN2UB)); TCCR2B |= _BV(CS21);// 8 -> 0.0625s (1/16s) while(ASSR & _BV(TCR2BUB)); TIFR2 |= _BV(TOV2); TIMSK2 |= _BV(TOIE2); //USART UBRR0H = 0; UBRR0L = 51; // baud 9600 // even parity_BV(UPM01)|, 2 bity stopu _BV(USBS0), 8bit char size _BV(UCSZ01) | _BV(UCSZ00) UCSR0C |= _BV(USBS0)|_BV(UCSZ01) | _BV(UCSZ00); UCSR0B |= _BV(TXEN0); //| _BV(RXEN0) | _BV(RXCIE0); // UCSR0A & _BV(FE0) // frame error // UCSR0A & _BV(UPE0) // parity error // UCSR0A & _BV(DOR0) // data overrun error // UCSR0A & _BV(UDRE0) // data register empty, mo¿na ³adowaæ kolejny bajt sei(); char txt_buff[8]; uint8_t seconds = 0; uint8_t minuts = 0; uint8_t hours = 0; uint16_t days = 0; /// Loop: while(1){ if(MAIN_FLAG_REG & _BV(RTC_SEC_FLAG)){ MAIN_FLAG_REG &= _NBV(RTC_SEC_FLAG); seconds++; if(seconds == 60){ seconds = 0; minuts++; if(minuts == 60){ minuts = 0; hours++; if(hours == 24){ hours = 0; days++; } } } usart_put_string("day: "); usart_put_string(itoa(days,txt_buff,10)); if(hours < 10)usart_put_string("\r\n0"); usart_put_string(itoa(hours,txt_buff,10)); usart_put_string(":"); if(minuts < 10)usart_put_string("0"); usart_put_string(itoa(minuts,txt_buff,10));usart_put_string(":"); if(seconds < 10) usart_put_string("0"); usart_put_string(itoa(seconds,txt_buff,10)); usart_put_string("\r\n"); } delay_us_(1042); // Trzeba czekac, az usart wysle wszystkie znaki _SLEEP_; } } /////////////////////////////////// ISR(TIMER2_OVF_vect, ISR_NAKED){ asm volatile( "push __tmp_reg__ \n\t" "in __tmp_reg__,__SREG__ \n\t" // przepisz sreg "push r24 \n\t" "clr r24 \n\t" "out %0, r24 \n\t" // wylacz sleep mode "push r25 \n\t" "ldi r24, 30 \n\t" "clr r25 \n\t" "delay_us: \n\t" // 30us na ustabilizowanie taktowania rejestrów sprzêtowych "nop \n\t" "nop \n\t" "nop \n\t" "nop \n\t" "sbiw r24, 1 \n\t" "brne delay_us \n\t" "in r25, %1 \n\t" "mov r24, r25 \n\t" "andi r24, 0x1F \n\t" "andi r25, 0xE0 \n\t" "inc r24 \n\t" "cpi r24, 16 \n\t" "brne exit111 \n\t" "ori r25, (1<<5) \n\t" "clr r24 \n\t" "exit111: \n\t" "or r25, r24 \n\t" "out %1, r25 \n\t" "out __SREG__,__tmp_reg__ \n\t" // przywroc poczatkowy stan sreg , [FLAGS] "=m" (_SFR_IO_ADDR(GPIOR0)) "pop r25 \n\t" "pop r24 \n\t" "pop __tmp_reg__ \n\t" "reti \n\t" : :"I"(_SFR_IO_ADDR(SMCR)), "I" (_SFR_IO_ADDR(GPIOR0)) :"r24", "r25" ); }; a jest? @marek1707 są już liczby. Jak by Ci się chciało to rzuć okiem fachowca.
×
×
  • Utwórz nowe...