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][C]silnik bipolarny - program

huba301 08 Lip 2010 22:29 2918 6
REKLAMA
  • #1 8275380
    huba301
    Poziom 12  
    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:

    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
  • REKLAMA
  • #2 8275774
    Brutus_gsm
    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ć.
  • REKLAMA
  • #3 8276056
    huba301
    Poziom 12  
    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
  • REKLAMA
  • #4 8276163
    Macosmail
    Poziom 35  
    Przy takiej ilości kroków w oryginale był pewnie sterowany mikrokrokami.
  • #5 8276185
    huba301
    Poziom 12  
    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
  • REKLAMA
  • #7 8277897
    janbernat
    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ć.
REKLAMA