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.

[ATmega128/ATmega8][BASCOM] Stacja meteorologiczna

chander 19 Paź 2009 15:47 9335 25
  • #1 19 Paź 2009 15:47
    chander
    Poziom 9  

    Witam,
    Jestem w fazie projektowania prostej stacji meteo. Projekt podzieliłem sobie na 2 części. Pierwsza część wykonuje pomiary (temperatura otoczenia, prędkość i kierunek wiatru) i zapisuje je na karcie SDC/MMC. Druga część wyświetla pomiary na wyświetlaczu LCD i umożliwia komunikację z PC przez RS-232. Obie część będą znajdowały się w odległości ok. 10 m od siebie.

    Projekt składa się:
    czujnik liniowy halla - [CH-CS3503]
    czujnik unipolarny halla - [CH-CS3144E]
    czujnik temperatury - [DS18B20+]
    ATmega128
    ATmega8

    Mikrokontrolery są połączone przez interfejs SPI. ATmega128 pracuję w trybie MASTER, ATmega8 w trybie SLAVE. Dodatkowo do interfejsu SPI podłączona jest pamięć flash (karta SDC/MMC).

    Jest to w sumie mój pierwszy schemat i prosił bym Was drodzy użytkownicy o rzucenie okiem. Zalarzy mi głównie na sprawdzeniu poprawności podłączenia czujników, czy gdzieś nie potrzeba rezystora itp.

    [ATmega128/ATmega8][BASCOM] Stacja meteorologiczna]

    0 25
  • #3 19 Paź 2009 16:54
    arnoldziq
    Moderator Programowanie

    Na 100% będą problemy z SPI na 10m .... :(

    0
  • #4 19 Paź 2009 17:04
    mirekk36
    Poziom 42  

    Korzystasz z wejść ADC0-ADC3 w mega128 ale już zasilanie AVCC to "amba" zjadła ? ;) .... eee podobnie zresztą w mega8 (chociaż tam by ci przyfarciło bo przypadkiem by to na tym procku - zadziałało - ale po co jakieś oszczędności na podłączaniu zasilania do wszystkich nóżek do tego przeznaczonych??? - to się zemści kiedyś przykro)

    Poza tym skoro już korzystasz z ADC to wypadałoby dodać kondensator 100nF pomiędzy AVREF a GND.

    0
  • #5 19 Paź 2009 17:20
    chander
    Poziom 9  

    Hm.. Jak 10 metrów na SPI nie da rady, to cały projekt do przebudowy:(
    Chciałem, żeby stacja mogła także działaś samodzielnie bez modułu z LCD. A może połączyć 2 mikrokontrolery przez RS-232? Jest uważacie?

    0
  • #6 19 Paź 2009 17:45
    mirekk36
    Poziom 42  

    RS232 zadziała najspokojniej w świecie na 10m

    0
  • #7 19 Paź 2009 18:05
    chander
    Poziom 9  

    W takim razie SPI wykorzystam tylko dla pamięci SDC/MMC. Mikrokontrolery połączę przez interfejs RS-232. Gdy zajdzie konieczność pobrania danych na PC-ta, wyjmę wtyczkę z modułu z LCD i podłącze do komputera. Trochę nie eleganckie jest te rozwiązanie, ale innego wyjścia nie widzę. Przed wszystkim zależy mi, aby urządzenie zbierające pomiary było samodzielne i mogło pracować bez modułu z LCD czy połączenia z PC-tem.
    Poprawie schemat i wrzucę jeszcze raz do wglądu.

    0
  • #8 19 Paź 2009 18:21
    mirekk36
    Poziom 42  

    Zamiast Atmega8 możesz wziąć ATmega88 - wtedy można sobie zdaje się wygospodarować drugi sprzętowy UART. Atmega128 ma od razu 2 gotowe UART'y. A poza tym można sobie prościutko zrobić za pomocą MAX485 - magistralę RS485 zamiast RS232 no i wtedy możesz się bez problemu kontaktować z dowolnym z tych 2 procków za pomocą PC'ta. Trzeba tylko sobie ustalić który będzie Masterem.

    0
  • #9 19 Paź 2009 19:03
    chander
    Poziom 9  

    mirekk36 napisał:
    Zamiast Atmega8 możesz wziąć ATmega88 - wtedy można sobie zdaje się wygospodarować drugi sprzętowy UART. Atmega128 ma od razu 2 gotowe UART'y. A poza tym można sobie prościutko zrobić za pomocą MAX485 - magistralę RS485 zamiast RS232 no i wtedy możesz się bez problemu kontaktować z dowolnym z tych 2 procków za pomocą PC'ta. Trzeba tylko sobie ustalić który będzie Masterem.


    Czyli jak mam 2 x UART na ATmega128, to mogę zrobić 2 x RS-232. Jedno do modułu z LCD, a drugie do PC-ta. Druga opcja to zrobić komunikację przez RS-485.
    Hm..Trochę poczytałem na forum i myślę, że wersja z 2x RS-232 będzie prostsza do zaprogramowania.
    A i jeszcze jedna rzecz. W ATmega8 mam zewnętrzny kwarc 8MHz. Czy w ATmeg128 muszę też go zastosować dla poprawności transmisji?

    0
  • #10 19 Paź 2009 19:31
    mirekk36
    Poziom 42  

    chander napisał:

    A i jeszcze jedna rzecz. W ATmega8 mam zewnętrzny kwarc 8MHz. Czy w ATmeg128 muszę też go zastosować dla poprawności transmisji?


    ja nie wiem w ogóle po co ci ten kwarc w Atmega8 - skoro ona ma tylko obsługiwać transmisję RS232 i LCD + jakieś jeszcze tam drobiazgi. Noo - chyba, że chcesz koniecznie jakieś wyższe prędkości transmisji RS232 np 115200bps ale wtedy lepiej by było zastosować jakiś kwarc "przyjazny dla RS232" jeśli już.

    Tymczasem jeśli chodzi o wymianę niewielkiej ilości danych to prędkość 9600 najspokojniej w świecie można uzyskać przy wewn. oscylatorze 8MHz. Więc zastanów się nad tym , że tak powiem "okwarcowaniem procków" ;)

    oczywiście jak się uprzesz w jakimś celu na ten kwarc 8MHz to w niczym nie przeszkadza aby inny procek był bez kwarca - w czym to miałoby zaszkodzić?

    0
  • #11 19 Paź 2009 19:59
    chander
    Poziom 9  

    Na szybkości transmisji mi bardzo nie zależy, więc w sumie bez kwarców się mogę obejść.
    Ten schemat jest w ogóle zlepkiem kliku schematów zamieszczonych w sieci. Ja go tylko poskładałem do własnych celów, stąd błędy czy dziwne rozwiązania :)
    Wprowadzę zmiany, poprawie wymienione przez Was błędy i zamieszczę schemat do wglądu.

    0
  • Pomocny post
    #12 19 Paź 2009 20:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    Po pierwsze ten wewnetrzny to nie kwarc tylko generator RC. Proponowalbym ci jednak jesli zamierzasz wykorzystac rs232 dac kwarc do procesora. Twoja stacja bedzie narazona na skrajne temperatury, a wtedy wewnetrzny RC niezle plywa. No i pytanie zasadnicze - po co ci az ATMega128, BASCOM jest az tak pamieciozerny? No i po co ci dwa procesory? Prosciej dac jeden i RS485, raczej nie rs232 bo ten tez ma ograniczenie spore co do dlugosci kabla. Chyba, ze satysfakcjonuja cie bardzo male predkosci. Jesli je musisz laczyc to po SPI tez pojdzie, tyle, ze potrzebujesz z obu stron nadajnik/odbiornik linii. No i generalnie potrzebujesz dobre zabezpieczenia ESD, bo ci z tych kabli beda pioruny lataly.

    0
  • #13 19 Paź 2009 21:36
    chander
    Poziom 9  

    tmf napisał:
    Po pierwsze ten wewnetrzny to nie kwarc tylko generator RC. Proponowalbym ci jednak jesli zamierzasz wykorzystac rs232 dac kwarc do procesora. Twoja stacja bedzie narazona na skrajne temperatury, a wtedy wewnetrzny RC niezle plywa. No i pytanie zasadnicze - po co ci az ATMega128, BASCOM jest az tak pamieciozerny? No i po co ci dwa procesory? Prosciej dac jeden i RS485, raczej nie rs232 bo ten tez ma ograniczenie spore co do dlugosci kabla. Chyba, ze satysfakcjonuja cie bardzo male predkosci. Jesli je musisz laczyc to po SPI tez pojdzie, tyle, ze potrzebujesz z obu stron nadajnik/odbiornik linii. No i generalnie potrzebujesz dobre zabezpieczenia ESD, bo ci z tych kabli beda pioruny lataly.


    Potrzebna mi ATmega128 do obsługi kart SDC/MMC.
    Chce użyć 2 uC po to, aby urządzenie mogło pracować (dokonywać i zapisywać pomiary) samodzielnie. A jeśli zajdzie potrzeba lub chęć wyświetlenia 'wyników' na LCD to moduł z LCD ma to umożliwić. Analogicznie jest z komunikacją z PC-tem. Podłączam się pod urządzenie w celu pobrania pomiarów (raz na jakiś czas) lub na stale i w sofcie który mam zamiar napisać można będzie monitorować bieżące parametry pogodowe i przeglądać statystyki.
    PS. Taki jest plan;)

    0
  • #14 19 Paź 2009 21:59
    tmf
    Moderator Mikrokontrolery Projektowanie

    A dlaczego uwazasz, ze jeden procesor nie umozliwi samodzielnej pracy urzadzenia? Niepotrzebnie komplikujesz uklad, a nie obraz sie, sadzac po tym o co pytasz ta niepotrzebna komplikacja spowoduje, ze nigdy go nie uruchomisz.

    0
  • #15 19 Paź 2009 22:18
    chander
    Poziom 9  

    Nie obrażam się :)
    Dlaczego założyłem, że projekt będzie 'lepszy' gdy zrealizuję go 2 uC?
    Więc, darmowa wersja BASCOMA AVR umożliwia skompilowanie kodu o maksymalnej wielkości 4KB. Pomyślałem sobie, że podzielę cały program na 2 części, żeby nie trzeba było crackować środowiska;) Sam kod obsługi kart SDC/MMC zajmuję ok. 4KB i umieścił bym go w 1 uC. Drugi uC służył by jedynie do przeliczania danych z sensorów do wartości odczytywanych dla człowieka.
    Sam się już zastanawiam, czy może lepiej zmienić język na C, czy może pozbyć się jednego uC...

    0
  • #16 19 Paź 2009 22:23
    mirekk36
    Poziom 42  

    tak z ciekawości - skoro dysponujesz tylko Bascomem który kompiluje do 4kb kodu - to po jaką choineczkę ci taka armata jak ATmega128??? ;) szok

    rzeczywiście, jeśli znasz C albo i tak zamierzasz się go uczyć - to może warto właśnie o nim pomyśleć ;) pozbędziesz się przynajmniej ograniczeń co do ilości kodu, sam kod będzie o wiele chudszy - a w efekcie końcowym cały projekt zrobisz na jakimś ATmega8/88 lub ATmega168 - w porywach nawet jakaś jeszcze większa mega - np ATmega32

    0
  • #17 19 Paź 2009 22:33
    chander
    Poziom 9  

    mirekk36 napisał:
    tak z ciekawości - skoro dysponujesz tylko Bascomem który kompiluje do 4kb kodu - to po jaką choineczkę ci taka armata jak ATmega128??? ;) szok

    rzeczywiście, jeśli znasz C albo i tak zamierzasz się go uczyć - to może warto właśnie o nim pomyśleć ;) pozbędziesz się przynajmniej ograniczeń co do ilości kodu, sam kod będzie o wiele chudszy - a w efekcie końcowym cały projekt zrobisz na jakimś ATmega8/88 lub ATmega168 - w porywach nawet jakaś jeszcze większa mega - np ATmega32


    Koledzy pisałem już kilka razy. ATmega128 jest potrzebna do obsługi karty SDC/MMC :)
    Innen uC w sensie 'uboższe' mają za mało pamięci SRAM, żeby wczytać cały klaster 512bitów z kary pamięci.
    PS. Mogłem coś namieszać, ale sens ogólny jest zachowany :)
    Cytat z BASCOMOWEGO helpa:
    "(...)najlepszymi kontrolerami do tego celu są układy Mega103 lub Mega128. Inne układy posiadają zbyt mało wewnętrznej pamięci. Można także używać układu Mega8515 czy Mega162 z dołączoną pamięcią XRAM.
    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005"

    Nad językiem C się zastanawiam. Znam C# i Jave, co prawda obiektowe, ale składnia podstawowych instrukcji bardzo podobna

    0
  • Pomocny post
    #18 19 Paź 2009 23:53
    mirekk36
    Poziom 42  

    chander napisał:
    Nad językiem C się zastanawiam. Znam C# i Jave, co prawda obiektowe, ale składnia podstawowych instrukcji bardzo podobna


    dokładnie - składnia i zasady działania nie będą w takim razie dla ciebie problemem ;) .... jak musiałem się tego uczyć od początku na mikroklocki.... bo na PCtach programowałem tylko w Delphi/Pascalu - a teraz? ;) .... teraz zaczynam już myśleć w C także na PCtach

    ..... a pisząc w C będziesz miał tę dodatkową zaletę, że bardzij i dogłębniej poznasz procki - to się bardzo przydaje - więc osobiście polecam naukę np AVR GCC ;)

    0
  • #19 20 Paź 2009 12:35
    tmf
    Moderator Mikrokontrolery Projektowanie

    Wystarczajaca ilosc SRAM ma juz ATMega16 (1kB), czyli jeden sektor + dodatki. Chyba, ze implementacja SD w Bascomie jest tak skopana, ze wymaga wiecej, wtedy ATMega32 (2kB)
    A moze zrezygnowac ze struktury FAT i pisac po sektorach, wtedy nie potrzebujesz bufora SRAM. Albo jeszcze inaczej - spreparowac karte SD z FAT i nagranym jednym ogromniastym plikiem zajmujacym cala karte. Wtedy tez piszesz po sektorach, bez koniecznosci posiadania bufora.

    0
  • #20 20 Paź 2009 13:05
    chander
    Poziom 9  

    Myślę, że wziąłem się za projekt ze złej strony. Na początku zacznę od mniej skomplikowanych operacji czyli pobraniu danych z sensorów, przetworzeniu ich i wyświetleniu na LCD. Jak uporam się z tą częścią projektu, to wezmę się za zewnętrzną pamięć flash czy komunikacja 2 x uC.
    Nie ukrywając, jestem w temacie 'świeży', więc zacznę moją przygodę schodkowo :)
    Jeśli chodzi o język, to zacznę pisać w BASCOM-ie, ale równocześnie pobawię się w C. Prawdopodobnie będzie tak, że w BASCOM-ie nie da rady zrobić obsługi SDC/MMC, ze względu na ograniczenie wersji freeware, dlatego istnieje szansa na ewolucję softu na język wyższego poziomu, a wtedy wiedza i kod napisany w C na pewno się przyda :)

    0
  • #22 20 Paź 2009 13:38
    wader_669
    Poziom 28  

    co do avr-dos:


    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005 napisał:

    Wymagania:

    · Sprzęt: zobacz notę aplikacyjną AN 123 (http://www.mcselec.com/an_123.htm).
    · Pamięć kodu: około 4KB (2K słów).
    · Pamięć SRAM: 561 bajtów na informacje o systemie plików oraz bufor katalogu plików. 517 bajtów gdy FAT jest obsługiwany przez własny bufor (dla zwiększenia szybkości), inaczej FAT jest obsługiwany przez bufor katalogu plików.
    · 534 bajtów dla każdego uchwytu pliku.


    Jak nie masz zcrakowanie lub kupionej wersji bascom to nie ma sensu wogule tego projektu zaczynac w tym jezyku. Miejsca ci na 100% nie starczy
    Mozesz tez zrobic oblusge kart sd/mmc na atmega32 w fata. Jak nie bedziesz mial ograniczen od strony kompilatora, to nie bedzie mial problemu sie zmiescic w tym jednym procku.

    Co do jezyka napewno tez polecam c, niestety ja umiem tylko c pod kompa ale staram sie przestawic.

    0
  • #23 20 Paź 2009 14:16
    chander
    Poziom 9  

    Freddy napisał:
    chander :arrow: zaglądnij na opisy stacji, które podałem w poście powyżej. Tam naprawdę jest to zrealizowane bardzo prosto, a transmisja między modułami jest bezprzewodowa.


    Zajrzałem, zarejestrowałem się, pobrałem pliki. W załącznikach do tamtego tematu nie ma schematów. W sumie to nie chce kopiować całego rozwiązania bo nic z tego nie zrozumiem :( Zamówię sobie czujniki, podłącze je pod ATmega8, ewentualnie połączę z PC-tem przez RS-232.
    Jak to już zrealizuję to pomyślę o kartach SD/MMC, chodzi mi po głowię także po głowię AVT1443. Wtedy wpiął bym sobie stację pomiarową do sieci LAN. Zewnętrzna pamięć była by wtedy nie potrzebna, bo pomiary można by było wysyłać sobie na pocztę lub ftp.
    Tak czy inaczej czas pokaże czy zostanę na ATmeg8+sesnsory+RS-232+ BASCOM, czy może jakiś potężniejszy uC+sensory+LAN+pamięć SDC/MMC i oczywiście całość już napisana w C

    0
  • Pomocny post
    #24 20 Paź 2009 14:38
    Freddy
    Poziom 43  

    Są w innym topicu, ale masz załączam ostatni soft i hardware.
    Poza tym nie musisz kopiować całości, ale poszczególne rozwiązania.

    0
  • #25 20 Paź 2009 14:42
    chander
    Poziom 9  

    Freddy napisał:
    Są w innym topicu, ale masz załączam ostatni soft i hardware.
    Poza tym nie musisz kopiować całości, ale poszczególne rozwiązania.


    Dzięki Freddy, wieczorem przejrzę te pliki :)

    0
  • #26 31 Paź 2009 16:07
    chander
    Poziom 9  

    Witam,

    Zaprojektowałem prototyp mojej stacji meteo w oparciu o dokumentację techniczną zastosowanych elementów:

    - ATmega8
    - MPX4115A
    - DS18B20
    - TLE4905G
    - SS49

    Komunikacja przez RS-232, PC zleca wykonanie pomiaru. Jako, że to prototyp, układ będzie zasilany z programatora USB

    Schemat:
    [ATmega128/ATmega8][BASCOM] Stacja meteorologiczna

    Prosił bym forumowiczów o sprawdzenie poprawności schematu.
    Dziękuję

    0