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

Wyświetlacz widmowy-poprawna konstrukcja

10 Sty 2009 14:07 4307 36
  • Poziom 12  
    Cześć. Pytałem już na forum ale nikt mi nie odpowiedział. Chyba dlatego, że pliki dałem w postaci plików eagle'a zamiast grafiki. Od niedawna interesuję się elektroniką, wyświetlacz widmowy ma być moim pierwszym projektem na mikrokontrolerze. Jeśli moglibyście spojrzeć na schemat, układ ścieżek i powiedzieć mi czy to zadziała to byłbym wdzięczny. Nie chciałbym zepsuć tego projektu dlatego przed odbiciem ścieżek na płytce i wytrawieniem pytam Was.

    Poniżej schemat i układ ścieżek w postaci grafiki, a dla zainteresowanych tym projektem pliki w eagle'u.

    Do plików eagle dodałem dodatek eagle3D, pokazuje mi komunikat, że mam coś źle z ścieżkami, nie rozumiem co jest nie tak? Inne pliki normalnie idą przez ten dodatek.
  • TermopastyTermopasty
  • Pomocny post
    Poziom 22  
    Będzie działało. Rozumiem, że będziesz sam "machał" płytką? :)
  • TermopastyTermopasty
  • Poziom 12  
    Machać sam nie będę, na razie do kola od roweru bym podczepił a później bym jakiś szybszy silniczek skołował, myślałem nad silniczkiem z zepsutego dysku twardego ale go znaleźć nie mogę.

    Dodano po 4 [minuty]:

    Schemat będzie dobrze, a układ ścieżek w tym projekcie? Trudności miałem z podłączeniem kondensatorów ścieżkami w tym projekcie. Czy ścieżki są dobrze? Z góry dzięki za odpowiedź.
  • Pomocny post
    Poziom 22  
    Mam nadzieje że wiesz ze czerwone linie oznaczają scieżki po drugiej stronie płytki. w sensie że to będą zworki, ale tak prosty projekt jesteś w stanie zrobić korzystając tylko z jednej warstwy.

    Nie potrzebny jest ten moment gdzie czerwona linia przechodzi w niebieską potem znowu w czerwoną.

    Ogólnie działać będzie.
  • Poziom 12  
    Czerwonej linii użyłem do tego żeby linie się nie przecinały i żeby odprowadzi kabelek nad ścieżkami. Właśnie trawi mi się płytka tego projektu :)

    Dodano po 5 [godziny] 44 [minuty]:

    Jeszcze kilka pytań. Czy mógłbym układ zasilać napięciem 6V, przez jakiś rezystor, który zmniejszyłby napięcie do 5V(jaki to rezystor?)? Czy w układzie do diod LED nie wystarczyłoby zastosować jednego rezystora 1k(jak jest taki rezystor oznaczony, chodzi mi o kolory?) dla ośmiu diod LED? Czy kondensatory mam dobrze połączone? Z góry dzięki za odpowiedzi. Płytkę mam już gotową i kilka elementów już przylutowałem.
  • Pomocny post
    Poziom 22  
    6V jest jeszcze bezpieczne aczkolwiek lepiej byłoby zamiast rezystora zastosować diodę zenera 5V antyrównolegle ze źródłem zasilania albo układ 7805. Wtedy możesz dawać większe napięcia, a przy 7805 może to być nawet 20V
  • Poziom 12  
    Mam diodę Zenera 5.1V, dobra będzie?
  • Pomocny post
    Poziom 22  
    Tak, idealna :) tylko pamiętaj jak źle podłączysz to tak jak byś zwarł źródło zasilania.
  • Poziom 12  
    Diodę Zenera mam podłączyć do "plusa" zasilania. Ona jest po jednej stronie oznaczona taką ciemniejszą kreską, w którą stronę ta kreska ma być? Tak jak prąd przepływa czy przeciwnie?

    -----[dioda:wyróżnienie]----- <------ + [kierunek przepływu prądu]

    czy może tak?

    -----[wyróżnienie:dioda]----- <------- + [kierunek przepływu prądu]

    6V, które przejdzie przez tę diodę Zenera 5.1V zmniejszy się do ilu V? Napięcie zmniejszy się do 5.1V, czy jak to jest? Dzięki.
  • Pomocny post
    Poziom 22  
    To nie działa w ten sposób
    Diodę zenera podłączasz zaporowo, przeciwnie do kierunku przepływu prądu, równolegle do źródła i całego układu. Ponieważ dioda działa zaporowo do maksymalnego napięcia 5.1V które będzie przekroczone (6V) to na diodzie odłoży się różnica (0.9V).
    Kreska oznacza katodę diody.

    http://elektro.w.interia.pl/faq/11.html
  • Pomocny post
    Poziom 18  
    Ja siedzę w sumie tylko w picach, na avr'ach się kompletnie nie znam, ale moim skromnym bardzo zdaniem układ mikrokontrolerowy bez oscylatora nie zatrybi. A tu osc1 i osc2 wiszą
  • Poziom 12  
    Dzięki wszystkim za odpowiedzi, mam nadzieję, że niedługo ten projekt znajdzie się w innym dziale DIY :)
  • Pomocny post
    Poziom 10  
    Praktycznie wszystkie AVRy mają teraz wbudowany oscylator 1-8MHz.
  • Poziom 12  
    Czy do resetu mógłbym podczepić zamiast rezystora 4.6k rezystor 10k lub jakiś inny? Dzisiaj przyszedł mi zestaw rezystorów ale nie było w nim rezystorów 4.6k. W zestawie były oporniki:
    1K 1,5K 1,8K 2K 2,2K , 2,7K 3,3K 3,6K 9,1K 10K 13K 18K 20K 22K 24K 27K 30K 33K 39K 47K 51K 56K 62K 75K 82K

    czy któryś z tych rezystorów mógłbym dać do resetu zamiast tego rezystora 4,6k? Dzięki.
  • Pomocny post
    Poziom 25  
    Może być i 10k. Właściwie to i bez niego też się obejdziesz. Ja nie stosuje przy żadnej medze i wszystkie działają.
  • Poziom 12  
    Sprawa resetu wyjaśniona, przylutowałem rezystor 10k. Przy oznaczeniu kondensatorów 100n i 100nF to to samo, 100u i 100uF też? nano i u to jest jak coś w stylu kilo w kilogram. Zastosowanie 100 nano to jak 100 nano faradów to będzie coś w stylu kilo w kilogram? Jeśli jest kondensator przy, którym jeden prostokącik jest zamalowany a drugi nie i oznaczony plusem to kondensator spolaryzowany? Jak pójdę do sklepu elektronicznego to powiem, że poproszę kondensator spolaryzowany 100u(C2 w schemacie)? Dzięki za odpowiedzi.
  • Poziom 12  
    Czesc, czy układ ten mogę zasilic prądem 6V lub 4,5V lub jaki rezystor zastosowac dla 6V aby obniżyc na 5V? Bo 5V nie mam w zasilaczu stabilizowanym. Zrobiłem głupi błąd bo zrobiłem odbicie lustrzane przed odbiciem ścieżek na laminacie. I prawo mikrokontrolera idzie na lewo a lewo na prawo... :/ musiałbym od strony ścieżek przylutowac podstawkę a tą odlutowac(i to największy problem)....
  • Pomocny post
    Poziom 18  
    4,5v i spokojnie będzie hulać. A co do drugiego problemu to... no cóż... innego wyjścia jak postawienie podstawki od strony druku lub zrobienie nowej płytki nie ma
  • Poziom 12  
    Właśnie przelutowałem podstawkę, teraz się zobaczy czy zadziała czy nie, mam nadzieję, że nic nie wystrzeli xD
  • Pomocny post
    Poziom 22  
    Superdomek111 napisał:
    Czesc, czy układ ten mogę zasilic prądem 6V lub 4,5V lub jaki rezystor zastosowac dla 6V aby obniżyc na 5V? Bo 5V nie mam w zasilaczu stabilizowanym. Zrobiłem głupi błąd bo zrobiłem odbicie lustrzane przed odbiciem ścieżek na laminacie. I prawo mikrokontrolera idzie na lewo a lewo na prawo... :/ musiałbym od strony ścieżek przylutowac podstawkę a tą odlutowac(i to największy problem)....


    Po pierwsze odpowiedź na swój problem masz pare postów wyżej. Nie obniżysz napięcia rezystorem bo układ nie pobiera stałego prądu. A do odlutowywania są takie specjalne taśmy które wciągają cynę i tzw "odsysacz cyny". Kupisz to za grosze.
  • Poziom 12  
    Podłączam do układu zasilanie, włączają się diody ale nic nie mryga... Poniżej kod:
    Code:
    #define F_CPU 1000000L
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void){

    DDRD=0xFF;

    while(1){

    PORTD=0x80; //10000000
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x40; //01000000
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x20; //00100000
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x10; //000100000
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x8;  //00001000
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x4; //00000100
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x2; //00000010
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    PORTD=0x1; //00000001
    for(unsigned int i=0; i<33; i++)
    _delay_ms(10);

    } //koniec pętli while
    return 0;
    } //koniec funkcji main


    to jest chyba wina programu, co może byc nie tak? Czy to tak szybko miga, że nawet nie można zauważyc? Dzięki.

    lucas_mcs: chciałem się upewnic, od początku byłem przekonany, że zadaniem rezystora jest np. zmniejszenie prądu z 5V na 4V :)

    P.S. teraz zaczynam żałowac, że niektórych nie posłuchałem żeby dac w tym układzie gniazdo do programatora.
  • Pomocny post
    Poziom 22  
    Zadaniem rezeystora jest przede wszystkim dostosowanie sie do prawa ohma - R = u/i. Na rezystorze odkłada się napięcie proporcjonalne do płynącego prądu.

    Co do programu to przede wszystkim program testowy którym sprawdzisz ze wszystkie peryferia podłączone do uC działają. Jeśli tak to już wsyztko zależy od programu.
  • Poziom 12  
    Tzn. jak taki program miałby wyglądac?
  • Pomocny post
    Poziom 22  
    Kolego, troche przesadzadzasz, trzeba troche samemu ruszyć głową, nie mogę ci wszystkiego podawać na tacy

    Masz tylko diody więc jak zapalisz i zgasisz wszystkie i każdą z osobna to już wiesz ze masz kontrolę i część sprzętowa działa.
  • Poziom 12  
    Przeprogramowałem mikrokontroler:

    Code:
    #define F_CPU 1000000L
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void){

    DDRD=0xFF;

    while(1){

    PORTD=0x80; //10000000
    _delay_ms(1000);

    } //koniec pętli while
    return 0;
    } //koniec funkcji main


    Pomyliłem się i przez przypadek dałem 3V na układ, można tak uszkodzic coś? Później się zorientowałem, że źle zasilałem układ i zmieniłem na 4,5V to znowu się wszystkie diody włączyły, coś nie tak z programem chyba jest bo tak to wcale by się nie włączyły, problem polega na tym, że na każdym wyprowadzeniu mikrokontrolera ustawionym jako wyjście pojawia się masa, "minus zasilania"(czy jak to się tam nazywa) a ma się pokazac tylko na jednym wyprowadzeniu. Proszę o pomoc. Częsc sprzętowa na 99% jest dobra, nie raz miernikiem sprawdzałem każdą ścieżkę itp..

    lucas_mcs: nie prosiłem wcale o gotowy program, po prostu tak mi się napisało, troszkę się zdenerwowałem na tego atmega8 :))

    w końcu postanowiłem zobaczyc czy te diody nadal się będą świeciły jak dam zwykły programik, którego zadaniem jest nic nie robienie:
    Code:
    #define F_CPU 1000000L
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void){

    while(1){

    } //koniec pętli while
    return 0;
    } //koniec funkcji main
    i diody nie świeciły :D teraz jestem prawie pewien, że coś nie tak z programem, proszę o pomoc.
  • Pomocny post
    Poziom 18  
    W tym układzie sterujesz katodami diód. Jako że nie znam się ani na c dla mikrokontrolerów (bo piszę w basicu) oraz używam piców to nie wiem czy to będzie dobre. Jednak sądzę, że program tak prosty, że nie schrzaniłem niczego:
    Code:
    #define F_CPU 1000000L
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void){

    DDRD=0xFF;
    PORTD=0x80; //10000000

    while(1);

    return 0;
    }

    Powinny zapalić się wszystkie diody z wyjątkiem jednej. Szkoda, że to nie pic to bym mógł ci bez problemu machnąć program, bo dość długo w nim piszę. Jeżeli ten program nie będzie działać to nie wiem co jest. Hardware jest tak prosty, że raczej nie ma co tam spieprzyć. Co do softu - nie mogę się wypowiedzieć, bo nie znam w ogóle avrków i ich właściwości
  • Pomocny post
    Poziom 22  
    Cytat:
    W tym układzie sterujesz katodami diód


    Superdomek111, zauważ na swoim schemacie ze diody masz z jednej strony podłączone do 5v, więc na pinie portu mikrokontrolera musisz mieć 0v (GND) żeby na diodzie był spadek napięcia - różnica potencjałów.
    Tak więc 0 zapala diodę, 1 gasi.

    Teraz to wydaje się oczywiste, nie każdy kto zaczyna z uC widzi takie drobiazgi:)

    mikmas : oczywiście twój program jest ok :)
  • Poziom 12  
    Zaprogramowałem mikrokontroler programem mikmasa i było to samo, wszyściutkie diody się świeciły... mikrokontroler jest zepsuty czy co? Zasilam 5V.

    No ja już sam nic nie rozumiem, przy takim programie żadna dioda się nie włącza(tak ma byc):

    Code:
    #define F_CPU 1000000L
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void){

    while(1);

    return 0;
    }


    a przy takim programie jaki wstawił mikmas wszystkie się świecą, co może byc nie tak?
  • Pomocny post
    Poziom 22  
    Skoro pisałeś że przy czystym procku nic nie świeci to uC powinien być ok. Napisz taki program który ustawia PORTD na FF, potem 00, potem 01, 02, 03..0A, 10, 11,... FF, po każdym przełączeniu niech będize 500ms odstępu. Sprawdzisz sobie wszystkie kombinacje :)
  • Poziom 12  
    Sorki, mój błąd, źle zaprogramowałem mikrokontroler, teraz działa jak trzeba, dla zainteresowanych tym projektem zamieszczam program dla tego mikrokontrolera:

    Code:
    #define F_CPU 1000000L
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void){

    DDRD=0xFF;

    while(1){

    PORTD=0x0;
    _delay_ms(1000);
    PORTD=0xFF;
    _delay_ms(1000);

    PORTD=0x7F;
    _delay_ms(1000);
    PORTD=0xBF;
    _delay_ms(1000);
    PORTD=0xDF;
    _delay_ms(1000);
    PORTD=0xEF;
    _delay_ms(1000);
    PORTD=0xF7;
    _delay_ms(1000);
    PORTD=0xFB;
    _delay_ms(1000);
    PORTD=0xFD;
    _delay_ms(1000);
    PORTD=0xFE;
    _delay_ms(1000);

    PORTD=0x3F;
    _delay_ms(1000);
    PORTD=0x9F;
    _delay_ms(1000);
    PORTD=0xCF;
    _delay_ms(1000);
    PORTD=0xE7;
    _delay_ms(1000);
    PORTD=0xF3;
    _delay_ms(1000);
    PORTD=0xF9;
    _delay_ms(1000);
    PORTD=0xFC;
    _delay_ms(1000);

    PORTD=0x7E;
    _delay_ms(1000);
    PORTD=0x3C;
    _delay_ms(1000);
    PORTD=0x18;
    _delay_ms(1000);
    PORTD=0x0;
    _delay_ms(1000);

    PORTD=0xE7;
    _delay_ms(1000);

    }
    return 0;
    }


    Naprawdę wielkie dzięki, że mi pomogliście w dokończeniu tego układu. Nawet nie wiecie jak się cieszyłem, że te kilka diod się włącza i wyłącza po kolei :)) żeby nie kończyc tak prędko tego tematu to mam pytanie, jaki odstęp w ms powinienem zastosowac aby po przyczepieniu do koła i odpowiednim "rozpędzeniu" go pokazał się napis? Dzięki wielkie.