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

Dc servomotor controller na Attiny 2313

adamus202 15 Mar 2009 19:15 83965 163
  • #31
    adamus202
    Poziom 12  
    Główną zaletą serw w stosunku do krokówek jest to że silnik krokowy uzyskuje na wale moce do kilkudziesięciu watt (są to już duże silniki i odpowiednio drogie). Natomiast silnik dc w takim serwomotorze może mieć moc powiedzmy np. 1kW bo taki silnik możemy bez trudu zdobyć za mniejszą cenę niż tą kilkudziesięcio watową krokówkę. Do takiego silnika dc dołączamy enkoder o większej lub mniejszej rozdzielczości w zalerzności od potrzeb i możemy mieć serwo za nieduże pieniądze. Enkoder o niedużej ilości impulsów można wykonać samemu np. z elementów od myszy komputerowej lub np. w taki sposób. Podczas uruchamiania swojego serwo sternika gdy nie posiadałem jeszcze gotowego serwomotoru złożyłem na szybko serwomotor z mini szlifierki i części ze starej myszki komputerowej.enkoder z myszy.

    Dołączam skompilowany plik HEX do Attiny2313 (fiash oraz eeprom)
  • Computer Controls
  • #32
    artjur
    Poziom 11  
    Witam!
    A tak ku czemu jest tam złącze RS232?
  • #33
    pasierbo
    Poziom 10  
    złącze RS232 masz po to żeby regulować PID z komputera tylko włsnie który program do tego służy? Czy to się zmienia parametry w tym wsadzie znowu kompiluje i wysyła? Na stronie źródłowej widzę tylko pliki smc3a.asm albo smc3.asm. Jakbyś mógł trochę przybliżyć temat uruchomienia tego. pozdro
  • #34
    adamus202
    Poziom 12  
    Plik smc3a.asm to kod do attiny 2313 a plik smc3.asm do wersji sterownika z prockiem AT90S2313. Sprawdzony wsad do Attiny2313 oraz skompilowany zamieściłem dwa posty wyżej. Po złożeniu sterownika i podłączeniu serwomotoru należy dokonać ustawienia parametrów regulatora PID w tym sterowniku. W tym celu lączymy sterownik z PC-em przez RS-232 i odpalamy program HyperTerminal ustawiając prędkość transmisji na 38400 bitów/s. Reszta informacji znajduje się na stronie twórcy projektu w tekście pod tytułem Online command.
  • Computer Controls
  • #35
    pasierbo
    Poziom 10  
    HyperTerminal tego mi było trzeba dzięki:)
  • #37
    domek22
    Poziom 17  
    Witam.
    Czy możesz udostępnić schemat i wzór płytki, która jest bezpośrednio podłączona do portu LPT? Z góry dziękuję.
  • #39
    kalus666
    Poziom 2  
    Witam

    Pytanie do użytkownika adamus202: czy zamiast końcówki mocy opartej na tranzystorach można użyć gotowego układu (np. L298 czy LMD182xx) ?? Jeśli tak to czy sygnały sterujące połówkami mostka H (na tranz.) należy podłączyć do wejść input ??? Chodzi mi o to czy sygnały z OC1A i OC1B są po prostu odwrócone w fazie ???

    Pozdrawiam
  • #40
    wikingc1
    Poziom 18  
    Witam.
    Odświeżę stary temat.
    Adamus202 jak idą dalsze prace nad frezarką i sterownikami?
    Ja wykonałem frezarkę na krokówkach i jak na razie jestem zadowolony ale w wakacje planuje budowę nowej frezarki już sztywniejszej, szybszej itd. i tam chciał bym zastosować właśnie serwa, ale niestety nie ma tanich sterowników do serw i w tym projekcie moje nadzieje bo jak nic z tego nie wyjdzie to trzeba będzie pozostać przy krokówkach :| .
    Pozdrawiam.
  • #41
    kukulkatom
    Poziom 10  
    Witam. Ja również jak kolega wyżej posiadam frezarkę CNC na silnikach krokowych. Teraz zabieram się do modernizacji ( chcę zmienić napędy na Serwa DC ponieważ są dużo szybsze). Mam prośbę do tych, którym udało się uruchomić ten sterownik do Serwa o załączenie gotowego wsadu do procesora po wgraniu którego nie trzeba już będzie nic ustawiać przez RS-232 ( ze względu na to, że jest to dla mało doświadczonego elektronika czarna magia). Wsad do procesora zamieszczony wyżej przez kolegę niestety w BASCOM AVR podczas programowania pokazuje że nie mieści się w pamięci EEPROM.
    Jeśli ktoś posiada jakieś konkrety to byłbym wdzięczny za informacje.
    PS. Próby robię na serwie DC24V 3300r/min a encoder ma 400 działek.
  • #42
    adamus202
    Poziom 12  
    Aby srewo poprawnie działało konieczne jest dobranie odpowiednich parametrów indywidualnie dla każdego serwomotoru. W przeciwnym wypadku mogą dziać się różne rzeczy np. serwo będzie cały czas drgało. Więc nie można napisać uniwersalnego wsadu.
  • #43
    witt
    Poziom 10  
    wit wit-a

    czy moglbys podac jakie to parametry trzeba ujac podczas pisaniu wsadu

    pozdrawiam
    wit
  • #44
    adamus202
    Poziom 12  
    Witam!
    Ostatnio pojawiały się pytania odnośnie ustawienia sterownika.

    Więc tak, po pierwsze trzeba wszystko podłączyć zasilanie, serwomotor oraz kabel z sterownika do PC-a przez COM lub przejściówkę COM-USB potem odpalić HyperTerminal (ustawiając prędkość transferu jak pamiętam chyba na 9600 czy na 19200bitów/s).

    Po włączeniu zasilania powinny się wyświetlić napisy powitania " AVR servo....."
    I od tej chwili można parametryzować nasz sterownik.

    Po pierwsze.
    Parametr M ustawiamy wartość 3 (aby sterował pozycją za pomocą STEP i DIR)

    Po drugie.
    8 parametrów P.

    P0: wartość do wpisania wyliczamy z tego wzoru P0 = prędkość max [obr/min] * P1 * rozdzielczość enkodera [ppr] / 15000 ( prędkość max podstawiamy mniejszą niż przy obliczaniu P6)

    Człony regulatora PID (te parametry dobiera się doświadczalnie po zachowywaniu się silnika )
    P1- człon różniczkujący
    P2- człon proporcjonalny
    P3- człon całkujący

    P4: limit momentu obrotowego P4 = Prąd max [A] / napiecie [V] * rezystancja silnika [ohm]

    P5 = KG [mV / obr / min] / rozdzielczość Encoder [PPR] / Napięcie zasilania [V] * 3840

    P6 = prędkość [obr / min] * Rozdzielczość Encoder [PPR] / 15000

    P7- parametr przyspieszenia. P7 = przyspieszenie [obr / s] * Rozdzielczość Encoder [PPR] * 17

    A i jeszcze jedno, te wszystkie parametry dobieramy wtedy gdy wał silnika podłączony jest do maszyny. Bo gdy ustawimy parametry na biurku i stwierdzimy że serwo ładnie chodzi tu już na pewno nie będzie się tak zachowywać gdy zamontujemy go w maszynie.
  • #45
    jacekk232
    Poziom 16  
    Witam.
    Nie chcę zakładać nowego tematu więc zapytam tu. Tym bardziej, że pytanie wiąże się z tematem. W jaki sposób trzeba wysterować silnik (taki zwykły DC z zabawek) aby go natychmiast zatrzymać i żeby wał stał nieruchomo na hamulcu (tak jak na filmikach). Silnik sterowany jest z uC poprzez L293B.
  • #46
    adamus202
    Poziom 12  
    Najprościej zatrzymać taki silniczek zwierając jego zaciski ze sobą, lecz w taki sposób nie zablokujesz silnika. Sterownik wyżej opisany blokowanie wału silnika realizuje przez bieżące przeciwdziałanie momentom obrotowym, które chcą wywołać zmianę ustalonego położenia.
  • #47
    jacekk232
    Poziom 16  
    Kol. adamus202 mógł byś mi to wytłumaczyć tak na chłopski rozum? Bo gdy próbowałem zasilać silniczek poprzez szybką zmianę polaryzacji napięcia na nim to silniczek stał w miejscu ale mocno drgał a ośką dało się bez problemu kręcić. Zwiększenie częstotliwości zmian też nic nie dało. Więc podejrzewam, że to nie tędy droga.
  • #48
    adamus202
    Poziom 12  
    Bez enkodera nic nie zdziałasz!
  • #49
    jacekk232
    Poziom 16  
    Czyli jeśli wirnik silnika obróci się o jakiś minimalny kąt np w lewą stronę, enkoder to wykryje i sterownik zacznie obracać wirnikiem w prawą stronę. Wirnik znów obróci się o minimalny kąt bo to również zostanie wykryte przez enkoder i teraz sterownik zacznie obracać wirnikiem znów w lewą stronę. Cały proces powtarza się w szybkim tempie co sprawia wrażenie, że silnik stoi na "hamulcu". Czy to mniej więcej na tym polega?
  • #50
    adamus202
    Poziom 12  
    Tak, właśnie tak to się odbywa. Z tym że w powyższym servodrive-że ten proces jest realizowany za pomocą regulacji PID w wyniku czego można uzyskać szybkie, precyzyjne pozbawione drgań działanie takiego sinika.
  • #51
    domek22
    Poziom 17  
    Witam.
    Walczę już drugi dzień z doborem nastaw regulatora a silnik ciągle szaleje :(. Już nie mam pomysłów co może być źle. Nie mam żadnych danych technicznych tego silnika(przypuszczalnie z jakieś starej drukarki HP) a enkoder zrobiłem z myszki (46 impulsów na obrót). Czy kolega adamus202 może w dokładny sposób opisać jak obliczał parametry P0-P7, które wyniki trzeba przemnożyć razy 256?? Szczególnie mnie interesuje parametr P5. Czy na takim enkoderze jest szansa na dostrojenie układu??

    Pozdrawiam.
  • #52
    adamus202
    Poziom 12  
    Proszę dokładniej opisać jak zachowuje się silnik.
    Może to enkodera. Sygnał z enkodera (kanałów A i B) powinien mieć amplitudę na poziomie 4-5V i przesunięcie pomiędzy kanałami 90°.
    I na podstawie jakiego schematu jest zrobiony sterownik jakie układy IRxxxx?
  • #53
    domek22
    Poziom 17  
    Dokładny klon Twojego układu do wysterowania BUZ11 użyłem również IR2111. Sygnały z enkodera przepuszczam przez bramki schmitta(74HC14) i poziomy napięć pasują. Silnik po włączeniu napięcia zaczyna drgać chaotycznie i mocno się grzeje.
  • #54
    adamus202
    Poziom 12  
    A czy silnik obraca się gdy zada mu się jakąś liczbę kroków. Bo jeśli chodzi tylko o drgania to trzeba zmieniać parametry P1, P2, P3.
  • #55
    Qudlaty
    Poziom 11  
    Ja mam trochę inne pytanie do "adamus202" wydaję mi się ze sterowałeś silnikiem z MACH-a i u mnie występuje następujący problem silnikami (wyciągnięte z drukarek) mogę sterować ale wiadomo bez sprzężenia zwrotnego nijak ma się to co wyświetla mach a rzeczywiste przemieszczenie. Enkoder mam podpięty mach widzi go i zlicza impulsu które odzwierciedlają rzeczywiste przemieszczenie, ale nie jestem w stanie go tak ustawić żeby odczyt położenia narzędzia brany był ze wskazań enkodera a nie wygenerowanych impulsów na silnik. Jak to zrobić?U ciebie wszystko ładnie wraca do nastawy podczas wytrącenia układu z równowagi, ten drugi film jest też na osiach czy ustawione jako wrzeciono i sterowane PIDem? Dziękuje z góry za odpowiedź
  • #56
    radziwon
    Poziom 11  
    A MACH zajmuje się poprawianiem położenia ? MACH tylko wydaje polecenia : krok w tą , krok w tamtą. To sterownik serwa ma zadbać o to że polecenie zostanie wykonane. Dlatego silniki krokowe są takie proste w użyciu - łatwo zapewnić że polecenie zostanie wykonane.
  • #57
    Qudlaty
    Poziom 11  
    Niby tak tylko jak zatrzymasz fizycznie taki silnik to i tak nie niego wysterujesz kroki których nie wykona. co do sterownika to nie wydaję mi się żeby Mach go tak widział enkodery podpina się na oddzielne piny. Wiadomo ze najprostszym rozwiązaniem jest krokowiec (ale tez nie jest doskonały potrafi gubić kroki) albo sterownik któremu zadajesz wartość a on po sprawdzeniu czy zadana wartość jest zgodna z tym co podaje enkoder wysyła tylko sygnał wykonania zadania. W Mach-u w zakładce "ports & pins" jest jeszcze opcja "servo serial link feedback" niestety jak chcę ją zaznaczyć to prosi mnie o podanie hasła niestety to które jest do blokowania i odblokowywania ustawień jest inne no i czy ta opcja w ogóle mi pomoże? u Adamusa działało to dokładnie tak jak powinno z pętlą zwrotną jakby sterowane PIDem
  • #58
    kamilelektroda
    Poziom 12  
    Witam widzę że temat nareszcie ruszył, też zamierzam zbudować takie cudo i zobaczyć jak śmiga. Do Qudlaty wejścia w Mach-u na enkodery nie wykorzystuje się do pozycjonowania, raczej do kontroli prędkości obrotowej wrzeciona. Tak jak napisał "radziwon" Mach tylko daje impulsy tyle w lewo tyle w prawo a Servo czyli silnik, enkoder i układ sterowania wykonuje polecenia. Gdzieś na forum było o tym pisane
  • #59
    Qudlaty
    Poziom 11  
    W takim razie skoro serwo już nam się zatrzyma to jesteśmy w stanie nim ręcznie kręcić enkoder kroki policzy ale we współrzędnych Macha nic nam się nie zmieni mam racje? Tu rodzi się pytanie dlaczego u Adamusa igła wracała zawsze w to samo położenie nawet jak ręcznie ją wyprowadzał z położenia równowagi. Jeśli było to podpięte jako wrzeciono i regulowane PIDem (wewnętrznym Mach-owym) to wszystko rozumiem ale wydawało mi się że maił poustawiane współrzędne na osiach.
  • #60
    kamilelektroda
    Poziom 12  
    U Adamusa enkodery nie są podpinane do Macha tylko do Attiny2313, mikroprocesor ma za zadanie utrzymać pozycje, jak servo stanie i chcemy do ruszyć to PID w mikroprocesorze odpowiednio szybko na to reaguje.