Stránka 13 z 16

Re: ATtiny85 + Uno komunikácia

Napsal: ned led 27, 2019 11:43 pm
od rottenkiwi
Ja to uspávam podľa tohoto:
https://www.re-innovation.co.uk/docs/sl ... -attiny85/

Len tú teplotu mi nečíta správne.

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 10:46 am
od pete
Watchdog timer můžeš použít současně pro probuzení ze spánku přerušením a současně i pro reset. Je třeba po každém probuzení v hlavní smyčce před dalším usnutím nastavit bit WDIE (Watchdog Timeout Interupt Enable) v registru WDTCR. Tento bit se totiž hardwarově nuluje hned po probuzení watchdogem a pokud ho nenastavíš tak po dalším timeoutu watchdogu následuje reset. To je přesně to co potřebuješ.
Datasheet strana 45.

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 4:46 pm
od rottenkiwi
Doprogramoval som spánok na 2x4 sec, vtedy je spotreba 110 uA.

Ak to zlomok sekundy berie 9 mA a potom 8 sec. 110 uA, aká bude spotreba
za 24 hod ?


Ešte naprogramovať tú teplotu a zobudenie, ak prídu dáta.
https://www.youtube.com/watch?v=HSlbnj-nbzw

Stačí v tomto kóde zmeniť PCINT3 na PCINT0 ?
Potom, ak za zobudia Attiny, zakázať spánok na 1 sec.,
preposlať BMS info string a znova povoliť spánok ?

Kód: Vybrat vše

void sleep() {

    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT3);                   // Use PB3 as interrupt pin
    ADCSRA &= ~_BV(ADEN);                   // ADC off
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement

    sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
    sei();                                  // Enable interrupts
    sleep_cpu();                            // sleep

    cli();                                  // Disable interrupts
    PCMSK &= ~_BV(PCINT3);                  // Turn off PB3 as interrupt pin
    sleep_disable();                        // Clear SE bit
    ADCSRA |= _BV(ADEN);                    // ADC on

    sei();                                  // Enable interrupts
    } // sleep

ISR(PCINT0_vect) {
    // This is called when the interrupt occurs, but I don't need to do anything in it
    }

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 5:24 pm
od mypower.cz
rottenkiwi píše:Ak to zlomok sekundy berie 9 mA a potom 8 sec. 110 uA, aká bude spotreba
za 24 hod ?
7.9 s x 110 uA = 7.9 x 0.11 mA = 0.869 mAs
0.1 s x 9 mA = 0.9 mAs
8 s = 0.869 mAs + 0.9 mAs = 1.769 mAs /1000 = 0.001769 As
1 den = 86400 sekund
Za den: 86400 / 8 = 10800 * 0.001769 As = 19.1052 As / 3600 = 0.005307 Ah ?

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 5:45 pm
od rottenkiwi
Takže:
0.0053 x 13.5 V = 0.07155 Wh denne pre 12 V systém,
0.0053 x 27 V = 0.1431 Wh denne pre 24 V systém,
0.0053 x 54 V = 0.2862 Wh denne pre 48 V systém,

ergo ročne: 26 Wh, resp. 52 Wh, resp. 104 Wh.

Lenže potom treba aj riadiacu jednotu uspávať, lebo Uno či Mega má podstatne vačšie nároky.

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 5:57 pm
od mypower.cz
rottenkiwi píše:Takže:
0.0053 x 13.5 V = 0.07155 Wh denne pre 12 V systém,
0.0053 x 27 V = 0.1431 Wh denne pre 24 V systém,
0.0053 x 54 V = 0.2862 Wh denne pre 48 V systém,

ergo ročne: 26 Wh, resp. 52 Wh, resp. 104 Wh.

Lenže potom treba aj riadiacu jednotu uspávať, lebo Uno či Mega má podstatne vačšie nároky.
spis myslim ze to bude 0.0053Ah x 5V = 0.0265 Wh denne pokud to bude napajeno 5V a proud pri 5V je vyse uvedeny nebo 0.0053Ah x 3.3V = 0.01749 Wh denne a proud pri 3.3V je vyse uvedeny (9mA a 110uA).

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 6:04 pm
od rottenkiwi
To bude napajane priamo z článku, takže pre LiFePO to bude 3.375 V x počet článkov, ergo
4, 8, 16 atď. Pre Lion je počet článkov pre daný nominál nižší, ale celkové napatie ostáva.

Záleží na tom, koľko času budú články pod či nad 3.375 V. U mňa z databázy vychádza 3.375,
ako priemer za deń, keď svieti a sú baterky naplno dobité.

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 8:39 pm
od kodl69
Napájení řídící jednotky je z energetickýho hlediska trochu problém, jedna z možností je, že řídící jednotka bude třeba SDS, Rbpi, Microlog a pod, tj něco, co stejně v systému je. Pokud budu dělat step down konvertor z 30V/5V, příp. z 50V/5v, tak vlastní spotřeba takovýho aparátu bude dost značná, pokud bude komunikační rozhraní LAN, tak V5500 jsou pěkný kamna, se spotřebou cca 1-2W, udržet sepnutý nějaký relátka asi taky nějakou elektriku spotřebuje, a pokud na tom bude jinej displej než LCD z N5110 tak to taky nějakou elektriku sežere.
Buck regulátor s vlastní spotřebou cca 1mW není problém: https://www.analog.com/en/products/lt8619.html
ale nejsem si jist, že je to to správný řešení. Možná by bylo fajn udělat nějakou knihovnu, příp vzorovej sḱetch pro vyčtení dat z balanceru, a ať si to každej vyřeší, jak je mu libo. Dělat nějaký univerzální řešení vidím jako problém.
Samozřejmě v případě použití LAN s W5100(5500 prej je úspornější) zcela dehonestuje snahu o úsporný napájení. Pak může býtbuck obyč z aliexpresu za 1.5USD, arduino mega a ethernet shield a jede se. Momentálně testuju moduly s převodníkem UART/USB, takže by to klidně mohlo být i nějaký zařízení s androidem, pokud to někdo dokáže naprogramovat...
Samozřejmě že by šla udělat i low power varianta, třeba s atmega328, využívat sleep mode, relátka dát bistabilní, displej z N5110, a komunikaci galvanicky oddělenej UART (RS485 modbus?, RS232 modbus pro midnite?) a low question buck, ale kolik lidí bude chtít tuhle variantu? možná si to udělám takhle pro sebe.

Re: ATtiny85 + Uno komunikácia

Napsal: pon led 28, 2019 10:57 pm
od rottenkiwi
Tak, zdá sa, že to robí čo chcem, len tu teplotu neviem nakalibrovať.
Len ešte treba nejako synchronizovať spánok Attiny85 aj Una.

https://www.youtube.com/watch?v=VQ1egNJi8MA

Re: ATtiny85 + Uno komunikácia

Napsal: úte led 29, 2019 12:15 am
od mypower.cz
kodl69 píše:Možná by bylo fajn udělat nějakou knihovnu, příp vzorovej sḱetch pro vyčtení dat z balanceru, a ať si to každej vyřeší, jak je mu libo.
Za to bych se taky primlouval. I zapis nastaveni. Jednak pro univerzalni pouziti kdekoliv a taky bych pridal tuhle podporu do micrologu. Treba moznost nastaveni a zobrazeni zivych dat pekne graficky pres www rozhrani, programovatelny LCD display, moznost archivace dat na mypower.cz, grafy. Prave se mi jen tak z hecu po letech povedla uspesna kompilace rozpracovane verze 2.06 uz i s podporou logovani na SD kartu v nejnovejsim Arduino IDE 1.8.8. Coz znamena ze by se to dalo jednoduse pridat.

:))

Re: ATtiny85 + Uno komunikácia

Napsal: pát úno 01, 2019 1:35 am
od kodl69
při testu probouzení ze spánku jsem měl dílčí úspěch, podle tohoto: http://blog.onlinux.fr/interruption-and ... -attiny85/
LEdky krásně blikaly po 8s nebo po příchodu log. 0 na vstup 0,
ale hned v další minutě konec, už při doplnění jenom #include <SoftwareSerial.h> , bez dalšího, to nejde zkompilovat a vyhrožuje to:
libraries/SoftwareSerial/SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()':
(.text+0x0): multiple definition of `__vector_2'
sketch/sleep_test.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
exit status 1
Nastala chyba při kompilaci u desky ATtiny25/45/85.


Co to jako je? Já si dycky myslel, že knihoven můžu mít v záhlaví třeba dvacet, a překladač na ně bude "sahat" až ve chvíli, kdy na danou knihovnu najde odkaz v programu. A ty, co se nepoužijí, výsledný HEX vůbec neovlivní. Nebo je všecko jinak?

Re: ATtiny85 + Uno komunikácia

Napsal: pát úno 01, 2019 8:13 am
od DanoP
Pokusas sa dvakrat definovat vektor prerusenia na to iste. Prvy raz ho mas zadefinovany v prebudzani na zmenu pinu, a druhy krat ho definuje SoftwareSerial. Takze treba ponechat len definiciu v SoftwareSerial.

Re: ATtiny85 + Uno komunikácia

Napsal: pát úno 01, 2019 8:24 am
od kodl69
A jak to teda probudím?
předpokládám, že je potřeba nějaká změna kódu v téhle oblasti:

Kód: Vybrat vše

void setup()
{
  setup_watchdog(9);
  pinMode(wakeUpPin, INPUT);        // Set the pin to input
  PCMSK  |= bit (PCINT0);  //                                   Pin Change Mask Register
  GIFR   |= bit (PCIF);    // clear any outstanding interrupts  General Interrupt Flag Register
  GIMSK  |= bit (PCIE);    // enable pin change interrupts      General Interrupt Mask Register
  sei();                   // enable interrupts
}
 
ISR (PCINT0_vect){}
Jinak se mě to dost líbilo, jak za 8s zablikala jedna LED a když jsem poslal nějaký data , tak zablikala druhá a když se mi to povedlo trefit, tak obě :D

Re: ATtiny85 + Uno komunikácia

Napsal: pát úno 01, 2019 10:15 am
od DanoP
SoftwareSerial to zobudi samo na pin change (lebo ma nadefinovanu vlastnu registraciu na on pin change), dokonca pri rychlosti 4800 mam odskusane ze ani nestraca prvy znak (ja ale pouzivam negovane urovne, 0 ma pri 0V, 1 pri Vcc).
Ak by bolo treba nieco vlastne nastavovat (flag?) v obsluhe interruptu, potom treba modifikovat SoftwareLibray.cpp tak ze zakomentujes r. 225 az 242 (definicia ISR(...), spravi sa vlastna registracia ISR (ako si mal) a z nej okrem vlastnych veci volas staticku metodu SoftwareSerial::handle_interrupt();
Zvycajne ale staci pocitat s tym ze SoftwareSerial to zobudi, zavolat spracovanie while (mySerial.available()>0)...., spravit vlastne veci, ak treba, a uspat.

Re: ATtiny85 + Uno komunikácia

Napsal: pát úno 01, 2019 2:04 pm
od kodl69
až tak jednoduše? Odpoledne vyzkouším, dík. Já tam zkusím poslat 1ms LOW, aby se to mělo čas probrat, a 1ms než pošlu data, v těch skoro 2ms by to mohlo stihnout naměřit napětí, netuším, jak rychlej ten ad převodník je, bez nějakýho dalšího nastavování. a nebo naopak, napřed data a pak měření, co na tom, že se budou posílat pár sekund starý data, na baterce se nic zas tak rychle nemění.

Re: ATtiny85 + Uno komunikácia

Napsal: pát úno 01, 2019 3:03 pm
od DanoP
Daj pozor aby sa to hned neuspalo ked sa to zobudi na signal na RX porte. Prevod ADC ak bolo ADC vypnute trva 25 cyklov hodin ADC prevodniku (cize ak mas hodiny ADC 50kHz tak 20 us). Mozes bud cakat na ukoncenie prevodu, alebo nechas bezat loop s tym ze testujes ci uz je hotovo (nesmie zaspat) a zatial robis nieco ine. Pouzit prerusenie spustene ukoncenim prevodu ADC zoberie viac strojoveho casu ako testovanie flagu v loop-e.

Re: ATtiny85 + Uno komunikácia

Napsal: sob úno 02, 2019 3:16 pm
od kodl69
Konec akce. Nefunguje mi nic normálně. tenhle pokus má probudit attiny a data beze změny přeposlat. To se stane jednou, a pak už ne, nebo přepošle 36znaků, jeden znak nebo taky nic nic... Strávil jsem na tom příliš mnoho času bez toho, že by se nějak blížil výsledek.

POKUD TO NIKDO NENAPROGRAMUJETE tak ty DESKY HODÍM DO KOŠE a budu se raděj věnovat něčemu rozumnějšímu. Zatím je to cca 100 hodin a prakticky bez výsledku.
attiny_sleep_serial_bad.ino
(2.65 KiB) Staženo 148 x
Zhruba týden čekám, komu to mám poslat a když nikdo, tak to vyhodím. Jednodušší bude si koupit na e-skutru hotový funkční moduly.

Re: ATtiny85 + Uno komunikácia

Napsal: sob úno 02, 2019 3:54 pm
od dub042
Čaute chlapi, sleduju toto vlákno a připadá mi to velice složité řešení. Dělám na něčem podobném. Attiny85, ADS1115, na 1 pwm attiny mám RC filtr který pak přes optočlen otvírám jeden tranzistor, který zkratuje baterku( pálím to do chladiče tranzistoru ), tedy jedná se o klasickou BMS, ale oproti komerčním si můžu nastavit programově horní hranici BMS. Kód je jednoduchej, pokud jenapětí větší než 3.48, pomalu otvírej tranzistor a naopak. DPS si udělám přímo na rozměry baterky.
Oproti vám tam nemám UART, ale to ani nepotřebuju.
No třeba někoho inspiruju, tak hodně zdaru

Re: ATtiny85 + Uno komunikácia

Napsal: sob úno 02, 2019 5:09 pm
od rottenkiwi
JA zas potrebujem po HW stánke, 4 funkčné moduly, aby som sa pustil do testovania. :)

Re: ATtiny85 + Uno komunikácia

Napsal: sob úno 02, 2019 5:11 pm
od kodl69
máš je mít. V průběhu týdne ti to pošlu.

To Dub042: moc složitý a drahý řešení, co toho málo umí. BMS to jistě není, to je zkratka Battery Management System
a ty máš jenom balancer. Pozor na zavádějící pojmenování, podobně jako autopilot u tesly...