Atmel 328P-PU, úsporný provoz bez arduino desky
Moderátor: Moderátoři
Atmel 328P-PU, úsporný provoz bez arduino desky
ř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.
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/
- monterjirka
- Příspěvky: 2855
- Registrován: 14 čer 2003, 00:00
- Bydliště: Blížejov
-----------
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.
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.
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č
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-Adapter-Board-For-ATMEL-AVRISP-USBASP-STK500-Convert-/161265217885?ssPageName=ADME:L:OU:US:1120#ht_5152wt_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
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.
- ross4435897
- Příspěvky: 426
- Registrován: 10 lis 2009, 00:00
- Bydliště: Brno
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
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íš?
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.
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.
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