servo gubi pozycje
-
Autor tematu - Specjalista poziom 2 (min. 300)
- Posty w temacie: 5
- Posty: 569
- Rejestracja: 24 lut 2008, 12:40
- Lokalizacja: Rybnik
- Kontakt:
servo gubi pozycje
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ć ??
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:
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
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.
.
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.
.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
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.
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 - Specjalista poziom 2 (min. 300)
- Posty w temacie: 5
- Posty: 569
- Rejestracja: 24 lut 2008, 12:40
- Lokalizacja: Rybnik
- Kontakt:
Ja chyba szukam kogoś kto z tym sterownikiem miał jakieś doświadczenia a nie teoretyka/moralizatora.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.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
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.

A na układ który sygnały z enkodera zlicza w liczniku jednokierunkowym szkoda życia.
.
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.

A na układ który sygnały z enkodera zlicza w liczniku jednokierunkowym szkoda życia.
.
-
Autor tematu - Specjalista poziom 2 (min. 300)
- Posty w temacie: 5
- Posty: 569
- Rejestracja: 24 lut 2008, 12:40
- Lokalizacja: Rybnik
- Kontakt:
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.
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.