Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Attiny 26 - cos jakby woltomierz

felu 16 Mar 2006 18:42 2151 4
  • #1 16 Mar 2006 18:42
    felu
    Poziom 17  

    Witam!!!
    Chcialem zrobic cos w stylu woltomierza progowego (wskaznika wysterowania), znaczy wpuscic napiecie od 0 do 1V na wejscie przetwornika A/C (nie wiem ktore w tym procu) sprobkowac je na 1024 stany a nastepnie skwantowac tak aby wydzielic 16 progow. W skrocie :
    0 - 0,0043 V zapala sie * na wyswietlaczu
    0,0044 - 0,0086 zapalaja sie **
    0,0087 - 0,0125 zapala ***
    0,0126 - 0,0212 zapala ****
    i tak dalej az do 1V ktory zapali caly rzad LCD (w drugim rzedzie chce aby byl cyfrowo wyswietlany przedzial napiecia. (czyli cos w rodzaju 16 przedzialow i bargraf na gwiazdkach)

    Wybralem Atiny 26 bo jest latwo dostepny ma 10 bitowy przetwornik, ISP i 20 krotne wzmocnienie. Wszystko fajnie jak czytalem na poczatku dokumentacje wszystkich AVR :). Ale teraz ilka pytan:
    1 Aby sprobkowac 1V na 1024 stany chcialbym miec AREF = 1V Czy to mozliwe???
    2 Jakie napiecie podac na AVCC???
    3 Jak wykorzystac wzmocnienie 20 razy??? Chodzi o to ze rozdzielczosc (przy 10 bitach) mialbym ok 1mV dlatego chcialbym wykorzystac wzmocnienie dla niskich napiec (aby miec ok 4 bity na 1mV) natomiast powyzej 70 mV moze byc bez wzmocnienia.

    Jezeli ktos moze mi powiedziec jak sprzetowo dziala A/C po co tyle wejsc na przetwornik i ktore sa wzmacniane oraz programowo jak napisc w C program odczytujacy rejestr od A/C i wypluc na wyswietlacz 2*16 to bylbym wdzieczny.

    Aha gdzie w tym procku najlepiej podpiac wyswietlacz tak zeby mozna go bylo programowac po ISP i nie "stracic" nozki RESET??

    Pozdrawiam Felu.

    0 4
  • #2 17 Mar 2006 22:29
    cyberdar
    Poziom 31  

    Witam

    Teraz dopiero zorientowałem się o co chodzi.

    Ad.1.W nocie katalogowej na stronie 128 pisze, że minimalne napięcie referencyjne powinno wynosić 2V. Właściwie to nie problem bo napięcie wejściowe da się "pomnożyć" razy dwa przy pomocy wzmacniacza operacyjnego i właściwie uzyskamy to o co chodzi

    Ad.2. Na AVCC należy podać napięcie 5V poprzez dławik 10uH a za dławikiem dać kondensator 100nF (zobacz notę ATMEGA8 na stronie 200)

    Ad.3. Rozwiązanie tego problemu jest właściwie nie możliwe. Weź pod uwagę, że chcesz uzyskać 4 bity (kwanty) na 1mV czyli 4000 bitów na 1000mV a przetwornik ma ich zaledwie 1024. Jak pisałem można to rozwiązać poprzez uśrednianie zyskując w ten sposób 1 może 2 bity więcej ale trudno odpowiedzieć czy to wystarczy. Jeśli nie wystarczy to nie pozostaje nic innego jak zastosowanie zewnętrznego przetwornika o odpowiedniej rozdzielczości np. 15 lub 16 bitowej rozdzielczości.

    Wyświetlacz można podpiąć pod dowolne piny procesora, nawet na te, pod które masz podpięty programator. Będzie to jedynie powodowało zakłócenia podczas programowania a tak poza tym wszystko będzie w porządku.
    Zastanawiający jest fakt następujący: oczekujesz 16 progów (*) jednak podajesz nieco dziwne przedziały tychże napięć ? Czy to przypadek czy zamierzony efekt ? A może lepiej byłoby uzyskać taką charakterystykę na zewnętrznych elementach np. przy wykorzystaniu wzmacniacza operacyjnego. Sprecyzuj co faktycznie ma mierzyć ten "woltomierz".

    --
    pozdrawiam

    0
  • #3 18 Mar 2006 00:08
    elektryk
    Poziom 42  

    felu napisał:
    0 - 0,0043 V zapala sie * na wyswietlaczu
    0,0044 - 0,0086 zapalaja sie **
    0,0087 - 0,0125 zapala ***
    0,0126 - 0,0212 zapala ****
    Napisz jeszcze z jaką dokładnością mają być te progi, bo dokładność rzędu 1mV będzie cieżka do uzyskania.

    0
  • #4 30 Mar 2006 09:37
    felu
    Poziom 17  

    W zasadzie uklad juz dziala. Poradzilem sobie dzieki opisowi kogos kto robil cos podobnego na atmega8 (jest na elektrodzie opis wystarczy w szukaj wpisac Atmega+LCD+ADC). Niestety nie chce zewnetrznych scalakow, poniewaz chce to zamknac w pudelku od zapalek :) a konkretnie pod plytka wyswietlacza cos jak wyswietlacz panelowy AVT.
    Nowe pytania :) :

    1 Czy zadziala taki patent zwiekszenia rozdzielczosci?? Ustawiam przetwornik na pomiar ADC0-ADC1 x 20 (odpowiedni wpis do ADMUX) a jak sie przepelni (bedzie 1023) to ustawiam go od nowa tak zeby mierzyl tylko z ADC1. Na ADC0 dam zrodelko 1,2V.

    2 Jak odwrocic bity w bajcie :)?? Tak zeby to zrobic najsprawniej bez angazowania 8 nowych zmiennych. Cos probowalem ale nie dziala:

    void write_to_lcd(char x)
    {

    char zm=0xFF;

    zm = (((zm & 0x7F) | x) >> 7);
    zm = ((zm & 0xFD) | (x >> 5));
    zm = ((zm & 0xFB) | (x >> 3));
    zm = ((zm & 0xF7) | (x >> 1));
    zm = ((zm & 0xEF) | (x << 1));
    zm = ((zm & 0xDF) | (x << 3));
    zm = ((zm & 0xBF) | (x << 5));
    zm = ((zm & 0x7F) | (x << 7));

    SET_E; // ustaw na E stan wysoki
    LCD = ((LCD & 0xF0) | ((zm & 0xF0) >> 4 )); // zapis pierwszej połówki bajtu
    CLR_E; // opadające zbocze na E -> zapis do wyświetlacza
    SET_E; // ustaw na E stan wysoki
    LCD = ((LCD & 0xF0) | (zm & 0x0F)); // zapis drugiej połowki bajtu
    CLR_E; // opadające zbocze na E -> zapis do wyświetlacza
    waitms(1); // czekaj 1ms
    }

    Chodzi o to ze na PB0 mam teraz najmlodszy bit a nozka ta jest podlaczona do D7 (najstarszy bit) w wyswietlaczu (HD44780) i musze przekrosowac polaczenia na plytce a chcialbym tego uniknac. Wyswietlacz bedzie lutowany do plytki na goldpinach nie na kabelkach.

    Dzieki za zainteresowanie !!!

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo