Atmel 328P-PU, úsporný provoz bez arduino desky

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
kybrex
Příspěvky: 276
Registrován: 26 črc 2007, 02:00
Kontaktovat uživatele:

Atmel 328P-PU, úsporný provoz bez arduino desky

#1 Příspěvek od kybrex »

Zdravím,

řeším, co si koupit a vybral jsem zatím tohle:
Deska Arduino UNO pro nahrávání programu a vývoj http://www.ebay.com/itm/201206991263

Atmel 328P-PU - s nahraným bootloaderem http://www.ebay.com/itm/171767064244

ale zkoumám, jestli to bude stačit na to, co potřebuji.
1. Úporný provoz na 8MHz a max 3.3V - je potřeba přehrát bootloader?
2. Lze případně přehrát bootloader s použitím vývojové desky Arduino UNO (neorigo)?
3. Půjde cpu provozovat bez arduino desky jen s krystalem?

Existuje nějaká úspornější varianta? Nepotřebuju velké výkony, ale hlavně výdrž na baterii. Mám v plánu udělat přenosný přijímač s dosahem po bytě, který bude rozsvicovat pár "status led". Napadlo mě akorát uspávat CPU a třeba 1x za minutu probudit a provést kontrolu a když se nic neděje, tak zase uspat.

Uživatelský avatar
dreamer
Příspěvky: 380
Registrován: 22 říj 2014, 02:00

#2 Příspěvek od dreamer »

3. Půjde cpu provozovat bez arduino desky jen s krystalem?
Ano půjde.

Poměrně obsáhlé pojednání o možnostech úsporného režimu:
http://arduino8.webnode.cz/news/lekce-2 ... t-arduino/

Uživatelský avatar
monterjirka
Příspěvky: 2761
Registrován: 14 čer 2003, 02:00
Bydliště: Blížejov

#3 Příspěvek od monterjirka »

Pokud jde o spotřebu, tak hodně "úsporný" umí být PIC, pokud jede s krystalem s malou frekvencí, a když nemusí nic dělat, nastavíš mu probuzení změnou stavu na portu a pošleš ho "spát" (SLEEP)
-----------

Arduino - pokud do desky dáš jiný procesor, musí má´ít nahraný boot loader právě proto, aby se uměl s nadřazeným PC "bavit jako Arduino".
Boot loader je součástí balíku SW, který je ke stažení.
A pokud to potřebuješ do "prázdného procesoru", dá se Arduino využít jako programátor.

Pak je ještě jedna "cesta" - Arduino mini se dá pořídit za 100 - 150Kč. Má jen nejnutnější prvky, neobsahuje převodník na USB, takže tam není kromě procesoru "nic co by mělo nějaký odběr". Programuje se přes externí převodník USB. A když je k dispozici PC s COM portem, dá se programovat i přes převodník RS232/TTL, ty se kdekomu válí doma, přes ty se připojovaly k PC starší mobily.

Uživatelský avatar
kybrex
Příspěvky: 276
Registrován: 26 črc 2007, 02:00
Kontaktovat uživatele:

#4 Příspěvek od kybrex »

Super díky za info. Přečetl jsem si článek o tom úsporném provozu a využití watchdog timeru, to je přesně to, co potřebuju. Napájení budu řešit z baterie + DC/DC měnič, abych netopil zbytečně nějakým stabilizátorem (pokud se to snížení napětí a odběru vyplatí vzhledem k účinnosti toho DC/DC měniče).

K provozní frekvenci jsem se konečně prolouskal v datasheetu k informaci, že to zřejmě jede při nižších frekvencích na interní oscilátor a lze to provozovat i na napětí 1.8V na skoro 4MHz (hraniční případ). :)
Díky za tip na ty články a za rady :)

Akorát jediný, co teď ještě řeším je, jestli to překousne ten bootloader, když tam nebude externí krystal, ale jen interní oscilátor a jiná pracovní frekvence. Jestli není tam nahrát jinej bootloader.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#5 Příspěvek od Atlan »

Ked poriadne prelezies soft pre arduino najdes,tam ze su aj dosky s internym oscilatorom, tak ze ked pouzijes bootloader pre taku dosku tak to pojde.

Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#6 Příspěvek od Honza_dy »

Nevím jestli to bude dostatečná odpověď, ale arduino UNO jsem si koupil jen jedno a používám ho na vývoj. Do samotných aplikací osazuji jen procesor s krystalem. Arduina si také dělám sám z čistých procesorů přes IDE. Používám k tomu usbAsp programátor (asi 90kč na ebay) zapojený do UNO desky přes ISP.
Ještě levnější varianta je koupit na ebay arduino mini. Dělá se v 3,3 i 5V verzi a vychází cca na 60,-Kč Je k němu nutno přikoupit převodník USB/TTL kvůli programování cca 30,-Kč

Uživatelský avatar
rob_brno
Příspěvky: 209
Registrován: 12 říj 2012, 02:00

#7 Příspěvek od rob_brno »

DC-DC bych se snažl vynechat, bude ti žrát i když poběží naprázdno skoro bez zátěže. Jakou máš baterku/napětí?

Pokud nepotřebuješ externí krystal, tak kup jen samotnou Atmegu(pro běh potřebuje kolem sebe minimul součástek) a můžeš ji programovat přes usbasp.
Pokud chceš krystal, tak kup Arduino mini na ebay kolem 47kč a programuj taky přes usbasp: http://www.ebay.com/itm/New-design-Pro- ... 2847wt_916
Ty LED budou indikovat(svítit) stav stabilně? Pokud ano "sežerou" baterku za pár týdnů. Pro delší dobu je lepší indikace na LCD, pokud je třeba podsvícení, tak je nutno jej zapínat jen při čtení indikace.

-Redukce k usbasp k 6-ti pin konektoru arduina(není nutné):http://www.ebay.com/itm/10-Pin-To-6-Pin ... 152wt_1136
-programátor usbasp k AVR: http://www.ebay.com/itm/New-Tiny-USBASP ... 171wt_1010

Pokud nebude program v AVR obsáhlý třeba se vleze do 4KB a pak m.žeš použít i levnější Atmegu 48: http://www.ebay.com/itm/400804290135?ru ... 2233wt_916

Další tipy pro úsporné použití ATmegy:
- http://www.gammon.com.au/forum/?id=11497
- http://mcu.cz/forum_m/printthread.php?tid=1021
- http://mcu.cz/forum_m/archive/index.php?thread-838.html
- http://mcu.cz/forum_m/printthread.php?tid=1021&page=2

Uživatelský avatar
kybrex
Příspěvky: 276
Registrován: 26 črc 2007, 02:00
Kontaktovat uživatele:

#8 Příspěvek od kybrex »

Díky za podrobné info.
Ten DC/DC nakonec asi vynechám a budu to napájet 3x AA a tady ukazovali, jak docílit jednoduše 3.3v a 5v http://www.instructables.com/id/Making- ... /?ALLSTEPS tak snad to bude fungovat. :)

Ty status led budou všechny vypnutý a jen třeba 1x za 5 minut se zapne cpu, zkontroluje stav po rádiovým spojení a v případě problému dojde k rozsvícení a zkukový signalizaci, jinak to bude zase vypnutý. Jde o měření teploty ve vzáleném objektu s alarmem.

Znamená to, že mi stačí jen tohle http://www.ebay.com/itm/USBASP-USBISP-A ... 2eceab6613 a nahraju do toho v pohodě i bootloader s tím, že bych snížil pracovní frekvenci děličkou třeba i na 1MHz?

A Arduino UNO umí to samé, jen že to je větší komfort při vývoji? Nebo je tam nějaký podstatnější rozdíl? Mám v tom docela hokej vyznat se k čemu je Arduino UNO, mini, ... je toho strašně moc.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#9 Příspěvek od ross4435897 »

deska arduino nano bez USB, stoji na Ebayi asi 60,- ...

Uživatelský avatar
rob_brno
Příspěvky: 209
Registrován: 12 říj 2012, 02:00

#10 Příspěvek od rob_brno »

V tom odkazu tam pletou stabilizaci zenerkou, to ale asi furt bude žrát nějaký proud. Pokud nebudeš potřebovat AD převodník a nemáš u toho žádný 3,3V čip, tak zapoj 2xAA baterie rovnou na napájení atmegy(bude šlapat už od 0,9V na článku). Teda nevím na jaké frekvenci to chceš používat a jaký výpočetní výkon potřebuješ.

Mělo by to tak být,měl by stačit jen ten převodník z usb, atmega má v sobě HW bootloader, který je ochoten načíst a spustit kod ze ser.rozhraní. PArametry a posloupnosti toho bootloader protokolu máš v DS ke každé atmega bude tam i kmitočet.
Já mám takhle ověřeno programování Ard.nano, kde mi to přes klasický Arduino bootloader nešlo.
Asi bych se vyprdl na nahrávání arduiního bootloadera(protože k tomu potřebuješ ten FTD čip co má na sobě většina arduin) a cpal bych to do atmegy vždy rovnou přes ISP

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#11 Příspěvek od lesana87 »

rob_brno píše:Pokud nebudeš potřebovat AD převodník
Proč by nemohl používat AD převodník?
rob_brno píše:atmega má v sobě HW bootloader, který je ochoten načíst a spustit kod ze ser.rozhraní. PArametry a posloupnosti toho bootloader protokolu máš v DS ke každé atmega.
To sis vymyslel, že ano? Nebo na které stránce to v tom datašítu ATmega328 vidíš? :)

Uživatelský avatar
rob_brno
Příspěvky: 209
Registrován: 12 říj 2012, 02:00

#12 Příspěvek od rob_brno »

lesana:
1. U té atmegy328 je reference jen 1,1V, tak tady opravdu není s ADC potíž ani na 1,8V, ale např. u Atmegy 2560(ard.mega) je i reference tuším 2,5V, která už těžko bude na 1,8V fungovat, ale i zde pořád 1,1V ref pojede. Beru zpět - u atmegy328 není s ADC potíž.

2. Jmenuje se to "In-System Programming by On-chip Boot Program" a popis je v DS jako kapitola 27. Boot Loader Support – Read-While-Write Self-Programming.

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#13 Příspěvek od lesana87 »

Nikde tam nevidím, že by měla z výroby v sobě bootloader, asi máš nějaký speciální datašít a speciální ATmegu328. :) Moje ATmega328 má jen podporu pro bootloader, ale žádný tam nahraný nemá. :(

Uživatelský avatar
kybrex
Příspěvky: 276
Registrován: 26 črc 2007, 02:00
Kontaktovat uživatele:

#14 Příspěvek od kybrex »

Použití:
Potřebuju 2 CPU s jednosměrnou rádiovou komunikací.
1. obvod napájený ze zásuvky a bude hlídat teplotu v místnosti a posílat stav rádiovým vysílačem.
-tlačítka
-display (přes sériovou linku pro ušetření pinů) http://www.ebay.com/itm/221439853893
-rádiový vysílač (a přijímač) http://www.ebay.com/itm/380717845396
-čidlo teploty http://www.ebay.com/itm/171533350540 (je to použitelné?)
-cpu http://www.ebay.com/itm/171767064244

2. malý obvod na baterie, který bude obsahovat nějaké pískátko a několik "status led" a rádiový přijímač s anténou. Bude se jednou za pár minut probouzet, přijme aktuální stav a buď se zase hned uspí, nebo rozsvítí status led a pustí pískání (alarm).

Dotaz na pracovní frekvence:

-hlavní obvod: tam bych rád výkon, aby to lítalo, když uživatel bude nastavovat hraniční teplotu a tak, aby to bylo svižný, takže bych rád 16MHz a furt v chodu.

-"status obvod": je možný, aby tady ten cpu běžel jen na 1MHz a přesto se domluvil přes rádiový modul s tím cpu, co poběží na 16MHz? Nebude to tomu rádiovýmu modulu vadit?

Co potřebuju k nahrání programu do těch atmelů 328?
Stačí fakt UsbAsp? Jaké IDE budu potřebovat? Rád bych používal ty "arduino" moduly. Jsou na to i fajn knihovny (na to rádio třeba).

K tomu bootloaderu: Je nutný tam mít arduino bootloader, abych mohl používat Arduino IDE a arduino moduly (rádio, LCD ovladatelné po sériové lince)? Jde mi o to jen znát jeden způsob, jak co nejlépe a nejefektivněji nahrát svůj program do toho CPU tak, aby mohl běžet jak s externím krystalem na 16MHz tak i na vnitřním oscilátoru nebo pro mě za mě taky s krystalem, ale na co nejnižší frekvenci, protože status obvod nepotřebuje výkon, jen přečte a zapípá nebo hned usne. Jde tam hlavně o výdrž na baterii.

Napájení budu muset řešit:
1. pro atmel s LCD a vysílačem. Tam klidně použiju DC/DC převodníky nebo stabilizátory, bude to na zásuvce, baterka tam bude jen na chvilkovou zálohu, aby šlo dát echo, že vypad proud.

2. pro atmel s přijímačem, pískátkem a status LED. Tam asi budu potřebovat rozumně napájet ten přijímač - tuším 3.3v.

Popsal jsem to obsáhle, doufám, že to pomůže k objasnění použití a toho, co potřebuju. :) Rád bych si pak stavěl i jiný věci a proto bych chtěl mít doma něco na vývoj (chtěl jsem tu arduino UNO desku) a aby s tím šlo nahrát do prázdných atmelů od výrobce můj program. Toť vše. Předem díky za rady a zkušenosti nebo doporučení, co koupit :)

Uživatelský avatar
rob_brno
Příspěvky: 209
Registrován: 12 říj 2012, 02:00

#15 Příspěvek od rob_brno »

kybrex:
Zkoušel jsem ted programovat prázdnou Atmegu48 přes usbasp programátor, prostě se připojí těch 6pinů z programátoru rovnou na Atmegu, nic dalšího netřeba. Dá se to udělat přímo z Arduina IDE. Tuším, že z výroby běží implicidně na 8MHz RC oscilátoru, předdělič dělí 8(tohleto číslo by mělo jít nastavit na dělení v rozsahu 1-256), takže na 1MHz.

Řekl bych, že standardní bootloader arduina nedělá žádné další fce, knihovny se musí do programu dotáhnout spolu s hlavním programem.

Jako teplotní čidlo jsem použil DS18B20, čidlo z odkazu neznám.

Tady jeden programuje Atmegu pomocí Arduina una, takže to taky asi půjde: https://www.youtube.com/watch?v=Ve6qmioHSDU

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“