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

[Atmega8][C]silnik bipolarny - program

08 Lip 2010 22:29 2762 6
  • Poziom 11  
    Zrobiłem układzik Atmega8 + L293D + silniczek bipolarny z licznika samochodowego
    silniczek ma ogranicznik, nie przekręci się 360 stopni, ma powiedzmy 340 stopni pracy
    technicznie układ zrobiony i działa
    problem z programem mam, chciał bym zrobić obrotomierz i tak sterować silniczkiem żeby podążał za aktualną wartością obrotów i tu problem powstaje
    dla testów spłodziłem przykładowy program:

    Code:
    while(1)
    
       {
       PORTB = 0x05;
       PORTC = 0x05;
       _delay_ms(50);
       PORTB = 0x01;
       PORTC = 0x01;
       _delay_ms(50);
       PORTB = 0x09;
       PORTC = 0x09;
       _delay_ms(50);
       PORTB = 0x08;
       PORTC = 0x08;
       _delay_ms(50);
       PORTB = 0x0A;
       PORTC = 0x0A;
       _delay_ms(50);
       PORTB = 0x02;
       PORTC = 0x02;
       _delay_ms(50);
       PORTB = 0x06;
       PORTC = 0x06;
       _delay_ms(50);
       PORTB = 0x04;
       PORTC = 0x04;
       _delay_ms(50);
       }


    silniczek kręci się cały czas w jedną stronę, dochodzi do momentu max "wychylenia" i teraz jak opanować położenie silnika i tak napisać program żeby podążał za bieżącą wartością ?
    może na początek porzucić kwestię że to ma być obrotomierz tylko pozostać przy sterowaniu silnika

    mam nadzieje że nie zakręciłem pytania i ktoś mnie zrozumie
  • HELUPOWER
  • Poziom 25  
    Jeśli jest to silnik krokowy, to sprawdź ile kroków potrzeba do pełnego wychylenia o te twoje 340stopni i licz kroki, odejmuj je lub dodawaj w zależności od tej wartości obrotów, które chcesz pokazać.
  • HELUPOWER
  • Poziom 11  
    z dokumentacji wynika że silnik ma 36 kroków

    czy muszę pilnować kroków, powiedzmy jak przekręci się o 3 (sekwencja 1,2,3) kroki to czy następny krok musi zaczynać się od (4) czy znowu można jechać od (1,2,3 itd..) kroku
  • Poziom 33  
    Przy takiej ilości kroków w oryginale był pewnie sterowany mikrokrokami.
  • Poziom 11  
    Macosmail napisał:
    Przy takiej ilości kroków w oryginale był pewnie sterowany mikrokrokami.



    możesz rozwinąć wypowiedź odnośnie tych mikrokroków

    w dokumentacji jest przykład 4 kroków
    1: 0110
    2: 1010
    3: 1001
    4: 0101

    znalazłem tryb 8 kroków
    1: 0101
    2: 0001
    3: 1001
    4: 1000
    5: 1010
    6: 0010
    7: 0110
    8: 0100

    przy 4 krokach wskazówka założona na ośkę drży niesamowicie, przy 8 krokach już jest lepiej ale faktycznie w oryginale jedzie ładnie i płynnie
  • Poziom 38  
    No i przy L293D praca półkrokowa to wszystko co można wydusić.
    Jeśli silnik pobiera <0.5A to można zastosować L6219 lub LB1845 .
    Da to możliwość pracy ćwierćkrokowej.
    Co da skok co 2.5stopnia
    No i te scalaki mają wbudowany PWM co pozwala zasilać silnik chyba do 30V.
    Zrobiłem na to program i działa- ale teraz mi się ten program nie podoba.
    Trzeba go zmienić.
    Nawet nie dlatego że w Bascomie- muszę to przerobić na C- ale dlatego że trzeba wykorzystać rotate.
    A w C to rotate to trzeba sobie samemu napisać.