U/I meter cez interný AD

U MCU je nevýhoda, že se špatně měří proud v napájecí větvi, nevím jestli jsi tohle nějak řešil a vyřešil (mě napadá jen měřit proud v zemi, což nevyhovuje u symetrického napájení, nebo použít diferenciální vstup, což nemusí stačit rozsahem napětí). Oddělené převodníky by mohly vyřešit i tento problém.

Ty chceš řídit napětí digitálně? Tam asi bude problém řešit přechodné stavy, např. po zapnutí napájení, aby napětí nevyskočilo na nesmyslnou úroveň.

Ano presne tento problem som mal na mysli. Prúd by som chcel merať na odpore ktorý bude v sérii s pripájaným zariadením v zápornej vetve. Ako u vačšiny takých zdrojov. Ešte som tu videl prevodník na meranie prúdu ACS754. S tým by to bolo najlepšie aj čo sa týka teplotnej nestability bočníka.

ano cez DA riadim napatový a prúdový zosilnovač a sním výkonový tranzistor (darlington). Vyriešené to mám tak že po zapnutí zdroja je potrebné zopnúť relé ktoré pripojí zátaž.

Když se opožděně připojí zátěž - nehrozí že na neřízeném zdroji vylítne napětí nahoru, ale bez odběru (odpojená zátěž) to nestihne kvůli elytům klesnout na správnou úroveň než se zátěž připojí?

V zdroji mám bateriu kondenzatorov 3x4,7mF hned za mostikom čiže napatie na nich je konštantné.

Ako pomocny mcu sa da pouzit aj ATtiny85. I2C galvanicky oddeluj najjednoduchsie s ADUM1xxx.

Ak sa ma prenasat iba hodnota I a U a na druhu stranu iba zelaha hodnota U, potom to mozes hravo zvladnut cez PWM (ak by UART robil mentalnomoralne problemy).

priklad: pulz 1s, aktivna uroven od 0,1s do 0,5s je hodnota prudu, od 0,6 do 0,9s je hodnota napatia. Tieto dve casove hodnoty sa mozu po sebe striedat. Presnost (alebo skor nepresnos) odcitania casovej hodnoty pomocou citaca/casovaca na hlavnom mcu daleko presahuje samotne rozlisenie pomocneho mcu. Cas samotnej periody urcuje zakladnu casovu zakladnu pomocneho mcu, takze z nameraneho casu pwm a periody sa da dosattocne presne vypocitat analogova hodnota. Casy sa daju pouzit samozrejme kratsie, uvadzam to ako priklad. Tym padom pomocny mcu nepotrebuje Xtal. Obdobne je to s prenosom zelanej hodnoty napatia, respektive sa tak da zakodovat aj zelane obmedzenie prudu na druhom zdroji.

Principialne by som sa vsak priklanal k UARTU. Ten obdobne ako vyssie popisany sposob porebuje iba dva lacne optocleny bez nejakych speci narokov na parametre.

Pre I2C som našiel ADUM1250 ktorý je na to stavaný.

A prečo je komunikacia cez twi zlá? Len sa pýtam nikdy som snou nerobil a preto by som ju tu chcel použiť. Už som si našiel aj hotové knižnice
lubosweb.php5.sk/clanky/14_i2c.php
ADUM1250-circuits.jpg

TWI je skvela zbernica. Ale porovnaj si cenu toho ADUM125x s obycajnymi optoclenmi. Pri jednosmernej komunikacii (to nie je tvoj pripad) je pomer este vacsi.

Komunikaciu cez UART mozes napriklad lahko testovat priamo cez PC.

Malo by to zvladat obojsmernu komunikaciu
analog.com/static/imported-f … 0_1251.pdf
aspon podla toho datasheetu

Osobně bych použil asynchronní obousměrnou komunikaci pomocí UART přímo v MCU a oddělit je optočleny.

Ale ved samozrejme aj zvlada. Na to to bolo vyrobene a na zaklade vlastnych skusenosti mozem potvrdit, ze to funguje skvele.

ADUM1250 - 103,60 Kč
ADUM1251 - 125,90 Kč

Dvojitý optočlen LTV824 - 12,10 Kč

Obousměrná asynchronní komunikace mezi mcu. Řekl bych, že asi nejjednodušší.

Ahoj, predsa som sa rozhodol použiť USART namiesto I2C a to z dôvodu že som ešte potreboval volne porty ktore využijem z druheho mcu atmega8(budú to len tlacitka a led).
Oddelenie optočlenom som zrealizoval v návrhu takto, na internete som našiel par schem kde boli nejake blokovacie diody paralalne k ledkam a podobne. Je to potrebné aj sem?
rdtxd.png

R14 na +12V namísto +5V, to je jen omyl v nákresu?

Musíš zajistit, aby se Ti signál neinvertoval. Viz příloha. Odpory R3 a R4 by mohly být i vynechány, pokud budou aktivovány pull-up rezistory v kontrolérech.
Opto_USART.jpg

Pocet zabranych pinov je rovnaky.

tych 12V je tm len preto aby sa mi to nemiešalo s 5V vetvu, viem mohol som ju premenovat.

to invertovanie som myslel že poriešim v sw, tak ich dam preč a budem zapínať vnútorné pullup odpory.

@Martin ani nie pretože som vypustil I2C tak som použil iný DA prevodník(cez SPI), upravím ešte tie nedostatky a hodím sem schému

sw by polarita ošetřit nešla, protože to obsluhuje hw procesoru (možnost volby polarity jsem neviděl)

Nepotřeboval by jeden pin navíc na řízení směru? Ani si vlastně moc neumím představit, jak by se to s optočleny řešilo, když datový signál je sběrnice s otevřeným kolektorem.

Invertování polarity pomocí sw samozřejmě vyřešit můžeš, ale tím se připravíš o možnost využití hardwareového USARTu přímo v mcu. Jednodušší je zapojit optočleny tak, jak jsem poslal (vlastně jde jen o přepojení tý “vysílací” LEDky) a můžeš klidně využít hw USART se všemi jeho výhodami :

  1. nemusíš se starat o vysílání a příjem dat - to se udělá čtení/zápisem do 1 registru (1 instrukce).
  2. hw umí detekovat chyby Data OverRun a Framing Error.
  3. nemusíš hlídat, jestli dorazila nějaká data - o to se může postarat obsluha přerušení USART_RXC
  4. pokud odesíláš data, nemusíš hlídat, jestli už je odesláno. Prostě odešleš 1 byte a pomocí přerušení USART_TXC řešíš odesílání dalších dat. Prostě v obsluze přerušení zjistíš, jestli je ještě něco k odeslání a pokud ano, zapášeš byte do registru UDR a o víc se nestaráš.

Nepotreboval. Galvanicke oddelenie I2C cez ADUM125x to riesi automaticky.