servo gubi pozycje

Rozmowy na temat układów elektronicznych sterowania obrabiarek CNC

Autor tematu
etet100
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 569
Rejestracja: 24 lut 2008, 12:40
Lokalizacja: Rybnik
Kontakt:

servo gubi pozycje

#1

Post napisał: etet100 » 14 paź 2012, 22:15

Witam. Już pisałem chyba z 2 lata temu o tym i do tej pory nie udało mi się rozwiązać problemu.

Mam sterowniki wg schematu:

http://brak-tu-sensu.pl/upload/SERVO3_sch.pdf
z
http://www.cnczone.com/forums/open_sour ... oller.html

Początkowo wydawało mi się, że wszystko działa super ale jednak servo przy obciążeniu potrafiło szaleć. Robiłem milion prób z różnymi wartościami rezystorów podciągających, kondensatorami, filtrami, zasilaczami, kablami i tak dalej i coś tam to pomogło ale nie do końca. W końcu poszedłem jeszcze dalej i zupełnie oddzieliłem część cyfrową od części mocy. Pomiędzy procesorem a driverami ir2184 są szybkie transoptory. Kolejne dziwne efekty ustały ale dalej jest jakiś problem. Testuje to poprzez program servo tunning - zeruje pozycje silnika, wykonuje jakiś program w aplikacji sterującej i po powrocie na 0,0 sprawdzam czy pozycja w sterowniku też wróciła na 0. Niestety zauważyłem, że ta pozycja co jakiś czas się zeruje. Sterownik wysyła wtedy jakieś niezrozumiałe komunikaty (dziesiętnie):

8,149,200,149,49,150 << 150 na końcu oznacza błędną komende

lub

18,192,120,194,16,192,15,192,14,192,13,192,12,192,11,192

i przy następnym odczycie stan licznika jest już nieprawidłowy. W żadnym miejscu kodu nic takiego nie jest wysyłane. Wygląda to jak jakieś śmieci ale jest dziwnie powtarzalne.

Pewnie zamieszałem ale może ma ktoś pomysł o co może chodzić ??



Tagi:

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 7888
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#2

Post napisał: tuxcnc » 15 paź 2012, 00:06

Ten układ jest jakiś popieprzony.
Na wejściu z enkodera są komparatory, a powinny być bramki Schmidta.
Sygnał STEP idzie na INT0 i prawidłowo, ale INT1 jest niewykorzystany, a powinien być wejściem wykrywania zboczy enkodera.
To taki prosty układ na dwóch bramkach EX-OR.
Nie chce mi się rysować, ale to naprawdę nic skomplikowanego.
Wyjścia A i B z enkoderów przez bramki 74x14 idą sobie gdzieś do procka i równocześnie na wejścia pierwszej bramki 74x86.
Stan na wyjściu bramki zmienia się na przeciwny po dowolnym zboczu na dowolnym wyjściu enkodera.
Wyjście tej bramki idzie na wejście drugiej.
Wyjście drugiej idzie na wejście przerwania procka, a drugie wejście drugiej bramki na któreś wyjście procka.
Program obsługi przerwania zmienia stan na tym wyjściu, czyli odwraca sygnał na wyjściu drugiej bramki.
Działa to w sumie tak, że dowolna zmiana dowolnego wyjścia enkodera powoduje takie samo zbocze na wejściu INT procesora.
Tak więc dowolne zbocze z enkodera wyzwala przerwanie i zarówno liczenie jak i rozpoznawanie kierunku jest dziecinnie proste.
To jest pełna obsługa kwadratury z maksymalną możliwą częstotliwością.

Cóż, jak schemat jest do du**, to i pewnie program tak samo.

.


Autor tematu
etet100
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 569
Rejestracja: 24 lut 2008, 12:40
Lokalizacja: Rybnik
Kontakt:

#3

Post napisał: etet100 » 15 paź 2012, 08:26

tuxcnc pisze:Ten układ jest jakiś popieprzony.
Nie mniej ten i kilka jego modyfikacji wielu osobom działa (a przynajmniej tak wynika z tego co piszą na forach).

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 7888
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#4

Post napisał: tuxcnc » 15 paź 2012, 16:54

Wiesz, niektórzy mają małe wymagania, a inni żyją w błogiej nieświadomości że coś jest nie tak.
Ten układ już w założeniu jest wadliwy, skoda życia na jego uruchamianie.
Jeśli czujesz się na siłach, to przerób wejście tak jak opisałem i napisz własny program.
Jeśli nie, to zamiast rzeźbić w gównie idź do jakiejś pracy i za zarobione pieniądze kup gotowy sterownik przyzwoitej firmy.


Autor tematu
etet100
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 569
Rejestracja: 24 lut 2008, 12:40
Lokalizacja: Rybnik
Kontakt:

#5

Post napisał: etet100 » 15 paź 2012, 18:26

tuxcnc pisze:Wiesz, niektórzy mają małe wymagania, a inni żyją w błogiej nieświadomości że coś jest nie tak.
Ten układ już w założeniu jest wadliwy, skoda życia na jego uruchamianie.
Jeśli czujesz się na siłach, to przerób wejście tak jak opisałem i napisz własny program.
Jeśli nie, to zamiast rzeźbić w gównie idź do jakiejś pracy i za zarobione pieniądze kup gotowy sterownik przyzwoitej firmy.
Ja chyba szukam kogoś kto z tym sterownikiem miał jakieś doświadczenia a nie teoretyka/moralizatora.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 7888
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#6

Post napisał: tuxcnc » 15 paź 2012, 18:32

Wiesz co, jakoś zechciało mi się narysować.
A i B to sygnały enkodera, INT sygnał przerwania do procka, a ACK to ten sygnał, którego stan procedura obsługi przerwania zmienia na przeciwny.
Czyli zmiana stanu INT oznacza dowolną zmianę wyjść enkodera, zanegowanie ACK przywraca poprzedni stan INT, a A i B są wczytywane, żeby sprawdzić co się zmieniło od poprzedniego razu.
Trudno sobie wyobrazić coś prostszego i bardziej niezawodnego.
Ten układ reaguje na każde zbocze i jak niczego nie popieprzysz w programie, to nie masz prawa zgubić nawet jednego impulsu.
To jest pełna kwadratura i możesz sobie kręcić w tę i nazad milion razy, a nie stracisz informacji o położeniu.
Obrazek
A na układ który sygnały z enkodera zlicza w liczniku jednokierunkowym szkoda życia.

.


Autor tematu
etet100
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 569
Rejestracja: 24 lut 2008, 12:40
Lokalizacja: Rybnik
Kontakt:

#7

Post napisał: etet100 » 17 paź 2012, 08:31

Nie mam niestety na to za dużo czasu (bo pracuje) ale zauważyłem, że

18,192,120,194,16,192,15,192,14,192,13,192,12,192,11,192

to po prostu początek flasha.

Wygląda jakby program wykonywał WriteUARTString bez ustawienia
prawidłowego wskaźnika na dane do wysłania. W żadnym miejscu
kodu nie widze żeby coś było czytane z pamięci programu.


Autor tematu
etet100
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 569
Rejestracja: 24 lut 2008, 12:40
Lokalizacja: Rybnik
Kontakt:

#8

Post napisał: etet100 » 19 paź 2012, 11:10

Dobra. Poprawiłem błąd z gubieniem zawartości rejestru Z po resecie z watchdoga i zwiększyłem czas (chociaż 32ms to i tak było za dużo).

Po godzinie męczenia go nie zgubił pozycji.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”