Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'hexapod'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino, ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 2 wyniki

  1. Jakiś czas temu zacząłem się zastanawiać, czy da się zrobić kroczącego robota na dwóch serwach. Pooglądałem sobie parę filmików, i wyszło na to że owszem można - ale skręcanie będzie niemożliwe. Ponieważ zawsze uważałem, że niemożliwe to jest włożenie hełmu na lewą stronę (chociaż podobno jeden żołnierz udowodnił że jest to możliwe kiedy wrócił nażłopany z lewizny) - postanowiłem przeanalizować, co w istniejących konstrukcjach mi się nie podoba. No i nie spodobało mi się to, że robot mimo że przestawia sobie wszystkie nogi i tak się ślizga (nawet na trzech serwach nie da się chyba zrobic prawdziwego, precyzyjnego chodu). Postanowiłem więc, że ten "prawdziwy" chód będzie taki trochę z przymrużeniem oka, a ważniejsze jest wrażenie chodu (ech, lata pracy w teatrze lalek) i umiejętność manewrowania. Pierwszy robot powstał w ciągu praktycznie jednej nocy - niestety, trwałość konstrukcji ze spienionego PCW poklejonego czym się dało była znikoma. Co prawda Ciapek stoi mi na biurku i powoli wymieniam wszystkie elementy tak, aby doprowadzić go do stanu pełnej używalności, ale zawsze mam coś ważniejszego do zrobienia... Ostatnio ponieważ kupiłem kilka drobiazgów postanowiłem "pożyczyć" je do mniejszej wersji robota. Serwa były przeznaczone do kolejnej lalki, Arduino Pro Mini zawsze jakieś mi się w szufladzie pałęta, akumulatorek ma zasilać RPi Zero W, odżałowałem tylko parę drobnych elementów elektronicznych, parę śrubek i kilka metrów filamentu. Tak że mam przyjemność przedstawić Pseudopoda - czyli robota który co prawda tak naprawdę nie chodzi, ale skrzętnie ten fakt ukrywa Napęd robota stanowią dwa serwa Feetecha FS0307 - w stosunku do rozmiarów (najmniejsze jakie mi się udało znaleźć) mają całkiem niezły moment i prędkość. Jak widać, ruchoma jest tylko jedna (środkowa) para nóg, przednie i tylne służą jako podpory. Teoretycznie można stworzyć konstrukcję, w której będzie się ślizgać wyłącznie tylna noga podporowa, ale nie bardzo mi się chciało bawić w jakieś skomplikowane mechanizmy - szczególnie, że robot i tak pójdzie do demontażu. Mózg to Arduino Pro Mini, zasilanie - akumulatorek LiPo 980mAh plus przetwornica MT3608. Zmysłem robota jest pojedynczy czujnik TCRT5000L, który całkiem nieźle reaguje z całkiem sporej odległości (rzędu kilku-kilkunastu cm). Algorytm działania jest bardzo prosty: robot ma się szwendać po pokoju, co jakiś czas zmieniając sobie kierunek owego szwendania się a w przypadku napotkania na przeszkodę ma od niej odejść. Kod jest na tyle prosty, że zamieszczam go tu w całości. #include <Servo.h> #define VERT_PIN 10 #define HORIZ_PIN 11 #define INFRA_PIN 6 #define PHOTO_PIN A3 #define VS_ZERO 100 #define VS_MINI 85 #define VS_MAXI 125 #define HS_ZERO 80 #define HS_MINI 40 #define HS_MAXI 120 #define INFRA_STEP 40 Servo vservo, hservo; void setup(void) { pinMode(13, OUTPUT); pinMode(INFRA_PIN, OUTPUT); vservo.attach(VERT_PIN); hservo.attach(HORIZ_PIN); vservo.write(VS_ZERO); hservo.write(HS_ZERO); } enum { STEP_NO=0, STEP_FWD, STEP_BAK, STEP_LEFT, STEP_RIGHT}; uint8_t steptable[2][10]={ {VS_ZERO, VS_ZERO, VS_MINI, VS_MAXI, VS_MAXI, VS_MINI, VS_MAXI, VS_MINI, VS_MINI, VS_MAXI}, {VS_ZERO, VS_ZERO, VS_MAXI, VS_MINI, VS_MINI, VS_MAXI, VS_MAXI, VS_MINI, VS_MINI, VS_MAXI}}; void _step(int8_t lr, int8_t fwbr) { int i; hservo.write(HS_ZERO); delay(100); vservo.write(steptable[lr][2*fwbr]); delay(100); hservo.write(lr?HS_MAXI:HS_MINI); delay(100); #define SPP 7 for (i=1; i<=SPP; i++) { vservo.write(steptable[lr][2*fwbr]+ ((steptable[lr][2*fwbr+1] - steptable[lr][2*fwbr]) * i) / SPP); delay(40); } hservo.write(HS_ZERO); } void step(int8_t fwbr) { static int8_t s=0; _step(s,fwbr); s = !s; } int getPhoto(void) { int a; digitalWrite(INFRA_PIN,1); delay(5); a=analogRead(PHOTO_PIN); digitalWrite(INFRA_PIN,0); delay(5); a -= analogRead(PHOTO_PIN); a = a > INFRA_STEP; digitalWrite(13, a); return a; } bool rdz=0; void loop() { int i,n,m; n=random(8,12); for (i=0;i<n;i++) { if (getPhoto()) { if (!rdz) randomSeed(micros()); rdz=1; break; } step(STEP_FWD); } n=random(4,6); for (i=0;i<n;i++) { getPhoto(); step(STEP_BAK); } n=random(4,8); m=random(2) ? STEP_LEFT:STEP_RIGHT; for (i=0;i<n;i++) { getPhoto(); step(m); } } Tak swoją drogą ciekawe, czy da się zrobić pseudopoda z jednym serwem...
  2. Witajcie. Mam do zaprezentowania mój nowy projekt. Zdalnie sterowany robot kroczący z odbiornikiem podczerwieni. Jednostką centralną jest mikrokontroler ATmega8A-PU. Robot porusza się dzięki trzem serwomechanizmom TowerPro SG90. Inspiracją do sposobu chodzenia był robot kroczący Pololu. Robot posiada 6 niebieskich diod. Ich katody są połączone z odpowiednimi pinami mikrokontrolera, dzięki czemu steruję nimi w zależności od wykonywanego ruchu robota. Anody są połączone przez rezystor z nogami robota, te natomiast są połączone z potencjałem dodatnim zasilania. Jako pilota używam telefonu z androidem wraz z aplikacją RCoid. Korzystam ze standardu RC5. Kierunkami poruszania się robota są przód, tył, obracanie w lewo i prawo. Do zatrzymania robota służy dowolna inna komenda. Sterowanie serwomechanizmów odbywa się dzięki programowo stworzonemu PWM na 8 bitowym timerze mikrokontrolera. Tak wygląda kod przerwania od przepełnienia timera: ISR(TIMER0_OVF_vect) { static uint16_t cnt; if(cnt>=r) PORTC &= ~(1<<PC3); else PORTC |= (1<<PC3); if(cnt>=m) PORTC &= ~(1<<PC4); else PORTC |= (1<<PC4); if(cnt>=l) PORTC &= ~(1<<PC5); else PORTC |= (1<<PC5); cnt++; if(cnt>625) cnt = 0; } Zmienne r m i l odpowiadają za położenie poszczególnych nóg zmieniane w pętli głównej programu. Ich zakres mieści się od 17-76 (0.5ms-2.5ms) (0°-180°). Oczywiście zakres pracy jest mniejszy. Dla przykładu dobranymi wartościami dla nogi środkowej są 42 przy oparciu na lewej części, 44 pozycja środkowa, 46 oparcie na prawej części nogi. Zmienna licznika cnt jest porównywana z wartością 625, dzięki czemu uzyskuję częstotliwość 50Hz (8000000Hz/1/256/625=50Hz [20ms] [prescaler=1]). Jeżeli chodzi o kwestie zasilania to zdecydowałem się na użycie czterech zwykłych baterii AAA dających na wyjściu ~6V co zmusiło mnie do użycia przetwornicy Pololu S7V7F5 do zasilania mikrokontrolera. Diody i serwomechanizmy są zasilane bezpośrednio z baterii. Nogi zostały wygięte ze stalowego drutu o średnicy 1.5mm. Do orczyków zostały przymocowane za pomocą stalowego drutu o średnicy 0.3mm. Koniec każdej nogi zalałem gorącym klejem tak, aby zapobiec ślizganiu się robota na gładkiej powierzchni. Lista elementów: mikrokontroler ATmega8A-PU 3x serwomechanizmy TowerPro SG90 przetwornica Pololu S7V7F5 odbiornik podczerwieni TSOP31236 6x diody niebieskie rezonator kwarcowy 8MHz trytki i rurki termokurczliwe druty stalowe o średnicy 1.5mm, oraz 0.3mm płytka stykowa 170 otworów 4x baterie AAA z koszykiem parę rezystorów, kondensatorów i przewodów Zapraszam do śmiałego pisania swoich pytań, opinii i uwag Pozdrawiam, Karol
×
×
  • Utwórz nowe...