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

[Atmega8] - Sterownik temp, higiometr, RTC, 4x przekaźnik. - Doradźcie.

Matap 13 Maj 2014 16:30 3108 9
  • #1 13 Maj 2014 16:30
    Matap
    Poziom 10  

    Witam!
    Nie jestem jakoś genialnie zaawansowanym programistą. Ale mam dużo chęci :)
    Proszę o sprawdzenie czy części przeze mnie wybrane zdadzą swoją role.
    Założenie jest następujące:
    Chcę napisać sterownik (j.Bascom) wyświetlający realną godzinę, temperaturę, wilgotność powietrza, oraz sterowanie przekaźnikami
    1wszy - sterowanie wiatrakami 12V jeśli temperatura wyniesie daną wartość
    2gi - przekaźnik będzie załączany od-do ustawionej godziny w ciągu dnia.
    3ci- przekaźnik ma załączać pompkę wody która będzie pracować w ustawione dni tygodnia przez określony czas.
    4ty - tak samo jak pierwszy lecz z innym urządzeniem.

    Lista części.
    RTC - http://allegro.pl/modul-real-time-clock-rtc-ds1307-i4227462641.html
    Atmega8-microboard - http://allegro.pl/miniaturowy-modul-atmega8-microboard-m8-atmel-avr-i4204126985.html
    Modu karty sd - http://allegro.pl/modul-karty-sd-arduino-avr-pic-arm-diy-i4163718290.html
    LCD http://allegro.pl/lcd-16x2-1602-hd44780-niebieski-avr-arduino-pic-i4191981315.html
    DTH 11 - http://allegro.pl/dht11-termometr-higrometr-wilgotnosci-arduino-avr-i4191339669.html
    przetwornica 12V - http://allegro.pl/konwerter-przetwornik-przetwornica-adapter-230-12v-i4193847925.html
    4x przekaźniki - http://sklep.avt.pl/przekaznik-jqc3ff-005-1zs.html (Przekaźnik za 1.5zł będzie ok?)

    W internecie znalazłem napisane już dwa kody na które spróbuje złączyć i wzbogacić :
    Do czujnika DTH 11 - https://www.elektroda.pl/rtvforum/topic2246793.html
    Czas, zapis na karcie SD - https://www.elektroda.pl/rtvforum/viewtopic.php?p=10790575#10790575

    Dane konfiguracyjne będą odczytywane z karty SD (godziny zasileń przekaźnika 1, wartości itp.)
    Narysowałem w Paińcie na bardzo szybko schemat bardzo ogólny.
    Ilością połączeń w przypadku czujnika, lcd, RTC, gniazda SD.

    I teraz mam pytanie jak najlepiej napisać takie rzeczy jak zegar który będzie działał niezależnie od podłączenia urządzenia.
    Potrzebny jest RTC czy może wystarczy wykorzystać wewnętrzny oscylator(?)?
    Jeśli potrzeba RTC jak dobrze to napisać, jakiś link do artykułu, kod na wzór byłby bardzo pomocny.

    Czy części dobrane i połączenia na rysunku są OK?
    Czy przypuszczalny program zmieści się na Atmega8.
    Czy wgl wyrobie się i nie braknie mi wyjść z procesora?
    Lepiej dorzucić na takie coś? -> http://allegro.pl/zestaw-uruchomieniowy-atmega16-avr-i4161308588.html

    Proszę o pomoc to mój pierwszy taki "projekt".
    Będę mega wdzięczny za jakąkolwiek pomoc.

    0 9
  • CControls
  • #2 13 Maj 2014 19:08
    pier
    Poziom 23  

    Jeśli chodzi o zegar to szczerze nie wiem o co Ci chodzi.
    DS1307 którego Wybrałeś to jest właśnie RTC liczy on czas niezależnie od tego czy ma zasilanie czy nie, po to jest bateria obok niego.
    Zamiast przekaźników lepiej użyć Triaka i optotriaka.
    Po co ten potencjometr na schemacie?
    Nie lepiej użyć normalnego zasilacza tylko taki z gniazdem zapalniczki?
    Może być ciężko zmieścić to wszystko w atmega8 pod Bascomem.
    Jak chcesz ustawiać zegar?

    0
  • CControls
  • #3 13 Maj 2014 19:35
    Matap
    Poziom 10  

    A więc tak, cieszę się że odpisałeś.
    RTC już ogarnąłem, wstępnie.
    Ustawianie godziny wyglądało by tak że zapisał bym na karcie SD i wczytał stałą, od tego czasu zegar pracował by sam. potem zmiana stałej na karcie, uwzględniając wcześniej w kodzie warunek że jeżeli zmienna na karcie = 0 to nie wczytuj godziny z karty. Dobrze myślę?
    Te Gniazdo zapalniczki zapomniałem dopisać że chodzi o samą przetwornice całość kosztuje 6 zł i wydawało mi się najlepsza opcją., rozebrać i zaimportować sam środek.

    Jaki moduł z mikrokontrolerem byś polecał aby wszystko się zmieściło i dawało radę.
    Potencjometr zastosowałem z myślą o możliwości regulacji napięcia (wiatraki 12V ).

    Triaki i optotriaki, nigdy nie słyszałem.
    Mógłbyś dokładniej opisać jak tego użyć i jak podłączyc w tym moim przypadku?

    Edit. Takie cudo spełni oczekiwania?
    http://allegro.pl/modul-atmega32-atmel-avr-arduino-i4217387973.html?source=mlt

    To urządzenie nie jest dla mnie i staram się ograniczyć także koszty.
    20zł wychodzi za wszystkie przekaźniki z przesyłką.
    Wiadomo nie muszą być wieczne ale tak żeby nie padły od razu.
    Na pewno w takiej sytuacji lepiej przejść na triaki?

    0
  • #4 13 Maj 2014 20:38
    Tomq
    Poziom 38  

    Po pierwsze nie zamieszczaj linków do Allegro, bo niedługo wygasną i nikt potem nie skorzysta z Twojego tematu. Zamiast gniazda zapalniczki samochodowej możesz kupić coś pod hasłem "zasilacz 12Volt" ceny te same.

    A jak zasilisz "Microboard"? Najlepiej dokupić jeszcze stabilizator LM 7805 i umieścić go za 12V zasilaczem.


    Cytat:
    Potencjometr zastosowałem z myślą o możliwości regulacji napięcia (wiatraki 12V ).

    Skoro już robisz projekt z wykorzystaniem mikrokontrolera to i wiatraki mógłbyś sterować Atmegą (poprzez PWM).

    Cytat:

    maksymalny prąd styków 12A

    Wystarczające aż nadto. Przekaźnikiem najlepiej jednak sterować pośrednio np.poprzez tranzystor lub jakiś mocniejszy transoptor. Po prostu port mikrokontrolera może nie dostarczyć odpowiedniego prądu. Alternatywą dla takiego układu jest sam tranzystor lub wspomniany wyżej triak/optotriak.

    0
  • #5 13 Maj 2014 22:54
    pier
    Poziom 23  

    Jeśli zależy Ci na zredukowaniu kosztów to zamów wszystkie części w chinach, DX, Ebay.
    Ja bym wziął do tego Atmege16 lub malutki moduł z Atmega328 który łyka od razu zasilanie nawet 12V.
    Piszesz o wiatrakach ale jakie to wiatraki, jaki prąd pobierają?

    Tutaj Masz sposób podłączenia optotriaka z triakiem.
    [Atmega8] - Sterownik temp, higiometr, RTC, 4x przekaźnik. - Doradźcie.

    0
  • #6 14 Maj 2014 09:31
    GanzConrad
    Poziom 22  

    1. skoro zaczynasz, zastanów się nad C:
    http://mikrokontrolery.blogspot.com/
    na dole strony masz uzasadnienie wyboru języka, a zawartość bloga przeprowadzi Cię "za rączkę" przez większość zagadnień.
    2. Odradzam DHT11 - mam 2 sztuki, różnica wskazań pomiędzy nimi to aż 9%, dynamika wskazań nie nastraja optymistycznie, w wolnej chwili zamówię coś innego.
    3. Skoro układ ma być dla kogoś innego to musisz uwzględnić minimalną klawiaturę i funkcję do zmiany zegara (2 razy w roku zmiana czasu, do tego bateria może paść). Jak układ się komuś spodoba to zrobisz duplikat i będziesz jeździł 2 razy do roku i zmieniał nastawy.
    4. Zapis ustawień czasów itp zmieścisz w kilku bajtach, więc prościej będzie zapisać to w wewnętrznym EEPROM. Zaoszczędzisz kilka portów i sporo pamięci FLASH.
    5. nie kupuj wszystkiego na raz bo w trakcie zdobywania wiedzy i doświadczenia będziesz wielokrotnie zmieniał koncepcję.
    6. Nie sprawdzałem dokładnie, ale wydaje mi się, że nie starczy Ci portów przy Atmega8, zwłaszcza jak planujesz podłączyć równolegle LCD - pomyśl o ekspanderze portów po I2C, (PCF8574) trochę trudno znaleźć gotową bibliotekę, ale warto poszukać.
    7. Rozplanuj dokładnie co chcesz wyświetlać na LCD, jeśli datę i godzinę razem z innymi danymi to warto pomyśleć o 4x20. Biblioteka ta sama, a wygoda dużo większa.
    8. Jeśli LCD ma być w pokoju to warto pomyśleć o zmianie podświetlenia w zależności od poziomu oświetlenia (w nocy to będzie ostra lampa...) - ja robię to poprzez fototranzystor - do
    tego potrzebujesz "ogarnąć" ADC i PWM.
    9. Skoro robisz dla kogoś to warto byłoby wszystko wcisnąć w jakąś obudowę - wybierz ją na początku, aby wiedzieć ile masz miejsca (wybierając na końcu, może się okazać, żę będzie wielkości laptopa... ;-). Chyba że planujesz najpierw prototyp, potem projekt docelowy ;-)

    0
  • #7 14 Maj 2014 23:37
    Matap
    Poziom 10  

    Genialnie to opisałeś właśnie tego oczekiwałem. :)
    Sens w tym że jestem na dobrej drodze do pierwszego klienta ma dać znać w piątek.
    I tak jak BASCOMEM się już bawiłem tak C nie dotykałem nawet patykiem.
    Prototyp chętnie bym zrobił ale nie mam funduszy aby go wykonać.
    Zastanawiam się czy wgl dam rade.

    Wybrałem taki moduł z Atmegą32 :
    Teraz z pinami już raczej się pomieszczę.
    [Atmega8] - Sterownik temp, higiometr, RTC, 4x przekaźnik. - Doradźcie.

    Klawiatura ok, taka może być?
    [Atmega8] - Sterownik temp, higiometr, RTC, 4x przekaźnik. - Doradźcie.
    1. Zmienię koncepcję tylko nie za bardzo wiem jak zrobić takie menu.
    I wgl nie wiem za bardzo jak zabrać się za taki program?

    2. Czytałem ze pamięć EEPROM się zużywa?

    Podświetlenie myślę, że odbywać się będzie poprzez klawisz funkcyjny klawiatury. (klik - działa, klik -nie działa)
    Właśnie robię to dla kogoś, i boje się dysponować czyimiś pieniędzmi.
    niby 250zł za wszystko ale chciałbym coś jeszcze zarobić ;)

    3. Co z tym zegarem, jak to zrobić aby nie zresetował się bez zasilania a pracował dalej? Co kupić, lub jak wykonać zasilanie podtrzymujące?

    5. I jaki czujnik temperatury i wilgotności? Aby pomiar był w miarę dokładny.

    6. Najważniejsze, Czy w razie czego jakbym sobie kompletnie nie dał rady, jesteś w stanie mi pomóc?

    0
  • #8 15 Maj 2014 08:56
    GanzConrad
    Poziom 22  

    1. Jeśli chodzi konkretnie o menu, to w przykładach do książki kolegi z forum:
    http://helion.pl/ksiazki/jezyk-c-dla-mikrokon...tomasz-francuz,jcmikr.htm?nr=5314.&url=jcmikr
    (zakładka "szczegóły", > "przykłady na ftp")
    masz całe gotowe menu. Żeby je ogarnąć dobrze byłoby kupić książkę, będziesz miał cały kurs C.
    W Twoim konkretnym przypadku nie potrzebujesz całego menu jeśli chcesz zmieniać tylko czas i datę bo to możesz robić jedną funkcją:
    tworzysz zmienną np

    Kod: c
    Zaloguj się, aby zobaczyć kod


    i dowolnym przyciskiem zmieniasz tryb na "menu" wywołując funkcję zmiany czasu. Przy wyjściu z funkcji, po ustawieniu czasu wracasz do trybu "normal".

    2. 100 000 zapisów, a dokładnie kasowań. Myślę, że wystarczy do końca życia, zwłaszcza, że nie chodzi o zapis co sekundę, tylko zmianę ustawień raz na jakiś czas.

    3. Jest mnóstwo schematów na forum. Do wyboru masz sporo układów : PCF8583, DS1307, podtrzymujesz bateryjką, mini-akumulatorkiem lub goldcapem.

    4. Temperatury: DS18B20 - najpopularniejszy, kupa gotowych materiałów, wilgotności nie polecę nic konkretnego bo nie testowałem innych.

    6. Nie tylko ja, na forum są dużo lepsi, więc na pewno znajdziesz pomoc, ale nikt za Ciebie programu nie napisze.

    7. Osobiście uważam, że trochę porywasz się z motyką na słońce. Mam nadzieję, że "klient" jest w stanie poczekać z pół roku zanim ogarniesz wszystkie tematy, których jest więcej niż przypuszczasz. To nie jest najlepszy pomysł, aby uczyć się podstaw na projekcie nawet pseudo-komercyjnym. Jest spora różnica pomiędzy urządzeniami hobbystycznymi i komercyjnymi.

    0
  • #10 15 Maj 2014 20:03
    Matap
    Poziom 10  

    Dobra, wiem już co zrobie.
    Projekt zawieszę do zrobienia prototypu. Zaraz wakacje kupie książkę rozpoczynam naukę C, jestem apropo na mechatroniku wiec język na pewno mi się przyda.

    Mam w domu płytkę AndTechu EvB 4.1 jest tam zegar czasu rzeczywistego wyswietlacz, pomiar na razie zrobie tylko temperatury. Przekaźniki zasymuluje diodami. ;)

    Czujnik SHT11 jest dość drogi ale jego brat SHT10 z nieco większym błędem pomiarowym pewnie spisze się nieźle, jest o połowę tańszy ;)

    Na te chwile, wielkie dzięki za pomoc.

    Mam jeszcze jedno pytanie.
    Nie znalazłem przykładowego programu w C z tym czujnikiem.
    Jak ludzie zaczynają pisać program mając tylko Datasheet?
    Jak to się robi?
    http://courses.cs.tau.ac.il/embedded/docs/TelosB/SHT11.pdf

    Wnioskując, trzeba rozpocząć połączenie I2C i komunikować się za pomocą tych kodów, ale jak wysłać i jak zebrać te informacje?

    Reserved = 0000x
    Measure Temperature = 00011
    Measure Relative Humidity = 00101
    ReadStatusRegister = 00111
    WriteStatusRegister = 00110
    Reserved = 0101x<1110x
    Soft reset = 11110

    0