Generovani frekvence PICem

RVsoft rvicek@quick.cz
Úterý Únor 28 10:26:59 CET 2006


Zdravim,

jeden kolega bastlir CNC masienk mne pozadal o vyvoj zarizenicka, kterym 
mannualne bude ovladat driver krokoveho motoru (vstupy STEP,DIR,BRAKE).

Jsem si to tak propocital a vyslo mi, ze mi staci generovat cca 4.5kHz, 
aby se motor tocil jak potrebuje pri max rpm.

Vzal jsem tedy PIC12F675 a pripojil na nej potenciometr a zacal psat SW.

Cele jsem to rozchodil, ale nedomyslel jsem jednu vec a to, ze se mi 
silene zvysuje citlivost v krajnich polohach potenciometru (stred potaku 
je stop motoru a ke krajum se otacky zvysuji s tim, ze je jiny smer) - 
je mi jasne , ze je to tim, ze se mi vlastne ke konci ty casy meni nasobne.

Zde je rutina interrupt:

procedure Interrupt;
begin
   Inc(j);
   if j>rychlost then
      begin
        j:=0;
        if TestBit(GPIO,0)=1 then ClearBit(GPIO,0)
                             else SetBit(GPIO,0);
      end
   else
      begin
        k:=0;		//tohle je zde pro vyrovnani delky interrptu
        if TestBit(GPIO,0)=0 then ClearBit(GPIO,0)
                             else SetBit(GPIO,0);
      end;
   TMR0:=casovac;
   ClearBit(INTCON,2);
end;

Vstupem je promenna rychlost od 1 do 120 a timer0 je prednastavovan na 
240. V hlavni smycce je jen sejmuti potaku a osefovani stredove polohy a 
ridicich signalu pro smer a brzdu. PIC jede z interniho oscilatoru na 4MHz.

Jestli chapu dobre tak jedinne reseni je bud jeste zkratit trvani rutiny 
interruptu (ted 54us) a jeste vic prednastavit timer0 bliz k 255 s tim 
ze mi zbyde jen velmi malo na hlavni smycku.

A nebo holt pridat krystal na 20MHz a vylepsit si casovej rozpocet.

RadekCX



Další informace o konferenci Hw-list