[elektro] PIC lebegopontos szamolas

Kiss Gábor kissg at ssg.ki.iif.hu
Fri Nov 26 13:54:57 CET 2010


> Egy PIC12F617-es 8 lábúról lenne szó, amelyik a bels? 8 MHz-es órájáról 
> jár, 5V-os tápról. Az eddig már többször bevált mikroC demo verzióját 
> használnám a program megírásához.
>
> A PIC-kel többek között meg kell mérnem egy bejövő 14kHz-es (ez máshol 
> 3kHz, vagy akár 20kHz is lehet!) PWM jel H és L részeinek arányát, majd 
> ennek alapján elő kell állítani legalább 1% pontossággal a PIC lábakon 
> kívülről fixen kiválasztott 50Hz..100Hz közé es? ugyanilyen H és L 
> arányú kimenő PWM jelet.
>
> Eddig nincs is nagyobb gond.

Csak a játék kedvéért belegondoltam, és számomra nem tűnik
triviálisnak a feladat.
Ha a 20 kHz-es jel kitöltési tényezőjét 1% hibával akarod mérni,
ahhoz több mint 2 MHz-es órajelet kellene kapuzni vele.
A Timer0 erre nem alkalmas.

A Timer1 járhat ugyan 8 MHz-ről, de a Timer2 nem.
Ha az utóbbit is használod, akkor már az első lépésben bevittél
1% hibát. Plusz a kvantálási.
(A Timer2 amúgy is kell a kimenőjel generálásához.)

Ha csak a Timer1-gyel mérsz, akkor pedig a két félperiódus közti
váltás overheadjét nagyon pontosan kell kompenzálnod programból,
és mellesleg a mérési tartomány szűkebb lesz a 0-100%-nál.

A legjobb ötletem eddig az, hogy egy külső XOR kaput vezérelve
egy szabad kimenettel, a fel- és a lefutó jelre is érzékennyé
lehet tenni a Capture Mode-ban a CCP1 bemenetet, és akkor
nem veszítesz időt az átprogramozással. A 0-100% így sem
érhető el, de majdnem. :)

Te hogy tervezed a dolgot?

Nem lehetne egy inkább RC tagon mérni a feszültséget az A/D
konverterrel? :)

A kimenőjelnek milyen gyorsan kell követnie a bemenet kitöltési
tényezőjének változását?

Gábor




More information about the Elektro mailing list