Jakou zvolit strategii programu
Milan Mlynarčík
milan.m@centrum.sk
Pátek Březen 30 01:42:13 CEST 2007
Veľmi mi to pripomína situáciu, ktorú som kedysi riešil na kontrolu obrátok
turbíny vodnej elektrárne. Tiež som použil dve prerušenia. Tomu častejšiemu
som priradil menšiu prioritu, pričom sa sleduje dokončenie tejto rutiny. Ak
sa stretnú, tá častejšia sa nedokončí a bude použitá hodnota z minulého
merania.
Najskôr som mal tiež obavy, no niekoľko rokov to chodí celkom v pohode.
Merané impulzy sú 20ms (kmitočet v sieti) a 100ms z čidla turbíny. Tiež
používam meranie periódy, každá veličina má vlastný časovač. Ja som vtedy
použil VEĽMI pomalý procesor. Pri akomkoľvek dnešnom si kľudne možete
dovoliť prerušenia nezahodiť, ale jednoducho vykonať jeden po druhom. Ak v
ňom iba odložíte stav príslušného časovača a nanovo ho spustíte, bude aj pri
"stretnutí prerušení" oneskorenie (a teda chyba merania) podľa mňa celkom
nepodstatná a teda zanedbateľná.
Milan Mlynarčík
----- Original Message -----
From: "CNCnet.info" <hwnews@cncnet.info>
To: "HWnews" <hw-list@list.hw.cz>
Sent: Thursday, March 29, 2007 9:36 PM
Subject: Jakou zvolit strategii programu
Zdravim, mam alespon z meho pohledu zajimavou vec nad kterou zu chodim
cca dva dni a nemohu se rozhodnout co bude lepsi.
Potrebuji udelat zpetnovazebni regulator motoru rizeneho modelarskym
regulatorem - tedy celym vystupem je PPM modulace s opakovanim 20ms a
sirka pulzu je 1-2ms.
Vstupem je cidlo od motoru, ktere dava 4 pulzy na otacku. Rozsah
regulace je 1.000-20.000rpm - tedy prodleva mezi pulzy je 15ms az 749us.
Rozhodl jsem se merit ne pomoci nacitani poctu pulzu za urcity cas, ale
merenim casove roztece mezi signaly z cidla - neni to sice definitivni
rozhodnuti, ale ma to jiste vyhody se vzrustajicima otackama (nevyhodou
je ruzna doba mereni) - nicmene pokud se ukaze ze merit pocet pulzu za
cas je lepsi klidne to zmenim.
Zatim reseni, ktere jsem zatim vydumal jako perspektivni je generovat
prepruseni pres timer inkrementovany hodinama a tim generovat zacatek
pulzu PPM s tim ze v hlavni smycce budu prubezne merit cas mezi pulzy z
cidla a cist nastavovaci prvky - vysledkem bude doba zpozdeni kterou
pouziju v preruseni pro genrovani delky pulzu.
Problem vidim v tom, ze pri otackach 1000rpm je doba mereni 15ms a nemam
zaruceno ze to v tech 20ms stihnu kdyz se to netrefi mezi dve preruseni
a prijdu pri odskoku do generovani pulzu o presnost mereneho casu.
Resenim by bylo merit cas pomoci dalsiho preruseni (cidlo je na RB0 coz
je externi preruseni). Pak by na hlavni smycku zbyvala jen obsluha
nastavovacich prvku. Je ale nebezpeci ze v pripade ze se sejdou dve
preruseni tak se to mirne zdeformuje casove - podle toho cemu dam prednost.
Procesor zatim v ramci pokusu je PIC16F873A, ale neni problem pouzit
nejakou pinovou nahradu z 18tkove rady pokud by to bylo prinosem.
Pokud byste mel nekdo nejake osviceni jak treba lepe vyuzit HW uvnitr
procesoru tak budu rad.
RadekCX
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list