Krokový motor

Z MAM wiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Uprava formatovani C kodu)
Řádka 16: Řádka 16:
   
   
-
<nowiki>
 
-
int main (void){ // hlavni funkce programu
 
-
 
-
  //unsigned char a=0; // pomocna promenna
 
-
  unsigned char t=100;
 
-
 
-
  unsigned char dopredu = 0;
 
-
 
-
  /* init */
 
-
 
-
  DDRB=0xFF; // Data Direction Register PORTB: kazda nozicka bude vystup
 
-
 
-
 
-
 
-
  /* hlavni smycka */
 
-
 
-
  while(dopredu){ // nekonecna smycka
 
 +
  int main (void){ // hlavni funkce programu
 +
 
 +
    //unsigned char a=0; // pomocna promenna
 +
    unsigned char t=100;
 +
    unsigned char dopredu = 0;
 +
 
 +
    /* init */
 +
 
 +
    DDRB=0xFF; // Data Direction Register PORTB: kazda nozicka bude vystup
 +
 
 +
 
 +
 
 +
    /* hlavni smycka */
 +
 
 +
    while(dopredu){ // nekonecna smycka
 +
 
 +
     
 +
  PORTB= 0x08;
 +
  _delay_ms(t);
 +
  PORTB= 0x0c;
 +
  _delay_ms(t);
 +
  PORTB= 0x02;
 +
  _delay_ms(t);
 +
  PORTB= 0x06;
 +
  _delay_ms(t);
 +
  PORTB= 0x04;
 +
  _delay_ms(t);
 +
  PORTB= 0x05;
 +
  _delay_ms(t);
 +
  PORTB= 0x01;
 +
  _delay_ms(t);
 +
  PORTB= 0x09;
 +
  _delay_ms(t);
 +
     
      
      
-
PORTB= 0x08;
+
     
-
_delay_ms(t);
+
    // vystup na nozicky portu B
-
PORTB= 0x0c;
+
-
_delay_ms(t);
+
-
PORTB= 0x02;
+
-
_delay_ms(t);
+
-
PORTB= 0x06;
+
-
_delay_ms(t);
+
-
PORTB= 0x04;
+
-
_delay_ms(t);
+
-
PORTB= 0x05;
+
-
_delay_ms(t);
+
-
PORTB= 0x01;
+
-
_delay_ms(t);
+
-
PORTB= 0x09;
+
-
_delay_ms(t);
+
-
 
+
-
 
+
    
    
-
    // vystup na nozicky portu B
 
-
 
     // pockam nejakou postrehnutelnou dobu
     // pockam nejakou postrehnutelnou dobu
-
 
+
    
-
   } // konec nekonecne smycky
+
  } // konec nekonecne smycky
-
 
+
 
-
while(!dopredu){
+
  while(!dopredu){
-
+
 
-
PORTB= 0x09;
+
  PORTB= 0x09;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x01;
+
  PORTB= 0x01;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x05;
+
  PORTB= 0x05;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x04;
+
  PORTB= 0x04;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x06;
+
  PORTB= 0x06;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x02;
+
  PORTB= 0x02;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x0c;
+
  PORTB= 0x0c;
-
_delay_ms(t);
+
  _delay_ms(t);
-
PORTB= 0x08;
+
  PORTB= 0x08;
-
_delay_ms(t);
+
  _delay_ms(t);
-
}
+
  }
-
} // konec main</nowiki>
+
  } // konec main
-
 
+
 
'''Hardware:'''
'''Hardware:'''

Verze z 6. 5. 2010, 09:50

Krokový motor

Jiří Janecký, Martin Chvála

Zadání

Ovládání krokového motoru

Analýza problému

Naznačení principu krokoveho motoru Soubor:Signaly-Bipolarni_s_polovicnim_krokem.gif

Ukázka signálu je pouze pro pravotočivý směr otáčení motoru.

Bipolární řízení s polovičním krokem



 int main (void){ // hlavni funkce programu
 
   //unsigned char a=0; // pomocna promenna
   unsigned char t=100;
   unsigned char dopredu = 0;
 
   /* init */
 
   DDRB=0xFF; // Data Direction Register PORTB: kazda nozicka bude vystup
 
 
 
   /* hlavni smycka */
 
   while(dopredu){ // nekonecna smycka
 
     
 	PORTB= 0x08;
 	_delay_ms(t);
 	PORTB= 0x0c;
 	_delay_ms(t);
 	PORTB= 0x02;
 	_delay_ms(t);
 	PORTB= 0x06;
 	_delay_ms(t);
 	PORTB= 0x04;
 	_delay_ms(t);
 	PORTB= 0x05;
 	_delay_ms(t);
 	PORTB= 0x01;
 	_delay_ms(t);
 	PORTB= 0x09;
 	_delay_ms(t);
     
   
     
    // vystup na nozicky portu B
 
    // pockam nejakou postrehnutelnou dobu
 
  } // konec nekonecne smycky
 
 	while(!dopredu){
 	
 	PORTB= 0x09;
 	_delay_ms(t);
 	PORTB= 0x01;
 	_delay_ms(t);
 	PORTB= 0x05;
 	_delay_ms(t);
 	PORTB= 0x04;
 	_delay_ms(t);
 	PORTB= 0x06;
 	_delay_ms(t);
 	PORTB= 0x02;
 	_delay_ms(t);
 	PORTB= 0x0c;
 	_delay_ms(t);
 	PORTB= 0x08;
 	_delay_ms(t);
 	}
 } // konec main
 

Hardware:

AVR Dragon, ATmega168, 2x invertor TC4424, Krokový motor optické mechaniky.


Zdroje:

invertor TC4424

Krokové motory z robotika.cz

Osobní nástroje