Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 21 lis 2024, o 11:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 41 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 18 lis 2021, o 17:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Witam wszystkich na forum.
Najpierw opiszę co zrobiłem a potem opiszę problem a zatem.
Napisałem sobie program do zegara na wyświetlaczach 7-mio segmentowych LED. Na zestawie ATB, wszystko pięknie działa i żadnych problemów do momentu
kiedy chcę podłączyć się do wyświetlacza zasilanego napięciem 12V.
Wyświetlacz podłączam katodami bezpośrednio do procka a anody przez układ UDN.
Na wyświetlaczu mam wtedy wyświetlane odpowiednie cyfry ale segmenty, które powinny być zgaszone, świecą się ale jakby trochę słabiej.
Jeżeli teraz zmieniłem w programie a dokładniej w przerwaniu od multiplexu, żeby na każdej pozycji wyświetlała się ta sama cyfra np: CY3 na wszystkich pozycjach,
wtedy wyświetlacz działa prawidłowo. Jeśli jednak zmienię chociażby jedną cyfrę na inną np: wyświetlam na jednej pozycji CY3 a na drugiej CY6, to wyświetlacz
zachowuje się tak jak opisałem wyżej. Nawet jak dałem rezystory na katody, to nic nie pomogło, tyle że wyświetlacz słabiej świecił.
Jak już pisałem, na zestawie ATB, program działa prawidłowo. Biblioteka do multiplexu jest od Mirka. Wyświetlacz zrobiony z kawałków taśmy LED 12V (po 3 diody na segment).
Całość oprócz wyświetlacza jest na zestawie ATB ATmega32. Zasilanie 12V z osobnego zasilacza ale wszystkie masy podłączone.
Poniżej część schematu dotycząca problemu. Jeśli podałem za mało informacji to proszę napisać co jeszcze podać.
Może ktoś już spotkał się z tym problemem.
Będę bardzo wdzięczny za wszystkie wskazówki.

Obrazek

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2021, o 19:08 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 546
Pomógł: 27

Z tego co piszesz wynika że scalak UDN za wolno się przełącza sprawdź to oscyloskopem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2021, o 22:30 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

Sprawdź czy poprawnie są kasowane segmenty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 08:29 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

mario2015 napisał(a):
Na zestawie ATB, wszystko pięknie działa i żadnych problemów do momentu
kiedy chcę podłączyć się do wyświetlacza zasilanego napięciem 12V.
Wyświetlacz podłączam katodami bezpośrednio do procka a anody przez układ UDN.


W zestawie atb anody wyświetlaczy zasilane są przez tranzystory PNP więc załączenie następuje stanem niskim, z układem UDN załąaczenie anody będzie stanem wysokim, zrobiłeś korekte w programie? Pokaż przerwanie od multiplexera



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 09:38 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

+12 >| (+5V or 0V) niestety prąd będzie płynął zawsze.
Przypuszczalnie dopiero przy ok 8V (albo mniej) na anodzie,
spadek napięcia na diodzie skompensuje różnicę napięć i odcinanie prądu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 18:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Cytuj:
Z tego co piszesz wynika że scalak UDN za wolno się przełącza sprawdź to oscyloskopem.

Też tak myślę ale pytanie co z tym zrobić?

Cytuj:
W zestawie atb anody wyświetlaczy zasilane są przez tranzystory PNP więc załączenie następuje stanem niskim, z układem UDN załąaczenie anody będzie stanem wysokim, zrobiłeś korekte w programie? Pokaż przerwanie od multiplexera

Układ UDN nie neguje sygnału na wyjściu. Robi to układ ULN2803 lub podobne, wtedy trzeba odnegować tablicę w bibliotece.

Cytuj:
+12 >| (+5V or 0V) niestety prąd będzie płynął zawsze.
Przypuszczalnie dopiero przy ok 8V (albo mniej) na anodzie,
spadek napięcia na diodzie skompensuje różnicę napięć i odcinanie prądu.


Jeśli tak, to jak sobie z tym poradzić?

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 19:30 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Czas włączania 2 mikrosekund, czas wyłączania 10 us i to ma za wolno przełączać 200, czy nawet 1000 razy na sekundę?
Najprostsze rozwiązanie to jak napisałem zmniejszenie napięcia. Dlaczego nie może być <8V, np standardowe 5V,
które i tak musisz doprowadzić do układu?
A propos szybkości przełączania. Nie znam współczesnego elementu elektronicznego (nie licząc elektryczno-mechanicznych, jak np. przekaźnik),
który nie sprostałby przełączaniu/multipleksowaniu jakiegokolwiek wyświetlacza 7seg.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Cytuj:
Czas włączania 2 mikrosekund, czas wyłączania 10 us i to ma za wolno przełączać 200, czy nawet 1000 razy na sekundę?
Najprostsze rozwiązanie to jak napisałem zmniejszenie napięcia. Dlaczego nie może być <8V, np standardowe 5V,
które i tak musisz doprowadzić do układu?
A propos szybkości przełączania. Nie znam współczesnego elementu elektronicznego (nie licząc elektryczno-mechanicznych, jak np. przekaźnik),
który nie sprostałby przełączaniu/multipleksowaniu jakiegokolwiek wyświetlacza 7seg.

Mniej niż 8V nie może być dlatego, że wtedy wyświetlacz ledwo świeci. A przy 5V nie świeci no i to jest poprawne.

------------------------ [ Dodano po: 11 minutach ]

Podejrzewam, że tonygryps ma rację:
Cytuj:
Z tego co piszesz wynika że scalak UDN za wolno się przełącza sprawdź to oscyloskopem.

Problem polega na tym, że nie wiem co z tym zrobić.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:15 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Do regulacji jasności świecenia używamy rezystorów. 5V (wystarczająco wydajne prądowo np. > 50mA)
jest zabójcze dla każdej zwykłej diody diody świecącej, jakie są w normalnych wyświetlaczach 7seg.
Zmniejszając rezystor jesteśmy w stanie doprowadzić do maksymalnego świecenia diody nawet przy 3.3V zasilania.
Jeśli przy niskiej wartości rezystancji masz słabe świecenie, to jest wynikiem tego, że czas zaświecania
do czasu zgaszenia jest nieproporcjonalnie niski, ale to jest już wynikiem algorytmu przełączania.
Przy sześciu cyfrach czas świecenia do czasu zgaszenia powinien być jak 1 do 6.
Pozostaje jeszcze pytanie jaki masz wyświetlacz? Bo to może coś nietypowego?



Ostatnio edytowano 19 lis 2021, o 20:22 przez jerrylu, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Cytuj:
Do regulacji jasności świecenia używamy rezystorów. 5V (wystarczająco wydajne prądowo np. > 50mA)
jest zabójcze dla każdej zwykłej diody diody świecącej, jakie są w normalnych wyświetlaczach 7seg.
Zmniejszając rezystor jesteśmy w stanie doprowadzić do maksymalnego świecenia diody nawet przy 3.3V zasilania.
Jeśli przy niskiej wartości rezystancji masz słabe świecenie, to jest wynikiem tego, że czas zaświecania
do czasu zgaszenia jest nieproporcjonalnie niski, ale to jest już wynikiem algorytmu przełączania.
Przy sześciu cyfrach czas świecenia do czasu zgaszenia powinien być jak 1 do 6.

Tu nie chodzi o żadne "jasności świecenia". Przeczytaj pierwszy mój wątek.(ze zrozumieniem).

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

10us przy częstotliwości przełączania 600Hz (6 wyświetlaczy po 100Hz) skutkuje wypełnieniem 0.6%. Odnosząc to do 8 bitowego PWM jest to 1,5 tika timera. Dla minimalnej częstotliwości multipleksowania 360Hz będzie trochę lepiej bo 0,36% (0.9 tika). Chyba wszyscy znamy problem z nie do końca wygaszajacą się diodą zasilaną timerem w trybie FastPWM? Tak więc IMHO to _może_ być przyczyną. Na szczęście dosyć łatwą do zwalczenia (dwa przerwania ze spreadem: OVF włączające segmenty, COMPA/B wyłączające, lub na odwrót).
Trudniejsza, jeśli nie niemożliwa do zwalczenia może być inna potencjalna przyczyna: Output Leakage Current. Datasheet podaje 200uA ale przy dosyć ekstremalnych warunkach. Nie wiadomo jaki OLC będzie w warunkach tego obwodu, przypuszczam, ze mniej ale ile? Warto to sprawdzić multimetrem. 200uA wydaje się niewielką wartością ale jest to odpowiednik 1% PWM dla 20mA prądu.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

dla fofex - częstotliwość odświeżania wyświetlaczy to 6x50Hz czyli 300Hz.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:31 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Ok, zafiksowałem się na "Mniej niż 8V nie może być dlatego, że wtedy wyświetlacz ledwo świeci". Sorry.
Jeśli uważacie, że to niewystarczająca szybkość przełączania (bo zużywa ułamek procenta czasu cyklu świecenia), to ja już nie mam nic więcej dodania.
Szkoda mojego czasu.
W uzupełnieniu - szpilek nie ma, jeśli przy 5V wyświetlacz się wygasza.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Cytuj:
Ok, zafiksowałem się na "Mniej niż 8V nie może być dlatego, że wtedy wyświetlacz ledwo świeci". Sorry.
Jeśli uważacie, że to niewystarczająca szybkość przełączania (bo zużywa ułamek procenta czasu cyklu świecenia), to ja już nie mam nic więcej dodania.
Szkoda mojego czasu.

Chodzi mi o to, że sprawdzałem na niższym napięciu. Jeśli chodzi ci o coś innego, to proszę wytłumacz mi to. Jestem laikiem i może dlatego nie wszyscy mnie zrozumieli.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 20:46 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Skoro prąd płynie od wyższego potencjału do niższego, to będzie płynął od +12 do 0 (zerowego potencjału), jak i do potencjału 5V.
Wystawienie stanu wysokiego nie jest tu rozwiązaniem - płynie tylko mniejszy prąd ze względu na niższą różnicę potencjałów.
Pamiętaj też, że na diodzie odkłada się ok 3V. Możesz testowo sprawdzić podnosząc napięcie, że dioda zaświeci się dopiero po podaniu
zbliżonego do 3V napięcia.
Szybkość przełączania dawałaby też zły efekt przy zasilaniu 5V. Przypuszczalnie efekt smużenia.
Jeszcze mnie natchnęło ;) - "Mniej niż 8V nie może być dlatego, że wtedy wyświetlacz ledwo świeci. A przy 5V nie świeci no i to jest poprawne."
5V to mniej niż 8 ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 21:01 
Offline
Użytkownik

Dołączył(a): 07 gru 2013
Posty: 90
Pomógł: 6

Zastosuj ULN2803 od strony katod ( COM - ULN-a do 12v ), UDN-a pozostaw, nie zapomnij o rezystorach ograniczających prąd od strony wyświetlacza. Ewentualnie "pospinaj na krótko " całość i sprawdź sztucznie/statycznie czy jak odpowiednio wysterujesz ULN-a i UDN-a to zapalają się segmenty wyświetlacza.


Program to już małe "hmm" ( do zmiany sterowanie katodami )

( dodano kilka minut później :-) )

Na sam start odłącz wyświetlacz i UDN-a i spróbuj statycznie nim sterować czy zaświecają się poszczególne segmenty - uwaga na UDN-a 5V do sterowania, a katody raz do GND a przy wyłączeniu do 5V, ( na próbę i kilka innych katod też podłącz do 5V ). Nie zapomnij o rezystorach ograniczających prąd na segmentach.
Według mnie pojawiające się "duchy" na wyświetlaczu masz dlatego że po wyłączeniu segmentu pin nie wisi w powietrzu tylko jest na potencjale 5V.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 21:15 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

No tak, jak pisze jonny15, podwójne elementy kluczujące na anodzie i katodzie rozwiązałyby kwestię zasilania +12.
Osobiście jednak uważam, że to niepotrzebna rozbudowa układu, skoro i tak musimy dostarczyć do zasilania 5V
i zastosować to napięcie także do wyświetlacza.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2021, o 22:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

No tak, słusznie. Brakuje klucza na dole

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2021, o 13:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Do jony15
Cytuj:
Na sam start odłącz wyświetlacz i UDN-a i spróbuj statycznie nim sterować czy zaświecają się poszczególne segmenty - uwaga na UDN-a 5V do sterowania, a katody raz do GND a przy wyłączeniu do 5V, ( na próbę i kilka innych katod też podłącz do 5V ). Nie zapomnij o rezystorach ograniczających prąd na segmentach.


Statycznie w celu sprawdzenia jak podłączyłem jeden wyświetlacz i jeden segment, to zapala się tylko ten segment, który podłączyłem.
Problemy się zaczynają jak wyświetlacz podłączę do zestawu ATB i obojętnie czy wyświetlacz wbudowany w zestawie jest podłączony czy też nie. Oczywiście masa zestawu i UDN-a są połączone.
Niestety efekt dalej ten sam. Co do rezystorów na wyświetlacz (jak ktoś tam wyżej pisał) to nie są one konieczne, ponieważ każdy segment ma wbudowany rezystor. Pisałem wcześniej,
że wyświetlacz jest zrobiony z pociętej taśmy led 12V.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2021, o 15:53 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Mario, wczoraj byłem zakręcony w pracy i oczywiście nie doczytałem o pasku ledowym, jako segment wyświetlacza. SORRY!
Moje propozycje zasilania 5V o kant .. potłuc. Co nie zmienia faktu, że przyczyna świecenia jest taka, jak podałem.
Zrobiłem przed chwilą test na zasilaczu laboratoryjnym i takim pasku.
Diody gasną mi dopiero przy ok. 7,2V. U Ciebie może być trochę inaczej - zależy od diód najwyraźniej.
U mnie wygasiłyby się przy różnicy potencjałów 12-5V = 7V, przy podaniu stanu wysokiego na porty uC.
Możesz zrobić prosty eksperyment na szybko, jak zadziała można zostawić taką opcję - trochę "druciarstwo" ;)
Daj proszę szeregowo katodą (paskiem na diodzie) dowolną diodę impulsową/prostowniczą do pinu procesora od katody wyświetlacza.
Może taki półśrodek zadziała. Na diodzie będzie spadek ok. 0.6 /0.7V tylko nie dawaj Shotkiego one mają ok.0.2V spadku.
To spowoduje spadek napięcia zasilania o taką wartość. Może już odetnie prąd. Wtedy dajesz 8 takich diód szeregowo z segmentami i nic nie zmieniasz w programie.
W innym przypadku tylko dodatkowy element kluczujący na katodzie. Może być tranzystor npn lub scalak.
Wymagać to będzie odwrócenia (zanegowania) sygnałów załączających segmenty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2021, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1030
Lokalizacja: Trójmiasto
Pomógł: 189

mario2015 napisał(a):
Problemy się zaczynają jak wyświetlacz podłączę do zestawu ATB i obojętnie czy wyświetlacz wbudowany w zestawie jest podłączony czy też nie. Oczywiście masa zestawu i UDN-a są połączone.
Widzisz, zacząć trzeba od początku. Paski led mają segmentowo połączone diody w szereg i dodatkowo jeszcze w każdym szeregu wstawiony jest jeszcze rezystor. Ów rezystor to taki najprostszy z prostych stabilizator prądu, dopierany tak by przy nominalnym napięciu (w tym wypadku 12V), przez diody płynął ich nominalny prąd.
I teraz clou problemu. Diody świecące zaczynają świecić przy napięciu w przybliżeniu 1,5~2V, zależy to od ich technologi wykonania i barwy światła, ale dla uproszczenia przyjmijmy że będzie to 2V.
I teraz Twoje paski led w wyświetlaczu mają po 3 diody, to po szybkich przeliczeniach 3diody x 2V = 6V, czyli diody zaczynają świecić przy ok 6V, oczywiście nie pełnym światłem tylko będą się jarzyć i w miarę zwiększania napięcia będą świecić mocniej. Rezystor pominiemy w rozważaniach, ponieważ w momencie gdy diody się ledwo świecą, prąd przez nie płynący jest bardzo mały, więc i spadek napięcia na rezystorze będzie pomijalnie mały.
I teraz Twój układ, załóżmy że zatrzymujemy czas i w chwili obecnej załączony jest pierwszy wyświetlacz i powinna się wyświetlać cyfra "1" czyli zapalone segmenty B i C: układ UDN wystawia 12V na anody diod. Procek wystawia na piny dla segmentów A, D, E, F, G stan wysoki, czyli 5V, żeby zgasić te segmenty, natomiast na segmenty B i C stan niski czyli ~0V żeby się zaświeciły.
I teraz znów matematyka, dla segmentów które powinny być zgaszone:
12V z układu UDN - 5V jakie wystawia procek = 7V, i to jest napięcie jakie występuje na pasku który powinien być zgaszony. Dzieląc to na 3 diody 7/3=2,333...V - więc nie dziwota że diody zaczynają świecić.
Już pominę fakt, iż w razie przypadkowego zwarcia na pasku, na procek może polecieć 12V które w najlepszym wypadku uszkodzi diodę zabezpieczającą wbudowaną w każdy pin procka, powodując prawdopodobnie trwałe zwarcie na tym pinie do 5V.
Generalnie to co podpowiada kolega jerrylu może pomoże w pewnym stopniu, choć obniży również jasność świecenia całego wyświetlacza no i jak sam napisał jest to mało elegancki sposób.
Tutaj najsłuszniejszym rozwiązaniem były by tranzystorki npn lub jakiś układ załączający masą, wpięte pomiędzy wyświetlacze a piny uC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2021, o 19:57 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

No i to jest pięknie wytłumaczenie tego zagadnienia.
Zawsze twierdziłem, że nie mam daru tłumaczenia (w odróżnieniu od Xentisa ).
Zbytnio uciekam w skróty myślowe, zakładając, że odbiorca "odbiera na tych samych falach" ;)
Mam nadzieję, że Mario teraz już ma pełny obraz sytuacji.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2021, o 13:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

xentis napisał(a):
mario2015 napisał(a):
Problemy się zaczynają jak wyświetlacz podłączę do zestawu ATB i obojętnie czy wyświetlacz wbudowany w zestawie jest podłączony czy też nie. Oczywiście masa zestawu i UDN-a są połączone.
Widzisz, zacząć trzeba od początku. Paski led mają segmentowo połączone diody w szereg i dodatkowo jeszcze w każdym szeregu wstawiony jest jeszcze rezystor. Ów rezystor to taki najprostszy z prostych stabilizator prądu, dopierany tak by przy nominalnym napięciu (w tym wypadku 12V), przez diody płynął ich nominalny prąd.
I teraz clou problemu. Diody świecące zaczynają świecić przy napięciu w przybliżeniu 1,5~2V, zależy to od ich technologi wykonania i barwy światła, ale dla uproszczenia przyjmijmy że będzie to 2V.
I teraz Twoje paski led w wyświetlaczu mają po 3 diody, to po szybkich przeliczeniach 3diody x 2V = 6V, czyli diody zaczynają świecić przy ok 6V, oczywiście nie pełnym światłem tylko będą się jarzyć i w miarę zwiększania napięcia będą świecić mocniej. Rezystor pominiemy w rozważaniach, ponieważ w momencie gdy diody się ledwo świecą, prąd przez nie płynący jest bardzo mały, więc i spadek napięcia na rezystorze będzie pomijalnie mały.
I teraz Twój układ, załóżmy że zatrzymujemy czas i w chwili obecnej załączony jest pierwszy wyświetlacz i powinna się wyświetlać cyfra "1" czyli zapalone segmenty B i C: układ UDN wystawia 12V na anody diod. Procek wystawia na piny dla segmentów A, D, E, F, G stan wysoki, czyli 5V, żeby zgasić te segmenty, natomiast na segmenty B i C stan niski czyli ~0V żeby się zaświeciły.
I teraz znów matematyka, dla segmentów które powinny być zgaszone:
12V z układu UDN - 5V jakie wystawia procek = 7V, i to jest napięcie jakie występuje na pasku który powinien być zgaszony. Dzieląc to na 3 diody 7/3=2,333...V - więc nie dziwota że diody zaczynają świecić.
Już pominę fakt, iż w razie przypadkowego zwarcia na pasku, na procek może polecieć 12V które w najlepszym wypadku uszkodzi diodę zabezpieczającą wbudowaną w każdy pin procka, powodując prawdopodobnie trwałe zwarcie na tym pinie do 5V.
Generalnie to co podpowiada kolega jerrylu może pomoże w pewnym stopniu, choć obniży również jasność świecenia całego wyświetlacza no i jak sam napisał jest to mało elegancki sposób.
Tutaj najsłuszniejszym rozwiązaniem były by tranzystorki npn lub jakiś układ załączający masą, wpięte pomiędzy wyświetlacze a piny uC.


Czy Tobie chodzi o takie sterowanie tranzystorem jak na poniższym obrazku?

Obrazek

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2021, o 14:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1030
Lokalizacja: Trójmiasto
Pomógł: 189

Dokładnie tak.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2021, o 14:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

xentis napisał(a):
Dokładnie tak.

No i po kilku dniach odpoczynku dalej walczę z tym wyświetlaczem i lipa.
To znaczy, klucz tranzystorowy (rezystor 10k na bazie bo poniżej 10k żadnych zmian) zadziałał ale tylko wtedy gdy jest podłączony jeden wyświetlacz.
Jak dołączę drugi, to już pojawiają się duszki a jak trzeci to już same 8-ki świecą.
Biblioteka oczywiście przerobiona na sterowanie tranzystorów stanem wysokim.
Wymieniłem UDN-a i dalej to samo.
Nie wiem co dalej, nie mam żadnego pomysłu.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2021, o 18:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1030
Lokalizacja: Trójmiasto
Pomógł: 189

Ok, a jak masz wszystkie wyświetlacze podłączone i ustawisz by się na wszystkich zaświeciła cyfra "1", to się wyświetlają prawidłowo same segmenty B i C, czy świecą wszystkie segmenty na wszystkich wyświetlaczach?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2021, o 18:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

xentis napisał(a):
Ok, a jak masz wszystkie wyświetlacze podłączone i ustawisz by się na wszystkich zaświeciła cyfra "1", to się wyświetlają prawidłowo same segmenty B i C, czy świecą wszystkie segmenty na wszystkich wyświetlaczach?

Jak ustawię wszystkie wyświetlacze na wyświetlanie tej samej cyfry np: same 1-nki albo same 4-ki itp., wtedy na każdej pozycji dana cyfra jest wyświetlana prawidłowo.
Jeśli tylko zmienię choćby jedną cyfrę na inną np: ustawię same 1-nki a na jednej pozycji ustawię 2, to na wszystkich pozycjach te cyfry nakładają się na siebie,
tyle tylko, że segmenty od 2-ki świecą trochę słabiej.

_________________
http://www.avrboss.pl



Ostatnio edytowano 24 lis 2021, o 19:00 przez mario2015, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2021, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1030
Lokalizacja: Trójmiasto
Pomógł: 189

Ok, mnie to wygląda na nie do końca prawidłową procedurę obsługi multipleksowania.
Bazujesz na kodzie z bluebooka?

------------------------ [ Dodano po: 15 minutach ]

Podejrzewam, że kod przepisywałeś z książki, a jest tam mały chochlik. Dam Ci podpowiedź: porównaj kod z książki z kodem przykładu z kodów źródłowych dołączonych do książki, zwróć uwagę na zawartość procedury obsługi przerwania...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2021, o 19:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Cytuj:
Podejrzewam, że kod przepisywałeś z książki, a jest tam mały chochlik. Dam Ci podpowiedź: porównaj kod z książki z kodem przykładu z kodów źródłowych dołączonych do książki, zwróć uwagę na zawartość procedury obsługi przerwania...


Procedura przerwania wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No i jak pisałem wcześniej, na zwykłym wyświetlaczu LED 5V, biblioteka działa prawidłowo.
Kodu nie przepisywałem, tylko skopiowałem z CD dołączonego do książki z II edycji.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2021, o 19:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1030
Lokalizacja: Trójmiasto
Pomógł: 189

Chym, no to nie trafiłem :lol:.
Wygląda dobrze.

Ale kod lepiej usuń bo nie wolno na forum wrzucać...

------------------------ [ Dodano po: 9 minutach ]

co u Ciebie zawiera makro MASKA_ANODY?

------------------------ [ Dodano po: 21 minutach ]

Wydaje mi się że masz błąd tu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Oczywiście jeśli makro MASKA_ANODY ma poprawną wartość 0xC0.
Nie wiem też czemu zmienna licznik jest 16bitowa, wystarczyła by 8bitowa, ale to już nie wpływa na działanie, ale bardziej kwestia optymalizacyjna...

------------------------ [ Dodano po: 37 minutach ]

no i końcówka przerwania też do poprawy, zamiast:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 41 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO