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