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

Jak sterować silnikiem krokowym, żeby szybko i dokładnie działał?

_jta_ 29 Sty 2018 13:37 6003 113
  • #61
    _jta_
    Specjalista elektronik
    Żeby impuls był "uchwycony" przez driver musi być zmiana z 0 na 1. Ile takich zmian zrobisz w bajcie?

    Od 1 do 5.

    Ile baud ma twoja transmisja? Nie wiem czy z kompa nie będziesz miał 12V i jakiś układ dopasowujący nie będzie potrzebny.

    Szybkość mogę regulować - od kilku baud do 115200, ale to, co podam, system przelicza na całkowity podzielnik, przez który dzieli tę liczbę - czyli mam 115200, 57600, 38400, 28800, 23040, 19200, 16457, 14400, 12800, 11520, 10472, 9600... i im dalej, tym gęściej.

    Akurat ten komputer daje dobre napięcie, tylko podłączyłem diodę, żeby nie przechodziło w odwrotnej polaryzacji. Ale z innym może być inaczej i pewnie układ dopasowujący się przyda.

    Nie masz żadnej możliwości przymocować choćby do blatu stołu ? Ściskiem, imadełkiem, czymkolwiek

    Na to trzeba coś takiego mieć. Nie mam, nie dociera? Kilka lat temu była przeprowadzka wydziału, dużo sprzętu poszło na złom, bo transport byłby zbyt kosztowny. A poza tym byle czym (może bym przyniósł z domu) tego silnika nie zamocuję - ma nieporęczny kształt.

    Szukałem na tym forum CNC, ale nie znalazłem nic o tym silniku.

    Próbuję sprawdzić, na jakiej częstotliwości ma rezonans, ale jakoś nie mogę go wyczuć. Być może bez obciążenia jest za mała dobroć.
  • IGE-XAO
  • #62
    TvWidget
    Poziom 33  
    _jta_ napisał:
    Szybkość mogę regulować - od kilku baud do 115200, ale to, co podam, system przelicza na całkowity podzielnik, przez który dzieli tę liczbę - czyli mam 115200, 57600, 38400, 28800, 23040, 19200, 16457, 14400, 12800, 11520, 10472, 9600... i im dalej, tym gęściej.

    Czy jesteś pewien, że potrafisz dynamicznie zmieniać baud rate synchronicznie z wysyłanymi bajtami ? Obawiam, że ta operacja może wymagać zamknięcia i ponownego otworzenia portu.
  • #63
    adversus
    Poziom 27  
    Pittt napisał:
    Jeśli sterujesz sterownik krokowca "impulsami" z portu COM to albo jesteś niepoprawnym optymistą albo kompletnym ignorantem. Specjalista elektronik, a zabierasz się do tematu jak pies do jeża...
    Nie zapoznałeś się z tematem, bo jak byś to zrobił, to byś wiedział że sterowanie robi się właśnie po LPT. A jeśli ci coś nie działa tzn że coś robisz źle, a nie że trzeba na COMie bo tam jakoś chodzi.
    Jak sobie wyobrażasz precyzyjne pozycjonowanie napędu jeśli możesz wysyłać tylko wielokrotności 9 impulsów ? że o płynnej zmianie prędkości nie wspomnę.


    No i trzeba się zgodzić z kolegą w 100%. Nie umniejszając Twojej wiedzy i doświadczeniu jakie ponoć masz (masz w opisie "specjalista elektronik, informatyka..." ale to już nie jest sarkazm), to jak to jest że ze wszystkim masz problem, to po co się zabierasz za coś takiego?

    Piszesz też:
    _jta_ napisał:

    [i]Nie masz żadnej możliwości przymocować choćby do blatu stołu ? Ściskiem, imadełkiem, czymkolwiek


    Na to trzeba coś takiego mieć. Nie mam, nie dociera? Kilka lat temu była przeprowadzka wydziału, dużo sprzętu poszło na złom, bo transport byłby zbyt kosztowny. A poza tym byle czym (może bym przyniósł z domu) tego silnika nie zamocuję - ma nieporęczny kształt.

    Szukałem na tym forum CNC, ale nie znalazłem nic o tym silniku.

    Próbuję sprawdzić, na jakiej częstotliwości ma rezonans, ale jakoś nie mogę go wyczuć. Być może bez obciążenia jest za mała dobroć.


    Po czym stwierdzasz że nie możesz znaleźć rezonansu... To może trzeba ze świeczką poszukać, może się schował pod stołem, ale wiesz to nawet nie jest śmieszne bo po prostu ręce opadają. Napisałem kilkukrotnie że bardzo pomocny byłby generator przebiegu prostokątnego gdzie mógłbyś ustawiać częstotliwości taktowanie silnika prawie dowolnie, szybko mógłbyś wtedy znaleźć rezonans... ale nie, bo po co słuchać rad...
    Wspomniałeś że masz dostęp do oscyloskopu, na uczelni też na pewno maja generator arbitralny (pewnie znajdzie się tam też ścisk i jakieś obciążenie silnika) może zabierz tam zabawki i poćwicz... generator arbitralny do testów to mistrzostwo, bo możesz ustawić dowolnie przebieg, przemiatać nim w funkcji zmiany częstotliwości w czasie, itd... Jeśli był byś z Poznania to nawet byłbym skłonny Ci pożyczyć ścisk a może nawet wspomniany generator (mam nawet 2, więc jeden mogę użyczyć), ale niestety nie jesteś :)

    Kurde chłopie weź się ogarnij, to z czym masz problem to podstawy... Chyba że jesteś jednak ignorantem jak wspomniał kol. Pittt
  • IGE-XAO
  • #64
    _jta_
    Specjalista elektronik
    Mogę zmieniać szybkość, kiedy w buforze (programu i systemu) nie ma bajtów do wysłania (próba zmiany szybkości, kiedy są dane w buforze, zawiesza port i wtedy trzeba go zamknąć i otworzyć, inaczej nic już nie wysyła); w FIFO portu dane mogą być, szybkość może się zmienić nawet w środku bajtu. Niestety trudno stwierdzić, ile danych jest w FIFO (nawet odczytując rejestry 16550 można tylko dowiedzieć się, czy FIFO coś zawiera, czy jest puste, ale już nie ile zawiera), i w związku z tym które bajty będą wysłane ze starą, a które z nową szybkością.
  • #65
    elektronikq
    Poziom 24  
    Od 1 do 5.
    Czyli ramka ma 10 bitów? Bo jak ma 8 to masz 4 zmiany. Czy bit startu i stopu też jest brany pod uwagę?
    Ile impulsów ma twój silnik na obrót? Najczęściej jest to 200 impulsów na obrót.


    Szybkość mogę regulować - od kilku baud do 115200, ale to, co podam, system przelicza na całkowity podzielnik, przez który dzieli tę liczbę - czyli mam 115200, 57600, 38400, 28800, 23040, 19200, 16457, 14400, 12800, 11520, 10472, 9600... i im dalej, tym gęściej.


    Przykładowo 9600 baude rate oznacza, że sygnał zmienia się 9600 razy. W zależności ile bitów jest przesyłane np.: masz 8 bitów to w czasie 1 sek możesz wysłać 9600 x 8 bitów. To jest bardzo bardzo dużo. W zależności jaki masz podział kroków na driverze i ile impulsów na obrót ma silnik.
    Jeśli silnik utyka bez obciążenia przy wyższych prędkościach moim zdaniem i z obciążeniem jeszcze szybciej utknie.

    Akurat ten komputer daje dobre napięcie, tylko podłączyłem diodę, żeby nie przechodziło w odwrotnej polaryzacji. Ale z innym może być inaczej i pewnie układ dopasowujący się przyda.
    Jakie to napięcie?
  • #66
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #67
    _jta_
    Specjalista elektronik
    Zajrzałem kolejny raz do tematu Błedny opis - czarny sterownik TB6600 (TB67S109A) na forum CNC. Stwierdziłem różnicę tabelki u mnie i na zdjęciu na początku tematu z tego forum: u mnie dla 2.8A S6 jest OFF, i jest to błąd. A podziały są tak samo, i u mnie tabelka zgadza się z rzeczywistym zachowaniem sterownika - a ponoć dla TB67S109A ma być błąd.

    Pomierzyłem prądy... i wykryłem duże niezgodności - jakkolwiek bez zaburzenia kolejności. Podaję zestawienie prądów nastawiony/zmierzony: 0.5A/0.06A, 1.0A/0.35A, 1.5A/0.60A, 2.0A/0.75A, 2.5A/1.28A, 2.8A/1.28A, 3.0A/1.30A, 3.5A/1.34A. Przy niższym napięciu zasilania ostatnie prądy są większe - ostatni do 1.4A, ale tylko kilka sekund, potem się zmniejsza.

    Pytanie, czy to sprawa samego sterownika, czy również problem z zasilaniem - może kondensator (4700uF) ma za małą pojemność, albo za dużą ESR?

    Czy bit startu i stopu też jest brany pod uwagę? Ile impulsów ma twój silnik na obrót?

    Oczywiście są brane. Silnik ma 200, to jest w opisie - w #1 podałem link.

    masz 8 bitów to w czasie 1 sek możesz wysłać 9600 x 8 bitów

    Nie - wysyłam 960 x 8 (10X mniej) - przecież bajt jest wysyłany jako 10 bitów: start, 8x dane, stop.

    Jakie to napięcie?

    4.33V, jeśli jeden sygnał, 3.94V, jeśli dwa (przy trzech 3.6V, ale wystawienie Enable wyłącza prąd silnika).
  • #68
    TvWidget
    Poziom 33  
    _jta_ napisał:
    Nie - wysyłam 960 x 8 (10X mniej) - przecież bajt jest wysyłany jako 10 bitów: start, 8x dane, stop.

    Przy wybranej prędkości portu COM jako 9600 będziesz miał 960 impulsów na sekundę. Wysyłasz przecież ciągle bajt 0xF0. Czyli generujesz 1 impuls na bajt.
  • #69
    PiotrPitucha
    Poziom 33  
    Witam
    Sterowanie po serialu mija się z celem, nie będziesz w stanie zapewnić wymaganych parametrów impulsów sterujących, chyba bardzo chcesz się namęczyć i nic nie uzyskać.
    Ktoś ci tu już napisał, GRBL i sterowanie G-code.
    Piszesz że masz kłopot z jednym obrotem na sekundę, dziesiątki razy więcej jest do uzyskania po zainwestowaniu kilkunastu złotych w Arduino i wgraniu sterowników GRBL.
    Pozdrawiam
  • #70
    _jta_
    Specjalista elektronik
    Dostałem informację od inżyniera, który projektuje/robi mechanikę Moment bezwładności tarczy wraz z mocowaniem do silnika to ok 4200 kg*mm^2 (czyli 42 kg*cm^2; wirnik silnika ma 0.35 kg*cm^2). Spodziewałem się ponad 2X więcej.

    Bardzo możliwe, że zastosuję zmienną ilość impulsów w bajcie - żeby uzyskać namiastkę płynnego rozpędzania i hamowania. Ale chyba będę musiał ograniczyć się do tego, co się zmieści w FIFO, bo operacje wejścia/wyjścia (zwijanie okna do ikony i rozwijanie, odwołania do dysku) potrafią zakłócić wysyłanie danych z bufora.
  • #71
    TvWidget
    Poziom 33  
    _jta_ napisał:
    Bardzo możliwe, że zastosuję zmienną ilość impulsów w bajcie

    Chyba tylko wysyłanie bajtu 0xF0 lub 0x55 pozwala uzyskać impulsy w równych odstępach. To jest aż pięciokrotna zmiana częstotliwości.
  • #72
    adversus
    Poziom 27  
    elektronikq napisał:
    Od 1 do 5.

    Przykładowo 9600 baude rate oznacza, że sygnał zmienia się 9600 razy. W zależności ile bitów jest przesyłane np.: masz 8 bitów to w czasie 1 sek możesz wysłać 9600 x 8 bitów. To jest bardzo bardzo dużo. W zależności jaki masz podział kroków na driverze i ile impulsów na obrót ma silnik.
    Jeśli silnik utyka bez obciążenia przy wyższych prędkościach moim zdaniem i z obciążeniem jeszcze szybciej utknie.


    Podstawy kolego, podstawy się kłaniaja, zobacz na oscyloskopie ramkę i timingi tej ramki a rozumiesz swój błąd. Tak więc niestety nie, 9600 bodów oznacza że sygnał może się zmienić (a nie zmienia się) 9600, wiec nie mnożysz razy 8 bitów. 9600 bodów w tym przypadku oznacza że można max wysłać 9600 bitów na sekundę. Do tego jeden krok to zmiana z 1 na 0 czyli 2 bity. Zatem 9600 przy sterowaniu pełno krokowym i ustawieniu ramki aby wyglądała 0 10101010 1 da nam 4800 kroków jeśli wszystko masz poprawnie skonfigurowane i sterownik poprawnie reaguje i nie giną po drodze impulsy.

    Obrazowo co to jest 1 bod - polska nazwa tej jednostki :)
    Jak sterować silnikiem krokowym, żeby szybko i dokładnie działał?

    a tu timing ramki 9600 bodów
    Jak sterować silnikiem krokowym, żeby szybko i dokładnie działał?


    _jta_ napisał:
    Zajrzałem kolejny raz do tematu Błedny opis - czarny sterownik TB6600 (TB67S109A) na forum CNC. Stwierdziłem różnicę tabelki u mnie i na zdjęciu na początku tematu z tego forum: u mnie dla 2.8A S6 jest OFF, i jest to błąd. A podziały są tak samo, i u mnie tabelka zgadza się z rzeczywistym zachowaniem sterownika - a ponoć dla TB67S109A ma być błąd.

    Pomierzyłem prądy... i wykryłem duże niezgodności - jakkolwiek bez zaburzenia kolejności. Podaję zestawienie prądów nastawiony/zmierzony: 0.5A/0.06A, 1.0A/0.35A, 1.5A/0.60A, 2.0A/0.75A, 2.5A/1.28A, 2.8A/1.28A, 3.0A/1.30A, 3.5A/1.34A. Przy niższym napięciu zasilania ostatnie prądy są większe - ostatni do 1.4A, ale tylko kilka sekund, potem się zmniejsza.

    Pytanie, czy to sprawa samego sterownika, czy również problem z zasilaniem - może kondensator (4700uF) ma za małą pojemność, albo za dużą ESR?

    Czy bit startu i stopu też jest brany pod uwagę? Ile impulsów ma twój silnik na obrót?

    Oczywiście są brane. Silnik ma 200, to jest w opisie - w #1 podałem link.

    masz 8 bitów to w czasie 1 sek możesz wysłać 9600 x 8 bitów

    Nie - wysyłam 960 x 8 (10X mniej) - przecież bajt jest wysyłany jako 10 bitów: start, 8x dane, stop.

    Jakie to napięcie?

    4.33V, jeśli jeden sygnał, 3.94V, jeśli dwa (przy trzech 3.6V, ale wystawienie Enable wyłącza prąd silnika).


    Aby mieć informację jaki masz sterownik wystarczy zajrzeć do środka a nie dewagować jakie masz tam tabelki i czy się zgadza czy nie, wszystko masz podane na w linkach, podane i opisane. Szukasz jakiejś deski ratunkowej a nóż widelec okaże się że masz oryginał ? Z tego co podałeś link wynika że masz podrabiany TB6600 i nic tego nie zmieni.

    Stwierdzam że kolega ma elementarne braki w wiedzy... nie mówiąc o podstawach miernictwa. Jak Ty mierzysz prąd sterownika ? Odczytujesz nastawy i sprawdzasz ile sterownik pobiera ? Wiesz co to jest "choperowanie" i do czego służy? Wiesz jak działa sterownik i sterowanie silnikiem krokowym ??? Mierzyć powinieneś na cewce silnika i nie miernikiem bo jest za wolny a oscyloskopem. Odnoszę coraz większe wrażenie że brak Tobie podstawowej wiedzy w temacie za który się zabrałeś... Lekceważysz porady kolegów i moje i dalej brniesz i opowiadasz banialuki...
  • #74
    _jta_
    Specjalista elektronik
    adversus - Oscyloskop nie mierzy prądu. A miernik uśrednia. Mierzyłem prąd cewki - miernikiem, średni. Przedtem mierzyłem prąd pobierany - ale tylko dla niektórych nastawień. O działaniu sterownika conieco wiem, niedawno o tym pisałem na forum - przeczytałeś? Nie? To zademonstrowałeś swoją głupotę.

    To, że nie mam TB6600, jest dla mnie jasne i o tym napisałem - rozumiem, że nie umiałeś przeczytać. Podejrzewam, że to może nie być również TB67S109AFTG, tylko coś jeszcze słabszego. Ale co? Zaglądanie do środka pewnie nic nie da, oznaczenia mogą być niedostępne, bądź nieczytelne.

    I jakoś nie widzę, żeby mi przekazano wiele wiedzy, jakiej nie miałem wcześniej. To, że sterownik jest fałszywką, jest taką wiedzą - ale czy coś poza tym? Ktoś - może nie mając takiego zamiaru - naprowadził mnie na pomysł, żeby zmieniać baud rate - może tego użyję, może nie, ale wypróbowałem, jak działa.

    Może niektórym, którzy tu się wypowiadają, trzeba tłumaczyć, co to jest baud rate. A ja uruchamiałem oprogramowanie do przesyłania danych 39 lat temu...
  • #75
    TvWidget
    Poziom 33  
    _jta_ napisał:
    zmieniać baud rate - może tego użyję, może nie, ale wypróbowałem, jak działa.

    Rozpędzanie i hamowanie silnika wymaga odpowiedniej płynnej zmiany częstotliwości impulsów. Nie uda się tego zrobić zmieniając baud rate. To możesz zrobić jedynie skokowo z 1x do 5x.
  • #76
    adversus
    Poziom 27  
    _jta_ napisał:
    adversus - Oscyloskop nie mierzy prądu. A miernik uśrednia. Mierzyłem prąd cewki - miernikiem, średni. Przedtem mierzyłem prąd pobierany - ale tylko dla niektórych nastawień. O działaniu sterownika conieco wiem, niedawno o tym pisałem na forum - przeczytałeś? Nie? To zademonstrowałeś swoją głupotę.

    To, że nie mam TB6600, jest dla mnie jasne i o tym napisałem - rozumiem, że nie umiałeś przeczytać. Podejrzewam, że to może nie być również TB67S109AFTG, tylko coś jeszcze słabszego. Ale co? Zaglądanie do środka pewnie nic nie da, oznaczenia mogą być niedostępne, bądź nieczytelne.



    Oczywiście że oscyloskop nie mierzy prądu, ale pośrednio możesz go zmierzyć na rezystorach pomiarowych w sterowniku właśnie oscyloskopem mierząc spadki napięcia na nich (w zasadzie przebieg napięcia na nim), i na pewno będzie to bardziej precyzyjne niż te średnie pomiary miernikiem który pokarze wynik 3 razy na sekundę, a to co Ty zmierzyłeś to średnia wartość prądu podtrzymania. A wartość prądu dla danego kroku którą ustawiłeś na sterowniku pięknie by pokazał właśnie pomiar oscyloskopem.

    Kolejna rzecz, co po prostu mnie śmieszy to że jesteś pewien że po otwarciu symbol na scalaku będzie starty... Ale tego nie wiesz bo nie sprawdziłeś. To jest zwykłe lenistwo, i nic więcej, i nie tłumacz się pokrętnie, bo zajęło by to 3 minuty, mógł byś tu wrzucić fotkę ku przestrodze ... Ale po co... Sądząc po latach Twojego doświadczenia jak mniemam zawodowego to jesteś osobą starej daty, masz jakąś tam wiedzę ale mierzysz się z problemem który Ciebie po prostu przerasta, a porady masz w d....pie.
    Koledzy pisali że na tym sterowniku nie zrealizujesz w ten sposób zmiennego sterowania praca silnika w pełnym zakresie, ogranicza Cie własnie port RS. Łatwiej to zrealizować na LPT, lub dedykowanym sterowniku który wykluczyłeś bo za drogi (nie ma pewności czy zadziała). Poradził ktoś zrobienie kontrolera na Arduino, i pewnie byś nawet znalazł jakieś gotowe biblioteki do tego trzeba trochę wysiłku w to włożyć, koszta śmieszne najtańsze Arduino na Alledrogo poniżej 10 pln plus trochę czasu, możliwości prawie nieograniczone. Wskazujemy Ci kierunek rozwiązań, miejsca poszukiwań rozwiązań, bo gotowca nikt za Ciebie nie zrobi, a na pewno nie za darmo.

    Przejrzałem Twoje posty, kolego jesteś informatykiem może i dobrym (choć po tym co tu wypisujesz śmiem wątpić) i może masz wiedzę z zakresu elektroniki ale niestety tylko czysto teoretyczną. Osoby które próbowały Ci pomóc to praktycy, nie teoretycy. Wszystko w temacie, bo nie dasz sobie pomóc. I daruj sobie te teksty o głupocie, bo to tylko pokazuje Twój poziom.

    Widzę że naprawdę się Tobie nie chce szukać, poświeciłem 10 minut na forum CNC i znalazłem temat o rampach na Arduino, środowisko darmowe, a najprostsze Arduino do testów to koszt ponizej 10pln. Po prostu lenistwo i czekanie na gotowe rozwiązania...
    ale proszę bardzo: [url=]https://www.cnc.info.pl/rampa-na-arduino-t35799.html[/url]
    kolejny: [url=]https://www.cnc.info.pl/silnik-krokowy-arduino-jak-wywolac-sekwencje-krokow-t72563.html[/url]
  • #77
    _jta_
    Specjalista elektronik
    Uważasz, że prąd uzwojenia przy zatrzymaniu silnika jest inny, niż przy ruchu? Mam wrażenie, że według opisu TB6600 powinien być taki sam, i pewnie tak samo jest dla układu, którego tam użyto.

    A poza tym, najpierw chcę ustalić potrzebne parametry sterowania, a potem decydować, jaką wybrać technikę ich uzyskania - a tu widzę wskazania, jak robić to drugie - dla mnie zaczynanie od tego drugiego jest stawianiem sprawy na głowie.

    Aha, ten pierwszy link, który podałeś, został podany pod tym drugim (w #2).

    Jak ktoś potrafi, to prosiłbym o sprawdzenie wyliczenia rezonansu. Dane wyjściowe: moment bezwładności wirnika Ir=0.35 kg*cm2=35*10^(-6) kg*m2; dla nominalnego prądu 8.5A zależność momentu siły od kąta obrotu M(α )= 6*sin(α*50) N*m; w punkcie równowagi pochodna momentu siły po kącie obrotu dM(α )/dα=300 N*m; częstość ω=2π*f=√((1/Ir))*dM(α )/dα ), więc f=ω/2π=√(300/35)/2π kHz=466 Hz; dla prądu 0.6A 124 Hz; dla 0.06A 39 Hz.

    Z tym, że te wyniki są przy założeniu, że prąd płynie przez tyle samo uzwojeń, dla ilu podano moment siły silnika, a to chyba nie jest prawda... ten sterownik po włączeniu puszcza podany prąd przez oba uzwojenia, a producent pewnie podał dla jednego i częstotliwości trzeba pomnożyć przez √√2=1.19.
  • #78
    _jta_
    Specjalista elektronik
    Jeśli można liczyć na to, że nie będzie opóźnień wysyłania poprzez port szeregowy (takie opóźnienia powstają, kiedy aplikacja nie zdąży wysłać danych do bufora systemu, albo system do FIFO portu), to widzę sposób. Najpierw ustawia się niski baud rate, i wysyła bajty FF (jeden impuls na bajt); następnie, kiedy już kilka bajtów poszło "na drut", podnosi się baud rate (można kilka razy), i dalej wysyła bajty FF, potem co któryś bajt EF, stopniowo zwiększając ich częstotliwość, aż będą szły same EF, potem EF stopniowo zastępuje się np. przez B7, następnie wprowadza się 6B ('k'), i na koniec 55 ('U') - w ten sposób od ustawienia najwyższego używanego baud rate zwiększa się częstotliwość impulsów o czynnik 5. To można stosować przy mikrokroku, bo impulsy nie są w równych odstępach czasu i przy pełnym kroku.

    Jeśli ma być pełny krok, to bez zmieniania baud rate można wysłać sekwencję: FF DF B7 5B (a może 6B?) 55 B5 DB F7 FF FF (binarnie ...1 0[11111111]1 0[11111011]1 0[11101101]1 0[11011010]1 0[10101010]1 0[10101101]1 0[11011011]1 0[11101111]1 0[11111111]1 0[11111111]1..., w [] bajty, poza [] bity start/stop), to 10 bajtów, zmieszczą się w FIFO (więc nic nie przerwie ich wysyłania), 26 impulsów, można dodać ze 4 bajty i uzyskać do 51 impulsów, można pominąć bajt 55 i mieć ich 21. Na ułamkowy krok to będzie za szybkie rozpędzanie, a ponad 51 impulsów będzie wymagało pewności, że system nadąży z wysyłaniem dodatkowych bajtów do FIFO (do 14 bajtów system ładuje od razu). To pozwala na ruch ze średnią szybkością do 3.5X większą, niż wysyłanie impulsów w równych odstępach czasu, a szybkość nie zmienia się szybciej (zmiana o 1 impuls na 10 cykli zegara baud rate)... jakkolwiek może być problem, przy równych odstępach czasu silnik może łatwiej nadrobić opóźnienie.

    A częstotliwość rezonansu mi wyszła ciut powyżej 40Hz przy 0.06A (teoria: 39) i jakieś 88Hz przy 0.35A (teoria: 95).
  • #79
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #80
    _jta_
    Specjalista elektronik
    To mi daje stosunek maksymalnej i minimalnej szybkości taktowania 5:1 - może to wystarczy, żeby zmieścić się w czasie. Uzyskanie wyższego stosunku wymaga manipulowania baud rate na początku, oraz (jeśli to robię aplikacją pod Windows) mikrokroków, żeby niedokładne trafienie z czasem impulsu nie powodowało zakłóceń. Pod DOS-em mógłbym zmieniać baud rate w dowolnie wybranym czasie, albo precyzyjnie odmierzać czas na porcie drukarki, ale pod Windows trafianie we właściwy czas wyjdzie dużo gorzej.
  • #81
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #82
    adversus
    Poziom 27  
    Art.B napisał:
    Nigdy się tym dokładnie nie interesowałem, ale może warto by sprawdzić, jak dostęp do LPT jest zrealizowany np. w Mach3. Działa to dobrze, umożliwia precyzyjną kontrolę ramp, więc może warto skopiować działające rozwiązanie?


    Wielokrotnie w tym temacie pisałem o porcie LPT, Mach3 właśnie z tego korzysta, ja natomiast (nie wiem jak inni "elektrodowicze", nigdy nawet nie słyszałem o sterowaniu silnikiem z portu RS nie wspominając już że kiedyś spotkałem się z takim typem sterowania - mówimy o profesjonalnym sterowaniu a nie o amatorskich rozwiązaniach (owszem wysyłanie do zaawansowanego sterownika bajtów z danymi a on na ich podstawie dokonywał obliczeń i sterował szybkością, rampami itd). Autor tematu jest uparty, jak widać dobrze zna obsługę RS i będzie brnął w te stronę. Port LPT do sterowania silnikami krokowymi jest idealny bo zaimplementowana w bios obsługa pozwala na bardzo precyzyjne sterowanie czasami i impulsami bez względu (w pewnych granicach oczywiście) na obciążenie systemu (przez jakieś tam aplikacje, oczywiście komputer optymalizowany do CNC ma zainstalowane minimum plus program obsługi obrabiarki aby właśnie wykluczyć jakiekolwiek opóźnienia.

    Te częstotliwości rezonansowe też wyszły jakoś trochę kosmiczne wg mnie. Mam nadzieję że autor tematu opisze jak w końcu postanowił rozwiązać sterowanie tym silnikiem i jak to się sprawdza w "praniu".
  • #83
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #84
    elektronikq
    Poziom 24  
    960? Przecież 9600 baude to 9600 razy na sekundę. Dlaczego tak?
    Poza tym 960x10 bo przecież wysyłasz 10 bitów?
  • #85
    adversus
    Poziom 27  
    elektronikq napisał:
    960? Przecież 9600 baude to 9600 razy na sekundę. Dlaczego tak?
    Poza tym 960x10 bo przecież wysyłasz 10 bitów?


    Wyjaśniłem już Tobie łącznie z obrazkami, autor się oburzył że piłem do niego...
    Po pierwsze jednostka ta ma swoją polską nazwę "BOD", więc przestań pisać nie po polskiemu i to jeszcze z błędem...,
    elektronikq napisał:
    Bod (ang. Baud) – miara określająca prędkość transmisji sygnału (liczbę zmian medium transmisyjnego na sekundę) w zmodulowanym sygnale. Nazwa pochodzi od nazwiska Émile Baudot – twórcy telegraficznego kodu Baudot.

    po drugie kolego elektronikq, kłaniają się podstawy, 1 bod tu = 1 bit .
  • #86
    _jta_
    Specjalista elektronik
    Port LPT do sterowania silnikami krokowymi jest idealny bo zaimplementowana w bios obsługa pozwala na bardzo precyzyjne sterowanie czasami i impulsami bez względu (w pewnych granicach oczywiście) na obciążenie systemu

    A to ja nie znam takiej możliwości, możesz podać jakieś konkretne informacje, bądź namiary na takie?

    do głowy by mi nie przyszło robić od zera coś, co za kilkaset PLN można kupić gotowe

    Na wydanie kilkuset złotych trzeba by uzyskać zgody paru osób... albo płacić samemu. Ja też nie rozumiem, dlaczego u nas tak to funkcjonuje.
  • #87
    TvWidget
    Poziom 33  
    Płytka z portem USB lub COM i rozbudowanym zestawem rozkazów służących do jednoczesnego sterownia trzema silnikami krokowymi kosztuje około 35 zł. Załatwia ona problem rozpędzania, hamowania, walki opóźnieniami w działaniu programu itp.
  • #88
    _jta_
    Specjalista elektronik
    Na razie sprawdzę, jak będzie działać bez niej (niestety, nieprędko - inżynier, który robi konstrukcję mechaniki, powiedział dziś, że w przyszłym tygodniu nie zdąży) - jak niezbyt zadowalająco, to zaproponuję taką płytkę. Ale ja tu nie jestem decydentem, ja tylko programuję komputer. Możesz podać namiar na informację o tej płytce?
  • #89
    TvWidget
    Poziom 33  
    Jeśli ma być wersja lux z USB to poszukaj pod hasłem np. "Arduino MEGA 2560" i "ramp adruino". Te dwie płytki łączy się razem. Czasem sprzedają je w komplecie. Potrzebujesz jednak tylko tą pierwszą z firmware do "ramp adruino".
    Tego typu płytki są powszechnie stosowane w drukarkach 3D. Wcześniej podałem link z opisem protokołu komunikacyjnego i sposobem podłączenia.
  • #90
    adversus
    Poziom 27  
    _jta_ napisał:
    Port LPT do sterowania silnikami krokowymi jest idealny bo zaimplementowana w bios obsługa pozwala na bardzo precyzyjne sterowanie czasami i impulsami bez względu (w pewnych granicach oczywiście) na obciążenie systemu

    A to ja nie znam takiej możliwości, możesz podać jakieś konkretne informacje, bądź namiary na takie?



    Nie wiem czy to lenistwo czy co... Przykład pierwszy z brzegu
    [url=]http://tomeko.net/other/lpt_winxp/lpt_winxp.php?lang=pl[/url]