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.

[Atmega16][C]dwupunktowy termometr ds18b20 ,definicja pliku ds18b20.h

mirek1968 21 Maj 2012 08:12 11810 40
  • #31 21 Maj 2012 08:12
    Szumlus
    Poziom 17  

    Niestety opcja "Dodaj obrazek" nie chciała u mnie zadziałać dlatego obrazek w postaci załącznika.
    To mój schemat niech kolega sobie porówna bo tu nie ma co nie działać za bardzo z punktu widzenia podłączeń.

    Ewentualnie jeśli Ci to nie pomoże, zgodnie z prośbą przedmówcy, podeślij swój schemat.

  • #32 21 Maj 2012 11:44
    baracuda2
    Poziom 13  

    Procek poza temperaturą, pokazuje zegarek, zlicza impulsy z zewnętrznego źródła (prędkość wiatru), całość sterowana podczerwienią kodowanie rc5. Porównując schemat z zamieszczonym przez Szumulusa nie widzę zbytnich różnic w podłączeniu. Różnice w odczycie temperatur zauważyłem tylko na portach A. Na portach od PA1 jak podgrzeje czujnik temperatura maleje , np jak jest 42 stopnie(normalnie 21) temperatura spada np do 30.


    Schemat zamieszce dziś wieczorem

  • #33 21 Maj 2012 11:47
    dondu
    Moderator Mikrokontrolery Projektowanie

    baracuda2 napisał:
    Porównując schemat z zamieszczonym przez Szumulusa nie widzę zbytnich różnic w podłączeniu.

    Ponowię prośbę:
    dondu napisał:
    Pokaż schemat.

    do której kol. Szumlus się dołączył

    Szumlus napisał:
    ... zgodnie z prośbą przedmówcy, podeślij swój schemat.

    ... albo trać czas dalej.

  • #34 21 Maj 2012 18:18
    mirek1968
    Poziom 13  

    Szumlus udało mi się pozbyć migającego przelatującego kursora .Mam jeszcze pytanie czy twój projekt termometru w c wyświetla temperatury ujemne i jak zrobić poprawne wyświetlenie st C?

    Dodano po 12 [minuty]:

    Wysyłam mój wstępny projekt mojej przyszłej płytki w kicad.
    Proszę o ewentualne uwagi i poprawki.
    [Atmega16][C]dwupunktowy termometr ds18b20 ,definicja pliku ds18b20.h

  • #35 23 Maj 2012 08:29
    Szumlus
    Poziom 17  

    Schemat wygląda ok - poza jedną rzeczą, dzielnik do pomiaru napięcia +12V źle dobrany. Jeśli to by miało pracować w samochodzie to trzeba przyjąć napięcie maksymalne 15V . Teoretycznie nie powinno być więcej niż 14,4 jednak zapas nie zaszkodzi. Kiedyś robiłem pomiar napięcia aku dałem dzielnik z rezystorów 47k i 22k
    do tego dorzuć kondensator filtrujący 100nF na wejściu ADC.
    Układ powinien mierzyć i wyświetlać temperatury ujemne. Jednak nie sprawdziłem w praktyce :). Weź jakąś padlinę z zamrażarki i do niej daj ds'a powinno coś pokazać na minus.
    Znaczek st. C możesz wyszukać doświadczalnie. Zrób sobie zmienna unsigned char, potem inkrementuj ją i wyślij na LCD jako cyfrę i jako wartość znaku ASCII.
    W ten sposób dowiesz się jaką wartość liczbową posiada pożądany prze Ciebie znaczek st. C :) Masz tylko 256 kombinacji.

  • #36 27 Maj 2012 13:23
    mirek1968
    Poziom 13  

    Nadal nie radzę sobie z kwadracikiem przed stopniami C tzn z symbolem stopni celcjusza.
    Proszę fachowców o konkretny działający przykład w c.

  • #37 25 Lip 2012 23:48
    patomaniek
    Poziom 9  

    Poniżej zamieszczam przykładowy program wczytywania sześciu znaków do pamięci w tym "kwadracika" stopnia:)

    main.c

    Code:

       int Tu = 0x00;
       int C  = 0x01;
       int R1 = 0x02;
       int R2 = 0x03;
       int Z1 = 0x04;
       int Z2 = 0x05;

       char T1[6][8] = { {28 , 8 , 8 , 8 , 5 , 5 , 5 , 7},
                     {8 , 20 , 11 , 4 , 4 , 4 , 3 , 32},
                     {32 , 32 , 1 , 27 , 30 , 28 , 24 , 32},
                     {8 , 24 , 16 , 3 , 7 , 7 , 3 , 32},
                     {32 , 32 , 32 , 24 , 31 , 31 , 24 , 32},
                     {32 , 32 , 32 , 3 , 31 , 31 , 3 , 32} };
     
       uint8_t Adres[] = {0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78};
           
       for(int a=0; a<6; a++)
       {
          LCD_WriteCommand(Adres[a]);                                       
          for(int i=0;i<=7;i++) LCD_WriteData(T1[a][i]);                                                                             
           LCD_WriteCommand(0x80);
       }
             LCD_GoTo(0,0);
             LCD_WriteText("T:");

             LCD_WriteData(C);
             LCD_GoTo(11,0);
             LCD_WriteData(R1);
             LCD_WriteData(R2);


    Biblioteki obsługi wyświetlacza: http://radzio.dxp.pl/hd44780/

    Pozdrawiam

  • #38 13 Sie 2012 12:28
    mirek1968
    Poziom 13  

    Dzięki bardzo wszystkim za wszelkie pomysły i rady.
    Kwadracik stopnia Celsjusza już się wyświetla mi na LCD.
    Zrobiłem to tak:


    Kod: c
    Zaloguj się, aby zobaczyć kod


    unsigned char stopien=0xDF; //Nowa zmienna stopien
    LCD_LocateXY(14,0);
    LCD_SendChar(stopien); //Wywołanie zmiennej stopien
    LCD_DisplayString(PSTR("C"));

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #39 28 Wrz 2012 08:38
    Jarosław J
    Poziom 14  

    Próbuję skompilować przykład kolegi Szumlus zamieszczony trochę wcześniej w ATMEL STUDIO, jednak wywala mi błąd:


    variable 'CRCTable8' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    Czy wie ktoś o co może chodzić?

  • #41 03 Paź 2012 23:29
    mirek1968
    Poziom 13  

    Szumlus proszę Cię jeszcze o pomoc w sprawie tego termometru z dwoma czujnikami.Na Atmega16 działa wszystko ok,ale jak próbowałem wgrać na moją Atmegę8 to pokazuje mi cały czas temperaturę -45 stopni.Nie wiem w czym jest problem i co trzeba zmienić w Twoim programie aby zaadoptować go do Atmegi 8.
    proszę o pomoc i pozdrawiam :-)

  Szukaj w 5mln produktów