Tak komunikace už běží.
Bude to tak:
Hlavní deska bude mít 20x2 nebo 20x4 LCD takže zobrazí max 16 baterek. Někdo tu má např. 17 kusů, takže to plánuju vyřešit tak, že to holt bude přeblikávat zobrazení 16 baterek a pak té jedné samotné (případně dalších kusů), nebo bude další zobrazení s celkovým napětím a dvou baterek s nejmenším napětím a dvěma s nejvyšším.
V rámci komunikačního protokolu, kterej sem si za tímto účelem vyvynul bude možný adresovat max 32 balancérů. Vyčtení 16ks trvá asi 2,5 vteřiny. Při použití měné nebo více se obměna dat patřičně zkrátí, nebo prodlouží.
Na balancéru bude možné přes hlavní desku nastavit jeho adresu, balanční napětí, napětí nad kterém bude blikač červená led a napětí pod kterém bude červená led trvale svítit.
Na hlavní desce půjde měnit zobrazení viz víš.
Pak na ní bude pípák s nastavitelným napětím když některá baterka bude nad nebo pod povolený limit, celkové napětí klesne nebo překročí povolený limit, některý z balancérů se odmlčí.
Pak bude výstup pro 4ks relelé (hotový relé modul je možné koupit již hotový pro arduino, je zbytečné tam natvrdo pájet relátka) a jejich nastavení bude obdobné jako u pípáku.
1. sepnutí když některá z baterek bude nad nastaveným
2. sepnutí, když některá z baterek bude pod nastaveným
3. sepnutí, když celkové napětí bude nad nastaveným
4. sepnutí, když celkové napětí bude pod nastaveným
5. sepnutí, když některý z balancérů bude balancovat
Další užitečné funkce mě nenapadají. Pokud by to nebylo moc složité, rozumným návrhům se nebráním.
Věci k uvážení mám:
1. USB konektor pro připojení počítače k hlavní desce (nikdy sem nic takového nedělal, tak nedokážu říct jak by to bylo složité)
2. výstup na posuvný registr, pomocí kterého by pak šlo spínat malé izolované DC-DC měniče a balancoval tak nejslabší baterie
3. rs323 s podporou AT příkazů. Šel by tak k desce připojit starý telefon a nechat si posílat havarijní sms.
Komunikovat s balancéry půjde i pomocí vlastních prostředků, třeba arduino a pokud bude mít dostatečně rychlé vstupy a výstupy tak klidně i třeba PLC SDS. Jen nevím jakou má prodlevu mezi sepnutím a vypnutím vstupu a při jeho čtení.
Jelikož jde o princip 1-wire zběrnice, tak je nutné dodržovat dané časy.
Popis komunikace.
Je to dvoudrátová 1-wire kvůli oddění optočleny. Vlastně jsou to dvě samostatné 1-wire, kdy přes jednu se odesílají požadavky do balancérů a na druhé se od nich očekává odpoveď.
Komunikace je hodně podobná teplotnímu čidlu dallas 18b20.
Zahajuje jí master reset. Stáhnutí sběrnice do nuly minimálně po dobu 10ms. poté počkám 2ms a můžu posílat příkaz 8 bitů v podobě:
popis z leva
x - pokud je odesílání adresy pro požadavek musí být vždy log 1
xx - typ požadavku 01 - požadavek na odeslání napětí, 10 - požadavek na odeslání nastavení uložené v eeprom, 11 - požadavek na uložení následně zaslaných dat do eeprom.
xxxxx - adresa balancéru
log nulu odešlu pulzem kratším než 3ms a log 1 odešlu pulzem delším než 3ms. V simulátoru používám pro log 0 2ms a pro log 1 5ms.
prodlevy mezi posíláním pulzů musí být 2ms.
pokud pošlu 10100000 - následně obdržím odpověď s aktuálním napětím od balancéru s číslem 1.
Odešle mi 12 bitů jejich význam je
x - kontrolní bit, musí být pořád 1
x - pokud je 1 balancér balancuje
xxxxxxxxxx - hrubé číslo z ADC převodníku v rozsahu 0-1023. aktuální napětí si budete muset dopočítat protože se může lišit podle nastavení trimru na děliči napětí.

věci jako zápis do eeprom a čtení zatím nemám hotové.
příjem probíhá tak, že po odeslání požadavku počkám 2ms a hodím pulz 2ms. Po tom vyčtu příchozí pulz. Opět pulz kratší jak 3ms znamená log 0 a pulz delší jak 3ms log 1.
Dělám to tak, že počkám po čtečím pulzu 3ms a pak si přečtu stav zběrnice. V tu dobu už musí být 0 nebo 1. a pokračuju dál.
Kdo zná toho dallase, měl by si poradit i s tímhle.
Toť asi zatím vše.