Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PIC, CMOS, 7seg - Zbyt niski sygnał na

29 Wrz 2013 23:04 6096 32
  • #1 29 Wrz 2013 23:04
    23844
    Użytkownik usunął konto  
  • #2 29 Wrz 2013 23:09
    BlueDraco
    Specjalista - Mikrokontrolery

    Problem zapewne leży nie w sterowaniu segmentów, a cyfr. Nie pokazałeś prawdziwego schematu ani nie wiemy nic o oprogramowaniu, więc nie ma jak Ci pomóc. Podejrzewam, że oprogramowanie też mogłeś skopać, a wnioskuję to z twojej uwagi o możliwym "nie nadążaniu" przy rejestrach przesuwających, co świadczy o tym, że raczej nie wiesz, jak to ma działać.

    0
  • #3 29 Wrz 2013 23:27
    23844
    Użytkownik usunął konto  
  • Pomocny post
    #4 30 Wrz 2013 08:26
    Marek_Skalski
    Moderator Projektowanie

    Tranzystor pasujący do tej aplikacji to np. IRLML2502, IRLML6246, IRLML6346, IRLML6244 i wiele innych.
    Po tym jak piszesz:

    Cytat:
    ...Jeśli masz na myśli dobór opóźnień przy przełączaniu wyświetlaczy to faktycznie robiłem to eksperymentalnie...
    ...Nie mogę dopuścić do sytuacji, że zgubię jakiś impuls, a w trakcie oczekiwania na przerwanie od timera wysyłam dane do komputera przez UART i obsługuję klawiaturę...

    wnioskuję, że nie wiesz jak to prawidłowo zrealizować i stąd większość Twoich problemów. Dopóki nie pokażesz prawdziwego schematu i programu, nie można tutaj nic pomóc.

    0
  • #5 30 Wrz 2013 08:45
    BlueDraco
    Specjalista - Mikrokontrolery

    Czyli potwierdzasz, że nie wiesz, jak to zrobić.

    "oóźnienia przy przełączaniu wyświetlaczy", w dodatku "dobierane eksperymentalnie" dobrze nie wróżą. Zacznij od określenia częstotliwości przerwań timera - powinno to być coś około 1800 Hz. Napisz dobrze obsługę wyświeltacza - jakieś max. 6 linii kodu w C powinno wystarczyć - przykładów znajdziesz tu sporo, ja sam kilka podałem. Prawdopodobnie większość innych funkcji programu też da się zawrzeć w przerwaniu timera, w tym zliczanie impulsów.

    0
  • #6 30 Wrz 2013 22:26
    23844
    Użytkownik usunął konto  
  • Pomocny post
    #7 01 Paź 2013 08:49
    BlueDraco
    Specjalista - Mikrokontrolery

    Przecież powyżej kolega zaproponował już parę tranzystorów. Ogólne pasuje każdy mały PMOS specyfikowany na napięcie bramki 4.5 V (lepiej 2.5 V) i o małej rezystancji, np. TSM2301CX albo jeszcze lepiej podwójny, np. FDC6312, AP2623 (tanio w TME).

    Na schemacie brakuje przynajmniej dwóch kondensatorów - przy uC i MAX232.

    0
  • Pomocny post
    #8 01 Paź 2013 08:57
    Marek_Skalski
    Moderator Projektowanie

    Schematu nie widzę.
    Napisałem Ci już jakie tranzystory możesz tam zapakować. Kosztują <0,50PLN/sztukę w TME, więc tanio. W dokumentacji do wyświetlaczy sprawdź maksymalny prąd i na początek ogranicz prąd maksymalny do tej wartości (prawdopodobnie 20-60mA).
    Program do napisania od nowa.
    1. Po co zewnętrzny prescaler, jeżeli licznik TIM0 ma wbudowany i na nim możesz realizować pomiar (z prescalerem lub bez)? Licznik zlicza impulsy zewnętrzne, a Ty go tylko odczytujesz i odejmujesz wskazanie od poprzedniego (trzymanego w pamięci). W ten sposób wyliczasz deltę i nigdy nie zgubisz impulsu. Następnie deltę dodajesz do stanu licznika. Nadal bezpiecznie i nic nie zgubisz do czasu przepełnienia licznika programowego, tutaj 6 cyfr, czyli ok. 4h.
    2. Żadnych funkcji "delay" w obsłudze wyświetlaczy. Ustaw TIM2 (albo TIM1) aby generował przerwanie co ok. 555us, np. prescaler 1:4 i wartość 138 @FCK=4MHz (czas przyjęty arbitralnie, ale zazwyczaj się sprawdza) i w obsłudze przerwania od licznika wykonaj następujące czynności:
    - ładuj rejestr przesuwny (595) wartością odpowiadającą nowej katodzie
    - wpisz nowe segmenty do 4511
    - przepisz dane z rejestru przesuwnego do zatrzasku (595) (1 krótki impuls)
    I to już koniec obsługi wyświetlacza.
    - wpisz pierwszy bajt do wysłania do rejestru portu szeregowego (reszta transmisji w przerwaniu od USART) lub wysyłaj kolejne bajty w kolejnych przerwaniach od TIM1 (zawsze wymaga wskaźnika na dane do wysłania).
    Inna możliwość to wykorzystanie licznika TIM1 do generowanie przerwania co 50ms do czytania klawiszy, przeliczania wartości licznika na BCD oraz inicjowania transferu przez USART z zadaną częstotliwością, np 10Hz.
    Tak w skrócie wygląda szkielet programu do Twojego licznika. Zrobisz jak będziesz uważał.

    0
  • #9 01 Paź 2013 09:47
    23844
    Użytkownik usunął konto  
  • #10 01 Paź 2013 11:51
    dondu
    Moderator Mikrokontrolery Projektowanie

    e-mega napisał:
    P.S. Czy ktoś w ogóle zerkał na mój kod czy zamieszczałem go tylko dla hecy?

    Choćbyś miał super napisany program, to działać nie będzie bez poprawnie zbudowanego schematu. Niestety usilnie nie chcesz nam go pokazać, pomimo, że koledzy wyżej o to już prosili.

    To co załączyłeś w PDF jest faktycznym schematem?
    Gdzie na nim są omawiane tranzystory?

    e-mega napisał:
    Przy procesorze w którym miejscu powinien być kondensator? Używam rezonatora wewnętrznego więc nie ma kondensatorów przy kwarcu którego tu nie ma w ogóle.

    Zerknij do działu Zasilanie i zakłócenia: http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_zasilanie_zaklocenia

    0
  • #11 01 Paź 2013 13:35
    23844
    Użytkownik usunął konto  
  • #12 01 Paź 2013 13:48
    dondu
    Moderator Mikrokontrolery Projektowanie

    e-mega napisał:
    dondu napisał:
    Gdzie na nim są omawiane tranzystory?

    No nie ma bo mówiłem, że używałem BC547 i nie uzyskiwałem wystarczającej jasności wyświetlacza. Nie użyłem większych tranzystorów, a właśnie od WAS oczekiwałem porady jakie tranzystory użyć dla stosowanego wyświetlacza 7 segmentowego tj. SA10-21. Czemu ciągle mówicie, że mam wam dać coś co jest źle! Nie rozumiem tego...

    Po pierwsze nie krzycz.
    Po drugie nie oczekujemy złego schematu. Oczekujemy poprawnego z tranzystorami, o których wiedzę już otrzymałeś od kolegów wyżej.


    e-mega napisał:
    dondu napisał:
    Zerknij do działu Zasilanie i zakłócenia
    e-mega napisał:
    Kondensatory filtrujące mam w zasilaczu

    a ja ponownie napiszę:

    dondu napisał:
    e-mega napisał:
    Przy procesorze w którym miejscu powinien być kondensator? Używam rezonatora wewnętrznego więc nie ma kondensatorów przy kwarcu którego tu nie ma w ogóle.

    Zerknij do działu Zasilanie i zakłócenia: http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_zasilanie_zaklocenia


    gdybyś poświęcił czas i zrobił to co mówię, to zrozumiałbyś dlaczego jesteś w błędzie, w tym zakresie.
    Ale skoro nie chcesz się czegoś nauczyć i nadal będziesz zadawał pytanie:
    e-mega napisał:
    Przy procesorze w którym miejscu powinien być kondensator?

    twierdząc, że:

    e-mega napisał:
    Kondensatory filtrujące mam w zasilaczu

    to ja ani nikt z nas nic nie poradzi.

    Poczytaj i zastosuj do swojego schematu wszystkie uwagi kolegów i skromne moje i wrzuć wreszcie poprawny schemat.

    0
  • #13 01 Paź 2013 13:50
    BlueDraco
    Specjalista - Mikrokontrolery

    Kod bez schematu urządzenia, na którym ten kod ma działać, zamieszcza się tylko dla hecy, jak to trafnie ująłeś.

    Kondensatory przy MAX*** są zależne od wersji układu - należy słuchać producenta jeśli chodzi o ich wartości. Niezależnie od wersji układu jednak ma ich być 5, a nie 4.

    Każdy układ salony powinien mieć przynajmniej jeden kondensator "blokujący", zwykle 100 nF. Dotyczy to uC, ale również rejestrów przy wyświetlaczach.

    0
  • #14 01 Paź 2013 13:54
    23844
    Użytkownik usunął konto  
  • #15 01 Paź 2013 13:57
    dondu
    Moderator Mikrokontrolery Projektowanie

    e-mega napisał:
    Przyjmuję to do wiadomości, ale nie wiem w jaki sposób ma to rozwiązać problem.... zrobię tak, ale nie spodziewam się poprawy.

    Tu nie chodzi o spodziewanie się poprawy. Tutaj chodzi o eliminowanie po kolei wszystkich błędów, dlatego należy zaczynać od schematu i od niego właśnie powinieneś zacząć.

    Nawet nie wiemy jak podłączyłeś te tranzystory BC, ani nie wiemy, jak podłączysz MOSFETy. Dlatego zrób schemat ... nie dla nas - dla siebie, a nam go pokaż przy okazji :)

    0
  • #16 01 Paź 2013 14:07
    23844
    Użytkownik usunął konto  
  • #17 01 Paź 2013 14:32
    BlueDraco
    Specjalista - Mikrokontrolery

    Mówię wprost: zaczyna się od schematu. Bez tego nie da się powiedzieć, dlaczego jest źle.

    0
  • Pomocny post
    #18 01 Paź 2013 14:42
    dondu
    Moderator Mikrokontrolery Projektowanie

    e-mega napisał:
    Denerwuje mnie trochę to, że zamiast powiedzieć wprost o co chodzi jak dla idioty (którym zapewne jestem), mąci się kijkiem w wodzie.

    To nie tak. Zamiast powiedzieć Ci dodaj kondensator między nóżkę X i Y układu Z, dajemy Ci wiedzę w postaci źródeł, gdzie dokładnie jest wytłumaczone, co, gdzie i przede wszystkim dlaczego, należy zrobić.

    To znacznie lepiej dla Ciebie, gdyż po przeczytaniu artykułu będziesz wiedział już sam i nie popełnisz w przyszłości podobnych błędów. Bo najgorsze dla elektronika, jest wiedzieć, że coś trzeba, ale nie wiedzieć dlaczego, więc może jednak nie trzeba ... i problem gotowy.

    A jak zauważyłeś już wiedza ta jest całkiem spora i trudno ją przepisywać w postach odpowiadając kolejnym pytającym, w kółko to samo.

    Tutaj natomiast staramy się rozwiewać wątpliwości, a nie tłumaczyć całej elektroniki i informatyki.
    Jeżeli to rozumiesz, to zawsze uzyskasz tutaj niezbędną pomoc :)

    0
  • #19 02 Paź 2013 15:36
    23844
    Użytkownik usunął konto  
  • #20 02 Paź 2013 16:30
    dondu
    Moderator Mikrokontrolery Projektowanie

    1. Rezystory bramki są zbyt duże, daj tam "na oko" kilkaset Ohm. Bramka tranzystora ma się rozładować tak szybko jak to możliwe, ale nie należy przekraczać max prądu pinu HC595. To podobnie jak punkt Sterowanie kluczem dolnym tutaj: http://mikrokontrolery.blogspot.com/2011/03/silnik-bldc-projekt-sterownika.html

    2. Na pewno nieużywane wyjścia nie wolno podłączyć do masy, co za pewne Ci nie pasuje skoro pytasz o rezystor. Ale jaki w ogóle celu chcesz je łączyć do masy?

    3. Prąd diod vs 4511
    Czy wiesz na czym polega multipleksowanie pod kątem prądu pojedynczej diody LED vs ilość emitowanego przez nią światła?
    Napisz proszę, co wiesz na ten temat.

    0
  • #21 02 Paź 2013 16:49
    BlueDraco
    Specjalista - Mikrokontrolery

    Mylisz segmenty z cyframi i zapominasz o kondensatorach blokujących. Czy masz wyświetlacze ze wspólną anodą, czy katodą?

    0
  • #23 02 Paź 2013 18:06
    23844
    Użytkownik usunął konto  
  • #24 02 Paź 2013 18:14
    dondu
    Moderator Mikrokontrolery Projektowanie

    e-mega napisał:
    Ja nie chcę tego robić, ale skoro każdy pin niepodłączony to antena to być może warto było by je podłączyć przez jakiś duży rezystor do plusa lub masy.

    Anteny, o których czytałeś dotyczą pinów wejściowych lub tych w stanie wysokiej impedancji - wtedy nie powinno się ich zostawiać bez zewnętrznej lub wewnętrznej polaryzacji (podłączenia do GND lub masy). W Twoim przypadku mówimy o pinach wyjściowych, a one będą miały zawsze albo zero albo 1 jeżeli ją ustawisz.


    e-mega napisał:

    dondu napisał:
    Prąd diod vs 4511 (...) multipleksowanie

    Czyli sugerujesz, że poprzednim razem zbyt wolno odświeżałem segment by uzyskać odpowiednią jasność? ....

    Nie o to pytałem, więc naprowadzę Ciebie byś sam na to wpadł.
    Masz 6 wyświetlaczy i tylko 1 sekundę. Ile czasu będzie świecił każdy z nich?
    Czy to wpłynie na jasność każdego wyświetlacza jaką będzie widziało ludzkie oko?

    0
  • #25 02 Paź 2013 18:59
    23844
    Użytkownik usunął konto  
  • #27 03 Paź 2013 18:51
    23844
    Użytkownik usunął konto  
  • #28 03 Paź 2013 19:00
    dondu
    Moderator Mikrokontrolery Projektowanie

    e-mega napisał:
    Jeśli możesz nie odpowiadaj pytaniami, to nie pomaga mi w żaden sposób. Nie chcesz to poprostu nie pisz, twojego poziomu wiedzy nikt nie będzie kwestionować, ani nikt nie będzie sugerować mojej wyższości. Ja chciał bym rozwiązać problem, a od forumowiczów oczekuję odpowiedzi które mi w tym pomogą.

    Znowu mnie źle zrozumiałeś, toć przecież napisałem, że chcę Ciebie naprowadzić:

    dondu napisał:
    Nie o to pytałem, więc naprowadzę Ciebie byś sam na to wpadł.
    Masz 6 wyświetlaczy i tylko 1 sekundę. Ile czasu będzie świecił każdy z nich?
    Czy to wpłynie na jasność każdego wyświetlacza jaką będzie widziało ludzkie oko?


    zamiast podawać gotowej wiedzy na widelcu. To znacznie lepiej dla Ciebie, bo w ten sposób się rozwijasz nie tylko na zasadzie "Wiem kto mi da gotową odpowiedź", ale na zasadzie "Sam na to wpadłem, z małą podpowiedzią i teraz już jestem znacznie lepszy, bo wszystko rozumiem".

    Odpowiedzi:
    Odpowiedzią na moje pierwsze proste pytanie jest: 1/6 sekundy.
    Odpowiedzią na drugie jest: Tak wpłynie to na postrzeganie przez ludzkie oko jasności świecenia wyświetlacza, ponieważ (w uproszczeniu) będzie on świecił 6x słabiej.

    Skoro już teraz to wiesz, to zastanów się jak zrobić, by diody świeciły jednak tak jasno jak należy. Podpowiem, że chodzi o prąd ...

    0
  • #29 29 Paź 2013 17:59
    23844
    Użytkownik usunął konto