Stránka 1 z 1

Muze mit KM jiny pocet kroku vlevo a jiny pocet kroku vpravo

Napsal: 19. 8. 2009, 12:42
od hns
Zdravim po delsi dobe,
resim jeden zapeklity problem. Nedari se mi zjistit presnost meho HPGL bastlu (viz nekde tady na foru odkaz).
Jako drivery pouzivam klasicke unipolarni budice s tranzistorem ve fazi. Ten spinam na 0 povelem z MCU. Na spolecny je privedeno Ucc motora.
Jde mi o to, ze pri jednom smeru otaceni je 400pulkroku=otacka
Pri otaceni na druhou stranu je uz 400pulkroku = otacka a kousek.

Program je napsan jednoduse debilne pro testy. Protoze uz jsem si nevedel rady co s tim je a pak me napadlo napsat tohle:

Kód: Vybrat vše

for(a=0;a<400;a++) {krokdoprava();}
for(a=0;a<400;a++) {krokdoleva();}
krok**** je jenom vyber hodnoty z tabulky posilane na port a cekaci smycka pro dostani napeti do civky

edit:
takze podle poslednich vyzkumu potrebuju 7 otacek na to, abych se dostal zase do vychoziho bodu

Napsal: 19. 8. 2009, 1:41
od Jukos3
co presne mas o funkcii krokdopra()/krokdolava() ?

Napsal: 19. 8. 2009, 5:07
od pipa
Dáváš ten "revers" hned po doběhu na druhou strnu ? Může v tom totiž hrát roli setrvačnost rotoru KM, nebo případná vůle, jestli to máš přidělaný na pohybovej šroub.

Napsal: 19. 8. 2009, 5:46
od CZ_Pascal
Jak jsi spravne uvedl jedna se o zapeklity problem. Videl bych to na skrytou chybu v programu. Je az s podivem jak casto se tato chyba dokaze v nespocetnych modifikacich objevit. Clovek naprogramuje urcitou vec jednim smerem a predpoklada ze invertovanim urcite casti se musi dit inverzni pochod a tocit zcela stejnym zpusobem na druhou stranu. Opak je pravdou. Vetsinou clovek pul dne az tydne hleda proc kdyz to jde jednim smerem nejak to nejte tim druhym smerem zrovna tak. Preji uspesny "lov". Pak se s nami podel cim to bylo.

Napsal: 19. 8. 2009, 6:17
od hns
Tak jsem zapeklity problem nasel - klasika, vadnej mezikus klavesnice<>zidle
ve funkci krok vlevo jsem porovnaval pole od prvku 1, jenze v C narozdil od pascalu se pole definuje od 0.
Takze v podmince porovnavam jestli jsem v poli hodnot jeste za prvkem s poradovym cislem 1, misto abych porovnaval s prvkem v poradi 0.
Coz znamena ze mi to udela 7 kroku ne 8 jak by melo. A to jeste tak ze 7. krok je v podstate dvojity krok, takze v realu udelam podle mcu 8 kroku, ovsem posun je o 9 kroku.
Krok pro mcu = pulkrok KM

PS:
chtel jsem vlozit celou funkci, ale jakmile to zmerci nakej kod i kdyz je v code tak to rozhodi cely text, mozna si toho nekteri vsimli. Proto prikladam jako TXT