Stránka 1 z 2

Atmel AVR sinusový střídač a FB

Napsal: 17 říj 2011, 22:40
od Jenda_KL
Napáchal jsem z ATTiny 2kVA měnič do auta na ruční nářadí.

Tiny: int.osc 8MHz a PLL pro PWM (15kHz).
střídač: můstek 4x5 IRF44Z, buzený přes TLP250
trafo: primár 400V sekundár 24V umotaný na 15V.

Generuje se INT při T1MAX, kdy se bere hodnota pro další pulz ze sinusové tabulky, kde je předpočítáno 156 pulzů půlperiody.

Na flexu to fuguje při nastartovanym autě dobře, ale při jízdě na baterku samozřejmě klesá i výstupní napětí.

problém je se zavedením zpětné vazby, tedy jak upravit výstup tabulky podle FB pro generování PWM tak, aby to nesežralo 10us, když se to má počítat 15000x za sekundu.
Pokud by to trvalo déle, bylo by potřeba to přepočítat do RAM, které je ale na Tiny26 na tohle málo.

Nápad?

Napsal: 17 říj 2011, 23:05
od Bernard
Jestli to dobře chápu, výstupní napětí klesá následkem poklesu vstupního napětí. Tak by se dalo měřit vstupní napětí a podle jeho poklesu zvětšovat ty pulzy o nějaký díl, asi zas z nějaké tabulky.
Pro ty pulzy stačí tabulka na čtvrtperiodu, čteš jí jednou dopředu, jednou pozpátku.

Napsal: 17 říj 2011, 23:29
od Jenda_KL
jo, baterka se prostě vybíjí :)

o čtvrtperiodě jsem uvažoval, ale vzhledem k tomu že už komutace zabere 10us jsem to zatím vzdal.

Mám už FB zavedenou z 230 přes optočlen na AD, který mi vzorkuje v maximu půlperiody, takže hodnota by byla. Jen nevím jak to dělit, když to umí dělit jen dvěma.

Edit:
měří to samozřejmě i napětí baterie, zobrazuje její stav a vypíná při poklesu pod 10,5V.

Napsal: 18 říj 2011, 07:54
od procesor
V jednom projekte som potreboval viac dat, tak som použil voľné miesto v programovej pamäti. PIC umožňuje aj zapisovať/prepisovať síce zložitejšie, ale čítanie ide v pohode. Tam sa ti zmestí toho habadej, ak programuješ v asm. Štyri, prípadne osem rôznych sád by stačilo prepínať podľa napätia akumulátora.

Napsal: 18 říj 2011, 08:29
od Andrea
S tím trafem ale nemáš žádnou rezervu, při 11V na baterce už na výstupu sinus s amplitudou 325V neuděláš, můžeš akorát přejít do obdélníku.

Napsal: 18 říj 2011, 08:40
od Jenda_KL
Trafo upravit je otázka pěti minut.
Má odbočky 400,415,425,440 a postupně jak se vybíjí tak přehazuju do vyšších.

Napsal: 18 říj 2011, 08:42
od Jenda_KL
procesor píše: Štyri, prípadne osem rôznych sád by stačilo prepínať podľa napätia akumulátora.


Asi tohle je nejsnadnější cesta

Napsal: 18 říj 2011, 12:14
od mtajovsky
Ještě bych zkusil nějaké modifikace tabulky. Holá tabulka by obsahovala délky impulsů pro plný výkon. Nějak přesně dělit asi není z hlediska rychlosti reálné, ale možná by šlo shiftem selektivně dělit 2, 4 nebo 8 každý n-tý impuls. Čím menší n, tím by se zkrátilo více impulsů a vstupní napětí by klesalo. Chce to najít vhodný způsob výběru impulsů (čili n), které se budou dělit, v kombinaci s dělitelem 2, 4, 8, atd., aby se pokud možno zachoval sinus na výstupu a přitom se dosáhlo proporionální regulace výstupního napětí.

Napsal: 18 říj 2011, 12:50
od Andrea
Násobení 8bitového čísla koeficientem 1,000 - 1,246 se dá zvládnout za 18 taktů (2.25us při 8MHz), koeficientem 1,000 - 1,496 za 20 taktů (2,5us). To se během přerušení 1x za 66us stihne levou zadní. Koeficient se vypočte ze změřených hodnot jednou za periodu 50Hz, tj. na to bude času dost.

Jenda_KL píše:vzhledem k tomu že už komutace zabere 10us

Co si mám představit pod tou komutací?

Napsal: 18 říj 2011, 19:02
od procesor
V prípade, že stačí 5 diskrétnych hodnôt, ten výpočet ide urobiť ešte rýchlejšie.
Násobiť 1.00 1.25, 1.5, 1.75 2.00 je jednoduché
čo trvá:..0......3......2.....4.......1 taktov.
Možno sa to nebude dať použiť, kvôli prezentácii dát.
Potom ešte 9 polohový "prepínač" bol výhodný, ale nejaký ten tak by to trvalo dlhšie(max 6 taktov). Musela by sa vypočítať a prirátavať aj 1/8 .
Sedemnásť polôh je už asi zbytočnosť, ale do desať taktov vy sa dalo zmestiť.

Napsal: 18 říj 2011, 19:33
od Andrea
Pokud napájecí napětí kolísá o ani ne 50% tak mi koeficienty 1,75 a 2,00 přijdou už mimo, takže zbývají jen tři. Navíc ty napsané takty jsou dosti podhodnocené, to je jen na samotný posun a přičtení, ale nějak se musí rozhodnout, o kolik se bude posouvat a kolikrát se bude přičítat.

Napsal: 18 říj 2011, 19:49
od procesor
Pre 15V by to malo šlapať s 50% moduláciou, pri 10V 100%. V podstate je to dvojnásobok. Samozrejme, tie takty sú iba na Shift a add. Testovalo by sa iba raz. Zabralo by to však viac pamäti.

Napsal: 18 říj 2011, 19:53
od Andrea
procesor píše:Pre 15V by to malo šlapať s 50% moduláciou, pri 10V 100%. V podstate je to dvojnásobok.

To máš teda divný počty.

procesor píše:Testovalo by sa iba raz.

Jedním testem dokážeš rozlišit 5 hodnot? To jseš dobrej.

Napsal: 18 říj 2011, 22:09
od procesor
1/ :roll: dobre.... od 7,5 do 15V ( to by sa už sa hodilo to 9 úrovňové)
tých 7,5V aby sa to dobre počítalo, mohlo by to byť aj 8...16V
2/ cez ijmp 2 takty.
+Niekoľko taktov na začiatku periódy sínusovky (vtedy by som nič nenásobil 0*(1...2)=0, ale spočítal adresu výpočtov pre IJMP s meraním batérie. AD by meral Vbat-7,5V. Do výpočtu adresy sa použijú iba 4 najvýznamnejšie bity.

A nakoniec... píše, že má na to 10µs a meranie a s tým súvisiace zabezpečenie musí robiť tak či tak nezávisle od spôsobu násobenia.

Napsal: 18 říj 2011, 22:18
od Andrea
Proč od 7,5V? To už ta baterka bude mrtvá. A kde píše, že na to má 10us?