Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 15.07.2006 we wszystkich miejscach

  1. 81 punktów
    Ze względu na spore problemy początkujących związane z budową tzw. "Waldemara Światłoluba", postanowiłem zaktualizować informacje ze starego artykułu (znajdującego się pod tym samym adresem), poprawić błędy w nim zawarte, wzbogacić treść o większą liczbą zdjęć i schematów oraz zamieścić FAQ obejmujące najczęściej pojawiające się pytania. Do wszystkich czytających mam dużą prośbę - zanim napiszecie post z opisem problemu, jeszcze raz starannie przeanalizujcie ten tekst. Na 90%, odpowiedź na dany problem została już udzielona w samym artykule lub na forum, dlatego pamiętaj, aby używać wyszukiwarkę. Przypominam również, że nie jest to kurs podstaw elektroniki! Przed rozpoczęciem jakichkolwiek prac, proszę o dokładne zapoznanie się z tym wcześniej przygotowanym poradnikiem, który wyjaśnia wiele kwestii niezrozumiałych dla początkujących oraz o zastosowanie się do zawartych tam wskazówek. W przypadku pytań, proszę także skierować swoją uwagę na FAQ dla zielonych! Życzę miłej lektury, Damian Nowak (Nawyk) [blog]https://forbot.pl/blog/artykuly/podstawy/jak-zrobic-robota-od-zoltodzioba-do-pierwszego-swiatloluba-id4785[/blog] PCBs.pdf
  2. 64 punktów
    Konstrukcja linefollowera jest oparta o laminat szklano-epoksydowy stanowiący jednocześnie płytkę drukowaną elektroniki. Konstrukcja przystosowana jest również do jeżdżenia po torach z przeszkodami. Robot posiada możliwość regulowania wysunięcia czujników linii, jak również wysokość czujników nad torem. Sterowany jest nowoczesnym mikrokontrolerem ATXmega128A1. Silniki pozwalają robotowi osiągać prędkości ponad 1,5m/s co stawia go w czołówce najszybszych polskich robotów typu Lf. Oryginalny design wraz z efektami świetlnymi powoduje, że robot świetnie się prezentuje na torze. Przedstawiam robota klasy Linefollower, którego wykonałem razem z TIMONKiem. Jak wszystkie moje konstrukcje robot po ustaleniu koncepcji i wszystkich założeń konstrukcji został zaprojektowany w programie Autodesk Inventor. Oto kilka renderów z Inventora a w załączniku plik złożeniowy wraz ze wszystkimi plikami. Dla tych co mają inną wersję Inventora lub używają innego programu załączam również plik .step: Elektronika robota składa się z dwóch płytek drukowanych i wyświetlacza. Obwody drukowane zostały zaprojektowane w programie Altium Designer. Poniżej kilka zrzutów ekranu. W załączniku dołączam schematy w formacie PDF oraz pliki Altiuma. Widok 3D płytki nie będzie działał, ponieważ projekt jest powiązany na stałe z plikami inventora. Po ominięciu kilku wyskakujących błędów powinien działać widok 2D obwodu. Kilka zdań o konstrukcji mechanicznej: Jak widać na zdjęciach robot składa się z dwóch płytek drukowanych, dzięki czemu możliwa jest regulacja odległości czujników od osi napędowej. Możemy w ten sposób ustalić empirycznie optymalną odległość między osią kół a czujnikami. Z naszych obserwacji wynika, że robot, który ma większą odległość czujników od kół lepiej sprawdza się na szybszych trasach, które mają łagodniejsze zakręty. Płytki są ze sobą połączone przy pomocy 20 żyłowej taśmy. Środek ciężkości robota został umieszczony w miarę nisko nad ziemią, ok. 6mm oraz w odległości około 14mm przed osią kół. Cała konstrukcja waży ok. 100g (dokładną wagę podam w przyszłym tygodniu). W Linefollowerze zostały zastosowane silniki z Pololu w wersji HP z przekładnią 30:1, ich specyfikacja dostępna jest tutaj: http://www.pololu.com/catalog/product/1093. Silniki zostały zamocowane na podstawkach wyciętych laserowo z plexi, tak aby środek ciężkości znajdował się jak najniżej i aby płytka z elektroniką była umieszczona równolegle do podłoża. Kulka podpierająca przód robota również została kupiona w sklepie Pololu. Zastosowane koła to kółka z mobot.pl po mojej małej przeróbce. Do robota pasują również koła z Pololu, które widać na niektórych filmikach i zdjęciach. Słów parę o elektronice: Na przedniej płytce znajduje się 16 transoptorów odbiciowych KTIR0711S, 4 diody LED, czujnik Sharp gp2y0d340k wraz z niezbędnymi elementami (filtr LC na zasilaniu, dzielnik rezystorowy na wyjściu oraz zworka do włączania czujnika), dwa kondensatory odsprzęgające napięcia +3,3V i +5V oraz 20-pinowe złącze taśmy. Na tylnej płytce: -układ zasilania złożony z dwóch połączonych kaskadowo stabilizatorów L7805ACDT (+5V) i LF33 (+3,3V). Przed stabilizatorami znajduje się dodatkowo włącznik i dioda prostownicza FR3 zabezpieczająca przed odwrotnym podłączeniem akumulatora. Ze stabilizatorami współpracują kondensatory tantalowe SMD. -procesor ATXmega128A1 wraz z ośmioma kondensatorami odsprzedającymi i dwoma filtrami LC filtrującymi napięcie dołączone do nóżek AVcc. -dwa mostki H VNH3SP30 sterujące silnikami. -komparator sygnalizujący rozładowanie akumulatora poniżej 50% poprzez zapalenie zielonej (zielona aby się wyróżniała) diody LED. Na wejścia komparatora podane są przez dzielniki rezystorowe napięcia akumulatora i napięcie ze stabilizatora +3,3V. Dodatkowo wyjście komparatora zostało podłączone do jednego z wyprowadzeń mikrokontrolera, aby można było programowo zareagować na rozładowanie akumulatora. -6-pinowe złącze programatora „micromatch” (wykorzystane tylko 4 piny) -scalony odbiornik podczerwieni TSOP32156, do współpracy z pilotem -złącze wyświetlacza LCD, na które wyprowadzony został cały port F (na schemacie jest narysowane tylko 7 linii, ale na płytce można podłączyć 8 linię robiąc małą zworkę z cyny), dzięki czemu złącze te może być wykorzystane również do rozbudowy robota. -trzy microswitche -3 czerwone diody sygnalizujące poprawne pojawienie się w układzie napięć: akumulatora, +5V, +3,3V. -dwie diody LED SMD RGB wraz z tranzystorami sterującymi. Diody zostały zamontowane od spodu robota i mają za zadanie oświetlanie toru (efekt wizualny). Tranzystory sterowane są sześcioma sygnałami PWM, dzięki czemu na diodach można uzyskać dowolny kolor bez obciążania procesora. -18 sztuk czerwonych diod LED SMD 0603, służących do generowania efektów wizualnych -20-pinowe złącze taśmy łączącej obie płytki Trasa: Trasa dla robota wykonana została z laminowanej płyty paździerzowej zakupionej w Castoramie. Płyta została pocięta na kawałki ok. 1x1m, a następnie skręcona przy pomocy stalowych płaskowników. Boki pociętej płyty zabezpieczyliśmy tzw. obrzeżami meblowymi. Linia po której jeździć ma robot wyklejona została izolacją o szerokości 19mm. Bandy toru wykonane zostały z samoprzylepnych klinów z gąbki. Filmiki z pierwszych testów: Drugie testy: Robot nie jeździ jeszcze z maksymalną prędkością, widać jak czasami wariuje na łączeniach płyt. Oprogramowanie jest cały czas rozwijane więc z czasem będzie jeździł szybciej. Ta odstająca do góry taśma jest tylko tymczasowo, później będzie założona taśma na wymiar. OSIĄGNIĘCIA: Inferno wraz z bratem bliźniakiem Mefisto wziął udział w zawodach LF i LF z przeszkodami na SumoChallenge w Łodzi oraz w zawodach LF na RoboticArena we Wrocławiu osiągając: Sumochallenge2010: 1. miejsce dla robota Mefisto w kategorii Linefollower. 2. miejsce dla robota Inferno w kategorii Linefollower. 1. miejsce dla robota Inferno w kategorii Linefollower z przeszkodami. 3. miejsce dla robota Mefisto w kategorii Linefollower z przeszkodami. Film z eliminacji na SumoChallenge: RoboticArena2010: 1. miejsce dla robota Inferno w kategorii Linefollower. Podsumowując: mój i TIMONKa debiut w kategorii Linefollowerów uznajemy za udany Film nagrany podczas dni otwartych Politechniki Poznańskiej 27 listopada: schematy.rar LF.rar LF.rar robot.rar
  3. 59 punktów
    Skarabeusz - robot kroczący typu hexapod, napędzany jest 12 serwami. Dwa serwa na nogę pozwalają na wysterowanie każdej nogi z osobna w dużym zakresie. Spośród innych robotów tego wyróżniają go przede wszystkim jego małe wymiary i to właśnie było głównym założeniem przy jego budowie. Dodatkowo jako jeden z nielicznych robotów 6 nożnych jest całkowicie bezprzewodowy, zasilany z akumulatora umieszczonego w robocie. Spowodowało to szereg trudności przy budowie, ale nie żałuję tego rozwiązania, bo mogę się dzięki niemu wykazać czymś oryginalnym. Dane techniczne - wymiary: ok 240x200x100mm* (bez wąsów) - waga ok. 400-500g - 12 mikro serwomechanizmów modelarskich - procesor ATmega168 20MHz - materiał: pleksi 4mm, łączenia śrubkami, tulejkami i klejem - komunikacja radiowa z dedykowanego pilota - możliwość modułowego montażu czujnika - zasilanie: pakiet li-po E-sky 7,4V 800mAh *zależne od wychylenia nóg, tu podane w trakcie stania robota Pomysł, projekt Pomysł na budowę nowego robota pojawił się już z początkiem roku. Po męczących bataliach z line followerami zdecydowałem, że zbuduję coś zupełnie innego. Hexapod wydawał się trudnym wyzwaniem, ale przy pewnej dozie szczęścia osiągalnym. Udało mi się zaoszczędzić taką ilość środków, że nie musiałem się obawiać że zabraknie funduszy (co miało się po czasie zmienić). Nie chciałem jednak, żeby był to kolejny "zwykły" robot kroczący - to i kilka innych argumentów, jak np. ceny serw, zadecydowały że będzie to robot o małych wymiarach. Pozostała kwestia doboru ilości serwomechanizmów: 12 czy 18? Zdecydowałem się na 12 z kilku przyczyn: prościej, taniej oraz nie potrzeba dodatkowego serwokontrolera (mało miejsca w robocie), a jedyne ograniczenie to brak możliwości chodu do boku. Trudno, może kiedyś... Jako materiał wybrałem pleksi, ponieważ jest łatwo osiągalny, lekki, w miarę sztywny, tani i dużo osób z niego korzysta. Grubość 4mm. Pleksi chyba najłatwiej obrabia się laserem, a w przypadku gdy potrzebujemy identycznych części dla 6 nóg jest to sposób niemal idealny, i jak się okazało bardzo tani. Pierwszą fazą pracy nad robotem był jego projekt wykonany w programie CAD - Solid Edge. Do projektowania w CADzie cały czas zachęcał mnie Bobby, ale okazało się to raczej koniecznością. Ma to wiele zalet - pozwala uniknąć wielu błędów już przy fazie projektowania, ma się na bieżąco podgląd robota, wiec nie ma zdziwienia po złożeniu robota "w realu". Tak więc projekt składał się z kilku części: górnej i dolnej części korpusu, łączników serw obrotu z serwami podnoszenia i dwuczęściowych nóg. Dodatkowo było potrzebne wymodelowanie akumulatora, serw, tulejek dystansowych i kilku innych szczegółów. Z gotowego projektu wyeksportowałem potrzebne części do rysunku, a później do pliku który wysłałem do firmy. Dzięki projektowi i laserowemu cięciu części nie miałem praktycznie żadnych problemów przy montażu, może oprócz wkręcania wkrętów (po nagrzaniu wkręta wchodzi bardzo prosto i trzyma dobrze). Dużo otworków było tylko "napunktowanych" laserem (d=1mm), a następnie rozwierconych wiertarką. Robot był identyczny z projektem - nie spodziewałem się że ten etap pójdzie tak łatwo. Niestety, na skutek pewnych niedogodności związanych z korzystaniem z programów komercyjnych, projekt przepadł (całe szczęście nie był mi już potrzebny). Pozostał mi jeden jedyny screen, w dodatku w marnej jakości. Mechanika, Napęd Tak jak już pisałem, obudowa zrobiona jest z 4mm pleksy ciętej laserowo. Użyte serwa to HXT900 - są tanie i można do nich dokupić zapasowe tryby za 5zł, niestety cena w tym przypadku idzie w parze z jakością. Póki działają to dobrze, ale cały czas mam wrażenie że któreś posypie się w najmniej odpowiednim momencie. Są one albo wkręcane do obudowy, albo do niej klejone - połączenie klejone trzyma bardzo dobrze, próba oderwania serwa zakończyła się złamaniem elementu z pleksi. 6 serw służy do obracania nóg, a następne 6 do ich ruchu góra/dół. Nogi zostały rozmieszczone po 3 z każdej strony robota. Nogi składają się z dwóch części skręconych przez tulejki dystansowe w celu wyśrodkowania punktów podparcia w osi robota. Części są przymocowane do orczyków również przy pomocy wkrętów odpowiednio przyciętych by nie wystawały. Niestety orczyki mają nieco luzów na wałku serwa, przez co konstrukcja jest nieco giętka, ale stabilna. Nogi nie posiadają żadnych antypoślizgowych nakładek, co prawda poprawiłoby to jego chód, ale utrudniło jednocześnie takie ruchy jak podnoszenie, opadanie czy nachylenia - pamiętajmy, że robot ma 12 serw i wykonywanie takich ruchów jest możliwe dzięki pewnemu poślizgowi nóg. Gdybym próbował je robić z nakładkami mógłbym uszkodzić serwa. Elektronika Najpierw dlaczego ATmega168: duże taktowanie, duża ilość pamięci flash i wystarczająca ilość pinów I/O wykorzystanych praktycznie maksymalnie , przez co niepotrzebnie nie komplikuję układu. Elektronika przysporzyła dość dużo problemów przy budowie. Pierwszy problem był taki, że płytka nie mogła przekroczyć 85x60mm, a miał się na niej znaleźć procesor z peryferiami, dwa stabilizatory, jakieś przyciski, diody, wyjście dla czujnika, modułu radiowego, UART i zasilania do programowania, kondensatory do filtrowania oraz wyprowadzenia dla 12 serw, każde po 3 piny. Oczywistą sprawą jest, że musiała być dwustronna, ale na szczęście miałem już trochę wprawy przy robieniu takich płytek przy "Bajtlu". Po długich i monotonnych godzinach spędzonych przy kompie udało mi się płytkę dokończyć. Po zrobieniu i polutowaniu wyglądała tak: Reszta elementów jest po drugiej stronie płytki. Przewody są podpięte do resetu i służą wgraniu bootloadera (reszta wyprowadzeń programowania ISP na wyjściach dla serw). Za jednym zamachem popełniłem czujnik, który nie zadziałał a w dodatku nie wpasowywał się ostatecznie do robota. Powstała druga wersja czujnika, której nie udało mi się uruchomić po dziś dzień Na płytce znalazło się kilka błędów, głównie przez moją nieuwagę, dlatego kilka ścieżek zostało przeciętych i poprowadzonych "na przewodach" - taki urok prototypów. Nie wygląda źle, a póki działa nie widzę potrzeby robienia nowej płytki. Zasilanie Chyba najbardziej kłopotliwe zagadnienie przy budowie. Źródłem jest akumulatorek li-po, ponieważ ma bardzo dużą wydajność prądową, przy czym jest lekki i mały. Serwa rozstawiałem tak, żeby mieścił się między nimi i nie trzeba go było dodatkowo mocować. Ponieważ serwa stwarzają duże zakłócenia w robocie, potrzebne było użycie dwóch stabilizatorów LDO - LM2940 w SMD wlutowany w płytkę oraz LM1084, wyprowadzony na przewodach. Duże zużycie prądu (podczas chodu 2,5A) wymusiło użycie dużego (jak na takiego robota) radiatora z wentylatorkiem, czego nie przewidziałem w projekcie. Bez wentylatorka radiator w 2min miał ponad 100st, co w przypadku robota z pleksy nie jest najlepszym rozwiązaniem. Udało mi się je dość dobrze ulokować z tyłu robota, przez co nie "straszą". Akumulatorek wystarcza na około 20 minut ciągłego chodu - przy oszczędnym użytkowaniu 30min. Nie dużo, ale pamiętajmy że modele RC mają nie więcej, więc nie załamuje mnie to. I pomyśleć, że te wszystkie problemy można pominąć, stosując zasilacz... Program Ponieważ znam tylko język BASCOM, to wyboru zbyt dużego nie miałem. Do procesora został wgrany bootloader, dzięki czemu mogę programować przy użyciu 4 pinów zamiast 6 - wbrew pozorom na takiej płytce jak moja to bardzo wielkie udogodnienie. Bardzo trudnym zagadnieniem przy budowie robota na tylu serwach jest ich wypozycjonowanie - od tego zależy stabilność chodu, to czy robot chodzi prosto, czy nie jest pochylony. Zaryzykuję stwierdzenie, że jest to równie trudne zagadnienie jak dobór współczynników w PID'zie - poprawiam to od początku istnienia robota, jest coraz lepiej ale ciągle wydaje mi się że to nie są idealne ustawienia. Może zwróciłeś Czytelniku uwagę na moje stwierdzenie na początku, że przy użyciu 12 serw nie potrzebuję dodatkowego serwokontrolera. Tak, wszystkie serwa są sterowane wspaniałą bascomową funkcją Config Servos! Nie napotkałem z nią najmniejszych problemów, a serwa można ustawiać z dużą rozdzielczością. To proste i skuteczne rozwiązanie ma wg mnie tylko jedną wadę: obsługuje do 16 serw - to jest jeden z głównych powodów dlaczego mój robot nie ma ich 18. O programie na razie nie ma zbytnio co pisać: nie ma kinematyki (jeszcze ), wychylenia działają na zasadzie wczytywania odpowiednich wartości dla serw, możliwa jest zmiana prędkości działania robota i jego maksymalnych wychyleń przy pomocy stałych definiowanych na początku programu. Praktycznie cały program to skoki pomiędzy poszczególnymi podprogramami, co nieco ułatwia pracę bo można poszczególne poprawiać i edytować bez obaw o całość działania programu. Program zajmuje na razie 70% pamięci flash, ale duża w tym zasługa tego że nie dbałem zbytnio przy pisaniu o jego optymalizację. W zamyśle mam całkiem nową koncepcję algorytmu, która powinna zająć dużo mniej pamięci. Robot porusza się chodem 3-podporowym. Czujniki Projekt przewidywał użycie czujnika optycznego na osobnym procesorze, mającego 3 diody nadawcze co pozwalałoby na obserwację otoczenia szerzej niż w przypadku powiedzmy Sharpów, a przy czym taniej. taki czujnik można będzie dodatkowo dopasować do własnych potrzeb. Ponieważ czujnika jeszcze nie uruchomiłem, a na zawody w Łodzi chciałem już mieć jakieś czujniki, wykorzystałem te najprostsze - krańcówki. Dlatego robocik ma teraz osobliwe "wąsy". Przedłużenia wykonałem z pręcików węglowych - jest to materiał idealny do tego zastosowania, bardzo giętki a nie odkształcający się, tani (2,50zł/m) i łatwy do nabycia w sklepach modelarskich. Przyznaję z bólem, że podpatrzyłem to rozwiązanie z robota Hexor II. Jeżeli komuś nie po drodze do modelarskiego, to takie pręciki używane są jako kile w spławikach wędkarskich, z tym że niestety koszt najtańszych spławików z węglowym kilem to 3-4zł/szt. Sterowanie Czyli jak zrobić żeby robot nie był robotem. Przeczytać świetny artykuł Elvisa, kupić tanie moduły HM-T868S i HM-R868S (ich dodatkową zaletą jest to, że są bardzo małe i bez problemu mieszczą się w moim robocie) i przeprowadzić transmisję. Nadajnik zabudowałem w pilocie, który zbudowałem specjalnie po robota. Steruje nim ATmega88, posiada 9 przycisków (5 do ruchu i 4 jako dodatkowe opcje) oraz potencjometr do regulacji prędkości (jeszcze nie uruchomiłem tej funkcji). Zasilany jest z 4 akumulatorków AA. Zabudowany został w kupionej obudowie, którą krzywo powierciłem (ale parszywie się w tym wierci...). Płytka drukowana również dwustronna, wklejona na... hot glue. Po skręceniu hot glue nie widać, myślę że pilot broni się estetyką dość dobrze. I wyjaśnijmy sobie jedną sprawę. Futerko nie ma konkretnych zastosowań, górny pasek maskuje otwór po cięciu obudowy pod miejsce na koszyk z bateriami, a te po bokach są ponieważ przyjemniej mi się trzyma niż goły plastik. Można je prosto odkleić, dlatego nie chciałbym aby ktoś oceniał robota pod kątem futerka na pilocie. Koszty No i najsmutniejsza kwestia. Podliczeń dokładnych nie zrobię, na robota wydałem dużo. Bez zgromadzenia 500zł nie ma się co zabierać za takie konstrukcje, no chyba że chce się odkładać projekt na półkę z powodu braku kasy. Tak, mogłem zaoszczędzić kupując serwa na HobbyKing, ale nie chciałem ryzykować pierwszym razem. -13 serw (jedno na zapas) + komplety naprawcze + wysyłki - 250zł -pleksa + cięcie - 50zł (w innej firmie zaoferowali mi.... 200zł ) -części elektroniczne - 200-250zł -wentylatorek - 30zł (był bardzo drogi ale nie miałem wyboru) -różne śrubki, kleje, inne pier... drobiazgi - 150zł -akku li-po z ładowarką już miałem, ale gdyby kupować: akku 30zł, ładowarka 30zł, zasilacz 20zł. Dodatkowo zaszalałem i dla uprzyjemnienia sobie pracy zakupiłem lutownicę Hot Air, koszt 300zł + pasta za 40zł. I jeszcze w końcu starego laptopa za 200zł na zawody. Ale to nie jest jednorazowa inwestycja. Przyszłość Uważam robota za rozwojowego. Oprócz stałego ulepszania kodu aż do kinematyki mam jeszcze pomysły na dodatkowe moduły i funkcje. Update'y będę zamieszczał w tym poście, a informował w temacie. Ponieważ mocowanie serw jest dość kłopotliwe, ich wymiana wiązałaby się z nową obudową (to na szczęście jest tanie), dla której musiałbym robić projekt w CAD'zie od początku - póki co o tym nie myślę. Podsumowanie Żaden robot dotychczas nie dostarczył mi tyle radości przy tworzeniu. Było to dla mnie dużym wyzwaniem, ale uważam że cel osiągnąłem. Poprzednie roboty działały, ten... żyje Jestem z niego bardzo zadowolony i uważam go za w pełni udaną konstrukcję. Pisanie programu to dla mnie świetna zabawa, bo to tak jakby go uczyć. Robot wystartował na zawodach w Łodzi, gdzie zajął niestety ostatnie 5 miejsce, ale cieszył się dużym zainteresowaniem, szczególnie dzieci (chociaż niektóre się go bały). Jeżeli ktoś dotarł do szczęśliwego końca moich wypocin, to wyjaśniam czemu tyle tego: żeby ograniczyć jak najbardziej ilość niepotrzebnych pytań w temacie. Jeżeli coś pominąłem, to proszę pisać, jednakże zastrzegam sobie prawo do niektórych tajemnic :-> Nie będę owijał w bawełnę, nie chciałbym aby ten projekt był kopiowany i zasypały nas mini hexapody na 12 serwach, bo spędziłem nad nim naprawdę dużo czasu, wydałem na niego dużo pieniędzy, nie należał do prostych i wydaje mi się że zachowanie pewnych informacji i projektów dla siebie nie zostanie odebrane źle. I na koniec bardzo ładne zdjęcie z zawodów w Łodzi, które znalazło się w jednej z galerii na Interii. UPDATE #1 14.11.2010 Robocik zajął 3 miejsce na zawodach Robotic Arena 2010. Dziękuję za wszystkie oddane głosy.
  4. 58 punktów
    Witam jest to mój pierwszy robot, nazwałem go IVAN, zbudowany w większości z aluminium jak widać na załączonych zdjęciach. Gąsienice wykonane z gumowych opasek na rękę. (bardzo dobra przyczepność). Zastosowałem 4 czujniki odległości SHARP2D120x (niestety analogowe i są dość wolne) (4-30cm) i 4 czujniki koloru QRD1114. Silniki to 6-ścio voltowe silniczki HL149 z przekładnią 21:1 silniki są dość ciężkie bo ważą razem190g a przy tej konstrukcji to był duży problem. (koła po odchudzeniu wyglądają jak ser!) Cały robot waży 497g. Na niektórych zdjęciach widać korpus z aluminium 2 mm potem w celu odchudzenia konstrukcji powstał jeszcze jeden z 1 mm. Robot atakuje stroną którą prędzej wykryje przeciwnika z dużą prędkością. Elektronika opiera się na procesorze Atmega32 program w C. W kodzie ma zaimplementowane komunikaty 'co się z nim w danym czasie dzieje' wysyłane są na port COM (w przyszłości planuje bezprzewodowo ale to już w wersji robota V2). Zasilanie lipo 400mah - bardzo mała pojemność wybrany ze względu na małą wagę 42g - ładowany ładowarką IMAX B6. Korpus wykonany na maszynie sterowanej numerycznie a koła wytoczone na tokarce – widać Niektóre śrubki zrobione z pręta aluminiowego w celu oszczędzenia wagi. Kosztorys (mniej więcej) Toczenie - free Wycinanie - free Aluminium na korpus i koła - free Aluminiowe profile – 20zł Akumulator - 40zł Ładowarka - 180zł Silniki - 25zł Czujniki odległości sharp – 200zł Płyta główna + regulator napięcia silników – free Czujniki podłoża - 12 zł ‘Gumki’ na gąsienice – free Śruby / drobiazgi – 15zł Łożyska - 4zł Jak coś pominąłem proszę pytać Zdjęcia z budowy i gotowego robota: Projekt sketchup: ...jeszcze 3 foty case-a robota No i film:
  5. 49 punktów
    Witam, tym razem chciałbym zaprezentować mojego najmniejszego do tej pory robocika klasy Nanosumo. Nazywa się „Mały”. W zasadzie wszystko w tym projekcie jest małe: µkontroler, akumulator, silniki, czujniki. Jedną wielką rzeczą była radość podczas pierwszej walki z kartonikiem, gdy to wszystko zadziałało. Idea zbudowania robota zrodziła się kilka lat temu. Od tego czasu trwało zbieranie odpowiednich elementów i informacji. Sama konstrukcja powstawała krótko, bo około 2 tygodnie. Robot mieści się w pudełku o wymiarach 15mm*15mm*15mm. Napędzany jest dwoma silnikami z wibracji Nokii 3310. Przekładnie wyjęte z małych serwomechanizmów. Sterownik silników MPC17C724 znajduje się na dwustronnej płytce PCB umieszczonej między kołami. Akumulator Li-pol 3,7V o pojemności 50mAh w zupełności wystarcza na 20min pracy. Mikrokontroler ATMEGA8L w obudowie MLF znajduje się na głównej płycie PCB pod akumulatorem. Taktowany jest z zewnętrznego generatora 12MHz, aby umożliwić programowanie, z wykorzystaniem bootloadera bezpośrednio z portu USB. Dzięki takiemu rozwiązaniu złącze programatora ma tylko 3 piny. Od spodu na przednim silniku umieszczone są 2 czujniki linii KTIR0711S. Musiały być odpowiednio zeszlifowane, aby szczelina między podłożem i czujnikami była większa od 0,9mm. Dalmierz oparty o APDS-9700 oraz HSDL-9100 idealnie nadawał się do tego robota. Największy problem podczas budowy sprawiło zablokowanie µkontrolera. Niezbędne było użycie Rezurektora AVR. Dzięki odpowiedniemu przygotowaniu innych problemów prawie nie było.
  6. 43 punktów
    Kurs BASCOM - lekcja1-wstęp Kurs BASCOM - lekcja2 - pierwsze kroki Kurs BASCOM - lekcja3 - zaczynamy programować Kurs BASCOMZ powodu dużego zapotrzebowania na kurs programowania w języku ms basic postanowiłem napisać ciąg artykułów uczących podstaw programowania w tym właśnie języku. Artów będzie 3 lub 4 w zależności od tego jak podzielę materiał i jakim wolnym czasem będę dysponował. Kurs będzie dotyczył rodziny µC AVR. Jak wiadomo nie licząc robotów beam to robotyka by nie istniała bez programowania. Wiec każdy robotyk musi umieć programować chociaż w najprostszym języku jakim jest ten właśnie opisywany przeze mnie. Tak więc „Alea iacta est”(kości zostały rzucone). Zacznę od potrzebnego sprzętu: Programator: Na sam początek powinniśmy się zaopatrzyć w programator (my będziemy używać programatora isp). Najprostszy to cztery oporniki wtyk lpt i kawałek kabelka: Ale warto jest zabezpieczyć port lpt przed zepsuciem i zbudować bądź kupić stk200 : Są też programatory na port rs232 (com): Jeśli nie masz w komputerze portu lpt ani com co teraz jest coraz szerzej spotykanym zjawiskiem (niestety te dwa ważne porty dla elektronika powoli odchodzą w zapomnienie) Są też programatory pod usb. Na przykład usbasp którego można zobaczyć na tej stronie. Ale jeśli nie czujesz się na siłach aby coś takiego zbudować kup sobie programator, taki jak stk200 można w znanym serwisie aukcyjnym kupić już za 15 zł. To są tylko niektóre z programatorów, jest jeszcze ich wiele. Te które wymieniłem wydaja mi się najlepsze ale mogę się mylić ponieważ nie za wszystkich korzystałem-oparłem się na opinii użytkowników. Procesor: Ja proponuje na sam początek attinny2313. Czemu? Ponieważ jest wystarczający na rozpoczęcie przygody z mikrokontrolerami, jeżeli twój pierwszy program nie zmieści się w jego pamięci to mówię Ci mistrzu. Nie potrzebuje kwarcu- może pracować na wewnętrznym oscylatorze. Moim zdaniem na kilka pierwszych programów jest aż za dobry. W związku z pojawiającymi się wątpliwościami (wcześniej wydawało mi się to oczywiste) dodaje, że wyprowadzenia procesora podłączamy do tak samo nazywających się wyprowadzeń programatora. Kompilator: Kompilatorem języka ms basic którego będziemy używać będzie BASCOM-AVR. Można go pobrać z tej strony Obsługa programu: Po zainstalowaniu i uruchomieniu programu pokaże nam się okno główne: 1.Pasek menu 2.Pasek narzędzi 3.Lista zdefiniowanych etykiet 4.Lista zdefiniowanych procedur 5.”Nawigacja”mikroklocka 6.Pasek stanu 7.Obszar edytora kodu Funkcje ikon paska narzędzi: - nowy program - otwórz - zapisz - zapisz w nowym pliku - drukuj - podgląd wydruku - wytnij - kopiuj - wklej - wstaw wcięcie zaznaczonego fragmentu tekstu - usuń wcięcie zaznaczonego fragmentu tekstu - wyszukaj tekst - sprawdź poprawność programu - kompiluj - raport z kompilacji - symulator - uruchom programator - emulator terminala - zeruj układ - pomoc - exit Paweł “Ikar” Stankiewicz PS: jak zauważycie błędy to dajcie znać
  7. 36 punktów
    Od początku mojej przygody z robotyką chciałem zrobić niewielkiego linefollowera, który byłby w stanie konkurować pod względem prędkości ze znacznie większymi konstrukcjami. Powstało kilka mniej lub bardziej udanych płytek, ale żadna konstrukcja nie spełniała moich założeń w 100%. Po ukończeniu Stridera2 i poznaniu jego słabych stron wróciłem do pomysłu małego robota, którego ucieleśnieniem jest właśnie Tsubame. Tsubame jest właściwie prototypem, spytacie dlaczego, dlatego, że większość rozwiązań w tym linefollowerze to dla mnie nowość. Począwszy od felg i opon, przez przetwornicę zasilającą silniki, gęstsze ustawienie czujników, a skończywszy na mostku H. Tak dużo zmian w jednym robocie nie dawało mi pewności, że wszystko będzie działać, tak jakbym chciał, ale miało dać mi nowe doświadczenie do budowy nowego linefollowera. Przyznaję szczerze, że jestem zaskoczony, że wszystkie zastosowane przeze mnie nowinki spełniły swoje zadanie i to nawet lepiej niż zakładałem. Opony wykonane z poliuretanu mają niesamowitą przyczepność, gdy łapałem robota na torze wykonanym na brystolu 100x70cm to brystol zaczynał się przesuwać po podłodze. Zastosowana przetwornica obniżająca napięcie do zasilania silników przez mostek H nawet nie jest ciepła po długiej jeździe, mostek H też spisuje się rewelacyjnie. Czujniki ustawione gęściej zmniejszyły znacznie drgania całego przodu, bo zniknęła martwa strefa pomiędzy czujnikami. Tsubame jest młodszym bratem Stridera2, i powstał w dużej mierze na tej konstrukcji. Kilka szczegółów technicznych: - procesor: Atmega328P@20MHz - czujniki: 8 sztuk KTIR0711S - zasilanie: 2 akumulatorki li-pol 350mAh - mostek H: układ TB6612 - robot napędzany jest silnikami z pololu, przekładnia 10:1, 3000obr/min, wersja silnika HP - sterowanie silników: 2 kanały PWM z procesora, plus 4 linie odpowiedzialne za zmianę kierunku obrotu - na płytce jest miejsce na odbiornik podczerwieni TSOP348 (w tej płytce odbiornik nie został jeszcze użyty) - wymiary: rozstaw osi 70mm, szerokość przodu 55,6mm, szerokość tyłu 58,4mm (sama płytka), długość 90mm (bez wystających kulek) - z przodu zamontowane są 2 kulki ceramiczne - masa robota gotowego do jazdy - 71,4g - kod w całości napisany w Bascomie Czas na część przyjemniejszą dla oka: Zdjęcia przedstawiają proces odlewania opon z poliuretanu. Pomiędzy formy a felgi wstrzyknąłem strzykawką przez dość grubą igłę jeszcze płynny poliuretan. Drugie zdjęcie przedstawia koła wyciągnięte z formy. Chciałbym podziękować Bobby'emu, to dzięki niemu powstały formy i felgi . Schemat oraz widok płytki: Płytka przed lutowaniem i pierwsze przymiarki: Prawie skończony robot, jeszcze bez kulek z przodu: W pełni gotowy robot, wraz z akumulatorkami: Na koniec krótki filmik przedstawiający jedną z pierwszych jazd testowych: Przejazd z prędkością powyżej 1m/s: Przejazd z prędkością i ustawieniami jak film wyżej, za to ten nagrany w 240fps (frame per second - klatek na sekundę) odtwarzany z prędkością 30 fps, więc film pokazuje ruch 8 razy wolniej, widać każdy szczegół, każdy błąd:
  8. 33 punktów
    Zachęcony licznymi mailami, wiadomościami PW i dyskusjami toczonymi na forum, postanowiłem przygotować artykuł opisujący krok po kroku i bardzo "łopatologicznie" budowę robota klasy Line Follower - w pełni programowalnego. Części, które wykorzystałem, są łatwo dostępne i nikt nie powinien mieć problemów z ich zakupem. Dodatkowo wybrałem takie, które można z powodzeniem znaleźć w jednym konkretnym sklepie (szczegóły w punkcie "Lista zakupów"). Jest to potrzebne minimum, choć oczywiście osoby z odrobiną doświadczenia zachęcam do sprawdzania własnych rozwiązań. Wymagania potrzebne do budowy, to elementarna wiedza z zakresu elektroniki (w tym umiejętność lutowania) i obsługi prostych narzędzi (piła, wiertarka, pistolet do klejenia na gorąco). Prędzej czy później trzeba będzie także nauczyć się programować - o tym napiszę na końcu. Życzę miłej lektury, Damian Nowak (Nawyk) Krótki film przedstawiający gotowego robota zaprogramowanego dołączonym wsadem do procesora (uproszczony kod, bez sterowania PWM) - dodany w załączniku 1. Lista zakupów Pierwszy sklep, który odwiedzimy to AVT. Mieszkańcy Warszawy mogą go odwiedzić osobiście, pozostali muszą zamówić elementy w sklepie online (lub poszukać w innym). Kupujemy: - płytkę uniwersalną PDU27 - 8zł - mikroprocesor Atmega8 (7zł) wraz z podstawką (polecam precyzyjną - 1,70zł) - mostek H L293D lub L293DNE (10zł) również z podstawką (polecam precyzyjną) - 1,40zł - 3 transoptory odbiciowe CNY70 (czujniki linii) - 3x4,50zł - 1 rezystor 470 Ohm (później nazywany 470R) - 0,25zł za 10 sztuk; 3 rezystory 240 Ohm (240R) - 0,25zł za 10 sztuk; 3 rezystory 10k Ohm (10K) - 0,60zł za 10 sztuk - 1 dioda LED np. zielona - 0,20zł - 1 korpus złącza żeńskiego goldpin 5x1 (1,20zł) wraz z blaszkami (0,60zł za 10 sztuk) - 1 dwurzędowa listwa goldpinów (0,80zł) oraz 1 jednorzędowa, kątowa listwa goldpin (0,81zł) - 2 metry 5-żyłowego przewodu wstążkowego, wielokolorowego (2x3,20zł za metr bieżący), można też przejść się do sklepu komputerowego i kupić dwa metry tzw. skrętki - koszyk na 4 baterie AA z pokrywą i włącznikiem (2,81zł) Podsumowanie:55,52zł + koszty przesyłki Drugi sklep to market budowlany (np. Leroy Merlin). Kupujemy w nim takie oto koło: a także po dwie śruby o średnicy 3 i 4mm (im dłuższe tym lepsze, polecam tak min. 3cm dla średnicy 3mm i 5,5cm dla średnicy 4mm) i do każdej po 3 nakrętki (w sumie ok. 2zł) Pora na sprawę najbardziej kłopotliwą - napęd. Do tego projektu wybrałem dwa serwa modelarskie - są chyba najłatwiej dostępne, mają odpowiedni moment obrotowy, w komplecie są orczyki ułatwiające montaż kół i wymagają zasilania 5-6V, czyli akurat tyle, ile dawać będzie nasze źródło zasilania. W moim przypadku serwa to Hitec HS-322HD, ale stanowczo je odradzam ze względu na cenę (planuję je później wykorzystać do czegoś innego). W zupełności wystarczą tanie serwa TowerPro 5010 dostępne na Allegro za ok. 28zł sztuka, polecam jednak "polować" na serwa używane - bardzo często można kupić nawet za mniej niż 10zł sztuka. Mała uwaga - można dostać tzw. mikroserwa za 20zł, ale nie polecam ich początkującym, gdyż często powodują problemy przy koniecznych przeróbkach (będziemy nasze serwa musieli później odpowiednio dostosować do nowej roli - bezpośredniego napędu), dlatego kup je tylko jeśli wiesz co robisz. Ostatni "sklep" to tak naprawdę kuchnia/piwnica. Potrzebujemy dwóch nakrętek od słoików o identycznej średnicy. Np. takich: Można też pokombinować z czym innym - np. kołami od zabawek. Nakrętki nie są najlepszym rozwiązaniem (słaba przyczepność), ale wybrałem je ze względu na dostępność. Przyczepność można spróbować zwiększyć naklejając na całym obwodzie np. gumową samoprzylepną uszczelkę (nie posiadałem aktualnie takiej na stanie, więc sobie odpuściłem). 2. Lista narzędzi Do wykonania robota będziemy potrzebować: - piłki do metalu - wiertarki i wiertła o średnicy 3 i 4 mm - pistoletu do klejenia na gorąco wraz z wkładami uniwersalnymi - zamiast piłki do metalu i wiertarki polecam zestaw miniwiertarki wraz z akcesoriami do wiercenia, cięcia i szlifowania (dostępny np. w Leroy Merlin i AVT, koszt: ok. 80zł; jeśli macie kasę, kupcie droższy zestaw firmy Dremell - ok 400zł, ponoć warto. Ja używam pierwszej opcji i nie narzekam) - lutownicy / stacji lutowniczej (polecam stację Xytronic 369 - koszt ok. 100 zł, naprawdę warto) i spoiwo lutownicze z topnikiem (polecam cienkie, średnica w okolicach 0,38mm - dostępne w ofercie AVT) - "ściągaczkę" do izolacji (dostępna np. w Leroy Merlin i AVT, koszt ok. 15zł) - cążków bocznych (można dostać w AVT, koszt ok. 9 zł), ostatecznie mogą być mocne nożyczki - kombinerek i śrubokręta - programatora AVR ISP - po szczegóły odsyłam do tego tematu. 3. Zaczynamy Uff, długość powyższych dwóch list wynika z tego, że wymieniłem wszystkie możliwe, potrzebne elementy. Prawda jest taka, że elektronicy i Ci, którzy mają za sobą konstrukcje typu Waldek Światłolub, mają już część tego wszystkiego na stanie (m.in. dlatego warto jest zaopatrywać się na zapas, zwłaszcza gdy nie mamy łatwego dostępu do potrzebnych rzeczy). Mamy wszystko przygotowane, więc pora zabrać się do roboty. Pierwszym krokiem jest przerabianie naszych serw modelarskich. Serwa są przystosowane do sterowania przy pomocy określonych impulsów, ich zakres obrotów ograniczony jest zwykle do 120 stopni - celem przerabiania jest pominięcie elektroniki sterującej, usunięcie potencjometru i mechanicznej blokady tak, by mogło pracować jak zwykły silnik z przekładnią. Poniżej zamieszczam krótki tutorial jak to zrobić, po szczegóły odsyłam do podlinkowanego parę linijek wyżej tematu. Przecinamy płytkę wzdłuż linii - tak jak pokazałem na rysunku, a następnie na większej części "wtykamy" i lutujemy zaznaczone elementy (pod nazwami "L293D" i "Atmega8" na rysunku należy rozumieć same podstawki! Dodatkowo, lutowanie diody zostawimy na koniec - chcemy przecież, żeby wystawała ponad plątaniną kabli ) Czerwone, "wypukłe" kropki na rysunkach, będą oznaczały miejsca połączenia elementów z płytką (czyli po prostu luty). Zwróćcie uwagę na to, żeby luty były błyszczące i miały odpowiednią ilość spoiwa. Na początku tematu podawałem linka do poradnika dla tych, którzy nie potrafią lutować. Tzw. zimne luty są częstym powodem niedziałania układu - stąd moja uwaga. Teraz zaczniemy łączyć elementy przy pomocy zworek. Tam, gdzie pola lutownicze przeznaczone do połączenia są w bezpośrednim sąsiedztwie, warto użyć kawałków drutu, np. z uciętych nóżek rezystorów. Dla przejrzystości podzieliłem ten etap na części, dodatkowo każdemu z nich przydzieliłem inny kolor przewodów. zasilanie złącze programatora (typu KANDA) połączenie atmegi i mostka połączenie mostka i silników połączenie czujników Odcięty, mniejszy kawałek płytki wykorzystamy do budowy modułu z czujnikami. Na końcu taśmy 5-żyłowej zakładamy złącze żeńskie goldpin. Wiercimy w płytce dwa otwory o średnicy 4mm, wkładamy w nie dwie śruby i dokręcamy z drugiej strony nakrętką. Moduł czujników gotowy. Następnym krokiem jest wywiercenie otworów o tej samej średnicy i na tej samej szerokości w module z mikroprocesorem. Przykładamy również koło podporowe, oznaczamy położenie otworów i wiercimy - tym razem wiertłem o średnicy 3mm. Efekt końcowy powinien wyglądać mniej więcej tak: Przyznam, że popełniłem w tym momencie błąd - źle wymierzyłem położenie otworów pod moduł czujników(nie uwzględniłem większej średnicy nakrętki, która zahaczała przez to o mostek H) i musiałem później dwa otwory na środku rozwiercać tak, by przesunąć moduł trochę do tyłu. Będzie to widać na późniejszych zdjęciach. Teraz przystępujemy do połączenia naszych przerobionych serw z "kołami". Rozgrzewamy pistolet klejowy, kapiemy odrobinę kleju na środek nakrętek, przykładamy serwo orczykiem, pozycjonujemy (centrujemy) bardzo dokładnie i mocno dociskamy czekając aż klej zacznie stygnąć i wiązać. Następnie kapiemy trochę kleju z tyłu, na spodzie naszego modułu z mikroprocesorem i dociskamy serwa - dbając, by były równo rozmieszczone. Gdy klej stygnie, wkładamy dwie śruby (średnica 3mm) w koło podporowe, dokręcamy mocno, nakładamy na to jeszcze luźno po jednej nakrętce, wtykamy w wywiercone wcześniej otwory w module głównym i dokręcamy z góry, żeby koło nie wypadło. Gdy klej zastygnie, kapiemy nową porcję na górę płytki, kładziemy koszyk na baterie (tak, żeby klapka wysuwała się do tyłu, a włącznik był na spodniej jego części) i dociskamy mocno. W podobny sposób jak przednie koło, zakładamy moduł z czujnikami pod modułem z mikroprocesorem, a następnie podłączamy czujniki do wyprowadzonego na płycie głównej złącza. Zastosowanie śrub pozwala na bardzo dokładną regulację położenia poszczególnych części względem siebie. Kładziemy robota na płaskiej powierzchni i odkręcając oraz dokręcając odpowiednio nakrętki dążymy do tego, żeby płyta z mikroprocesorem była idealnie do niej równoległa; czujniki natomiast powinny znajdować się około 3 mm nad podłożem. Wymaga to trochę cierpliwości i dokładności, ale na pewno się opłaci. Gdy uda nam się ta sztuka, pozostaje dokręcić wszystko do oporu i cieszyć skończonym "ciałem" robota Zdjęcia są słabej jakości, robot traci na nich sporo swojego "uroku", dlatego jak tylko uzbroję się w lepszy aparat (w przyszłym tygodniu), wymienię je na coś lepszego. 4. Oprogramowanie To jeszcze nie koniec naszej zabawy. Niektórzy powiedzieli by nawet, że dopiero początek Nie po to się przecież tyle męczyliśmy, żeby mieć nowy, ekstrawagancki mebel w naszym pokoju. W takiej postaci robot jest głuchy, niemy i sparaliżowany - mimo podłączonych czujników i silników. Należy teraz napisać do niego program, w którym za rączkę przeprowadzimy go przez wszystkie możliwe zadania i problemy, jakie w przyszłości napotka. Nauka programowania jest tematem na oddzielny wątek i nie będę tu się na ten temat rozwodził. Jest świetny tutorial na tym forum - Kurs BASCOM - i warto z nim się zapoznać. Gwarantuję, że nie jest to nic trudnego i że można się z tym uporać w dwa dni, a jeśli ktoś programował wcześniej i szło mu przyzwoicie - wystarczy parę godzin. Dodałem przykładowy program w postaci pliku źródłowego (język BASCOM) oraz dwa skompilowane pliki (BIN oraz HEX - do wyboru) - wystarczy więc wgrać to do robota (patrz - lista narzędzi -> link programator AVR ISP oraz instrukcje, które dostaniecie po zakupie własnego programatora) i cieszyć sztuczną "inteligencją" w naszym własnym domu. Polecam rozłożyć na stole/podłodze duże, białe arkusze papieru i czarną taśmą izolacyjną wyznaczyć robotowi trasę do pokonania. Im lepszy program, tym trudniejszą i bardziej skomplikowaną trasę będzie w stanie pokonać. Po dopracowaniu robota (napisanie zaawansowanego programu, być może wymiana serw na szybsze silniki z przekładniami, stabilizowane napięcie, dławik między AREF/AVCC a VCC, kondensatory filtrujące) nic nie stoi na przeszkodzie, by wyruszyć z nim na zawody - szczegóły na pewno pojawią się na forbot.pl, gdy tylko taki będzie organizowany. Nieco inną wersję artykułu można znaleźć na moim blogu: Przepis na robota - w pełni programowalny Line Follower Życzę wszystkim powodzenia i wciągnięcia się w tematykę robotyki. No a przede wszystkim - dobrej zabawy PS Wszelkie pytania proszę zadawać w tym temacie, nie na PW czy mail. //edit Zapomniałbym //edit2 Dodałem tutorial o przerabianiu serw modelarskich. //edit3 Przepraszam za gapiostwo, program w załączniku. Uprzedzając komentarze - wartości PWM są takie a nie inne (255 lub 0), zostawiłem dobranie regulacji prędkości wg własnego uznania, dzięki temu każdy może w parę chwil zmienić osiągane prędkości obrotowe poszczególnych kół. program_testowy.rar przepis.sch
  9. 31 punktów
    Kurs BASCOM - lekcja1-wstęp Kurs BASCOM - lekcja2 - pierwsze kroki Kurs BASCOM - lekcja3 - zaczynamy programować Witam ponownie czytelników W tej jaki i w poprzednich częściach będę się starał tłumaczyć wszystko jak najprościej. Zajmiemy sie konfiguracją portów, blokiem decyzyjnym oraz układami czasowymi. Konfiguracja portów: 1.Najpierw trzeba podać kompilatorowi jakie porty będą wejściami a jakie wyjściami. Można to zrobić na kilka sposobów: -można cały port skonfigurować jako wyjście bądź wejście odpowiednią komendą: config portd=input 'cały port d jako wejście config portd=output 'cały port d jako wyjście -można też skonfigurować każdy port osobno: config pind.0=input ' wyprowadzenie PD0 jako wejście config pind.1=input ' wyprowadzenie PD1 jako wejście config pind.2=input ' wyprowadzenie PD2 jako wejście config pind.3=output ' wyprowadzenie PD3 jako wyjście config pind.4=output ' wyprowadzenie PD4 jako wyjście config pind.5=output ' wyprowadzenie PD5 jako wyjście config pind.6=output ' wyprowadzenie PD6 jako wyjście -jest szybszy zapis stanów danego portu, w systemie dwójkowym: config portd=&B1111111 'cały port d jako wyjścia config portd=&B0000000 'cały port d jako wejścia config portd=&B0001111 'końcówki PD0 do PD3 jako wyjścia, a od PD4 do PD6 końcówki jako wejścia Jak widać czym pin ma mniejszą liczbę porządkową znajduje się bliżej końca zapisu konfiguracji. Używając tego sposobu zapisu nie należy zapomnieć o prefiksie "&B". Podane wyżej przykłady należą do portu d procesora attinny2313 którego port d ma 7 wyprowadzeń, przy porcie b wyprowadzeń jest 8 więc trzeba dodać jedną zmienną więcej, przykład: config portb=&B01001011 -można też użyć systemu dziesiętnego, którego nie polecam początkującym. Niby ładnie to wygląda w programie ale jest mało przejrzyste. config portd=&B0001111 'można równie dobrze zapisać jako config portd=15 Czwmu można zobaczyć w niżej załączonej tabeli: 2.Nastepna rzeczą jaką trzeba zrobić to ustalić stan spoczynkowy końcówek, przykład: portd.0=1 'stan spoczynkowy-1 portd.1=1 'stan spoczynkowy-1 portd.2=1 'stan spoczynkowy-1 portd.3=1 'stan spoczynkowy-1 portd.4=1 'stan spoczynkowy-1 portd.5=0 'stan spoczynkowy-0 portd.6=0 'stan spoczynkowy-0 Równie dobrze można zapisać to za pomocą komend set i reset, przykład: set portd.0 'stan spoczynkowy-1 set portd.1 'stan spoczynkowy-1 set portd.2 'stan spoczynkowy-1 set portd.3 'stan spoczynkowy-1 set portd.4 'stan spoczynkowy-1 reset portd.5 'stan spoczynkowy-0 reset portd.6 'stan spoczynkowy-0 Ten niewygodny zapis można skrócić do już znanego nam zapisu dwójkowego, przykłady: portd=&B1111111 'wszędzie stan spoczynkowy-1 portd=&B1111100 'PD6 i PD5 stan spoczynkowy-o na reszcie stan spoczynkowy-1 Tu także nie należy zapomnieć o prefiksie"&B" oraz o 7 bitach dla portu d i 8 bitach dla portu b. To można skrócić jeszcze bardziej do systemu zapisu dziesiętnego, którego jak pisałem wcześniej nie polecam początkującym, przykład: portd=&B1111100 'znaczy tyle samo co portd=124 Czyli pełna konfiguracja portów może przykładowo wyglądać tak: config portb=&B11111111 portb=&B00000000 config portd=&B0000000 portd=&B1111111 Pierwszy program: Napiszemy teraz pierwszy program używając bloku decyzyjnego ale nie tylko. Do procesora podepniemy diodę led z rezystorem 100Ω, kondensator 100µF oraz dwa tact switche. Będzie to program zapalający i gaszący diodę led. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'zapal diode elseif pinb.1=1 then 'jeżeli przycisk 2 wciśnięty portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Ten program Używa dwóch przycisków, niech teraz jeden z nich jednocześnie zapala i gasi diodę. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty toggle portd.0 'zmień stan wyprowadzenia endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Polecenie toggle zmienia stan danej końcówki. Czyli jeżeli na pinie jest 1 to zmienia to na 0 i na odwrót. Jeżeli mamy uwzględnić kilka warunków używamy spójnika and, przykład: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 and pind.1=1 then 'jeżeli przycisk 1 i 2 są wciśnięte toggle portd.0 'zmień stan wyprowadzenia endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Jeżeli odczytujemy stan końcówki to wtedy używamy "pin", a kiedy chcemy nadać jakiś stan używamy "port" Stwierdziłem że nie będę tu kombinował i zacytuje kolegę, który to całkiem "zgrabnie" ujął. Dodam tylko tyle, że warunki rozbudowane też mogą być zapisane w jednej linii tylko poszczególne kawałki muszą być oddzielone dwukropkiem. Kompilator traktuje to wtedy jako następną linię. Lecz nie polecam takiego zapisu ponieważ program staje się mało przejrzysty. Układy czasowe: Jak można się domyśleć będziemy używać instrukcji : wait, waitms, waitus. Które nie są zbyt dokładne. Niech ta dioda teraz zgasi się po dwóch sekundach. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'zaświeć diodę wait 2 'czekaj dwie sekundy portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu A teraz niech po 2 sekundach zgaśnie na 1,5 sekundy i znów się zaświeci na 3 sekundy. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'zaświeć diodę waitms 2000 'czekaj dwie sekundy portd.0=0 'zgaś diodę waitms 1500 'czekaj 1,5 sekundy portd.0=1 'zaświeć diodę waitms 3000 'czekaj 3 sekundy portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Jak pisałem wcześniej to instrukcje z serii "wait" nie są dokładne i kiedy zapiszemy w programie że, dioda ma świecić przez 3 sekundy to ona wcale nie musi tego robić dokładnie tyle. Napiszemy teraz prosty programik który z naszej diody zrobi "migacz". $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona waitms 500 'czekaj 0,5 sekundy toggle portd.0 'zmień stan wyprowadzenia loop 'koniec pętli end 'koniec programu Program po prostu co pół sekundy zmienia stan wyprowadzenia do którego podpięta jest nasza diodka. Przy instrukcjach czasowych warto wspomnieć o "drganiu styków" w switchu. Można je zniwelować na 3 sposoby: -sprzętowy: Między prockiem a przyciskiem dodać w szeregu rezystor oraz równolegle kondensator. -programowe: Po instrukcji if użyć komendy waitms lub waitus a dopiero potem podać żądana procedurę, przykład: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty waitms 30 'czekaj portd.0=1 'zaświeć diodę wait 2 'czekaj dwie sekundy portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu No i tak doszliśmy do polecenia debounce. Polecenie "samo" niweluje efekt drgania styków, przykład: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona debounce pinb.0, 1, wlacz, sub loop 'koniec petli wlacz: 'etykieta toggle portd.0 'zmień stan wyprowadzenia return 'powrót end 'koniec programu "ciąg" polecenia debounce wygląda tak: debounce port, stan na jaki ma reagować, etykieta, sub Standardowy czas opużnienia polecenia debounce wynosi 25ms ale można go zmienić poprzez polecenie: config debounce=i w tym miejscu wpisujemy liczbę opóźnienia w milisekundach Kilka rad: Przy pisaniu programu stosujcie jak najobszerniejsze komentarze. Kupcie płytkę stykową bo ten układzik będzie się zmieniał jeszcze nie raz i niema sensu tego lutować, a płytka stykowa wierzcie mi przyda się wam jeszcze. Podczas ładowania programu na proca nie zapomnijcie o podpięciu zasilania (jeżeli programator tego wymaga, a wymagają prawie wszystkie) Procesor zasilamy stabilizowanym napięciem 5v. Po tej lekcji powinniście umieć napisać program do prostych robotów. Do na przykład takiego który ma zaprogramowana trasę. omijającego przeszkody, line followera itp. W tej części to już wszystko, dziękuje za uwagę Paweł "Ikar" Stankiewicz Dla początkujących polecamy zestaw z oferty firmy and-tech.pl http://www.zestawyuruchomieniowe.pl/
  10. 31 punktów
    Witam Ponoć każdy prawdziwy mężczyzna musi spłodzić syna, posadzić drzewo oraz ... zbudować dom albo robota. Ja wybrałem to drugie - spłodziłem robota dla syna Inny cel to zdalna obserwacja moich 2 kotów w mieszkaniu w najróżniejszych sytuacjach i filmowanie ich nawet gdy się tego nie spodziewają Niestety kot który ma ciemne futro jest biedny bo czujniki słabo go widzą więc najechał kiedyś na niego i teraz kot spyla gdzie pieprz rośnie gdy zobaczy to nadjeżdżające monstrum. Natomiast biały kot hmmm olewa trochę robota bo wie, że ten nigdy go nie najedzie - nawet jeśli specjalnie pilotem chcemy to zrobić to nie da rady. Robocik można sterować na 3 różne sposoby: Pilot IR (RC5-Philps) lub Radio 433MHz (przełączamy tylko odpowiednią zworkę) . Odbiornik 433MHz firmy Telecontrolli jest w stanie PowerDown - gdy nie jest używany. a poza tym równolegle także za pomocą Bluetooth. Moduł BTM-222 ma spory zasięg i robot steruje także włączaniem i wyłączaniem zasilania do modułu w celu oszcz. energii. Robocik wyposażony jest w pokładową kolorową bezprzewodową kamerkę 2,4GHz która jest ruchoma i zdalnie sterowana. Może obracać się w poziomie o 180st. Kamerka wyposażona jest w podświetlanie za pomocą SZPERACZA, czyli pakietu białych super jasnych białych diod LED sterowanych sygnałem PWM. Serwomechanizm obracający kamerę ma włączane zasilanie tylko na czas gdy ma się obracać i po obrotach automatycznie zasilanie jest wyłączane w celu oszczędności energii. (Sorki za filmik z kamerki - kiepskiej jakości i tylko czarno-biały - ale tylko taki koci monitor miałem pod ręką jak to robiłem - może później dam jeszcze filmik z kamerki robota z podglądu np kotów i w kolorze) Na pokładzie znajdują się jeszcze: 3 czujniki odległości pracujące także w podczerwieni i nie "gryzą" się ze zsterowaniem z pilota IR. Poza tym jest BUZZER sygnalizujący pewne operacje. Z przodu kamery na ruchomej platformie widać efekt pływającej niebieskiej diody LED. To tylko taki bajer dla syna - taki "ala radar". Osiem diod LED sterowanych jest przez rejestr przesuwny 74HC595 czyli procek wykorzystuje programowe SPI. Oczywiście także można go włączać i wyłączać zdalnie - jak wszystko prawie. Platforma robota wykonana jest z normalnego laminatu na którym umocowane są kolejne płytki PCB oraz inne wsporniki itp. Do platformy przymocowane są dwa większe serwomechanizmy które przerobiłem żeby były silniczkami DC z przekładnią i miały odpowiednią MOC Silnikami steruje pokładowy L293D . Oczywiście wykorzystałem ładnie sterowanie płynną mocą silników dzięki czemu mam możliwość zmiany biegów. Albo automatycznego zwiększania mocy w zależności od stanu wyczerpującej się baterii akumulatorków. Naturalnie dzięki wykorzystaniu PWM'a do sterowania silników - tak przygotowałem procedury do jego kierowania, skrętów i ewolucji za pomocą klawiszy pilota, że wszystko działa super płynnie, wygodnie i można wydziwiać sterowaniem przy różnych prędkościach. Np gdy robot jedzie a na chwileczkę tylko klikniemy klawisz skrętu to PWM zmniejsza na chwilę moc silników i delikatnie reaguje na skręty - prowadzi się go prawie jak auto może nawet jak auto wyścigowe. Procesor oczywiście pięknie mierzy napięcie na akumulatorach tak aby się zbytnio nie rozładowały. Ich stan sygnalizuje diodami: Zieloną, Pomarańczową i Niebieską w klawiszu głównego wyłącznika. Gdy stan baterii jest krytyczny - procesor odłącza wszystko co chce zjadać prąd - wszystkie moduły a nastepnie sam wprowadza się w śpiączkę. Czyli trza naładować. Zasilanie rozwiązałem w oparciu o przetworniczkę LM2940-5.0 Jest to milion razy lepsze rozwiązanie niż tradycyjny 7805 poniważ: mniej się grzeje a co najważniejsze !!! .... przetworniczka działa nawet przy napięciu wejściowym 6V i to stabilnie dzięki czemu ładnie przetwornikiem ADC mogę kontrolować napięcie akumulatorków. Tylko kamera ma oddzielny pakiecik akumulatorków bo ona też ma smaka na prądzik ale na tym oddzielnym pakieciku starcza na dłuuugo ITELIGENCJA Robota - wyszła mi jak na razie dosyć fajnie, ponieważ można go sterować albo pilotem IR albo RC 433MHz ---- albo z komputera na przykład przez Bluetooth za pomocą oczywiście specjalnego dedykowanego programu Oczywiście inteligencja polega na tym, że gdy przestaniemy go sterować ręcznie to sam przełącza się na tryb automatycznego życia. Jeździ sobie tu i tam, pięknie omija przeszkody. Ale nie zawsze jeździ w lewo albo w prawo. On często gdy widzi przeszkodę z przodu to WĘSZY i czasem uzna że lepiej pojechać w lewo a czasem w prawo. Całkiem przy okazji tworzenia takiego elektronicznego Frankensteina - wyszła ciekawa opcja - że robot potrafi sam wyszukiwać wyjścia z pułapki .... widać to trochę na filmikach. Fajnie też wygląda gdy mu zagrodzimy drogę nogami ale zrobimy małą przerwę. Wtedy on gdy wywęszy, że jest przerwa - to zaczyna taniec i próbuje aż do skutku żeby tylko wcisnąć się w tę przestrzeń/dziurę i pojechać dalej. SZPERACZ podświetlenie ostro daje w ciemności a koty fajnie wyglądają gdy są zaskoczone we śnie albo gdy w nocy dobierają się do michy z jedzeniem Cały program napisany jest w C i zostało jeszcze bardzo dużo miejsca w pamięci procka - więc będę mógł go spokojnie rozwijać i rozwijać - bo pomysłów na tą platformę mam jeszcze sporo. Generalnie napisałem też program w Delphi na PC do sterowania robotem. Docelowo planuję zawrzeć w nim okienko, które będzie przechwytywało obraz z kamerki. Bo teraz to podłączam kamerkę pod monitor z wejściem TV, robię sobie PIP na monitorze i w prawym dolnym rogu obserwuję gdzie robot podąża sterowany przez Blututcha Poniżej fotki z początków i testowania całości gdy jeszcze używałem płytki stykowej jak zwykle. Poi drodze zmieniłem kółko swobodne. Wcześniej było takie niebieskie duże z podstawki pod półeczkę na kółkach do łazienki. Wypersfadowałem żonie , że półeczka w łazience wcale nie musi jeździć .... ale później użyłem mniejszego - takiego meblowego chyba z Castoramy z łożyskiem, bo lepiej było mi z jego montażem. Udostępniam schemat oraz wsad do procesora w postaci *.HEX Robotem steruje ATmega32. Wykorzystuję jeden sprzętowy PWM do sterowania silnikami, programowy PWM do sterowania jasnością Szperacza, programowa obsługa SERWA obracającego kamerkę, ten sam timer służy mi także do tyknięć systemowych dzięki czemu wszystko działa ładnie jakby w czasie rzeczywistym w oparciu o zdarzenia i programowe timery do różnych celów. Płytki robione termotransferem "na żelacho" wytrawiane w B327 czy jakoś tak aha dzięki temu rozwiązaniu z linku poniżej: http://www.elektroda.pl/rtvforum/viewtopic.php?t=1343484&highlight= wsad do procka można ładować do ROBOTA też bezprzewodowo i bez podłączania kabli - wszystko przez Bluetooth. https://www.youtube.com/watch?v=AtqaQIa4DJ8 https://www.youtube.com/watch?v=F7Hc6fRRAeY Robot w strasznym ciemnym labiryncie Mój kot to jak godzilla albo kot-zilla dla robota ROBO_02_m32.zip
  11. 30 punktów
    Kurs BASCOM - lekcja1-wstęp Kurs BASCOM - lekcja2 - pierwsze kroki Kurs BASCOM - lekcja3 - zaczynamy programować Witam! W tej części skonfigurujemy nasz kompilator, poznamy jego dodatkowe narzędzia oraz dyrektywy. Będę się starał jak najbardziej "łopatologicznie" wszystko tłumaczyć. Zaczynamy. Konfiguracja: Aby wejść w okno opcji należy kliknąć ikonę na pasku narzędzi. W tym oknie klikamy zakładkę „Programer” (1) W linii Programer(2) wybieramy programator jaki będziemy używać. W zależności od tego co wybierzemy pojawia nam sie poniżej różne zakładki (ja wymienię 3 najczęstsze). Na powyższym obrazku widać „Parallel”(3) W linii „LPT-address” (4)wybieramy adres naszego portu lpt, a w linii „Port dalay”(5) wpisujemy liczbę odpowiadającą za opóźnienie portu co jest konieczne w przypadku szybkich procesorów. Wartość tą dobiera się doświadczalnie. Tutaj widać zakładkę „Serial”(6).W linii „COM-port”(7) wybieramy nr. Portu do jakiego jest podłączony nasz programator , a w linii „STK500”(8) wpisujemy ścieżkę do programu obsługójącego ten programator. Zakładka „Other”(9). W linii „Program”(10) wpisuje się ścieżkę do programu obsługójącego ten twój programator W linii „Parameter”(11) wpisujemy dodatkowe parametry dla programu, a zaznaczając „Use HEX file”(12) dajemy sygnał bascomowi, że ma do programu obsługującego programator wysłać pliki HEX. Narzędzia BASCOM-a: -Lcd desinger(Ctrl+L): Część bascoma w której można zdefiniować 8 dowolnych, niestandardowych znaków, mogą to być np: polskie znaki takie jak: ąćęłńóśźż; lub jak widać na obrazku-cokolwiek Pole do projektowania znaczków ma 40 kostek tak jak jedno pole w wyświetlaczu alfanumerycznym Aby dodać do programu swój symbol należy kliknąć przycisk ok. -LIB Menager(Ctrl+I): Część bascoma do zarządzania i tworzenia nowych bibliotek. Narzędzie dla dużo bardziej zawansowanych (asembler). -Terminal emulator(Ctrl+T): Służy do otwierania programów korzystających z portu rs232(com). -Graphic converter: Przekompilowuje pliki .bmp do plików .bgf tym samym zmieniając je na czarno-białe. Maksymalna rozdzielczość obrazka to 240*240. Obraz można potem wyświetlić na lcd graficznym. Dyrektywy procesora: --- #if -w wolnym tłumaczeniu-jeżeli, przykład: Const Xd = 1 #if Xd Lcd ":)" --- #else -bądź, jeżeli warunki podane w #if nie zostaną spełnione zostanie wykonana instrukcja z dyrektywy #else, przykład: Const Xd = 1 #if Xd Lcd ":)" #else Lcd ":(" --- #endif -dyrektywa kończąca dyrektywe warunkową którą jest #if to działa jak zamkniecie polecenia np. html-u (tam kończy sie dane zadanie ta sama komendą którą sie zaczynał tylko ze sleszem- to tak do porównania), przykład: Const Xd = 1 #if Xd Lcd ":)" #else Lcd ":(" #endif Dyrektywy kompilatora: Z tych dyrektyw będzią nas interesowac tylko dwie: --- $regfile -służy do określenia procesora na jakim bedzie działać program, przykład: $regfile = "2313def.dat" 'program jest pisany na procesor attinny2313 --- $crystal -służy do określania taktowania z jakim będzie pracować procesor, przykład: $crystal = 4000000 'procesor będzie pracował z kwarcem bądź na wewnętrznym oscylatorze 4Mhz Elemęty języka Bascom Basic: --- ALIAS -służy do zmiany nazwy zmiennej, jeżeli wiemy że do danego pinu będzie podpięty czujnik możemy zmienic nazwe aly nam się łatwiej pisało program oraz ab był bardziej przejrzysty, przykład sensor1 alias portb.0 --- BITWAIT -zawiera w sobie dodatkowa nieskończoną pętle i czeka na jakieś "wydarzenie" --- CONFIG -konfiguruje się ta dyrektywa jakieś urządzenie (np:lcd) bądź pin, port procesora --- DO...LOOP -pętla nieskończona --- DISPLAY -włącza bądź wylloncza ekran lcd (displey on/off) --- END -kończy program --- GOSUB -wykonuje skok do podprogramu, przykład: if pind.0=0 then gosub jedz end if jedz: portb.4=1 portb.3=0 return --- IF...THEN...ELSE...END IF - blok decyzyjny, przykład: if pind.0=0 then portb.6=0 else portb.6=1 end if 'jeżeli na pinie portu d pojawi się zaro wtedy wprowadź noge 6 portu b w stan wysoki 'bądź jeżeli na pinie portu d pojawi się jeden wtedy wprowadź noge 6 portu b w stan spoczynku 'koniec "ciagu warunków" --- LCD -polecenie wyświetlające na lcd dany tekst --- REM -instrukcja dająca sygnał kompilatorowi że dalszy tekst to komentarz można ją zastąpić ' --- RESET -ustawia bit w stan 0, przykład: reset portd.4 co równie dobrze można zapisać jak: portd.4=0 --- RETURN -wykonuje powrót do np: podprogramu --- SET -ustawia bit w stan 1, przykład: set portd.4 co równie dobrze można zapisać jak: portd.4=1 --- SHIFT -przesuwa bity w prawo bądź w lewo (shift left/right) SHIFTLCD -przesuwa zawartość LCD w prawo lub w lewo (shiftlcd left/right) --- SOUND -służy do generowania dźwięków, przykład: Sound portd.4 , 100, 10 'sound pin , liczba impulksów, czas --- WAIT -przerwanie programu na określony czas (w sekundach) wait 2 'czekaj dwie sekundy --- WAITMS -przerwanie programu na określony czas (w milisekundach) waitms 2000 'czekaj dwie sekundy --- WAITUS -przerwanie programu na określony czas (w mikrosekundach) waitus 2000000 'czekaj dwie sekundy Z tym, że żadne polecenie z serii wait nie może posiadać więcej jednostek niż 65535, więc ostatni przykład jest błędny-podałem go tak aby początkujący nie musieli szukać ile to jest mikrosekunda. Wymieniłem chyba te najczęściej używane dyrektywy po reszte odsyłam was do helpa bascom którego można pobrać z tej stronki. W następnej części nauczymy się praktycznego zastosowania podanych dyrektyw oraz konfigurować porty. Paweł "Ikar" Stanmkiewicz Dla początkujących polecamy zestaw z oferty firmy and-tech.pl http://www.zestawyuruchomieniowe.pl/
  12. 29 punktów
    Witam, przedstawiam wam Nuggeta - robota klasy minisumo na silniczkach Pololu, z którym udało mi się zajść dość wysoko na RoboticArena2010 (nieszczęsne czwarte miejsce ). Obiecałem, że opiszę go jeszcze w grudniu, co niniejszym czynię. Elektronika - stosunkowo prosta, 4 sharpy 340K z niezbędną drobnicą, atmega16 (taktowana wewnętrznym RC 8MHz, bo na kwarc w HC49 nie było za bardzo miejsca). Dwa KTIRy z przodu i dinozaury: L298 (multiwatt) i 78L05 (w smd, so-08). Dodatkowo duży przełącznik hebelkowy (robiący od razu za przycisk startu, w momencie włączenia robot czeka 5s i startuje, innych przycisków brak, ze względu na brak miejsca), i spore kondensatory filtrujące: 3300uF na linii 5V i 1000uF na linii 7,4V i 10 kondów 100nF, w róznych miejscach, najwięcej przy uC. Dodatkowo kilka ledów, ale jako, że są pod spodem robota (nie widać ich od góry) nie są zbyt uzyteczne, tylko przed walką można sobie posprawdzać, czy czujniki działają . No i widać jak zasilanie się włącza, to robot się podświetla od spodu. PCB robione termotransferem, cynowane chemicznie w środku z allegro. Zasilanie to standardowy pakiet 500mAh Turnigy (znaczy prawie standardowy, musiałem skrócić kabel z wtyczką zasilającą, bo się nie mieścił). Na RA praktycznie nie było potrzeby ładowania (ani razu pakiet nie zszedł poniżej 6V), ale jako, że mam kiepski stabilizator i duży spadek napięcia na mostku, to pakiet wymieniałem, gdy napięcie na nim spadło do 7,9-8V. Napęd to jak już wyżej wspominałem silniczki z pololu, 30:1 HP, 1000RPM (a chciałoby się więcej ), moment wystarczający, ale chciałoby się więcej (czasami silniki stawały), dlatego w następnej konstrukcji będą 4. Opony na zawodach były wykonane z wysokotemperaturowego silikonu RTV, teraz ma oponki z nibypoliuretanu (ale co to dokładnie i skąd, to nie powiem, powiem tylko, że nie przechodzi testu kartki, przynajmniej zaraz po czyszczeniu). Czeka na nowe koła (teraz jest alu, będzie poliamid ), z mniejszym biciem i lepszymi oponami. Obudowa z laminatu. Nie jestem zadowolony njego wagą - bez dociążenia waży około 200g, dużo za mało, opony mają za małą przyczepność (dlatego na RA jeździł z ołowiem na dachu). I kilka zdjęć (niestety te z budowy mi się gdzieś zapodziały, na 100% komuś je wysyłałem, więc jak ktoś ma, to byłbym wdzięczny, gdyby dał znać może są na innym komputerze, ale wątpię). I filmik z RA: Później wrzucę jeszcze kilka zdjęć, teraz już nie bardzo mam czas na zrobienie większej ilości //edit: znalazłem na dysku jakieś zdjęcia jeszcze:
  13. 29 punktów
    Witam. Chciałbym przedstawić swojego robota klasy minisumo. Robot ten zajął 2 miejsce na Robotic Arena 2008. Parę zdjęć: Dane techniczne: 4 silniki z Wobitu http://mobot.pl/index.php?site=products&type=873&details=7779 Silniki te mają 310 obrotów na minutę. W trakcie zawodów zauważyłem że brakowało im mocy i gdy dwa roboty się zaparły to silniki prawie stawały. Koła również z wobitu: http://mobot.pl/index.php?site=products&type=875&details=7787 Koła są przerobione. Jak widać na poniższym zdjęciu felga posiada trzy ranty które przytrzymują opone. Ja oddałem takie felgi do tokarza żeby została gładka felga. Powód dla którego przerabiałem te koła jest taki, że opona na brzegach wybrzusza się. Najlepiej zobrazuję to rysunkiem w paincie (przekrój opony): Dzięki temu że stoczyłem te ranty otrzymałem lepszą przyczepność (większą powieszchnie styku z piodłożem), ale musiałem przykleić opony do felg "super-glutem" Akumulator to połączone 4 baterie Li-pol firmy nokia BL-5C tak że otrzymałem akumulatorek 7,4V i ok 2000mAh. Nie polecam wykorzystywania w robotach akumulatorków z telefonów komórkowych, ponieważ moją one małą wydajność prądową mimo stosunkowo dużej pojemności, zdesydowanie lepsze byłyby ogniwa modelarskie li-pol. Ja zastosowałem akumulatorki nokii tylko dlatego że pasowały mi ich wymiary. Budowa: Całość zbudowana jest na laminacie dwustronnym 1,5mm. Musiałem robota dociążyć bo wyszedł zbyt lekki. W kołach są wciśnięte i przyszlifowane kólki ołowiane, a między kołami są przylutowane sztobki z ołowiu. Razem na robocie znajduje się około 110 gram ołowiu i cały robot waży 488gram. Czujniki: Cztery sharpy GP2D12 i cztery transoptory odbiciowe jako czujniki linii Sharp GP2S24 Elektronika: W załączniku schemat Wygląd płytek: Płytki wytrawiałem sam. Większość elktroniki jest na płytce spodniej (podłodze), jest to płytka dwustronna, niestety nie widać tego na zdjęciu bo przykryte jest to gumą. Prawie wszystkie elementy są SMD (montowane powieszchniowo). na scheamcie są błędy w wyprowadzeniach Sharpów oraz przy wyprowadzeniach komparatorów. Program: W załączniku listing programu napisany w C Walki na Robotic Arena 2008: Pierwsza walka: Druga walka: Trzecia walka: Czwarta walka: Walka półfinałowa: Walka finałowa: Mimo że na zawodach robot spisał się całkiem nieźle, nie jestem z niego zadowolny. Planowałem dać do niego gąsienice ale niestety przez "bajzel" w pewnej firmie nie udało mi się tych gąsienic zdobyć i na tydzień przed zawodami musiałem kombinować jakie kólka dać do robota. Przez to że dałem inne koła niż planowałem robot jest wyższy niż niż to sobie zaprojektowałem. Pozatym brakóje mu czujników z boku przez co ma trudności z wykrywaniem wrogiego robota gdy nie trafi go w pierwszym podejściu, widać to na filmikach z walk. O zawodach Robotic Arena 2008: Mimo że mój robot nie był dopracowany, to na zawodach wymiatał rywali aż miło, podobnie jak robot moich kolegów z którym spotkałem się w finale. Wydaje mi się że miałem mechanicznie robota lepszego niż robot z którym walczyłem w finale, ale smutna prawda jest taka że miałem słabszy program i przez to że mój robot mniej się "wiercił" po ringu przegrałem finał. Chociaż nie wiele brakowało a wygrał bym przez dyskwalifikacje przeciwnika, raz w ostaniej rundzie, w M&Msie (robocie z którym walczyłem w finale) opadła klapka po sygnale start, gdyby zdażyło się to drugi raz to wygrałbym zawody Program.txt Schemat.pdf
  14. 29 punktów
    Chciałbym zaprezentować konstrukcję malutkiego robota o nazwie Quatro. Budowa przebiegała etapami i trwała łącznie ok. 6 miesięcy. Pierwszym etapem było zbudowanie robota klasy Nanosumo. Prace w tym kierunku zakończyły się sukcesem w niespodziewanie szybkim czasie, dlatego powstał pomysł rozbudowy robota. Z racji, że robot od spodu posiada 3 optyczne czujniki odbiciowe, postanowiłem napisać program do linefollower’a. Od tej pory robot spełniał już 2 zadania. Widząc ogromny potencjał, który posiada malutka platforma, postanowiłem wykorzystać ją w jeszcze jeden sposób. Nad ogniwem zasilającym umieściłem transceiver i zbudowałem nadajnik. Za jego pomocą, dzięki wykorzystaniu potencjometrów oraz przycisków, można było zdalnie sterować robotem na kilka różnych sposobów. Miesiąc później Quatro był już sterowany z klawiatury telefonu z wybieraniem tonowym DTMF i posiadał kolejny moduł nad transceiver’em. Jego zadanie było stricte pokazowe i miało na celu przypominać pojazd uprzywilejowany. W maju br. roku do robota wprowadziłem komunikację dwukierunkową, a nadajnik radiowy został wyposażony w graficzny wyświetlacz LCD. Następnie wymieniłem silniki i dalmierze oraz płytkę PCB, na której znajduje się ogniwo zasilające. Kolejną funkcją jest sterowanie robotem za pomocą bezprzewodowej myszki optycznej. Reasumując robot posiada następujące funkcje: -Nanosumo -Linefollower -Zdalnie sterowany za pomocą nadajnika radiowego -Zdalnie sterowany z wykorzystaniem telefonu komórkowego -Zdalnie sterowany przez zmodyfikowaną komputerową mysz optyczną -Robot jak również pozostałe elementy są przystosowane do rozbudowy i tworzą zestaw dydaktyczny. Nanosumo Robot tej klasy musi spełniać kilka zasad. Jego wymiary nie mogą przekraczać 25mm*25mm*25mm. Quatro mieści się oczywiście w tych granicach, jednak bez PCB z modułem radiowym, który jest mu zupełnie niepotrzebny podczas walki na ringu, a jego obecność mogłaby stwarzać pewne kontrowersje. Waga robota nie powinna przekraczać 25g. Ten warunek także jest spełniony. Pozostałe zasady są takie same jak w większych klasach sumo i nie widzę potrzeby ich tu wymieniać. Orientację na ringu robotowi zapewniają trzy optyczne dalmierze. Ich elementem wykonawczym są HSDL-9100 współpracujące z układami APDS-9700. Oba te komponenty zawdzięczam firmie WObit i chcę je polecić wszystkim szukającym miniaturowego dalmierza o zasięgu nawet do 20cm . Elementy te znajdują się na PCB pod ogniwem li-ion. Od spodu umieszczone są trzy optyczne odbiciowe czujniki linii. Dwa z przodu i jeden z tyłu. Algorytm jest standardowy, tu nie wymyśliłem nic specjalnego. Linefollower Do wykrywania linii robocik wykorzystuje dwa przednie czujniki. Ze względów konstrukcyjnych robot jeździ po czarnym podłożu wzdłuż białej linii. Jest to spowodowane sposobem wykonania układu przerwań, który jest przystosowany do walk na dohyo. Oczywiście można nie wykorzystywać przerwań , jednak spowolni to przejazd po linii. Nadajnik Zdjęcie przedstawia obecną wersję nadajnika. Zielonym kolorem zaznaczone są guziki, za pomocą których można sterować robotem oraz po wybraniu odpowiedniej kombinacji, jego funkcjami. Czerwony kolor wskazuje gałki potencjometrów suwakowych. Lewy potencjometr służy do proporcjonalnego sterowania lewym kołem, prawy potencjometr analogicznie. W prawym, dolnym rogu, żółtym kolorem zaznaczony jest mikrofon, który odbiera sygnał DTMF. Diody LED zaznaczone jasnoniebieską obwódkami pokazują kierunek obrotu kół. Srebrna gałka potencjometru, na środku, służy do sterowania prędkością robota podczas używania guzików. Wartość jaką wybraliśmy za jej pomocą, można kontrolować na wyświetlaczu. Jest zaznaczona kolorem zielonym. Kolor czerwony i fioletowy pokazują odpowiednio stany czujników linii oraz dalmierza. Kolorem żółtym zaznaczone jest dwadzieścia dziewięć strzałek. Są to wskaźniki funkcji, o której wcześniej nie wspomniałem. Mianowicie robot może wykonywać cyklicznie wcześniej zaprogramowane ruchy. Ich kierunek wskazują właśnie te strzałki. Wykonywany aktualnie ruch jest negowany na wyświetlaczu. Mysz komputerowa Nie będę umieszczał jej zdjęcia, gdyż niczym się ona nie różni od zwykłej myszy komputerowej na USB. Modyfikacje polegały jedynie na usunięciu jednego z układów scalonych, umieszczeniu wewnątrz transceiver’a, akumulatora i oczywiście mikrokontrolera jakim jest ATmega8l. Do kontroli przemieszczenia użyłem sensora PAN3101. Wykorzystałem także trzy przyciski. Jeden do zatrzymania i dwa do kontroli prędkości robota. DTMF Sterowanie za pomocą telefonu odbywa się w najprostszy sposób. Należy przyłożyć słuchawkę telefonu do mikrofonu umieszczonego na nadajniku i wybrać odpowiedni klawisz. 2-przód 4-lewo 6-prawo 8-tył 1,3,7,9-po skosie *-szybciej #-wolniej 5,0-inne rzadko używane funkcje Dekodowaniem sygnału DTMF zajmuje się układ CM8870. Konstrukcja Robot zbudowany jest w formie „kanapki”. Obecnie składa się z czterech dwustronnych płytek PCB. Na dolnej płycie umieszczone są czujniki linii i napęd oraz niezbędne podzespoły takie jak sterownik silników. Płytka druga mieści procesor ATMEGA8L, złącze do programowania i komunikacji z modułem radiowym. Dalmierze, kontrola zasilania, gniazdo na ogniwo zasilające oraz układ resetu znajdują się na trzeciej płycie PCB. Ostatnia, umieszczona na samej górze płytka PCB, mieści moduł radiowy i jest przystosowana do rozbudowy robota o kolejne płytki. 1-dalmierz 2-silnik 3-złącze do programatora 4-moduł radiowy 5-ogniwo zasilające 6-czujnik linii 7-reset 8-koło i przekładnia 9-połączenie modułu radiowego z mikrokontrolerem
  15. 28 punktów
    Witam wszystkich forumowiczów:) Postanowiłem zaprezentować jednego z moich robotów z kategorii Sumo Standard. Jest to Konieczko (młodszy z moich dwóch robotów). Charakterystyka: Elektronika: - schemat i płytka mojej produkcji - uC AT89C2051 - proszę się nie śmiać - mostek-H -brak (zastępują go przekaźniki) - czujniki linii CNY70 (aktualnie nie sprawne po walce w Wiedniu z Cedronem ) - przedni czujnik Sharp 1500mm - 2 boczne czujniki Sharp 100-800mm Zasilanie: - do tej pory były 2xPb 6V 1,3Ah - aktualnie pakiety 7,2V 1600mAh + 11,1V 2200mAh (jeszcze nie testowane na zawodach) Mechanika: - silniki + przekładnie z wkrętarek - koła stal + guma - obudowa spawana z aluminium - pokrywa z siatki stalowej Niżej kilka fotek i filmik
  16. 27 punktów
    witam witam chciałbym wam przedstawić moja kolejna maszynkę o nazwie gt-07 robocik występował na robotik arena 2008 zdobył 2 miejsce w kategorii freestyle robot porusza się na gąsienicach zrobionych z zużytych pasków rozrządu i współpracującymi z nim elementami( koła z pompy wody napinacze ) napędzany przez dwa mocne silniki prądu stałego z poloneza polecam:) przeniesienie napędu z silnika na gąsienice po przez łańcuch rowerowy na samej platformie znajduje się robot typu arm już wcześniej pokazywany na forum w dziale mechanika na robot arena była uboższa wersja teraz doszło sterowanie z procesora:) wszystko widoczne na zdjęciu oczywiście jak już kiedyś pisałem nie stosuje gotowych serwo mechanizmów nie tylko ze jak dla mnie są za drogie ale mechanika zrobiona z elementów np vhs jest o wiele ciekawsza sami ocenicie:)masa całkowita ponad 25kg maxymalny udźwig robota nieznany ja ważę 80Kg i na nim sobie jezdźe po pokoju jako dodatków wyposażenie ma czujniki pochyłu rtęciowe i automatyczne podświetlanie na fotokomórce. W sumie nie ma się co zagłębiać w dokładny opis bo wszystko jest widoczne na zdjęciu:) mam nadzieje ze się spodoba:) jak na 200zł kosztów całkowitych Robot ten ma wielu przodków z których ma wzięte wiele rozwiązań wystarczy przewertować strony i znaleść roboty z serii gt jeżeli będzie taka potrzeba mogę zamieścić bardziej szczegółowy opis jak się spodobało postaw piwo:) tutaj jedyny filmik z działania robota około pierwszej minuty:)
  17. 27 punktów
    Chciał bym wam przedstawić kolejnego Zenona. Ta wersja została pozbawiona błędów z poprzedniej. Zenon 3 zajął 5 miejsca na zawodach Robomaticon. Elektronika Robot opiera się na procesorze atmega128 taktowanym 18,432MHz. Do sterowania silnikami wykorzystuje 2 tb6612 (jeden na silnik). Silniki są zasilane przez przetwornicę. Aby stabilizator napięcia nadmiernie się nie grzał przez zasilanie z 12,60v stabilizator pobiera zasilanie z wtyczki balancera (2 cele). Do ostrzegania przed nadmiernym rozładowaniem 2 cel służy dioda sterowana przez LM358. Robot może być stratowany przez pilot 56kHz. Pilot nie jest używany przez zakłócenia. Po wymianie odbiornika wszystko powinno działać. Czujniki W robocie zastosowane jest 17 czujników KTIR0711s ułożonych w linię. Zasilanie Robot zasilany jest z pakietu Turnigy 500mAh 3s. Do elektroniki używany jest 7805 w d2pak. Silniki są zasiane przez LM2576. Mechanika Silniki zastosowane w robocie to Pololu 30:1 HP + koła 32mm. Kulki są plastikowe 3/8 cala. Masa robota z wyświetlaczem to 200g. W robocie jest możliwość regulacji oddalenia czujników od osi silników. Obie płytki skręcone są ze sobą śrubami M3. Program Program został napisany w c. Algorytm sterujący to PD. Czujniki są odczytywane cyfrowo. Nie powoduje to problemów przy poprawnym ustawieniu wysokości. W robocie jest menu które służy do zmian nastaw. Ustawienia zapisywane są do pamięci EEprom. Filmy Zdjęcia Osiągnięcia III miejsce w Trójmiejskim Turnieju Robotów
  18. 27 punktów
    Chciałbym Wam przedstawić robota klasy sumo - Rico. Wielu z Was miała przyjemność zobaczyć go podczas zawodów CybAiRBOT w Poznaniu, bądź też na filmikach. Elektronika: Jedna z bardziej udanych rzeczy w robocie, tu należy się mega pochwała dla użytkownika nes86, któremu udało się upakować wszystko w wymiarach 6x8cm. Na płytce znajdują się (główne elementy): - Przetwornica liniowa, - Procesor - ATmega1280 - wybrany, aby mieć 16 wejść przetwornika ADC, - Dwa mostki vnh, dodatkowo chłodzone miedzianymi radiatorami, - Tsop - do startowania robota, - Potencjometr, diody led, wyświetlacz LCD 2x8 znaków. To tak po krótce. Dodatkowo z części elektronicznych na robocie znalazły się: - 10 czujników Sharpa GP2D12, - Czujniki linii - CNY70, Robot był wykonywany wspólnie z użytkownikiem nes86, o to rendery z programu Autodesk Inventor: Do startowania robota służyły pokazywane wcześniej piloty użytkownika nes86: Zasilanie: Dwa pakiety Dualsky 800mAh 11,1V, co daje w sumie 22,2V. Silniki: Sztuk 4, przy 24V mają około 500 obrotów, ich mocy nie będziemy zdradzać Obudowa + koła + kliny: Obudowa wykonana z czarnej plexi 8 i 3 mm - dodatkowo wzmacnianej laminatem. Niestety pomysł z pleksi okazał się maksymalnie chybiony. O ile łatwo i tanio mogliśmy wyciąć sobie obudowę, to materiał okazał się zbyt kruchy i zaznaliśmy kilku pęknięć Koła aluminiowe toczone specjalnie pod robota. Kliny wykonane z zawiasów, metalowych linijek Topexa Wszystkie elementy metalowe zostały pomalowane proszkowo na czarno. Oto jak robot wyglądał na kilka dni przed zawodami: I elektronika: Wybaczcie jakość zdjęć, ale na chwilę obecną lepszych nie posiadam. Jeśli chodzi o same zawody to o ile dzień wcześniej na ringu zachowywał się bezbłędnie to na zawodach miał trochę problemów. Zdaję sobie sprawę, że opis jest nieco lakoniczny, proszę więc Was o pytania, które z pewnością uzupełnią opis. Robot zajął pierwsze miejsce w klasyfikacji konstrukcji sumo na zawodach Robotic Arena 2010 oraz Sumo Challenge 2010!
  19. 24 punktów
    Prawda jest taka, że sporą część informacji, które tu przedstawiłem, można znaleźć na forum - jeśli się wie czego szukać. Postanowiłem jednak zamieścić wszystko w jednym miejscu, uzupełniając własnymi doświadczeniami i pomysłami. Serwa modelarskie w robotyce amatorskiej - Kompendium wiedzy Damian Nowak (Nawyk) I. "KLASYCZNE" WYKORZYSTANIE SERW MODELARSKICH (SERWA NIE PODDANE PRZERÓBCE) Podział i rodzaje serw Najpopularniejsze kryteria podziału serw, to budowa wewnętrzna/sposób działania (serwa analogowe i cyfrowe) i waga (mikro, mini, standard, extra-large itp. - w Polsce najpopularniejsze wydają się być mikro o wadze do 10 gram i standardowe o wadze do 50 gram), można również znaleźć serwa do "specjalnych zastosowań" (np. niskoprofilowe). Rodzaje serw, przykładowe wymiary i waga Podstawowe różnice między serwami cyfrowymi i analogowymi Serwa cyfrowe dodatkowo posiadają możliwość zaprogramowania pozycji neutralnej. W zastosowaniach robotyki amatorskiej (głównie ze względu na cenę) zdecydowanie królują serwa analogowe i to na nich skupia się ten artykuł. Różnice między serwami typu mikro i standard, oprócz wagi, dotyczą także ceny, momentu obrotowego, poboru prądu i szybkości reakcji. Dużą rolę w przypadku tych parametrów odgrywa marka serwa (należy zapoznać się z dokumentacją producenta). Moment obrotowy najpopularniejszych mikroserw wynosi zwykle do ok. 1,5kg*cm (ramię o długości 1cm jest w stanie unieść 1,5kg), podczas gdy moment serw standardowych może wynieść od 3kg*cm nawet do 15kg*cm. Porównanie rozmiarów przykładowego serwa mikro i standard: Budowa i działanie Serwo modelarskie to nic innego, jak silnik DC sprzężony poprzez odpowiednie układy z potencjometrem, którego pozycja odpowiada położeniu wału wyjściowego. Wysyłając na wejście przewodu sygnałowego odpowiedni zestaw impulsów, wyznaczamy konkretną pozycję położenia orczyka - zadaniem układów wewnątrz serwa, jest jak najdokładniejsze odwzorowanie tej pozycji w praktyce, poprzez obracaniem wału silnika w lewo lub prawo i zczytywanie wartości z potencjometru. (oczywiście opis działania bardzo uprościłem - szczegóły w książkach z podstaw automatyki, czy chociażby tutaj: http://pl.wikipedia.org/wiki/Serwomechanizm). Najpopularniejsze kolorystyczne oznaczenia przewodów serw: » przewód czerwony podpinamy do "+" zasilania (zgodnie z dokumentacją serwa, najczęściej po prostu 5V) » przewód czarny podpinamy do "-" zasilania » przewód żółty/biały to przewód, który nas najbardziej interesuje - to po nim wysyłamy sygnał sterujący, żeby określić pozycję orczyka.Sygnał sterujący składa się z impulsów prostokątnych powtarzanych co 20-25ms. Czas trwania jednego impulsu wynosi od 1-2ms, przy czym orczyk znajduje się w pozycji neutralnej ("na środku") przy impulsie trwającym ok. 1,5ms. 2ms odpowiadają więc za maksymalne wychylenie np. w prawo, 1ms odpowiada za maksymalne wychylenie w lewo. Impuls musi się powtarzać co 20-25ms, gdyż jeśli zaniknie, serwo przestanie stawiać opór w celu utrzymania aktualnej pozycji (nie będzie miało punktu odniesienia). 20-milisekundowa przerwa pozwala dodatkowo na obsługę kilku serw równocześnie (obsługujemy kolejne serwa, podczas trwania "przerwy" w pozostałych). Przykładowy przebieg sygnału (maksymalne odchylenie w jedną stronę): Programowa obsługa nieprzerobionego serwa modelarskiego (na przykładzie BASCOM-AVR) Schemat połączeń: Przykładowy kod w BASCOM-AVR: $regfile = "m8def.dat" $crystal = 12000000 Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 Config Portd = Output Enable Interrupts Dim Zmienna As Integer 'Nasze "odchylenie" serwa Zmienna = 150 'Czas trwania impulsu będzie wynosić Zmienna*Reload=1500us (1,5ms) Do Servo(1) = Zmienna Waitms 1000 Loop End II. METODY PRZERABIANIA SERW MODELARSKICH 1. Zdejmowanie blokady i obsługa jako zwykły silnik DC z przekładnią Założenia Ponieważ silniki DC zintegrowane z przekładnią bywają trudnodostępnym i często drogim towarem, bardzo często o wiele prościej (i taniej) jest wykorzystać jako napęd przerobione serwo modelarskie. Naszym celem jest "ominięcie" elektroniki serwa i zdjęcie mechanicznej blokady z jednej z zębatek. Sterowanie odbywa się jak zwykłym silnikiem DC - poprzez mostek H. Przerabianie serwa standardowego 1. Zdejmujemy orczyk 2. Wykręcamy śruby ze spodu serwa 3. Zdejmujemy dolną i górną obudowę 4. i 5. Wycinamy/piłujemy blokadę mechaniczną (wypustkę na jednej z zębatek) 6. Widoczne luty to zaciski silnika 7. Wkładamy cienki śrubokręt między plastikową osłonę i zębatkę na osi silnika i delikatnie wypychamy silnik z obudowy 8. Demontujemy widoczny potencjometr 9. Potencjometr ucinamy i izolujemy przewody 10. Odlutowujemy przewody zasilania i sygnałowy 11. Wybieramy z nich dwa i lutujemy je bezpośrednio do zacisków silnika (patrz: punkt 6.) 12. Wkładamy silnik z płytką do obudowy, zakładamy zębatki 13. Skręcamy obudowę i gotowe Niektórzy wolą usunąć płytkę z elektroniką i zostawić sam silnik z dwoma przewodami - oczywiście, można i tak. W moim przypadku silnik jest unieruchomiony płytką, więc jej usunięcie sprawi, że zacznie się obracać. Dodatkowo, stosunkowo łatwo można odwrócić zmiany i przywrócić serwo do pierwotnej funkcjonalności (kwestia zastąpienia blokady np. wciśniętym w plastik na gorąco metalowym pręcikiem). Przerabianie mikroserwa 1. Zdejmujemy orczyk 2. Wykręcamy śruby ze spodu serwa 3. Zdejmujemy dolną i górną obudowę 4. i 5. Wycinamy/piłujemy blokadę mechaniczną (wypustkę na jednej z zębatek) 6. Usuwamy metalowe "skrzydełka" potencjometru... 7. ...żeby potencjometr mógł bez przeszkód obracać się o 360 stopni 8. Odcinamy przewody potencjometru... 9. ...przewody zasilania, przewód sygnału sterującego i przewody przylutowane do silnika 10. Wybieramy dwa przewody i lutujemy je bezpośrednio do zacisków silnika (trzeci przewód można odciąć/oderwać, ja zostawiłem, bo nie przeszkadza - żółty przewód nie jest do niczego przylutowany) 11. Skręcamy obudowę i gotowe. Programowa obsługa przerobionego serwa Przerobione w ten sposób serwo jest w praktyce zwykłym silnikiem DC z przekładnią, najprościej więc nim sterować za pomocą mostka H. Schemat połączeń: Przykładowy kod w BASCOM-AVR: $regfile = "m8def.dat" $crystal = 1000000 'Konfiguracja PWM'a: Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Portd = Output Silnik_a Alias Portd.0 Silnik_b Alias Portd.1 PWM1A = 200 'Ustawienie PWM w zakresie 0-255 (regulacja prędkości) Do 'Obrót w jedną stronę Set Silnik_a Reset Silnik_b wait 3 'Obrót w stronę przeciwną Reset Silnik_a Set Silnik_b wait 3 'Stop Reset Silnik_a Reset Silnik_b wait 3 Loop End Pzykłady zastosowania tego rozwiązania w praktyce Prosty line follower Robot Wall-i Robot edukacyjny - NANA_1 Robo Blue Zalety rozwiązania Sterowanie takie, jak zwykłym silnikiem DC Cena i dostępność w porównaniu z silnikami DC zintegrowanymi z przekładnią (choć nie zawsze jest to regułą) Zasilanie rzędu 5-6V (w przypadku stosowania popularnych układów scalonych zasilanych napięciem 5V) Mocowanie kół przy wykorzystaniu orczyków Łatwe mocowanie serwa do podwozia/obudowy robota Stosunkowo duży moment obrotowy Wady: Wysokie przełożenie skutkuje małą prędkością obrotową wału wyjściowego (można to do pewnego stopnia kompensować stosując odpowiednio duże koła) 2. Przeróbka typu "BoeBot" Założenia Nie zawsze możemy sobie pozwolić na zastosowanie dodatkowego mostka H do sterowania serwami przerobionymi w sposób pokazany w punkcie 1. Istnieje możliwość wykorzystania elektroniki na płytce serwa i jest to ciekawa alternatywa przerabiania serw. Jeśli wyślemy sygnał sterujący odpowiadający skrajnemu wychyleniu orczyka w jednym kierunku, a potencjometr stale będzie wskazywać pozycję neutralną, to silnik będzie pracować tak długo, jak długo będziemy ten sygnał wysyłać. Główne założenie polega więc na "unieruchomieniu" potencjometru w pozycji neutralnej. Możemy to osiągnąć na dwa sposoby. W przypadku, gdy potencjometr przymocowany jest do PCB "na sztywno", sprawa jest prosta. 1. Rozkręcamy serwo, demontujemy zębatki 2. Śrubokrętem lub nożykiem podważamy płytkę i wysuwamy ją z obudowy 3. Pierwszym krokiem będzie skrócenie wyprowadzeń potencjometru 4. Podgrzewamy trzy pola lutownicze i wpychamy potencjometr nieco głębiej, lutujemy dla pewności i obcinamy wystające "nóżki" 5. Skracamy wystający ruchomy element potencjometru - pilnikiem lub miniszlifierką elektryczną. Staramy się przy tym nie wyginać płytki serwa 6. Podłączamy multimetr i mierzymy rezystancję między dwoma skrajnymi wyprowadzeniami (jeszcze dokładniejszy wynik uzyskamy, gdy zmierzymy to przy wylutowanym rezystorze) 7. Przykładowy wynik dla mojego serwa to 2,29k. Dzielimy to na dwa... 8. Mierzymy rezystancję między dwoma sąsiednimi wyprowadzeniami potencjometru i kręcimy tym co zostało z pokrętła tak, żeby uzyskać nasz wynik z dzielenia... 9. ...a następnie unieruchamiamy ten element, np. przy pomocy kleju na gorąco 10. Przymiarka po włożeniu płytki w obudowę - potencjometr nie może wystawać 11. Pamiętamy o usunięciu blokady z zębatki. Składamy składamy i skręcamy serwo - gotowe. W niektórych serwach - w szczególności w mikroserwach - potencjometr połączony jest giętkimi przewodami. W dodatku, dla mikroserw, trzeba pamiętać, że potencjometr stanowi oś dla dwóch zębatek. Zostawiamy więc odłączony potencjometr, a w jego miejsce podłączamy parę rezystorów. 1. Rozkręcamy serwo, demontujemy zębatki 2. Przecinamy przewody od potencjometru, zapamiętując który odpowiada za które wyprowadzenie 3. Podłączamy multimetr do skrajnych wyprowadzeń potencjometru 4. Zmierzoną wartość (w moim przypadku 5k) dzielimy na 2. Ponieważ nie posiadałem rezystorów o wartości 250Ohm, zastąpiłem je 270Ohm. Po pomiarach przewody dochodzące do potencjometru ucinamy 5. Lutujemy rezystory do przewodów od skrajnych wyprowadzeń potencjometru. WAŻNE Do tego celu najlepiej wykorzystać rezystory subminiaturowe, a nawet w obudowie SMD - jeśli ktoś ma dobry wzrok... 6. Wolne końce rezystorów lutujemy do trzeciego przewodu 7. Po usunięciu blokady z zębatki i "skrzydełek" potencjometru (jak w rozdziale o standardowej przeróbce mikroserwa) staramy się to wszystko "upakować". Polecam zaizolować nasze rezystory kawałkiem taśmy przed włożeniem do obudowy (żeby nie dotykały metalowego potencjometru). Jeśli przeróbce poddaliśmy standardowe serwo, to stary potencjometr można oczywiście wyjąć i zatrzymać na pamiątkę Programowa obsługa przerobionego serwa Schemat połączeń (identyczny jak w przypadku nieprzerobionego serwa): Przykładowy kod w BASCOM-AVR: $regfile = "m8def.dat" $crystal = 12000000 Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 Config Portd = Output Enable Interrupts Dim Zmienna As Integer Zmienna = 100 'Impuls 1ms, dla obrotów w jedną stronę 'Zmienna = 200 'Impuls 2ms, dla obrotów w stronę przeciwną 'Zmienne = 150 'Pozycja neutralna, czyli serwo się zatrzymuje. Z tą wartością musimy poeksperymentować - im dokładniej dobraliśmy rezystory/ustawiliśmy potencjometr, tym bliżej tej wartości znajdzie się nasz punkt "stop" Do Servo(1) = Zmienna Waitms 1000 Loop End Zalety rozwiązania Sterowanie niemal identyczne, jak zwykłym serwem modelarskim (brak konieczności stosowania mostka H) Cena i dostępność w porównaniu z silnikami DC zintegrowanymi z przekładnią (choć nie zawsze jest to regułą) Zasilanie rzędu 5-6V (w przypadku stosowania popularnych układów scalonych zasilanych napięciem 5V) Mocowanie kół przy wykorzystaniu orczyków Łatwe mocowanie serwa do podwozia/obudowy robota Stosunkowo duży moment obrotowy Wady: Brak możliwości płynnego regulowania prędkości obrotowej wału wyjściowego serwa Wysokie przełożenie skutkuje małą prędkością obrotową wału wyjściowego (można to do pewnego stopnia kompensować stosując odpowiednio duże koła) 3. Nagrywanie ruchu serwa Założenia Ten sposób jest dość nietypowy, podobnie jak raczej nietypowe będą jego zastosowania. Należy również być ostrożnym podczas pierwszych prób - jeśli mikroprocesor w porę nie zareaguje na przekroczenie przez orczyk bezpiecznej granicy działania, serwo zatrzyma się na mechanicznej blokadzie - znacznie wzrośnie pobierany prąd (długotrwałe działanie w tym stanie może nawet spowodować stopienie izolacji uzwojeń silnika i - w konsekwencji - zwarcie zasilania silnika), a w przypadku tańszych serw może dojść do uszkodzenia zębatek. Przerobione w ten sposób serwa (trzy) zastosowałem w moim Smyraczu (być może wkrótce pojawi się na forum), który jest niczym innym jak... manipulatorem "programowanym" na żywo poprzez ręczną animację poszczególnych punktów swobody. Efekt działania takiego serwa można zobaczyć na moim filmie: Przeróbka niewiele różni się od tej z rozdziału II.1. W tym jednak przypadku zostawiamy blokadę mechaniczną na jednej z zębatek i nie wyrzucamy potencjometru. Dwa przewody ze starego kabla od serwa lutujemy bezpośrednio do wyprowadzeń silnika (obojętnie czy silnik jest przymocowany do PCB, czy nie), trzeci natomiast do środkowego wyprowadzenia potencjometru. Dodatkowo prowadzimy jeszcze dwa przewody, które lutujemy do zewnętrznych wyprowadzeń potencjometru. Całość widać dobrze na zdjęciu: Programowa obsługa przerobionego serwa Schemat połączeń Przykładowy kod w BASCOM-AVR: $regfile = "m32def.dat" $crystal = 16000000 Config Adc = Single , Prescaler = Auto Start Adc S1a Alias Portb.0 S1b Alias Portb.3 Dim Pomiar As Integer Dim Zadana As Integer Dim Maksymalna As Integer Dim Minimalna As Integer Dim Tablica(310) As Integer 'tablica, w której będą przechowywane próbki Dim I As Integer Dim J As Integer Const Czas = 100 'czas pomiędzy kolejnymi próbkami w milisekudnach Config Portb = Output Reset Portb Zadana = 100 Do 'Nagrywanie For I = 1 To 310 Pomiar = Getadc(0) Tablica(i) = Pomiar Waitms Czas Next Wait 5 'Odtwarzanie For I = 1 To 310 Zadana = Tablica(i) For J = 0 To Czas Gosub Serwo 'funkcja ustawiająca serwo w zadanej pozycji w ciągu trwania jednego okresu próbkowania Next Next Wait 10 Loop End Serwo: Maksymalna = Zadana + 5 Minimalna = Zadana - 5 'maksymalne dopuszczalne przesunięcia względem zadanej pozycji (w celu ograniczenia drgań) Pomiar = Getadc(0) If Pomiar > Maksymalna Then Set S1a Reset S1b 'serwo obraca się w jedną stronę Elseif Pomiar < Minimalna Then Reset S1a Set S1b 'serwo obraca się w drugą stronę Else Reset S1a Reset S1b 'serwo zatrzymane End If Waitms 1 Return Program dodany również w załączniku Zmniejszając częstotliwość próbkowania, zwiększamy płynność ruchu kosztem czasu trwania całej nagrywanej sekwencji. Czas ten można zwiększyć odpowiednio zwiększając ilość elementów w tablicy (tak, by nie przepełnić pamięci uC). Zalety rozwiązania Zasadniczo mamy działający serwomechanizm, przy czym jego funckjonalność została rozszerzona o możliwość nagrywania ruchu Wady: Możliwość uszkodzenia serwa, mostka H i układu zasilania w przypadku niewłaściwego sterowania Konieczność zastosowania aż pięciu przewodów. III. INNE INFORMACJE 1. Mocowanie kół do serwa Koła zakładane zamiast orczyka Najwygodniejsze, ale i zarazem dość drogie (głównie ze względu na przesyłkę) rozwiązanie. Koła takie po prostu wsuwa się na wał wyjściowy serwa i dokręca śrubką. Do kupienia np. w Pololu Koła przykręcane do orczyka Tutaj można się pokusić o gotowe rozwiązania, jednym z nich są produkty firmy Tamiya Do kupienia również w Pololu, a spośród polskich sklepów np. w DaVincishop "Domowe sposoby" W tym przypadku jedynym ograniczeniem jest właściwie tylko wyobraźnia i pomysłowość. Najprostszy i chyba najtańszy sposób to niezawodne połączenie wieczek od słoików i paru kropli hot-glue (warto bardzo dokładnie wyznaczyć środek koła): Nic nie stoi też na przeszkodzie, żeby w takim wieczku wywiercić otwory zgodne z tymi w orczyku i przymocować je przy pomocy cienkich śrubek (ten sam sposób, co w komercyjnych produktach). Dodatkowo można też np. okleić brzeg wiecza gumową uszczelką do okien - znacznie poprawimy w ten sposób przyczepność do podłoża. Bardziej od wieczek "profesjonalnie" wyglądające koła znajdziemy w sklepie modelarskim (podwozia do samolotów) - wydatek od kilku do kilkunastu złotych za parę (zależnie od rozmiarów i użytego materiału). Pomocą służą również stare zabawki-samochody. 2. Gdzie kupować? Allegro Najtańsze nowe serwa typu "standard" można dostać już od ok. 13 zł (Tower Pro SG 5010), mikroserwa od ok. 10zł (Turnigy TG9e). Ponadto, bardzo często po naprawdę okazyjnych cenach można dostać serwa lepszych firm (od HiTec'a aż po Futaba) używane, wystarczy co jakiś czas przeglądać oferty i "polować" na okazję. Zagraniczny sklep HobbyCity Więcej informacji tutaj.. Forumowy "bazarek" Polskie sklepy modelarskie Serwa w takich sklepach są zazwyczaj nieco droższe niż te same oferowane na Allegro, ale może być to alternatywa dla ludzi np. nie posiadających na Allegro konta lub chcących obejrzeć i "pomacać" towar przed zakupem. 3. Dane techniczne Serwa modelarskie w robotyce amatorskiej - Kompendium wiedzy program_nagrywanie.rar
  20. 24 punktów
    Przedstawiam robota którego wykonałem w ramach pracy inżynierskiej. Jest to robot o dość uniwersalnej budowie, może pracować jako line follower, światłolub, może samodzielnie poruszać się po pomieszczeniu lub może być zdalnie sterowany z komputera poprzez Bluetooth. Robot ma budowę modułową. Aktualnie składa się z trzech modułów połączonych ze sobą magistralą I2C z możliwością rozbudowy o kolejne moduły. Schematy modułów wieży, podwozia i sterownika w formacie PDF znajdują się w załączniku. Robota zaprojektowałem w programie Autodesk Inventor: Następnie według zaprojektowanych kształtów płytek zaprojektowałem płytki w protelu99se: Robota napędzają dwa silniki firmy maxon z dwustopniowymi przekładniami planetarnymi i enkoderami, a zasilany z pakietu modelarskiego li-pol 22,2V 800mAh (akumulatora nie ma na zdjęciach). Robot współpracuje z aplikacją okienkową na komputerze, którą napisałem w języku C#. W załączniku znajduje się aplikacja wraz z kodem źródłowym, a do jej uruchomienia potrzebny jest zainstalowany NetFramework 3.5 SP1. Schematy PDF.rar Programy robota.rar Aplikacja.rar Schematy i PCB.rar
  21. 24 punktów
    Przedstawiam wam moją konstrukcję linefollowera, oraz płytkę, która powstała jako uniwersalna płytka do różnych robotów. Zacznijmy od początku, płytka oparta jest na mikrokontrolerze z rodziny ATmega48/88/168/328, w moim przypadku są to dwa układy ATmega168/328P. Schemat nie różni się bardzo od schematu Psotka3, zmiany jakie widać na pierwszy rzut oka to złącze 10-cio pinowe służące do podłączenia do 8 czujników, gotowe źródło prądowe oparte na LM317 do zasilania diod IR w płytce czujników (połączenie szeregowe diod), trzy przyciski kątowe typu mikroswitch (wykorzystywane przy wprowadzaniu zmian prędkości i konfiguracji ustawień wzmocnień współczynników algorytmu PID poprzez złożone menu). Płytka została zaprojektowana pod kątem mieszczenia się w całości pod wyświetlaczem LCD 2x8 zgodnym z HD44780, niestety podczas projektowania powiększyłem płytkę o 2,5mm czego następstwem są nie pasujące piny od podświetlania wyświetlacza: Tak jak w Psotku3, tak i w tej płytce, złącze służące do programowania, jest jednocześnie złączem dla LCD w trybie 4-ro bitowego przesyłania danych (oczywiście poza pinem Reset). Doprowadzenie płytki do takiej postacie zajęło mi bardzo dużo czasu, z przerwami spędziłem nad nią ponad miesiąc, nie licząc małej wpadki z pinami od podświetlania, myślę, że nie był to stracony czas. Płytka została wykorzystana w pierwszej wersji Strider'a, okazało się jednak, że silniki z Psotka2 po założeniu kół o średnicy 66mm, są zbyt słabe do napędzania robota, dlatego też powstał Strider2: Szczegóły techniczne: - procesor: Atmega328P@20MHz - czujniki: 8 sztuk KTIR0711S, ustawione w kształt, który miał poprawiać wykrywanie kątów prostych: - zasilanie: 2 akumulatorki li-pol 450mAh, 5V dla logiki pochodzi z układu LP2950 - mostek H: 2 układy SI9986CY (dwa pełne mostki H) - robot napędzany jest silnikami z pololu, przekładnia 30:1, 1000obr/min, wersja silnika HP - sterowanie silników: 4 kanały PWM z procesora - kod w całości napisany w Bascomie, łącznie z obsługą PID oraz 4 kanałów PWM - robot zawiera wyświetlacz LCD 2x8, na którym są wyświetlane różne parametry, na płytce jest miejsce na odbiornik podczerwieni TSOP348 (w tej płytce odbiornik nie został użyty), 3 mikro switche kątowe używane do konfiguracji prędkości poprzez zaawansowane menu - wymiary: rozstaw osi 124mm, szerokość przodu 90mm, długość 110mm - z przodu zamontowane są 2 kulki teflonowe, wykonane własnoręcznie na wiertarce z pomocą scyzoryka, papieru ściernego, i ponad dwóch godzin pracy na kulkę - wymiary płytki 60,3x30,3 [mmxmm] - masa robota wraz z akumulatorkami - 120g Ponieważ najprostsze rozwiązania są najlepsze, nie umieszczałem nigdzie włącznika, ani żadnych uchwytów na akumulatorki (doskonale w tej roli sprawdza się zwykła gumka recepturka). Oto kilka zdjęć samej płytki, oraz fazy projektowania: Strider2 jest moim pierwszym linefollowerem, który przekroczył prędkość 1m/s podążając za linią. Niestety okazuje się, że zastosowane mostki są za słabe do tych silników, daje się również we znaki brak kondensatorów równolegle do silników oraz kondensatorów na zasilaniu mostków. Po przekroczeniu pewnej wartości PWM/prędkości restartuje się mikrokontroler, co kończy się zatrzymaniem na torze. Poniżej najszybszy przejazd Stridera2 podczas zawodów Robo3DVision w Gdańsku. Czas przejazdu 7,23s, który dał mi szóste miejsce w eliminacjach, niestety mój linefollower nie jechał jeszcze wtedy z pełnią swoich możliwości.
  22. 23 punktów
    Witajcie, Chciałbym tu przybliżyć plon mej pracy/zabawy. Około roku temu zacząłem się interesować robotyką. Analizowałem możliwości wykonania robota powiedzmy zabawki, który mógł by się poruszać w terenie (szeroko pojętym). W ruch poszły „Google”, fora i strony producentów. Była kwestia podjęcia decyzji co do rodzaju robota, a muszę przyznać, że roboty typu kroczące bardzo mi się podobają. Na początek zacząłem analizować proste roboty dostępne jako kity do składania, później mój wzrok padł na podwozie kołowe jako mniej skomplikowane (nawet mam całkiem ciekawe podwozie z samochodu zdalnie stertowanego), aż wreszcie pojawił się On – hexapod Od tego czasu zapałałem do niego wielką miłością. - rozpocząłem pracę nad analizą poszczególnych elementów składowych robota. Przy założeniach, że ostatni raz lutownicę trzymałem 20 lat temu, nigdy nie programowałem procesora (choć troszkę programów zwykłych napisałem za młodu) zadanie wydawało się mało realne zwłaszcza w wykonaniu robota tak skomplikowanego. Przyznam się że wykonując robota bardzo dużo elementów zaczerpnąłem ze strony lynxmotion.com i istniejącego tam forum – dotyczącego Robota Phoenix, oraz z strony robota MSR-H01 firmy Micromagic System. Tak czy inaczej Maniek powstał. Powstawał powoli ok. pół roku powoli w miarę możliwości czasowych, których jest nie za wiele... Poświęciłem na niego około 300 godzin jak nie więcej, czasem były tygodnie, że nic nie drgnęło, a czasem był tydzień że ... ummm, ale to między bajki włożyć... Ograniczenia przy wykonywaniu robota: - przede wszystkim jedno finansowe - chciałem zrobić robota taniej niż pierwowzory (i udało się), które są koszmarnie drogie, - mizerna znajomość elektroniki, - mała znajomość programowania procesorów, - zero znajomości robotyki. Dane techniczne robota: Konstrukcja: Robot 6 nożny potocznie zwany hexapodem wykonany z pleksi 3mm wycięte wg mojego projektu (wzorowałem się na rozwiązaniach konstrukcyjnych głównie Phoenixa, MSR-H01 oraz innych robotach tego typu z netu). Dla zapewnienia większej sztywności robota – główna płyta robota, która przenosi wszystkie obciążenia jest podwójna (2x3 mm), a dla zapewnienia ciekawszego wyglądu – nogi zostały wycięte we wzór imitujący włoski pająka. Użyto 18 serwomechanizmów Tower Pro 5010 do sterowania nogami oraz 1 serwo do sterowania sonarem. Główna płyta - Serce robota: Płytka Arduino Mega (strona www: arduino.cc) – rzekł bym super płytka dla laika – wiele wejść i wyjść w zasadzie brak ograniczeń co do programowania oraz bardzo obszerne forum z tysiącami rozwiązań problemów – to była wielka kopalnia informacji. Dla mnie bajka... (przyznam się, że pojęcia typu fuse byte itp., wywołują u mnie lekki dreszczyk z złym tego słowa znaczeniu). Programik zaprojektowany do programowania płytki pozwala w bardzo prosty sposób pisać i programować. Do tego gotowe biblioteki pozwalają w kilka chwil ( jak np: w moim przypadku ) oprogramować sobie klawiaturę PS/2 – akurat taką posiadałem zbędną w szafie). Sterownik serw: Z uwagi na to, że będę chciał rozbudowywać robota i nie chciałem wprowadzać ograniczeń na płytkę arduino (jest ona sama w stanie obsłużyć do 48 serw) co do częstotliwości wysyłania sygnałów – zastosowałem osobno sterownik serw SD 21. Do tego dodatkowo: Wyświetlacz cyfrowy + 3 przyciski - Do tego pozostało zrobić sobie wyświetlacz (dwie cyferki LED) oraz 3 mikrowłączniki do „programowania trybu pracy”. Płytka z dodatkowymi opornikami (połączenie arduino z sterownikiem serw) oraz Buzzerem. Buzzer – robot wydaje sygnał dźwiękowy –dla uproszczenia konstrukcji zastosowałem buzzer z generatorem. Zasilanie: Obecny etap – zasilacz komputerowy – osobne zasilanie serw i elektroniki W przyszłości – zasilanie z akumulatorów – osobno serwa, a osobno elektronika – kwestia do analizy, bo pobór prądu przez 19 serw jest duży. Czucie robota: Zastosowałem sonar SRF05 Waga: Konstrukcja z pleksi + zmontowane serwomechanizmy to 1,45 kg. Z akumulatorami dojdzie prawdopodobnie do ok 2,5 kg. Wszystko starałem się wykonać jak najestetyczniej, ale wybaczcie mi proszę wygląd mych płytek, bo dopiero co nauczyłem się lutować. Obecny tryb pracy robota: – praca na kablu – sterowanie przy pomocy starej numerycznej klawiatury numerycznej PS/2 do notebooka. Rozwój projektu w przyszłości (kolejność nie koniecznie taka jak poniżej): - praca autonomiczna – poruszanie się po terenie (płaskim i off-road), omijanie przeszkód przy pomocy sonaru, - praca demonstracyjna – robot stoi w miejscu, ale reaguje na bodźce (sonar – zbliżenie ręki), wykonywanie ruchów imitujących „żywy organizm” (poruszanie nogami itp.), - wprowadzenie odwrotnej kinematyki do programu robota ( obecnie pracuje na zaprojektowanych wychyleniach sczytywanych z tablicy w programie), - zastosowanie na stopach czujnika terenu co pozwoli na poruszanie się w nierównym terenie, - zastosowanie akumulatorów do zasilania robota, - inne.... ??? czas i możliwości finansowe pokażą... Poniżej portret Mańka: ------------------------- ==============
  23. 23 punktów
    Od mojej ostatniej publikacji na Diodzie minęło już trochę czasu, a jednocześnie powstało kilka nowych konstrukcji. Dziś chciałbym zaprezentować ZX-3 - robot wykonany w oparciu o dobrze znany schemat KoNaR, wyposażony w czujnik Sharp'a (10cm-80cm) oraz przekładnie Tamiya - w których zasmakowałem i uważam je za sensowną alternatywę dla serw. Poniżej zdjęcia wyjaśnią chyba wszystko W najbliższym czasie postaram się nagrać walkę pomiędzy ZX-3 a poprzednim minisumo. Wiem, że robot wygląda trochę "z innej bajki", ale to ma być "zawodnik" typowo pokazowy, choć jestem mile zaskoczony jego prędkością. Charakterystyka: a) elektronika - schemat i płytka: KoNaR (identycznie jak w poprzednim robocie: minisumo ) - płyta główna: Atmega 8 - mostek-H: L298 - wzmacniacz TL084 - czujniki białej lini: TCRT 1000 - dalmierz Sharp'a (od 10 do 80 cm) - czujnik zderzeniowy - kolizji b) zasilanie: - akumulatorki 4xAAA c) mechanika: - przekładania Tamiya 70097 Twin-Motor Gearbox Kit - koła Tamiya - obudowa z korytka elektrycznego + trochę części z drukarki - malowanie: spray d) kosztorys: - przekładnia Tamiya: 45,00 zł - koła Tamiya: 20,00 zł - czujnik Sharp: 38,00 zł - czujniki białej lini: 10,00 zł - elektronika: 30,00 zł - obudowa, malowanie, szpachla itp: 10,00 zł Razem: 153,00 zł Poświęcony czas: ok 10 godzin. Oto ja: i moja elektronika: Szczegóły też są ważne: Radiator w charakterze pokrywy na baterie: Rzut oka na elektronikę: Sharp (nazwa robota jest podświetlana w momencie ataku): Czujniki białej linii: Mechanika: Do boju: I obiecany film z pierwszej walki:
  24. 22 punktów
    Witam, nareszcie mogę pochwalić się swoją konstrukcją, dzięki której uzyskałem tytuł inżyniera Automatyki i Robotyki Od obrony minęło nieco ponad pół roku, w związku z czym mogę już opublikować opis robota (niestety z pewnymi ograniczeniami). Obudowa: Obudowa została wykonana na ploterze CNC z płyty akrylowej o grubości 3mm. Składa się łącznie z sześciu elementów: - dół o średnicy 12cm z otworami na czujniki - mocowanie ślizgu - 2 x mocowanie silnika - mocowanie dalmierza Sharp GP2D12 - góra o średnicy 12cm z wycięciem na wyświetlacz oraz 4 klawisze Napęd i zasilanie: Źródłem zasilania jest modelarski akumulator li-pol 2s o napięciu znamionowym 7,4V i pojemności 500mAh. Ładowanie akumulatora odbywa się poza robotem za pomocą ładowarki z balanserem. Do poruszania się robot wykorzystuje silniki DG2425-025 oraz koła MBW-31 z firmy Wobit. Taki zestaw jest w stanie rozpędzić robota do prędkości ponad 0,6m/s. Elektronika: Robocik ma dwa mózgi w postaci mikrokontrolerów ATmega8L Jeden zajmuje się sterowaniem silnikami, odczytem czujników i obliczeniami a drugi odczytem klawiszy i obsługą wyświetlacza graficznego z Nokii 3310. Komunikacja pomiędzy nimi odbywa się za pomącą interfejsu UART. Dzięki takiemu rozdzieleniu obowiązków całość pracuje sprawniej a do połączenia obu obwodów drukowanych wystarczą 4 przewody. Stopień mocy w postaci mostka H skonstruowano w oparciu o tranzystory MOSFET oraz drivery IR4427. Dynamika pracy silników jest bardzo dobra a straty są na tyle małe, że niemożliwy jest ich pomiar przy pomocy multimetru! Wykrywanie linii zapewnia 5 par dioda nadawcza + fototranzystor IR w obudowach o średnicy 3mm. Czujniki rozmieszczono po łuku, wzdłuż krawędzi obudowy. Wbrew obawom możliwe jest wykrywanie zakrętów pod kątem prostym. Oprogramowanie: W sofcie zawarto między innymi algorytm autokalibracji, obliczania pozycji robota nad linią, śledzenia linii, regulator PID oraz algorytm rozwiązywania labiryntów. Robot oraz widoczne na filmikach plansze zostały sprzedane i obecnie stanowią własność WFAiIS UMK w Toruniu, w związku z czym nie mogę opublikować schematów i kodów źródłowych! Mimo to postaram się udzielić odpowiedzi na pytania osób zainteresowanych konstrukcją Pozdrawiam, Grabo
  25. 19 punktów
    Mostek H (H-Bridge) to układ elektroniczny umożliwiający zmianę kierunku obrotu silnika prądu stałego (DC) przez "odwracanie" biegunów zasilania. Robotyka łączy elektronikę z elektromechaniką, dlatego tu położymy nacisk na mostki do serw/silników, sterowane wprost z mikrokontrolerów. Koszty budowy robotów są różne od poniżej 100zł do ponad 1 000 zł. Przy doborze konkretnych podzespołów warto wziąć pod uwagę, że mostek dający duże spadki, na którym na początku zaoszczędzimy, ostatecznie może okazać się, że jest on najsłabszym ogniwem naszej konstrukcji. Często błędnie oceniamy że nasze silniki źle reagują - są błędnie dobrane do robota, z mizernym skutkiem przerabiamy projekt dajemy mocniejsze silniki, zwiększamy napięcie zasilania, kupujemy akumulator o wyższej wydajności, zostawiamy jednak poprzedni mostek, a to właśnie jego wymiana może dać zauważalną poprawę. Rys. 1. Graficzne, symboliczne przedstawienia działania mostka H. Zamienianie biegunów można zrealizować na przekaźnikach, tranzystorach bipolarnych lub unipolarnych (lub mieszając elementy różnego typu) spełniających rolę kluczy ON/OFF. Ideałem byłoby załączanie "zeroomowe" bez żadnych strat. Przekaźniki mają bardzo mały opór styków, od kilku do kilkudziesięciu mΩ. Ale nie nadają się wprost do PWM (sterowanie z regulacją szybkości), gwarantowaną liczbę mechanicznych przełączeń (średnio ok. 1mln) wyczerpałaby w kilka minut. Ponadto, mają one czasy przerzutów styków rzędu kilku ms. Przy przełączaniu występuje efekt młoteczka/kowadełka, odbijania się styków, mogący spowodować ich sklejanie. Nie mniej, warto rozważyć układy oparte o przekaźniki jako prostą alternatywę dla bardziej skomplikowanych mostków przeznaczonych do sterowania silnikami pobierającymi większy prąd. Kilka przykładów układów z przekaźnikami: Rys. A przedstawia mostek na jednym przekaźniku z podwójnymi stykami przełączalnymi DPDT (Dual Pole Dual Throw) będący adaptacją powyższego symbolu graficznego. Silnik jest zawsze podłączony pod Uz, zawsze będzie się kręcić w prawo lub lewo ( chyba że dodamy osobny wyłącznik, patrz Rys. C). Rys. B przedstawia mostek na dwóch przekaźnikach z pojedynczymi stykami przełączalnymi SPDT (Single Pole Dual Throw). Silnik jest hamowany elektrodynamicznie, będzie się obracał w prawo lub lewo, zależnie na cewkę którego przekaźnika podamy napięcie. Gdy na oba, silnik zostanie znów zahamowany. Rys. C i D przedstawiają przykłady, jak powyższe mostki na przekaźnikach można przełączać bezprądowo i sterować PWM. Po przykład z Rys. C można sięgnąć gdy brakuje nam portów - wystarczą dwa by mieć START / STOP, regulację PWM i kierunku obrotów. W układzie z Rys. D też mamy wybór - gdy najpierw wyłączy się PWM, przekaźnik będzie przełączany bezprądowo. Jak odwrotnie, będzie hamowanie, ale to nie wróży dobrze stykom, zwłaszcza w przekaźnikach na małe prądy. Są problemy z MOS-ami P na duże prądy. Rys. E przedstawia przykład, jak można oba "górne" MOS-y P zastąpić jednym przekaźnikiem SPDT. W pozycji styków jak na rysunku, wysterowywać wolno tylko MOS-a N z lewej strony. Tranzystory Tranzystory wnoszą straty jednak w miarę rozwoju technologii coraz bliższe ideałowi są MOS-FET-y. Między kolektorem a emiterem tranzystorów bipolarnych zawsze wstępuje spadek napięcia (rosnący wraz ze wzrostem prądu kolektora, tak jak w diodzie Zenera o słabych parametrach). Dlatego są one gorsze w roli kluczy niż wyżej wspomniane MOS-y, zwłaszcza do mostków zasilanych niskim napięciem. Złącze przewodzące dren/źródło MOS-ów zachowuje się jak rezystor (Rds). Wiele z nich opór ten ma taki jak styki przekaźników, a nawet mniejszy, praktycznie jak opór przewodów montażowych. Rds rośnie wraz z Uds, przykładowo MOS-y z np. 2x większym Uds mają je większe o mniej więcej tyle samo. Rds ma dodatni wsp. temperaturowy dzięki czemu można zrównoleglać wiele MOS-ów tego samego typu bez żadnych oporów wyrównawczych. Tranzystory bipolarne są sterowane prądem który musi płynąć przez cały czas ich przewodzenia. MOS-y są sterowane napięciowo i praktycznie nie pobierają prądu (µs przeładowania pojemności bramki Ciss). Jest to istotne w urządzeniach zasilanych z baterii, gdzie ważny jest każdy mA. Rzadko które tranzystory bipolarne są zintegrowane z diodą między emiterem, a kolektorem. Mogą pracować inwersyjnie, można zamieniać CE (uzyskuje się wtedy mniejsze spadki kosztem znacznego zmniejszenia ß). Natomiast MOS-y są sterowalne tylko w jedną stronę. Odwrotnie spolaryzowane DS zachowuje się jak szybka dioda (Body Diode), o prądzie adekwatnym do Idmax. Mostki na tranzystorach bipolarnych Kolor zielony pokazuje drogę sygnału sterującego, czerwony prądu silnika. Tranzystory bipolarne zaczynają przewodzić gdy na ich złączu baza/emiter (BE) wystąpi powyżej ok. 0,5V. W szereg z bazą muszą byś umieszczone rezystory ograniczające prąd. Stany L µC nie są zerem, czasem mają powyżej 0,5V dlatego warto na wejściu zastosować układ quasi-darlingtona który zaczyna przewodzić od ok. 1,2V, co niweluje ryzyko niepełnego wyłączania po połączeniu z dowolnym µC. Ponadto, układ taki mniej obciąża wyjście µC. Na schemacie nie ma wartości R, gdyż zależą one od zastosowanego Uz, współczynnika wzmocnienia ß użytych tranzystorów i prądu jakim mamy sterować. Wylicza się je do konkretnego przypadku. Zabezpieczenie CE to szybkie diody (stosownie od 1N4148, 1N5819 do Schottky na duże prądy) lub transile typ A. Wystąpienie stanu wysokiego na obu In spowoduje, że zaczną przewodzić tranzystory znajdujące się "nad" i "pod" sobą, Uz zostanie przez nie zwarte czego tranzystory raczej nie przeżyją. Przed wyliczeniem R należy zmierzyć maksymalny prąd silnika i wybrać tranzystory mocy stosowne do niego: powinny mieć napięcie kolektor/emiter Uce nie mniejsze niż ok. 2xUz silnika nie zleca się stosowania tranzystorów z Icmax na styk z prądem pobieranym tylko z kilkukrotnie większym nie zaleca się Darlingtonów. One nigdy się nie nasycają, zawsze między CE będą miały spadek m/w 1,2V Do silniczków potrzebujących mało prądu wystarczą np. BC327/337 lub BC635/636, do średnich np. BD136/7 (im większy nr grupy tym większa ß). Po wybraniu typu należy ustalić ich ß i do obliczeń przyjąć najmniejszą. Jako pierwszy będzie przeważnie stosowany BC547 lub tp. z ß ok. 500. Jeżeli damy R1 100k to przy sterowaniu z uC o Uz 5V prąd jego kolektora wyniesie ok. 18mA. Teraz należy przeliczyć, czy taki prąd w bazach tranzystorów końcowych zapewni nam prąd kolektora odpowiedni dla silnika. Jeżeli nie, zmniejszyć R1. Moc jaka się wydzieli na BC547 będzie zależała od Uz mostka pomniejszonego o spadki na BE tranzystorów końcowych tj. 1,4V i prądu ustalonego R1. O tym czy dać R2 czy go pominąć decyduje zastosowane Uz mostka. Do m/w 7V można go pominąć gdyż na BC547 wydzieli się: 18mA x ( 7V - 1,4V) = 100mW które ten tranzystor rozproszy. Ale pamiętajmy, że to tyczy przypadku Ic ok. 20mA i Uz ok. 7V, przy większej którejś z tych wartości trzeba przeanalizować, czy 547 nie będzie się przegrzewał i trzeba będzie dodać R2. Tym bardziej, że tranzystory bipolarne mają ujemny wsp. temperaturowy, z jej wzrostem rośnie Ic i ten opór staje się niezbędny. Spotyka się schematy lustrzane, z tranzystorami PNP na wejściach. Ale, mostki z NPN jak na Rys. 2 są bardziej uniwersalne. Mogą pracować z różnymi Uz: wspólnym z µC, znacznie większym lub mniejszym, a warunek konieczny poprawnej pracy "lustrzanego układu" to Uz mostka ≤ Uz µC. Gdyż wystarczy, że Uz mostka będzie większe o ok. 1V od Uz µC i PNP będą przewodziły zarówno, gdy na Out µC będzie logiczne zero jak i logiczna jedynka. Schemat przykładowego mostka (dla małego Uz i silników wymagających małej ilości prądu) na tranzystorach BC337 oraz BC327. Kolory strzałek: zielony - sygnał, niebieski, czerwony - prąd silnika. Projekt Marka Tildena ze strony www.beam-online.com Mostki na tranzystorach unipolarnych MOS-FET Mostki na tranzystorach MOS potrzebują mniej elementów, są łatwiejsze do sterowania i wnoszą mniejsze straty. Dostępnych jest wiele typów tych tranzystorów w stosunkowo niskiej cenie, większy jest wybór Chanel N (w działaniu podobne do bipolarnych NPN), mniejszy Chanel P (m/w PNP). Przy wyborze należy kierować się: napięciem dren / źródło, analogicznie jak przy bipolarnych zaleca się z Uds nie mniejszym niż 2x Uz mostka napięciem przejścia Utreshold nie w przewodzenie. Do dobrego wysterowania bezpośrednio z µC stworzono typy "Logic" ( np. IRLxxxx ) rezystancją dren / źródło w stanie przewodzenia Rds Mostek powinien zapewnić połączenie z jak najmniejszymi spadkami dlatego lepiej kierować się Rds niż maksymalnym prądem drenu Idmax. Szacowanie: dany silnik pobiera max 2A, więc wystarczy MOS z Id 4 czy 8A wskaże na mające Rds w dziesiątkach/setkach mΩ. Niewiele więcej kosztują MOS-y z Id w dziesiątkach/setkach A, mające Rds zaledwie w pojedynczych mΩ dzięki czemu wprowadzą nieporównywalnie mniejsze spadki niż te pierwsze. Rys.3 Rys. 3 obrazuje zasadę pracy mostka podstawowego. Można go stosować wprost jak na schemacie np. do sterowania przerobionymi serwomechanizmami. W klemy silników pobierających więcej prądu należy wlutować np. transila CA. W przypadku stanów L na wejściach, bramki MOS-ów P będą "wisiały w powietrzu" bo nie ma żadnych R do +Uz zwierających DS i rozładowujących Ciss. Można dać rzędu 10-100kΩ, wystarczy jeden bo przez silnik bramka drugiego MOS-a też będzie dociągana do +Uz. Przy PWM, każde przewodzenie danego MOS-a P automatycznie będzie zwierać bramkę drugiego wykluczając jego załączenie. Autor z powodzeniem zastosował ten układ jak na schemacie do PWM i Uz 3V w mikro-silniczkach z mostkiem na parach NDS8934/9955. Wyjścia µC powinno łączyć się z bramkami przez Rg. Jeżeli mamy sterować MOS-a z małą pojemnością bramki Ciss (do ok. 100pF) np. popularnego BS170 (2N700x), można pominąć Rg lecz trzeba mieć na względzie, że im większe Ciss tym większy udar od jego przeładowania mogący zakłócać pracę µC i ta oszczędność może się okazać iluzoryczna. Wartość Rg wylicza się traktując rozładowane Ciss jako zwarcie. Dzielimy Uz µC przez jego Iomax, typowo 5V/20mA co daje 250Ω, wartość bezpieczną do każdego MOS-a. Jednak prąd przeładowania płynie góra przez µs więc Rg można dać mniejszy. Dlatego w literaturze spotyka się tutaj różne wartości. Porada praktyczna: jeżeli mimo odkłócania Uz, dopinania kondensatorów ceramicznych/tantalowych ect. nasz µC co jakiś czas się buntuje, może po prostu należy zwiększyć Rg. Do sterowania MOS/IGBT mocy pracujących na dziesiątkach/setkach kHz stosuje się drivery, np. TC44xx itp. Przy takich częstotliwościach kluczowania należy je stosować, aby zapewniały szybkie zbocza impulsów, niektórzy jednak dają je w miejsce Rg do sterowania silników DC. Pobieżna kalkulacja: przeładowanie Ciss np. 10nF z µC przez 100Ω trwa 1µs. Częstotliwość PWM 200Hz / okres 5ms. MOS będzie co 5ms "podgrzewany" przez 1µs, mieć 5ms przerwy itd. Stosunek wielkości 1÷5.000. Driver skróci 1µs do 100ns więc zmieni stosunek na 1÷50.000. Czyli: tam gdzie jest b.dobrze, będzie 10razy lepiej. Ale, trzeba mieć na względzie, że amplitudy przepięć są tym większe, im większa szybkość zboczy. Analogicznie jak w bipolarnych, tu również wystąpienie stanów H na obu In będzie miało opłakane skutki. Ale można im zapobiec. Rys.4 Rys. 4 przedstawia poprzedni mostek, ale zabezpieczony na praktycznie wszystkie okoliczności. Dwie diody np. BAT46 zapobiegają destrukcji w przypadku jednoczesnego wystąpienia stanów H na obu wejściach przez błąd w µC czy zakłócenie. Hamulec włącza przez 4-ry diody BS170. Gdy dostanie na bramkę poziom H: przez 2 diody zablokuje MOS-y dolne zwierając ich bramki do masy przez 2 następne wysteruje oba górne MOS-y P Wejście hamulca jest nadrzędne, włączy się zawsze niezależnie jakie stany będą na pozostałych, czy któraś z przekątnych będzie sterowana PWM. Przy hamowaniu elektrodynamicznym przez chwilę będzie płynął znaczny prąd, zależny od prądu silnika i jego obrotów. MOS-y mają Idp (Pulsed Drain Current) m/w 10 razy większy niż Continous, ale przy ich wyborze do tego układu warto sprawdzić ten parametr. Dwukierunkowy transil typu CA tłumi zakłócenia bezpośrednio na silniku. Każdy MOS ma też swego osobnego, szybkiego jednokierunkowego typu A. Rezystory 1kΩ tworzą z pojemnościami Ciss filtry zakłóceń do bramek. Idąc dalej można dodać jeszcze ogranicznik prądu. Najprościej, źródła obu MOS-ów N podać na masę przez małoomowy R i z niego zbierać informację. Przy mniejszych wymaganiach, do silników pobierających mało prądu, można zastosować układ pośredni między Rys. 3 a 4. Zrezygnować z hamulca, filtrów RC, diod na dole, zostawić tylko transila na silniku itp. Układy lustrzane ze sterowanymi MOS P mają praktycznie te same ograniczenia co w opisie dla bipolarnych PNP. Do dużych Uz stosuje się mostki z 4-rema MOS-ami N. Tam jest to uzasadnione, ale nie do małych Uz. Warunkiem koniecznym dobrego nasycenia MOS-a N przy szynie +Uz jest podanie mu na bramkę ok. 10V więcej od +Uz. Wyższe napięcie trzeba wytworzyć co znacznie komplikuje cały układ. Można też zastosować drivery jak np. HIP4081A. Te ostatnie bywają mylone z dedykowanymi do pracy przemiennej jak np. IR21xx, praktycznie nie nadających się do napędu silników DC. Do małych Uz, zwłaszcza poniżej 18V (Ugsmax MOS-ów to przeważnie +/-20V) nie warto sięgać po układy z 4-rema MOS-ami N. Tym bardziej, że nie ma problemów z nabyciem MOS-ów P. Do większych prądów dobry jest IRF4905 z Rds 20mΩ, do nabycia już od 4zł. Mostki scalone Mostki scalone ułatwiają projektowanie druku i minimalizują cały układ. Tworząc małego robota prościej jest dać jeden układ (przeważnie podwójny) niż 8 tranzystorów na 2 silniki + stosowną ilość innych elementów dyskretnych. Jedna kość załatwi praktycznie całą część wykonawczą. Najczęściej stosowane bipolarne to: L293D, L298, a mosowe to np. TB6552, TB6612, VNH3SP30. Dla mostka można rozpisać tabelę prawdy, czyli co się dzieje na wyjściu przy danych stanach na wejściach. Dla połówki 293 wygląda ona następująco ( kierunki są umowne zależnie od podłączenia silnika A B Wyj. 0 0 Stop 0 1 Prawo 1 0 Lewo 1 1 Stan zabroniony Chyba wszystko w tabeli jest jasne. Jedynie opisze sytuację gdy mamy dwie "1" . Podając napięcie na oba punkty otwierają się T1 i T2 i przez to też T3 i T4 i następuje piękne zwarcie. Jak wcześniej wspomniano, najczęściej kończy się to uszkodzeniem tranzystorów mostka. Dużą popularnością cieszy się tani, podwójny L293D zintegrowany z diodami. Gdy potrzebujemy większy prąd, zrównolegamy go zapominając, że istnieje L293, który nie ma diod, ale za to większe struktury tranzystorów dzięki czemu ma max prąd blisko 2razy większy. Zamiast zrównoleglać 293D warto rozważyć czy nie wystarczy nam jeden 293 + zewnętrzne diody. Scalonych mostków jest sporo, różnią się max prądem, Umin / max pracy, obudową. Przybliżymy dwa najpopularniejsze układy L293D i L298. L293D Bardzo popularny układ „zapakowany” w obudowę 16DIP, łatwo dostępny w cenie od 4zł do 12zł. Posiada cztery wejścia sterujące dwoma silnikami, sterowania odbywa się przez podanie logicznego „0” albo „1” na jedno z wejść. Dodatkowo układ posiada dwa wejścia enable służące do włączania/bądź wyłączania któregoś z silników. W najpopularniejszej konfiguracji wejścia te podłączane są do napięcia zasilania. L293D ma wbudowane diody zabezpieczające. Ciągły prąd jaki silnik może pobierać to 600mA, szczytowy do 1,2A, więc do zasilania małych silniczków jest jak znalazł. Dodatkowo układ został wyposażony w zabezpieczenie zapobiegające przegrzaniu. L298 Układ mniej popularny od L293D, „opakowany” w obudowę Multiwatt15, łatwo dostępny w cenie od 7zł do ok 12zł. Posiada cztery wejścia sterujące dwoma silnikami, sterowania odbywa się przez podanie logicznego „0” albo „1” na jedno z wejść, układ posiada również dwa wejścia enable służące do włączania/bądź wyłączania któregoś z silników. Oraz dwa wejścia CURRENT SENSING, do których podłącza się oporniki prowadzące do masy, dzięki czemu układ sam może kontrolować prąd obciążenie i w odpowiednim momencie go odłączyć. Prąd ciągły to 2A, w szczytach do 3A. Porównanie mostków scalonych L293D i L298. Schemat podłączenia układu L293D: Rys. 10. Schemat podłączenia mostka scalonego L293D. Schemat podłączenia układu L298: Schemat podłączenia mostka scalonego L298. Schematy wyjaśniają chyba wszystko. Jedynie napiszę jeszcze o wejściach 1-2EN i 3-4EN w L293D, oraz ENABLE_A, ENABLE_B które umożliwiają nam sterowanie naszych silników z użyciem PWM - bardzo przydatna funkcja wykorzystywana np. do płynnego startu lub regulacji prędkości. Podajemy na to wejście sygnał prostokątny o regulowanej szerokości impulsów i czym większe wypełnienie tym większa "moc" idąca na silniki. Warto wspomnieć o możliwości łączenia kaskadowego układu L298, po szczegóły odsyłam do noty katalogowej (link pod artykułem). Poniżej przestawiam tabelę porównawczą z szacunkowymi danymi najczęściej stosowanych mostków mosowych. Pierwszy to TC4423, używany czasem do tego driver do MOS-ów/IGBT. Należy wiedzieć, że Imax driverów nie tyczy prądu ciągłego oraz, że na nich można realizować tylko mostki z hamowaniem, nie nadają się do PWM. Dobrą alternatywą dla mostków scalonych i z elementów dyskretnych są oparte na strukturach SMD case SO-8. Stosunkowo tanie, duży wybór. Np. na IRF7905: 2xN z Rds 20mΩ + np. IRF7324: 2xP można tanio zrobić b.mały mostek o spadkach zaledwie 40mΩ i kilkukrotnie większej wydajności prądowej do 7A, niż np. zrównleglony TB6612: 250mΩ / 2,4A. Np. dwa IRF7317: N+P 30/60mΩ, 5A są gotowymi przekątnymi mostka. Modulacja szerokości impulsu PWM Jest to najskuteczniejszy sposób, by przy stałym Uz zmieniać silnikom DC obroty z zachowaniem dużego momentu. Skrót pochodzi od Pulse Width Modulation - regulacja szerokości impulsu. Polega to na zmianie relacji między stanem H, a L względem stałych odcinków czasu. Jeżeli w kolejnych, takich samych, stan H trwa połowę, a drugą L, mówimy że takie impulsy mają współczynnik wypełnienia 50%. PWM umożliwia nie tylko regulację obrotów ale np. łagodny strat dzięki czemu koła naszego robota nie będą buksowały. Przykłady sygnałów PWM. Ad. a) W tym wypadku silnik jest włączony przez czas równy czasowi, w którym silnik jest wyłączony, wiec dostaje 50% czasu, w związku z tym jego napięcie skuteczne wynosi połowę napięcia zasilania. Ad. b) Tutaj silnik jest włączony przez czas dłuższy, niż jest włączony, wiec dostaje ponad 50% napięcia zasilania. Ad. c) Tym razem silnik jest włączony przez czas krótszy, niż jest włączony, wiec dostaje poniżej 50% napięcia zasilania Najczęściej stosowane w robotach mikrokontrolery AVR wyposażone zostały w układy czasowe (liczniki/zegary), które automatycznie generują taki sygnał, na ten temat można poczytać na przykład tutaj: http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf (od str 93.) Spotyka się wiele błędnych podejść do częstotliwości dla PWM. Problem malenia mocy ze wzrostem obrotów (częstotliwości) silników bezszczotkowych BLDC jest znany, ale zapomina się, że to samo tyczy szczotkowych. Silniki są obciążeniem indukcyjnym, mają od ok. 100µ do kilku mH. Na takich obciążeniach prąd "spóźnia" się względem napięcia, użyteczną pracę wykonują tylko w tych odcinkach czasu, gdzie te wielkości się pokrywają. Im większa częstotliwość tym mniejszy obszar pokrycia czyli mniejsza moc. Im dany silnik ma większą indukcyjność, tym gorzej nadaje się do większej częstotliwości. Można to przetestować napędzając posiadany silnik U o współczynniku wypełnienia ok. 50% częstotliwością od 100Hz do np. 10kHz. Przy 10kHz niektóre tak słabną, że stają lub można je zatrzymać palcami. Zamiast wymieniać silniki na "mocniejsze" czy mostki na o mniejszych spadkach, często wystarczy po prostu zmniejszyć częstotliwość PWM. Jeżeli nie mamy możliwości sprawdzenia pamiętajmy, że zawsze lepsze są częstotliwości niższe. Robot z PWM 100Hz na pewno będzie "silniejszy" niż analogiczny, ale z PWM 500Hz. Drugim błędem związanym z PWM jest minimalny współczynnik wypełnienia. Nagminnie stosuje się regulację "od zera" gdy sporo silników rusza dopiero gdy zaczną być napędzane współczynnikiem powyżej 15-20%. Poniżej stoją i "burczą" trwoniąc prąd na generowanie drgań. Można to trochę zminimalizować zmniejszając częstotliwość PWM ale najlepiej zrobić to programowo - pominąć ten obszar współczynnika wypełnienia w którym silnik, w naszej konstrukcji, obciążony jej ciężarem ect. i tak stoi. Z dwu identycznych np. Sumo z PWM większe szanse na zwycięstwo ma ten, który po namierzeniu przeciwnika, przez pomięcie "odcinka martwego" ruszy prędzej i szybciej nabierze energii kinetycznej, niż ten, który przez ułamek sekundy będzie stał i "myślał, czaił się". Obroty silnikom DC można również sterować inaczej. Można ustalić, przy jakim minimalnym współczynniku wypełnienia nasz robot zawsze startuje. Np. 20% stanu H przy częstotliwości o okresie 10ms to będą 2ms, pozostałe 8ms to L. Start to podanie od razu tych 2ms. Ale regulować nie jak w PWM wydłużaniem H / skracaniem L lecz, pozostawić H stałe a skracać tylko L. Zmniejszenie L do zera będzie tożsame ze współczynnikiem wypełnienia 100%. Zakłócenia. Na tę kwestię zaleca się patrzyć wg: im więcej zabezpieczeń tym lepiej. Projektując PCB należy elementy rozmieszczać tak, by µC był jak najdalej od silnika, a przewody prądowe mostek/silnik jak najkrótsze. Przepięcia powstają przy przerywaniu przepływu prądu w indukcyjnościach. Tłumienie zakłóceń jest najskuteczniejsze, gdy robić to tam gdzie powstają, tj. bezpośrednio na klemach silnika. Silnik to w zasadzie obwód RL ale, zmontowany układ wnosi różne C tworząc złożony obwód RLC z właściwymi mu stanami nieustalonymi. Zakłócenia zależą od wielu czynników: indukcyjności silnika, jego obrotów, stanu szczotek/komutatora, Uz, pojemności montażowych, indukcyjności przewodów doprowadzających ( długości i grubości ), poprowadzenia i grubości ścieżek na druku, szybkości zboczy wyłączających. Tych przeważnie nie znamy, zaleca się przyjąć, że amplituda przyjmuje wartość podwojonego Uz. Poziom zakłóceń zmniejsza się np. tłumikami RC, diodami (najlepiej szybkimi Schottky), Zenera czy transilami TVS (zwłaszcza do MOS-ów, gdy mają mały zapas Uds w stosunku do Uz). Transil jednokierunkowy to w jednym kierunku m/w zwykła dioda a w drugim m/w Zenera jednak potrafiąca b.szybko "połykać" pojawiające się szpile. Są też dwukierunkowe CA, uniwersalne ale wolniejsze. Ich moc powinna być stosowna do mocy silnika (prądu), Ubr ok. 10-20% większe, niż Uz. W projektach należy uwzględnić, że zakłócenia mogą się rozchodzić szynami Uz. Dobrą separacją jest danie osobnego Uz do µC i silnika. Najczęściej stosuje się jedno wyższe do mostka i na stabilizatorze obniża do µC (oraz logiki mostka). Ten obwód należy dobrze filtrować, prócz elektrolitów nie żałować szybkich kondensatorów ceramicznych. Projektując druk wskazane jest uwzględnić je na początkach i końcach ścieżek z +Uz. Do mostka przepięcia docierają po przewodach z silnika. Komutator załącza/przerywa prąd w odcinku przewodzenia danej przekątnej mostka wiele razy (również przy PWM). Każde rozwarcie generuje przepięcie któremu poddane są tranzystory niepracującej przekątnej, pracujące w danym cyklu są w zasadzie zabezpieczone tym, że są zwarte. Same tranzystory mogą wygenerować przepięcia sporadycznie. Tylko w przypadku, gdy się rozwierają (lub jeden) w momencie, gdy komutator był zwarty i płynął prąd. CE tranzystorów bipolarnych musi się bocznikować zewnętrznymi diodami, MOS-om ochronę powinny zapewnić ich własne, szybkie Body Diode. Ale, do silników o dużej indukcyjności i większych prądach zaleca się DS bocznikować diodami Schottky (lub transilami) by tłumiły szpile nim dotrą do wewnętrznej struktury MOS-a. Metalową obudowę silnika, ekran, należy połączyć z masą. Skuteczność zastosowanych zabezpieczeń oraz czy są wystarczające można sprawdzić (zwłaszcza, gdy ktoś nie ma oscyloskopu) zastępując silnik rezystorem o oporze takim, jak silnik, a następnie na jakiś czas uruchomić urządzenie. Jeżeli uC działa bez zarzutu, mostek się nie przegrzewa, nie psuje ect. a problemy są z podłączonym silnikiem, wnioski nasuwają się same. Noty katalogowe: BC327 BC337 L298 L293D Układy mostka H są bardzo przydatne i powszechnie stosowane przy sterowaniu silników. Jest wiele opcji do zastosowania w naszych robotach zależnie od oczekiwań i potrzebnej mocy, od układu na przekaźnikach, tranzystorach bipolarnych, MOS-ach po scalone mostki. Każdy może wybrać coś dla siebie. Autorzy: Pierwsza wersja: Treker Edycja: wikingc1 Druga wersja artykułu: Xweldog
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×