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



Teraz jest 30 mar 2026, o 10:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 26 lis 2014, o 16:20 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Witam
Chciałem się nauczyć obsługiwać wyświetlacz LED zgodnie z instrukcją zawartą w książce. Mam jednak mały problem, bo schemat w książce dotyczy układu ze wspólną anodą, a ja mam wyświetlacz ze wspólną katodą. Moje pytanie brzmi jak przerobić układ, aby sterować tym wyświetlaczem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 16:58 
Offline
Użytkownik

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

to bardzo proste. Wyświetlacz podłączony jest do mikrokontrolera oraz tranzystorów. Tranzystory użyte do sterowania wyświetlacza są typu pnp natomiast Ty musisz użyć typu npn. Emitery tranzystorów pnp łączy się z plusem zasilania-Ty musisz połączyć z masą układu. tyle w kwestii układu. W programie rzecz jasna równiez trzeba dokonać zmian ponieważ tranzystory pnp "otwiera się" stanem niskim a npn wysokim. Do końcówek a, b, c, d, e, f, g, dp, musisz podawać stan wysoki.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 17:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sie 2013
Posty: 137
Lokalizacja: śląskie
Pomógł: 13

Zmiany w programie tzn. wyj. z uC musi sterować stanem wysokim (H),zmienić tranzystory na NPN (E-GND,C-wyś, B-uC)
segmenty od A do D stanem wysokim.
To tyle na szybko. ( chyba nic nie pokręciłem)

Normalne :( ktoś mnie wyprzedził.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 17:04 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Dzięki za pomoc :)
Rezystory zostają takie same jak w książce? Na schemacie są 2k2 między uC a Bazą, i 100 Ohm między uC a diodami wyświetlacza.
W programie sama idea się nie zmienia? Zmienia się jedynie stan jakim sterujemy diodami i tranzystorami?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 17:06 
Offline
Użytkownik

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

dokładnie tak jak wyżej napisałeś

------------------------ [ Dodano po: 1 minucie ]

Waldek_jb napisał(a):
Zmiany w programie tzn. wyj. z uC musi sterować stanem wysokim (H),zmienić tranzystory na NPN (E-GND,C-wyś, B-uC)
segmenty od A do D stanem wysokim.
To tyle na szybko. ( chyba nic nie pokręciłem)

Normalne :( ktoś mnie wyprzedził.

ważne że chciałeś pomóc :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 17:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sie 2013
Posty: 137
Lokalizacja: śląskie
Pomógł: 13

Z następnym postem też Kolega był szybszy :oops: to już normalnie go nie wysyłałem.
No cóż zrobić wolno piszę a myślenie to też u mnie jest bez opcji turbo. :lol:

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 17:31 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Jeszcze jedno pytanie mi się nasunęło: czy Atmega8 na której się uczę uciągnie mi taki układ? Tzn. czy prąd jaki popłynie przez wyświetlacz będzie na tyle duży, że zaświeci się on i będzie widoczny w dzień? Korzystam z wyświetlacza 4 cyfrowego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 17:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sie 2013
Posty: 137
Lokalizacja: śląskie
Pomógł: 13

Zombol napisał(a):
czy Atmega8 na której się uczę uciągnie mi taki układ?


To nie jest kwestia Atmegi, uC tylko steruje wyświetlaczem. Przecież musisz i tak użyć jakiegoś zasilania do uC, tranzystorów i całego układu.
To zasilacz musi " uciągnąć " to wszystko.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 18:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Kolego jeżeli wywaliłbyś z układu tranzystory to mógłbyś się martwić o to czy atmega uciągnie prądowo bo pin atmegi możemy obciążyć max 20mA. Po to dajesz tranzystory by nie obciążać uC a tranzystory więc je musisz dać takie by uciągnęły ok 140 mA na tranzystor dla 7 segmentów zakładając że pojedynczy segment pobiera 20mA.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 18:00 
Offline
Użytkownik

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

w chwili kiedy wyświetlasz na wyświetlaczu cyfry 8888 wyświetlacz pobiera najwiecej prądu z uC. Ile mikrokontroler dostarczy to trzeba sprawdzić w nocie katalogowej. Zasilacz oczywiście jest najważniejszy ale prąd wyjściowy danego portu gra kluczową rolę i w przypadku dużego wyświetlacz LED być może trzeba będzie użyć dodatkowych tranzystorów dla segmentów a-g. wtedy będą to tranzystory pnp (emiter do vcc) i wtedy znowu tranzystory otwierasz poziomem niskim



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 23:02 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Wyświetlacz to dokładnie ten model http://www.tme.eu/pl/details/opd-q5621g ... -led-corp/
Układ zasilam korzystając z napięcia USB, które zasila programator i mój układ. Wydaje mi się, że powinno dać radę.
Układ mam taki:
Anoda każdej diody do osobnego pinu uC przez rezystor 100R, potem na kolektor tranzystora. Emiter do masy, a baza przez rezystor 2k2 do uC.

Czy taki układ ma szansę zadziałać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 01:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sie 2013
Posty: 137
Lokalizacja: śląskie
Pomógł: 13

Fajnie jak byś pokazał schemat,a tak no cóż trzeba sobie poradzić.
Więc tak: anody każdej diody do pinów uC ---OK.
Emitery tranzystorów do masy ---OK.
Bazy przez R 2,2k do uC ---OK. ( zakładam,że wykorzystujesz wszystkie segmenty wyśw. to oczywiście 4 tranzystory,4 R ,2k, do pinów uC )

Zombol napisał(a):
potem na kolektor tranzystora


Tego coś nie mogę pojąć ? :o
Kolektory tranzystorów połączyć bezpośrednio z katodami wyśw.

Powinno działać,oczywiście do tego odpowiednie zmiany w programie.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 16:25 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Wiem, że bez schematu to dupa, a nie pytanie, ale noc była, oczy mi się zamykały i nie miałem jak go wrzucić :) Ale moja wizja zgadza się z Twoją :)
Jeszcze raz dzięki za wszelką pomoc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 16:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sie 2013
Posty: 137
Lokalizacja: śląskie
Pomógł: 13

Kolego Zombol daj znać jak odpali.
Powodzenia.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2014, o 18:36 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Układ zmontowałem i działa, jeśli ręcznie przełączę tranzystory i segmenty. Gorzej, jeśli chcę zaprząc do tego atmegę. Napisałem kod w oparciu o książkę, zmieniłem to co wydaje mi się, że powinienem zmienić, a mimo to wyrzuca mi błędy. Nie wiem już co mam z tym zrobić. Może ktoś z Was mi pomoże :)
Techniczne informacje:
procesor ATmega8, segmenty wyświetlacza podłączone do portu C i B. (segment A- PC5, segment B- PC4 itd. Segment G- PB5)
Tranzystory podłączone bazami do portu D. (cyfra 1-PD0, cyfra 2- PD1 itd.)
Taktownie wew. oscylatorem 8MHz


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


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



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


Eclipse wyrzuca mi takie błędy:
**** Build of configuration Release for project WYSW_LED ****

make all
Building file: ../d_led.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=1000000UL -MMD -MP -MF"d_led.d" -MT"d_led.d" -c -o "d_led.o" "../d_led.c"
../d_led.c:10:101: warning: d_led.h: No such file or directory
../d_led.c: In function 'd_led_init':
../d_led.c:24: error: 'LED_DATA_DIR' undeclared (first use in this function)
../d_led.c:24: error: (Each undeclared identifier is reported only once
../d_led.c:24: error: for each function it appears in.)
../d_led.c:25: error: 'LED_DATA' undeclared (first use in this function)
../d_led.c:27: error: 'KATODY_DIR' undeclared (first use in this function)
../d_led.c:27: error: 'DC1' undeclared (first use in this function)
../d_led.c:27: error: 'DC2' undeclared (first use in this function)
../d_led.c:27: error: 'DC3' undeclared (first use in this function)
../d_led.c:27: error: 'DC4' undeclared (first use in this function)
../d_led.c:29: error: 'KATODY_PORT' undeclared (first use in this function)
../d_led.c:33: error: called object '*78u' is not a function
../d_led.c:35: error: called object '*89u' is not a function
../d_led.c: In function '__vector_19':
../d_led.c:45: error: 'KATODY_PORT' undeclared (first use in this function)
../d_led.c:47: error: 'LED_DATA' undeclared (first use in this function)
../d_led.c:47: error: 'cyfry' undeclared (first use in this function)
../d_led.c: At top level:
../d_led.c:60: error: 'SEG_A' undeclared here (not in a function)
../d_led.c:60: error: 'SEG_B' undeclared here (not in a function)
../d_led.c:60: error: 'SEG_C' undeclared here (not in a function)
../d_led.c:60: error: 'SEG_D' undeclared here (not in a function)
../d_led.c:60: error: 'SEG_E' undeclared here (not in a function)
../d_led.c:60: error: 'SEG_F' undeclared here (not in a function)
../d_led.c:62: error: 'SEG_G' undeclared here (not in a function)
../d_led.c:72: error: expected identifier or '(' before '}' token
make: *** [d_led.o] Error 1

**** Build Finished ****



Ostatnio edytowano 28 lis 2014, o 19:21 przez Zombol, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2014, o 22:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sie 2013
Posty: 137
Lokalizacja: śląskie
Pomógł: 13

Zombol napisał(a):
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=1000000UL -MMD -MP -MF"d_led.d" -MT"d_led.d" -c -o "d_led.o" "../d_led.c"


Kompilujesz to przecież na Atmega16 i 1MHz.
Musisz to zmienic w Eclipse na właściwą Atmegę i częstotliwość.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2014, o 00:12 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Powalczyłem trochę z kodem i znalazłem kilka błędów w nim, co zmniejszyło liczbę errorów. Z tym co zostało już nie jestem w stanie sobie poradzić.

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


make all
Building file: ../d_led.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=8000000UL -MMD -MP -MF"d_led.d" -MT"d_led.d" -c -o "d_led.o" "../d_led.c"
In file included from ../d_led.c:10:
../d_led.h:8:15: warning: extra tokens at end of #ifndef directive
../d_led.h:9:15: warning: ISO C99 requires whitespace after the macro name
../d_led.c: In function 'd_led_init':
../d_led.c:37: error: lvalue required as left operand of assignment
../d_led.c:38: error: lvalue required as left operand of assignment
../d_led.c: At top level:
../d_led.c:56: warning: 'TIMER1_COMP_vect' appears to be a misspelled signal handler
../d_led.c: In function 'TIMER1_COMP_vect':
../d_led.c:63: error: lvalue required as left operand of assignment
../d_led.c:64: error: lvalue required as left operand of assignment
../d_led.c:65: error: lvalue required as left operand of assignment
../d_led.c:66: error: lvalue required as left operand of assignment
make: *** [d_led.o] Error 1

**** Build Finished ****



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2014, o 11:09 
Offline
Użytkownik

Dołączył(a): 22 paź 2014
Posty: 72
Pomógł: 0

Ponaprawiałem wszystko co było źle, i wyświetlacz działa i wyświetla prawie wszystko. Prawie, bo nie wyświetla mi segmentu G, gdyż jest podłączony do innego portu. Czy jest w ogóle możliwość podłączenie wyświetlacza do 2 różnych portów tak jak ja to mam? Wiem, że mogę przepiąć go na port D, który mam w całości dostępny, ale pytam na przyszłość, gdyby nie było takiej możliwości.



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: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Baidu [Spider] 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