Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
TermopastyTermopasty
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Robot - manipulator sterowanie z LPT

24 Mar 2007 23:21 12181 26
  • Level 11  
    Witam
    Przedstawiam moją konstrukcję ( Inżynierska praca dyplomowa, już po obronie a maszyna stoi w laboratorium automatyki i robotyki ) . Dla kogoś, kto chciałby coś takiego skonstruować służę pomocą.

    Krótko na temat tego co na zdjęciu:

    Sterowanie z portu LPT
    Mechanizmy wykonawcze razem z elektroniką sterującą własnej konstrukcji. ( Tu dla zainteresowanych umieszczę schematy i zdjęcia )
    Silniki prądu stałego
    Czujniki optyczne
    Konstrukcja popularna - laminat z cyną + trochę śrubek :-) .
    Materiały do budowy : podajniki do drukarek laserowych, popularne elementy elektroniczne
    Oprogramowanie delphi
    Istota działania wysyłanie liczby (odpowiadającej pozycji ) w postaci ciągu
    impulsów z portu LPT do podstawy robota gdzie zgromadziłem całą elektronikę
    Diody w podstawie ( podstawka od monitora CRT ) informują o stanie mechanizmów oraz wybranej prędkości ruchu
    [30.03.2021, darmowy webinar] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • TermopastyTermopasty
  • Level 14  
    Witam! Bardzo udana i przemyślana konstrukcja, naprawdę jest się czym pochwalić :) Chciałbym też kiedyś coś takiego wykonać, ale jak narazie to nawet nie wiem na jakiej zasadzie działa mostek-h. Mam nadzieje że na mnie w przyszłości będą czekały takie zabawki... ale jak narazie męczę się w technikum na wynędzniałym sterowniku PLC który wyłącza się średnio po 5 minutach pracy... i na tym kończy się moja przygoda z automatyką w szkole . Oby ta droga przez mękę została kiedyś wynagrodzona, bo na prawdę chciałbym kiedyś zobaczyć coś takiego na żywo.

    Pozdrawiam
  • Level 11  
    W przypadku tego robota mostek dla jednego silnika załączam poniżej a żeby nie było nudno dokładam układ hamowania - bo jak wiadomo układ - wirnik silnika + przekładnie mają swoją bezwładność . Trochę czasu mnie to kosztowało ale efekt bardzo ciekawy ( mowa o hamowaniu sinika DC ) jak przesadzimy z układem RC ( czas rozładowywania C ) to silnik zachowuje się jak sprężyna :-) Jest to hamowanie przeciw prądem - po zakończeniu pracy podajemy napięcie odwrotnie itd ...
  • Level 18  
    bardzo fajna maszynka podoba mi się :) Ciekaw jestem jak jest z dokładnością i wyczuciem w sterowaniu. Czy da rade przenieść tym np jajko?
    Nie wiem tylko czy można nazwać to robotem, skoro steruje je osoba za pomocą komputera. :roll:
  • TermopastyTermopasty
  • Level 14  
    Minner wrote:

    Nie wiem tylko czy można nazwać to robotem, skoro steruje je osoba za pomocą komputera. :roll:


    No, wydaje mi się że jak narazie nie odkryto sztucznej inteligencji. :)

    Skoro to ramie jest sterowane przez port LPT, to wydaje mi się że bez problemu można napisać odpowiedni program do sterowania robotem, polegający na przykład na wykonywaniu jakiejś monotonnej pracy. I już w tedy żaden człowiek nie będzie mógł nim sterować.

    Swoją drogą to widziałem podobnego robota na Discovery w programie "How it's made" :D Oczywiście była to maszynka seryjna.

    A no właśnie Tomek023, jak jest z wyczuciem w tym przypadku. Ten układ hamowania na pewno znacznie poprawia dokładność ruchów.
  • Level 18  
    krzysiek011001 wrote:
    No, wydaje mi się że jak narazie nie odkryto sztucznej inteligencji. :)

    a co przyjmujesz za definicję inteligencji?
  • Level 14  
    Myślę że dyskusja o inteligencji jest zbędna, po prostu zdziwiłem się że nie chcesz uznać tej maszyny za robota, bo kwestionujesz to w swoim poście, nieprawdaż?
  • Level 11  
    Nazwać można robotem choćby dlatego że może wykonywać jakąś nudną mozolną pracę nie wykazując zmęczenia , niechęci , głowa go nie będzie boleć itd. np podnoszenie pustej puszki od piwa na wysokość kilku cm , puszczanie (przy tyn charakterystyczny brzęk) i znów podnoszenie .... siedzisz sobie w kuchni i słyszysz z daleka że robot nie rezygnuje :-) .

    Jeśli pobraliście plik (zrzut ekranowy ) z wyglądem programu po prawej stronie macie pola edycyjne - wpisanie w dane pole danej cyfry odpowiedniej dla zadanej pozycji robota , będzie odtwarzane cyklicznie wedle rosnącej liczby zegarowej . krótko program wysyła do robota całe wiersze ( z liczbami ) od góry zaczynając , a do czego można się odwołać i co ustawić widać na zrzucie.

    po prawej macie wizualizację graficzną ( można bez podłączania robota sprawdzić poprawność działania tryby sekwencyjnego ) .

    Jajko owszem ale chwytak musiał by mieć fizyczną możliwość jego utrzymania ( większa bardziej elastyczna powierzchnia )

    Co do dokładności jest ona związana nie tyle z mechanizmami ile z konstrukcją ( luzy ) jak taka maszyna rozłoży ramię na maksymalną długość ( tworzy się dźwignia ) to nawet podstawa się potrafi ugiąć
    toteż uprzedzam przyszłych konstruktorów co do dobrego łożyskowania osi obrotu .
  • Level 10  
    Panowie.
    Czy ktoś wie jak przeliczyć współrzędne dla takiego robota. XYZ na kąty poszczególnych ramion.
    Robię coś takiego - tylko w poziomie (pantograf do rysowania). Programuję w DELPHI.
  • Level 11  
    Poniżej zamieszczam materiały akurat od tej maszyny , obliczenia w Delphi + kawałek kodu :

    kat_2:=0;
    obl_0:= ((sqr(153)-sqr(89+(x*0.5))-sqr(87))/174) ;
    obl_2:=((obl_0+87)/153);
    repeat
    kat_2:=kat_2+0.001;
    warto_2:=cos(kat_2*pi/180);
    until warto_2< obl_2;
    wys_pol:=sin(kat_2*pi/180)*153;
    odleglosc_2:=(cos((kat_2+42.5)*pi/180)*244)*(-1);
    wysokosc_2:=(sin((kat_2+42.5)*pi/180)*244); Label11.Caption:=FloatToStr(round(odleglosc_2));
    Label10.Caption:=FloatToStr(round(wysokosc_2));

    dane liczbowe są z opis mat.
    Obliczenia są do płaszczyzny XY dla "Z" trzeba by było wprowadzić kąt obrotu i odpowiedni przelicznik
  • Level 10  
    Dzięki Tomek 023.
    Będę walczył po Świętach.
    Może zrobię symulację w OpenGL - #D
    Wesołeho jajka.
  • Level 14  
    Pochwal się tą konstrukcją w dziale DIY, bo na prawdę warto.

    Pozdrawia, wesołych świąt.
  • Level 10  
    Zamieszczam program do symulacji robota.
    Robot - manipulator sterowanie z LPT
    Instrukcja:
    Widok obracamy z wciśniętym przyciskiem myszy,z klawiszem Shift - zmiana punktu obrotu.
    Powięszanie i pomniejszanie widoku - scroll myszy.
    Dla tych którzy nie mają kółka na myszy: przyciski z lupkami lub szary +i-, Esc - widok 1:1
    Reszta jest chyba prosta.

    Program nie jest symulacją konkretnej maszyny,a tylko modelem matematycznym potrzebnym mi
    do poznania mechaniki tego typu robotów (sterowanie przez obrót osi, a nie XYZ).
    Nie ma wyłączników krańcowych, bo maszyna jest wirtualna i nic nie uszkodzi.
    Oczywiście mógłbym dodać jeszcze kilka węzłów swobody do obracania w pionie itd.
    ale robię pantograf do rysowania na płaszczyźnie i to mi wystarcza.
    Automat kręci się bez sensu, ale można się pobawić ręcznie (dolny pasek).
    Obroty osi są o 1 st. Podawanie np. 0,01 st. znakomicie poprawia precyzję, ale kosztem prędkości.

    Wnioski po zabawie z tą karuzelą:
    1. Trzeba opanować euklidesowy układ współrzędnych,
    patrz http://pl.wikipedia.org/wiki/Sferyczny_uk%C5%82ad_wsp%C3%B3%C5%82rz%C4%99dnych
    2. Wszelkie obliczenia na macierzach,
    polecam stronę http://wazniak.mimuw.edu.pl/index.php?title=G...u%C5%82_4_-_Przekszta%C5%82cenia_geometryczne
    3. Mało przełożeń.
    4. Silniki o dużej ilości kroków na obrót + sterowanie półkrokowe lub mniej.
    5. Mniejsza moc, większa prędkość.
    6. Nauka robota: ręczne przestawianie ramion z zapamiętywaniem pozycji w czasie rzeczywistym, a nie podawanie kolejnych parametrów.


    I po Świętach.
    Attachments:
  • Level 10  
    Pytania do Tomka023:
    1. Jaka jest precyzja na końcu ramienia.
    2. Jaka jest max prędkość (liniowa).
    3. Dlaczego użyłeś silników DC (kłopoty z hamowaniem).
    4. Możesz pokazać schematy sterowania.
    5. Ile linii kodu (i czasu) musiałbyś użyć żeby ten robot nalał z puszki piwa.

    Dzięki za inspirację.
  • Level 11  
    Parametr maszyny Wartość
    Maksymalny wysokość 542 mm
    Maksymalny zasięg 457mm
    Kąt obrotu 160°
    Rozdzielczość siłowników ramion i obrot 256 kroków
    Precyzja siłowników ramion / obrót 0,5mm/0,62°
    Napięcie zasilania centrali sterowania 5V
    Napięcie robocze siłowników ramion i obrotu 5V / 12V max 24V
    Napięcie robocze siłownika szczęk chwytaka 5V
    Czas max obrotu dla zakresu 5V/12V 40s / 15s
    Czas max wychylenia ramion dla zakresu5V/12V 40s / 15s
    Czas max pracy przy zamkniętych szczękach 5 min
    Max rozwarcie szczęk 95mm
    Powtarzalność procesu w trybie sekwencji +-2mm

    Ostatni parametr może być nie zadowalający ale jako konstruktor przyjąłem taką wartość za właściwą - nieprzekraczalną .


    Silniki DC - oczywiście najłatwiej było by zastosować gotowe serwomechanizmy lub odpowiednie dla tego typu maszyn silniki krokowe zniknęło by wiele problemów, ale też przyjemność z ich pokonywania . Dalej ... Maszynę budowałem pod kontem łatwego zrozumienia działania ( praca dydaktyczna ) wszystko jest na wierzchu , wręcz widać jak mechanizm zlicza impulsy , mało tego jak zerknąć na schemat jakie elementy wykorzystałem wszystko sie wyjaśni :-) .

    Co do linii kodu.... Nie da się jednozancznie odpowiedzieć na to pytanie ponieważ mam w swoim programie tryb sekwencyjny. Gdzieś tam wyżej pisałem jak działa, nie podałem tylko jak prosto się programuje bez wpisywania liczb w pola :
    1.Ustawiamy maszynę na pozycji startowej za pomocą suwaków sterowania manualnego -> klikamy dodaj na panelu "Zapis aktual..."
    2. Kolejna pozycja -> dodaj
    3. i tak po kolei
    4. Uruchamiamy sekwencję -> robot wykonuje dokładnie to co przed chwilą robiliśmy manualnie.

    Liczba linii kodu się nie zmieniła i nie będzie zmieniać nie zależnie od tego ile wprowadzimy kroków sekwencji. Program "przelatuje" tabelę a winiki rzuca na sterowanie manualne - korzysta z gotowej dla sterowania manualnego części kodu.

    Kod podam przy następnej okazji. Choć wpierw musiał bym dokładnie wyjaśnić jakie sygnały są potrzebne na LPT komputera by coś z niego wyłuskać.

    Dodałem jeszcze widok płytki kompletnego sterowania jednym silnikiem.
  • Level 10  
    To mi wystarcza.
    Za mała precyzja- potrzebuję 0,01 mm na pisaku.
    Za wolne - 15s na narysowanie kreski?
    Zbyt rozbudowana elektronika.
    Mam inną koncepcję.
    Warto było poświęcić trochę czasu na program do symulacji.

    Pozdrawiam
  • Level 11  
    Ja walczyłem z kompromisem precyzji i siły , oraz zmiennymi naprężeniami i dźwigniami . Nie trudno sie domyślić ze precyzja gdy szczęki są przy samej podstawie jest o niebo większa, niż gdy są oddalone maksymalnie. A by określić błąd ruchu - trzeba podać największy jaki występuje w skrajnych warunkach.
  • Level 17  
    ja proponuje jeszcze zamontować kamerkę i długi kabel moze jeszcze być jazda tzn zamontoj kola albo gazienice i jakies oswietlenie bo masz kabel komputerowy i mozesz kamerke. Polecam mala macna diode i oddzielny przełącznik np polaczyć diode do bateri i w jednym kablu zamontować przełącznik da sie żyć i bedzie większy efekt w nocy z daleka
  • Level 10  
    Znalazłem rozwiązanie problemów, które opisywałem wyżej - servo-motory.
    Nawet do 10000 działek na obrót, duża moc i prędkość.
    Wychodzę z tego forum bo moderator skasował moje posty w innych tematach, Chłopie powiedz adminowi że wyszukiwarka nie działa
    Powodzenia
  • VIP Meritorious for electroda.pl
    Moderator skasował cały temat, nie tylko Twój post, a o swoich problemach z wyszukiwarką możesz powiedzieć administratorowi sam.
  • Level 10  
    witam
    zamieścisz wzór płytki
  • Level 13  
    Właśnie coś takiego chciałbym skonstruować ale nie wiem jak napisać program sterujący portem lpt albo RS. Mógłbyś zamieścić całą dokumentacje tego projektu
  • Level 10  
    Niedawno zacząłem przygodę z LPT i o ile w Pascalu nie mam problemu ze sterowaniem tym portem to w Delphi nie potrafię zrobić z LPT cokolwiek. Mógłby ktoś umieścić program i kod programu ze sterowaniem LPT w Delphi. Coś jak to do tego robota, ale wystarczy tylko: np.:D1- jest sygnał, D2- jest sygnał itd.
  • Level 11  
    Uprzedzam że pod XP nie będzie to poprawnie działać - pracowało to w 98


    procedure W(portvalue, datavalue:word);
    begin
    datavalue := (datavalue * 256) + datavalue;

    asm
    mov ax,datavalue
    mov dx,portvalue
    out dx,al
    end;

    by wysłać na port np 1 ( odpowiednik stanu H na pierwszym pinie portu ) :

    w($378,1);

    np 5

    w($378,5); ( pierwszy pin , trzeci pin stan H )

    itd dokumentacja cała to hhm kilkadziesiąt stron :-) także mogę umieścić szczegóły , na dzień dzisiejszy zrobił bym to z mikrokontrolerem
  • User removed account  
  • Level 39  
    Przecież to praktycznie przemalowany schemat R2D2 jedynie mostek H zastąpiłeś driverami dla silnika unipolarnego tak jak silniki 1-3 , układ będzie działał tylko z programem dla R2D2 chyba że napiszesz swój z takim samym algorytmem sterowania .