Znaleziono 2 wyniki

autor: szakal140
02 maja 2009, 13:25
Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
Temat: Jak sterować silnikami za pomocą krok/kierunek???
Odpowiedzi: 10
Odsłony: 3060

Prosił bym o kawałek kodu który by mi sterował silnikiem
Funkcja "krec" jest odrobinę za krótka.
Tu nie chodzi o zwykłe wygenerowanie impulsów. Silnik nie może nagle wykonać 400 kroków na pełnej prędkości bo zgubi krok. Musi się rozpędzać a przed zatrzymaniem hamować tzn. porusza się po określonej rampie.
Funkcja musi czytać zmienną globalną określającą przyśpieszenie i częstotliwość maksymalną.
To jest problem.
Może Kolega określić z jaką prędkością będą generowane impulsy?
kolega prosił o kawałek który by mu "sterował" xD wiec nie brałem pod uwage rozpedzania i zatrzymywania silnika. A inną sprawą jest ze pod windows chcąc lub nie chcąc trzeba napisać własny sterownik portu aby silnik przy dużych częstotliwościach nie gubił kroków.
Pozdrawiam.
autor: szakal140
27 kwie 2009, 16:48
Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
Temat: Jak sterować silnikami za pomocą krok/kierunek???
Odpowiedzi: 10
Odsłony: 3060

hmm xD
no wiec :D

zalozmy ze mamy funkcje outport(char adres, char data);

Kod: Zaznacz cały

static char adres = 0x378

void krec(int ilosc, bool kierunek) 
{ 

bool state = true; 

int data1 = 0; /// 00000000
int data2 = 1; /// dla 8 bitowego portu to bedzie chyba 2 pin 00000010
int kier; 

if(kierunek) 
   kier = 1 /// dla 8 bitowego portu: 00000001
                /// jesli  kierunek prawy (umownie - nie czepiac sie) 
else if(!kierunek) 
   kier = 0 /// dla 8 bitowego portu: 00000000 jesli kierunek lewy

   for(int i = 0 ; i < ilosc) 
   { 
      if(state){ 
         outport(adres, (char)(kier+data1) ); 
         state = false; 

      } 
      if(!state){ 
         outport(aders, (char)(kier+data2) ); 
         state = true; 

      } 
   } 


} 
nooo mniej wiecej cos nw te klocki. Ogolnie nic skomplikowanego. Mam nadzieje ze Ci to pomoze.

Wróć do „Jak sterować silnikami za pomocą krok/kierunek???”