Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega8 + l293D - Obsługa silnika krokowego

brzydal91 04 Gru 2011 16:53 2624 6
  • #1 04 Gru 2011 16:53
    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:

    Code:

    #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





    0 6
  • #2 04 Gru 2011 18:23
    janbernat
    Poziom 38  

    Twoja wina- to Ty napisałeś taki program.
    I jeszcze te wcięcia kodu- nie wiadomo co się gdzie kończy.

    0
  • #3 04 Gru 2011 18:34
    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.

    0
  • #4 04 Gru 2011 18:39
    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ć.

    0
  • #5 04 Gru 2011 18:45
    kuba1im
    Poziom 19  

    Dobrze, wykona się, mój błąd, przepraszam.

    0
  • #6 04 Gru 2011 19:10
    jacekk232
    Poziom 16  

    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.

    0
  • #7 06 Gru 2011 07:50
    Yacek_64
    Poziom 9  

    Na początek zmień kolejnośc par biegunów silnika krokowego.

    0
  Szukaj w 5mln produktów