Měření napětí jednotlivých článků lipol akupacku - jak na to

stym jazykom budes mat dalsi problem, malo kto sa mu venuje, a Ckarom sa do toho nebude chciet pozerat…

To máš pravdu. Je tu vůbec někdo aktivní, kdo by mě s tím v případě problémů uměl pomoct? Někdo kdo Bascom alespoň okrajově používá? Ale dělat věc, které příliš nerozumím v jazyku, jenž vůbec neznám mě příjde jako brána do pekel. Jak se říká, nikdy neříkej nikdy. Pak bych byl nucen i s naprostou prkotinou se neustále spoléhat na vaši pomoc… S funkcemi, co počítám, že by svítilna měla umět, tak to bude hodně rozsáhlý program. V bascomu se podívám a hned vidím, co ta část programu dělá. V C či asm bych takový přehled neměl. Další výhodu jako začátečníka bych viděl v tom, že bascomu použiju příkaz a nehrozí, že se neprovede, jelikož nepracuje na úrovni registrů, což může být v nějakých případech ovšem zase na škodu.

Trochu v Bascomu dělám a rád se zůčastním.

S Bascomem jako takovým mám zatím jen jeden problém. Neumím používat simulátor. Umím sice zvolit sledovaný proměnný, ale když spustím simulaci tak se nic neděje (mimo změny registrů v pravém sloupici) a netuším proč.

Nabijení/vybíjení baterie je velmi pomalý děj. Při vzorkovačce 100 sps si můžeš dovolit použít mnohem delší filtr a nemusíš pak hledat a zahazovat žádný vzorky. Co je ovšem nutné (až na výjimky vždy) je zajištění, že se na vstup AD nedostanou složky rychlejší než Fs/2 (při 100sps je to 50Hz). To je ta analogová část filtrace. Jinak budou navzorkovaný hodnoty nesmysly.

A maš v programu zaplou simulaci: $sim ?

Toto měření může být relativně pomalé (1x za sekundu), ale v případě, že se to bude blížit meznímu napětí (tuším) 3,4V, tak by se měření zrychlilo, aby se nepropás okamžik, kdy napětí klesne pod 3,4V a akupacku se v důsledku vybití začne výrazně zkracovat životnost. Na napětí se může dostat pod bezpečnou úroveň například skokovým zvýšením příkonu a na to je imho vteřina příliš dlouhá doba. Ale i tento případ lze ošetřit programově, že při výrazném zvýšení příkonu se ihed zkotroluje napětí akupacku, zda nekleslo pod určitou mez a pak přes nějakou tabulku, při jakém napětí povolím jaký příkon, se omezí či pohlídá aby akupack nebyl přetěžovaný.

To ani nevím, kde se dělá. Mám ale pocit, že myslíš simulaci přes JTAG, jenž můj programátor nepodporuje. Když jsem kupoval prograátor, myslel jsem si, že mě bude stačit základní, ale dneska bych si ho koupil spíš s jeho podporou. Mám na mysli simulátor přímo programový, jenž je součástí bascomu => simulate program (červený “šváb” v menu) klávesa F2.

:arrow_right: administrator: příspěvek byl upraven
Citace byla pozměněna.

Na změnu napětí je sice vteřina dlouhá doba, ale to neznamená, že když ti sleze napětí na 3.395V na pár vteřin, že můžeš baterii vyhodit.
Počítáš doufám také se sledováním teploty baterií :wink:. Když článek vymrtvíš, tak ho “jen” vyhodíš. Když se přehřeje, následky jsou o něčem jinym…

Přes JTAG je to ladění. Simulace se provádí v simulátoru.

Prostě ten příkaz $sim dej rovnou na začátek celého progranu a zkompiluj a můžeš pustit simulaci.

:arrow_right: administrator: příspěvek byl upraven
Citace byla pozměněna.

Jedno meranie za 1ms a dokookola na dvoch bateriach (tusim) po 5 clankov mas 10ms periodu co na filtraciu 50Hz staci. Inak si nemyslim, ze tam 50Hz vobec budes mat. Ak das do delica horny R 100k a dolny C 1uF , je hodnota frekvencia s utlmom o 3dB

f = 1/(23.1416R*C) = 1.59Hz

Robit AD prevod pomalsie aj tak nema zmysel. Nic tym neziskas.

Ako priklad uvadzam parametre sw/hw na platforme attiny (programovane len v GCC): ATtiny85 snima 2 kanaly kazdych 200us. V case medzi vzorkami nameranu hodnotu skalibruje a vypocita pre kazdy kanal strednu a efektivnu hodnotu z 10b prevodu v piatich casovych hladinach plavajuco (10ms,20ms,1s,4s,1minuta). Program si vypocitava (ziadna tabulka) x2 a aj sqrt(x). Aritmetika je celociselna a podla potreby 32b. ATtiny bezi na 8MHz a popri tom komunikuje ako slave cez sw emulovanu I2C zbernicu rychlostou cca 2kb/sec. Protokol pocita s ochrannym CRC.

Testovaci program beziaci sucasne v ATtiny indikuje 45% volneho casu procesora v najnepriaznivejsom okamihu. Cas sa vyhodnocuje ako volny cas za 1sekundu. Popri tom sa kontroluje, ci rutiny pod 200us sa nahodou nedostanu do sklzu - tie maju stale minimalnu rezervu okolo 35%.
Cinnost mcu je v tomto pripade uz brzdena samotnou rychlostou AD pri 10b rozliseni.

Inak sa tam procesor bude len flakat, treba mu dat nieco robit nech sa nenudi. Bude Ti za to vdacny :slight_smile:

Teplotu by som merat urcite odporucal. Tazko sa kalibruju analogove snimace. Ak analog, tak LM334 alebo LM335. Tie vseliake KTYxx su nelinearne cary, ktore okalibrovat aspon na presnost +/-2°C je doma aspon v troch bodoch vzdialenych takych 20°C prakticky nemozne.

V domacich podmienkach som sa s nicim obtiaznejsim nestretol ako kalibrovat snimac teploty. Uz len ked si termokamerou pozriem na pracovny stol (bez prievanu, uz len ze su rozne umiestenni ludia a veci) vidim teplotne rozdiely 2-4°C. Chcelo by to olejovu vanu, co je dost opruz vratane vyhrievania a miesania.

Daleko jednoduchsi zivot je s DS18B20, ktoreho cena je uz dnes velmi nizka a presnost garantuje vyrobca.

Flákat by se určitě neměl. Otázka je spíš, zda to zvládne a zda bude na toto vše stačit RAM. Proto uvažuji ve finále o použití monstra ATmega 1280.

Předběžné obecné funkce související přímo s Atmelem:
4x PWM
16x AD převodník
1x alfanumerický displej 40x4 znaky
(líbil by se mě grafický, ale nevím, zda to rozběhám)
(nej by byl dotykový, ale to je už sci-fi - jak programově, tak finančně)
1x matice tlačítek 4x4
1x Piezzo

Některé programované funkce (na než jsem si vzpomněl):

  • hlídání napětí akupacků
  • měření proudu celkévého, i v jednotlivých větvích
  • řízení pwm od 0 do 100% ve 4 skupinách
  • vypínání jednotlivých led ve skupinách
  • nastavitelné strobe
  • uložení uživatelských profilů
  • volitelné chování při přehřátí - snížení výkonu či puštění ventilátoru či kombinaci
  • volitelné chování při vybití akupacků - omezení max výkonu
  • měření teploty různých částí svítilny
  • zobrazení stavu aku, teploty na displeji
  • napájení z 2ks 22,2v 5Ah lipol akupacků či 230V
  • konfigurační menu - takový “bios” svítilny
    - chování při přehřátí
    - chování při nízkém napětí v akupacku
    - půjde nastavit jaké led mají kdy svítit
    - uživatelské profily
    - nastavení uživatelských tlačítek

Uvažované, ale realizace není jistá

  • vestavěná nabíječka akupacků
  • ovládání dálkovým infa ovladačem

Myslím, že se v tom Atmel nudit nebude. Některé funkce možná nebudou, jiné zas přibydou. Některé budou příliš složité a problematické. Tak ty vypustím, některé vyplynou jako jednoduchá nadstavba již použitých funkcí. Vše se ukáže časem, až přejdu k řešení jednotlivých funkcí.

P.S. Na to, že jsem strojař, mám evidentně velmi vysoké cíle, ale zase na druhou stranu si myslím, že cíl jsem si nastavil obtížný, nikoliv však nereálný.

Tvoje ciele su uplne v poriadku. :slight_smile:

Mozem Ta uistit, ze ten Atmel sa bude fakt ale fakt dobre nudit. Toto nie je nejaka uloha na vykon mcu. Mozes si vsak zavarit, ked ten program napises nevhodnym sposobom. Ale od toho je hobby praca, aby sa clovek naucil :slight_smile:

Ak nie si priatelom puzdier TQFP, kludne pouzi ATmega1284P v DIL40. Ma az 16kB RAM. Ale ani tu nebudes v takom rozsahu potrebovat.
Potom kludne aj ATmega644P so 4kB RAM, ktora je pinovo kompatibilna aj s ATmega32. Pre zvysenie poctu AD sa neostychaj pouzit napr. 4051.

Můj favorit na pokusy a zatím jediný Atmel co jsem použil, je ATmega48 - má 4kb flash, což je omezení dema Bascomu a má všechen přídavný HW co Atmel umí. Je možné, že programování v Bascomu vyrábí větší bin soubory, ale již celkem malý projekt semaforů měl 3kb a tak předpokládám, že 32kb bude tak na hraně a tak použiji něco, co má alespoň 64kB flash. Přítelem pouzder TQFP nejsem už z důvodu, že (mám ten dojem), že na něj nejsou patice a špatně se strká do kontaktního pole. :smiley: Jinak bych chtěl zvýšeným počtem nohou eliminovat externí součástky a tak nevytvořit další potencionální problémová místa. Program se vždy dá opravit, ale se špatně zapojenou součástkou je to horší. Navíc, když chci na návrh DPS použít demoverzi Eaglu, kde mám omezený maximální rozměr. Ale i ten Eagle se musím naučit, zvláště tvorbu nových knihoven, kde jsem narazil.

Ještě jsem ti zapomněl říct že ten příkaz $sim musíš před kompilací pro nahrání do MCU vyřadit. Jinak ti program v MCU nepoběží a budeš zbytečně hledat problém v programu vlastní zkušenost :smiley:

Tak už to něco dělá. Ledky na portech blikaj jak o život, ale když měním ad převodník, tak ač ho měním na správným kanálu, tak proměnný sedí jak přibitý. Respektive žádný uživatelský proměnný, co jsem si nastavil se nemělní. A právě uživatelský proměnný by se při změně ad převodníku měly změnit. Jde někde regulovat rychlost simulace a co jsem udělal špatně, že se po změně nastavení ad převodníku nemění proměnné? Přitom fyzický program bez potíží běhá.

V simulátoru zapni tlačítko “Refresh variables”.

To jsem zapnul. když jsem ho měl vypnutý, tak “ledky” na portech simulátoru vůbec neblikaly. Ale i tak číselný proměnný se tváří, že se nic neděje. Toto mě nejde do hlavy. Očekával bych, že když pohnu posuvníkem AD převodníku, že se proměnné změní, jak se to děje v reálu při pootočení potenciometrem. A rozdíl v délce zelené je znát - buď trvá 0,3 sekundy, nebo až 9,9 sekundy. Takže v reálu se proměnná opravdu mění. Zkusím doma udělat program na to, abych to otestoval přímo. V programu semafory se volá podprogram AD převodníku přerušením a to asi bude ten problém. Jak je běh programu zpomalený na “lidskou” úroveň, asi jsem čekal příliš krátce. Ale i tak je divný, že se proměnná cyklu po spuštění semaforů, jenž zařizuje blikání semaforu an volno též nezmění a nebo je to tak rychlý, že to nestihnu zpozorovat.

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Tak jsem narazil na jakýsi obvod od Atmelu ATA6870 , jenž tuto problematiku řeší. Tak se podívám, zda jeho použití by v mém případě někam vedlo.

Nevim, jakej používáš simulátor, ale ten od atmelu v avr studiu4 je tak akorát na odsimulování ledek. U ničeho jinýho nemůžeš počítat s tím, že to bude fungovat správně. Holt je to zadarmo :slight_smile:.
Vyzkoušej si to fyzicky na HW.

Pokud by se podařilo nějakou náhodou ten obvod u nás sehnat, seš si jistej, že dokážeš pracovat s QFN 48 v rozteči 0.5mm? :smiley: