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

Sterownik silnika krokowego

08 Kwi 2005 13:03 4763 5
  • Poziom 12  
    Witam poskaldalem sterownik silnika krokowego z ktoregos z ostatnich numerów EDW. Podlaczylem kilkanascie silnikow na wszystkie mozliwe kombinacje, (na 100%) dobrze i silnik zamast sie krecic to piszczy lub czasem drga. Wydaje mi sie ze jest blad w programie sterujacym wie ktos cos moze na ten temat??
  • VIP Zasłużony dla elektroda
    a moze jednak zle silnik podpieles ; a gdzie schemat i jakie te silniki (ilosc wyprowadzen , bi-, uni-polarne itd.) ?
  • Poziom 12  
    wiec tak silnik ma 6 wyprowadzen z tego dwa sa polaczone. Testowalem silnik najpierw bez sterownika na te dwa wyprowadzenia dalem +zasilania i poszczegolne wyprowadzenia zwieralem do masy spisalem sobie pokolei jak mam podpiac zeby silnik sie obracal podpialem te wyprowadzenia do tranzystorów od T1-T4 (one w ukladzie zwieraja poszczegolne uzwojenia do masy) i zasilanie i silnik zamast obracac sie drga lub piszczy. Wydaje mi sie ze program w procku w jednym momencie zalacza dwa tranzystory na raz

    a to listing programu napisanego w bascomie:


    Dim Praca As Bit , Przyciski As Byte , Licznik As Byte , Predkosc As Byte
    Config Portb = &B00001111 'młodsze-wyjścia do silnika, starsze-wejscia DIP-switch S1
    Config Portd = &B1000000 ' 2 najmłodsze bity - wejscie przycisków,
    ' 4 następne -predkosc z DIP-switch'a S2 ostatni bit - wyjście=brzęczyk piezo
    Config Timer0 = Timer , Prescale = 64
    Enable Interrupts : Enable Ovf0
    Portb = &B11110000 'na początek wyłącza silnik i podciąga wejscia S1
    Portd = 255 'włącza rezyst podciągajace na wejsciach PD.0, PD.5 i wyłacza brzęczyk

    On Timer0 Podprogramik

    Do : Loop : End 'pusta pętla

    Podprogramik:
    Przyciski = Pind And 3 'uzyskujemy stan przycisków - dwa najmłodsze bajty
    Predkosc = Pind And &B0111100 'i stan czterech bitów DIP-switcha S2
    Shift Predkosc , Left , 2 'przesuwamy to na najstarsze pozycje
    Predkosc = Predkosc Or 15 'a do 4 młodszych wpisujemy jedynki
    Timer0 = Predkosc 'ładujemy tę wartość do Timera0, zmieniając czas do najbliższego przepełnienia
    Select Case Przyciski 'sprawdzamy stanu przycisków
    Case 0: 'gdy naciśnięte oba przyciski włącza brzęczyk piezo
    Praca = 0 : Reset Portd.6 'włączony między PD.6 a plus zasilania
    Case 1:
    Praca = 1 : Incr Licznik ' naciśnięty S3 - w górę
    Case 2:
    Praca = 1 : Decr Licznik ' naciśnięty S4 - w dół
    Case 3:
    Praca = 0 : Set Portd.6 ' w spoczynku wyłącz brzęczyk
    End Select
    Licznik = Licznik And 3 'zeruje 6 zbędnych bitów ośmiobitowego licznika
    If Praca = 1 Then
    Portb = Lookup(licznik , Tabela)
    Else
    Portb = 0
    End If
    Return

    Tabela:
    Data &B11111001 , &B11111100 , &B11110110 , &B11110011 ' w wersji z 4 tranzystorami
    'Data &B11000011 , &B11110000 , &B00111100 , &B00001111 'przy kostce ULN2803 po dwa wyjścia równolegle



    Wydaje mi sie ze blad tkwi w Tabeli, sa tam wartosci jakie ma nadac portowi B, cztery najmlodsze bity tego portu steruja tranzystorami, wiec powinno moim zdaniem wygladac to tak: &B11110001 , &B11110010 , &B11110100 , &B11111000 czy mam racje?
  • VIP Zasłużony dla elektroda
    Cytat:
    wiec tak silnik ma 6 wyprowadzen z tego dwa sa polaczone...


    jak tu ? :
    http://www.stepperboard.com/motor_wiring_examples.htm#UnipolarMotors

    Cytat:
    Wydaje mi się ze blad tkwi w Tabeli,


    latwiej to bedzie widac jak napisze sie w kolumnie:

    &B11111001
    &B11111100
    &B11110110
    &B11110011

    tez wyglada sensownie - po dwa wlaczone tranzystory wlaczaja po kolei po dwie 'sasiednie' cewki (praca pelnokrokowa, zasilane po dwie fazy) i uzyskuje sie wiekszy moment obrotowy.
    Jak chcesz prace falową (na raz zasilana jedna faza) to zmien tabele tak jak napisales.

    Co to za proc ?
    moze ma mozliwosc pracy statycznej i sobie powoli przetestujesz, taktujac z zewnatrz, stan poszczegolnych tranzystorow.
  • Poziom 12  
    Tak silnik taki jak na schemacie. Procek to AVR at90s2313. Chyba jednak zrobie tak jak pisalem bo teraz juz nie wiem jak podlaczyc ten silnik chyba ze Ty wiesz dokladnie jak?
  • VIP Zasłużony dla elektroda
    ja bym sprobowal wylutowac kwarc i do jednej nogi uC "XTAL1" doprowadzil sygnal z zewn. regulowanego generatorka, mozna by na spokojnie zaobserwowac powolne zmiany napiec z portu do tranzystorow