spínač pro dlouhé časy

Zdravím,

začátkem bych chtěl podotknout že s programováním uC nemám žádné zkušenosti,přesto bych se rád v nejbližší době této dovednosti naučil.
Můj problém je takovýto:potřebuji navrhnout zapojení a naprogramovat AVRko(v assembleru)pro spínaní malého motorku v pravidelných,uživatelem nastavitelných intervalech(např 3x denně)a zobrazení těchto údajů(pravděpodobně aktuální čas a kdy a kolikrát motorek sepne)na 7 segmentovky.Dával bych přednost nějakému co nejjednoduššímu zpracování.
Za případné rady ohledně programu a návrhu obvodu předem velmi děkuji
Raziel

Nie som si isty, ci je to pre uplneho zaciatocnika.

potrebujes riesit nasledovne samostatne casti:

-ovladanie motorceka na zaklade casovej udalosti (z celeho najjednoduchsie)

-nacitanie RTC, najlepsie pouzit specializovany svab, napr PCF8583. (programovanie komunikacie I2C, da sa pouzit RTC i v samotnom procsore, ale potom musis riesit rozne stavy sleep rezimu, budenie cez prerusenie a hlavne minimalizaovat spotrebu - tiez schodna cesta)

-zalohovanie RTC, predpokladam, ze cas sa ma udrzat aj po vypadku Ucc (v celku jednoduche)

-obsluha displaya. Ak chces pouzit 7 segmentovky, a v zavislosti kolko ich bude, asi budes musiet riesit ich budenie cez multiplexovanie, alebo pomocou 74HC595 (progrmaovanie komunikacie SPI)

  • Vzhladom na mnozstvo udajov, ktore chces prezentovat (a je ich v celku dost) ti doporucujem display 2x16 znakov. Jednoducho sa ovlada, na 32 znakov ti staci 6-10pinov procesora. Cena nie je moc vysoka oproti uzitkovej hodnote a jednoduchosti programovania

  • obsluha klavesnice a rozhrania s obsluhou. Tato cast byva velmi osemetna, lebo si musis pripravit rutiny na editaciu hodnoty - aby to aj rozumne vyzeralo na tom display. Napr. ako opticky rozlisit, kedy obsluha vidi hodnotu cisla a kedy je v editacnom rezime (blikanie hodnoty), ako vystavat cele menu tak aby bolo pre obsluhu zrozumitelne a prehladne. Ci chces editovat hodnotu tak ze sa sipkou hore/dole bude iba menit hodnota, alebo chces nastavovat kazdu cislicu v cisle zvlast, alebo chces pouzit numericku klavesnicu, alebo sa bude zariadenie nastavovat cez PC a display bude sluzit iba na prezentaciu nameranych udajov. K jednocipaku sa da bez problemov pripojit i PC klavesnica. Ale to bez problemov rozumej ako ze to chce studium literatury, specifikacii a vzorovych programov ktore uz niekto niekde podobnu problematiku riesil a nie ze ju priletujes na tento a tento “drat” a ono to nejak samo ide.

-Archiv udajov, na 3 spinania za den by stacila aj interna EEPROM v procesore. Ak by si chcel v buducnosti robit archivy hustejsie, bude dobre si nastudovat obsluhu napr. 24C256 alebo AT45DB041. Ale to sa tyka pripadu, ak su archivy vacsie ako 2-4kB. Ako dlho chces archivovat, kedy sa maju udaje premazavat, atd.

  • vyroba vhodnej skrinky s displayom a klavesnickou.

Na nete existuje velmi vela ireseni,ktore by ti viac alebo menej vyhovovali ci uz na obsluhu klavesnice, displaya alebo RTC. Musis tomu ale venovat vela casu a studovat, studovat studovat.

To vsetko musis navrhnut a naprogramovat a ak si uuuuuplny zaciatocnik a venovat sa tomu mozes len po veceroch davat ti tak aj s navrhom vhodneho hw ak si velmi sikovny a zanieteny tak 4(to by si bol velmi velmi dobry) - 12 mesiacov v zavislosti od vytazenia inymi zaujmami.

Ak aj po tychto mojich reciach ta este nepresla chut, tak sa s vervou pusti do prace. Drzim ti palce. :slight_smile:

Děkuji mnohokrát za rozsáhlou odpověď,trochu mě vyděsila,a tak jsem se rozhodl trochu poupravit své očekávání co se výsledné konstrukce týká:
(pro upřesnění raději ještě celé znovu)

potřeboval bych napsat program(raději C ,případně asm)a navrhnout zapojení pro mikrokontrolér AVR jež by přes tranzistor(relé?)spínal menší motorek.Na vstupní port mikrokontroléru by bylo připojeno 5 tlačítek(indikace jejich sepnutí pomocí LED)a v závislosti na jejich stavu by se motorek sepnul vždy po určité době(ihned,po 6,8,12 či 24 hodinách)na několik málo vteřin.
Jsem spíše strojař než elektronik,proto se omlouvám je-li mé zadání špatně formulované,rád jej po připomínce upřesním.Programátor na AVR mám k dispozici,jde mi “pouze” o program kterým AVRko “nakrmím” a schema zapojení.
Kdo by byl ochoten pomoci, nechť mě prosím kontaktuje na ravien@email.cz
V případě dohody možná rozumná finanční odměna.

Tyto požadavky jsou o mnoho skromnější a určitě to zvádneš sám. Na to stačí vytvořit sestupný čítač, jehož počáteční hodnota odpovídá době do sepnutí motorku. Čítač vytvoříš z proměnné, která se bude např. každou sekundu dekrementovat. Až hodnota poklesne na nějakou stanovenou mez, motorek se sepne. Dojedli k nule, motorek se vypne a zastaví se dekrementace, nebo se do proměnné zadá nová hodnota, pokud se má spínání opakovat.
Sekundovou dekrementaci proměnné lze zajistit od některého z timerů. Stisknutím tlačítka se provede nastvení proměnné. AVR klině může běžet i na 32kHz a být zálohováno kondenzátorem pro případ výpadku napájení.
Nevím k jakému účelu to má být, ale takto jednoduché věci lze řešit pomocí hotových komponentů, automatizačních prostředků, časových relé apod.

O jaky jde motor/rele? (napajeni, prikon pri pouziti el. spinaciho prvku nebo parametry civky pri pouziti rele)
Nejake dalsi pozadavky na tlacitka/diody? (napr. restar odpoctu casu pri opetovnem stisku stejneho tlacitka, ma led svitit stale nebo jen pri stisku TL., nebo ma led aktivniho rezimu blikat…)
Budes to chtit casem nejak rozsirit? (pouziti vetsiho/lepe vybaveneho mcu, zatim by stacil nejaky tiny s 6ti IO, ale vzhledem k cene bysme stejne dali neco vetsiho, nejaky klon megy8 kolem 30Kc…).
Jak presny ma byt ten cas? Pokud ti nevadi ± par minut, staci interni RC, pro ± par vterin staci krystal, presneji uz RTC…

Nicmene jak pise technik - casovy rele by ti stacilo :wink: stoji par supu, cas si na nem nastavis a nemusis resit napajeni (pokud jde o 230V, ale urcite se daji sehnat i pro mensi napeti)