logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 + l293D - Obsługa silnika krokowego

brzydal91 04 Gru 2011 16:53 2825 6
REKLAMA
  • #1 10217665
    brzydal91
    Poziom 12  
    Witam serdecznie.
    Chciałem poprosić o pomoc w tym prostym projekcie. Na płytce prototypowej podłączyłem do µC układ L293D, do niego silnik krokowy z czterema wyprowadzeniami(silnik z drukarki). Wszystko podłączyłem wg noty katalogowej drivera. Mój problem polega na tym, że po odpaleniu programu silnik wykonuje krok w przód i krok w tył. Nic poza tym. Czy to wina silnika czy programu? Oto kod:
    
    #define F_CPU 1000000ul
    
    #include <avr/io.h>
    
    #include <avr/interrupt.h>  
    #include <util/delay.h> 
    
    
    void main(void)
    
    {	
    	char licznik = 0; 
    
    
    	DDRD = 0xFF;
    	PORTD = 0x00;
    	
    	while(1)
    	{
    	if(licznik > 0) 
    	{
            licznik--;
    	}
    	else 
    	{
            licznik = 3;
    	}
       
    	switch(licznik) 
    	{
          	case 0:
    	{
    	PORTD &= ~0x08;
    	PORTD |= 0x03; 
    	break;
    	}
          	case 1:
    	{
    	PORTD &= ~0x01;
    	PORTD |= 0x04; 
    	break;
    	}
          	case 2:
    	{
    	PORTD &= ~0x02;
    	PORTD |= 0x08; 
    	break;
    	}
          	case 3:
    	{
    	PORTD &= ~0x04;
    	PORTD |= 0x01; 
    	break;
    	}
        	}
        	_delay_ms(200);
      	} 
    	
    
    
    
    } // main
    
    
    
    
    
    
  • REKLAMA
  • #2 10218053
    janbernat
    Poziom 38  
    Twoja wina- to Ty napisałeś taki program.
    I jeszcze te wcięcia kodu- nie wiadomo co się gdzie kończy.
  • REKLAMA
  • #3 10218110
    kuba1im
    Poziom 19  
    Nie zauważyłeś, że nigdy nie wykona Ci się case 0. to tak na początek. Dalej rozkminiaj, wina jak najbardziej po stronie programu.
  • REKLAMA
  • #4 10218138
    michalko12
    Specjalista - Mikrokontrolery
    kuba1im napisał:
    Nie zauważyłeś, że nigdy nie wykona Ci się case 0. to tak na początek.

    Wykona się!
    Problem leży prawdopodobnie w podłączeniu silnika.
    Pokaż schemat i zacznij od "ręcznego" sterowania silnikiem wtedy będziesz wiedział jak nim sterować.
  • #5 10218168
    kuba1im
    Poziom 19  
    Dobrze, wykona się, mój błąd, przepraszam.
  • REKLAMA
  • #6 10218296
    jacekk232
    Poziom 17  
    Przetestowałem program na płytce stykowej i sekwencja stanów na porcie D wygląda bardzo dziwnie. Na pewno nie ma to nic wspólnego ze sterowaniem silnika krokowego bipolarnego.

    Na początek proponuję przejrzeć serię artykułów z Edw na temat silników krokowych.
    Silniki krokowe od podstaw
    W części trzeciej jest wyjaśnione jak sterować silnikiem bipolarnym.
  • #7 10224130
    Yacek_64
    Poziom 11  
    Na początek zmień kolejnośc par biegunów silnika krokowego.
REKLAMA