Skocz do zawartości

Przeszukaj forum

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

  • Szukaj wg tagów

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

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i 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 61 wyników

  1. Cześć, każdy z nas musi od czasu do czasu odświeżać sobie znane już wiadomości z używanego języka programowania (szczególnie, że "na co dzień" nie używamy wszystkich z zaawansowanych konstrukcji języka) lub uczyć się nowych rzeczy dla szybko zmieniających się standardów. Ja "na co dzień" używam języka C (nieobiektowego ponieważ w programowaniu mikro-kontrolerów nadal rzadko korzysta się z C++). Pomyślałem sobie, że fajnie byłoby na forum, gdybyśmy co jakiś czas zadawali sobie pytania dotyczące programowania w Językach C/C++ dotyczące jakichś trudniejszych do zrozumienia konstrukcji języka. Oto moje pierwsze pytanie: Załóżmy, że mamy definicję tablicy tab: int tab[5][4] = { {23, 2, 7, 1}, {4, 1}, {[2]=2, 11}, {[1]=27, 0, 7}, {9, 2, 1} }; Kto wie jaka będzie wartość wyrażenia: *(*(tab+2)+1) Zakładamy, że używamy kompilatora C zgodnego przynajmniej ze standardem C99 np. popularnego gcc (Linux, można go też uzywać pod Windows instalując pakiet "mingw"). Proszę, o krótkie uzasadnienie teoretyczne odpowiedzi (ponieważ można napisać prosty program i sprawdzić wartość). Czekam też na ciekawe pytania dotyczące programowania w C/C++ od Was Pozdrawiam
  2. Dzień Dobry Forumowicze! Problem dotyczy zarówno mikrokontrolera, jak i RPi, więc mam nadzieje że nie będzie problemu związanego z nieodpowiednim działem. Od kilku dni borykam się bezskutecznie z pewnym problemem, a prezentuje się on następująco: Potrzebuję wymienić dane poprzez SPI między Raspberry Pi Zero W (Master), a Atmegą64(Slave). Atmega zasilana przez 5V na własnoręcznie zaprojektowanej płytce (z konwerterem poziomów logicznych 3,3V-5V na MOSFET'ach). Generalnie elektrycznie wszystko jest sprawne i sprawdzone kilkukrotnie, więc to odpada. Jestem w stanie zaprogramować AVR'a przez RPi za pośrednictwem SPI właśnie (na RPi Rasbian w wersji 9), z wykorzystaniem AVRDUDE. Problem jaki się pojawia, to przy próbie wymiany danych między nimi. AVR'a programuje w C, natomiast RPi w Pythonie (kody programów niżej). Polega on na tym, że biblioteka Python'a SpiDev, jako sygnał ChipSelect podaje stan wysoki, podczas gdy ATMEGA wymaga podczas tej komunikacji stanu niskiego. Atmega nie posiada możliwości zmiany trybu na taki, aby czytała stan wysoki, a biblioteka SpiDev z kolei, nie ma funkcjonalności podania stanu niskiego. Chciałem to obejść poprzez podpięcie nóżki Atmegi pod zupełnie inną nóżkę RPi i ręcznego wysterowywania tej nóżki przed nadaniem paczki danych, jednak to nie działa - nie wiem jednak dlaczego. Nie używałem nigdy wcześniej SPI, więc finalnie nie jestem nawet pewien gdzie leży problem - czy w kodzie Slav'a, Mastera czy zupełnie gdzie indziej. Slave (C, Amtega64): #define F_CPU 1000000UL #include<avr/io.h> #include<util/delay.h> #include<avr/interrupt.h> #define ustaw(bajt, nr_bitu) (bajt |=(1<<nr_bitu)) #define skasuj(bajt, nr_bitu) (bajt &=~(1<<nr_bitu)) #define sprawdz(bajt, nr_bitu) ((bajt &(1<<nr_bitu))&&1) #define sleep(czas) for (int i=0; i<(czas); i++) _delay_ms(1) int data=500; void init_spi(void) { DDRB=(1<<PB3); //MISO - output SPCR=(1<<SPE)|(1<<SPIE); //SPI_ON & Interrupt SPDR=0; } uint8_t rec_spi(void) { while (!(SPSR & (1<<SPIF))) ; return SPDR; //return data register } int main(void) { sei(); init_spi(); DDRC |=1<<PC3; //LED'y DDRC |=1<<PC4; DDRC |=1<<PC5; while (1) { ustaw(PORTC, PC4); sleep(data); skasuj(PORTC, PC4); sleep(data); } } ISR (SPI_STC_vect) { data = rec_spi(); ustaw(PORTC,PC5); } Master (Python, RPi): import RPi.GPIO as GPIO import spidev import time GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.OUT) GPIO.output(7, GPIO.HIGH) spi = spidev.SpiDev() spi.open(0, 0) print('Open SPI') #GPIO.output(7, GPIO.LOW) data = 0xAA try: while True: print('Sending..') GPIO.output(7, GPIO.LOW) spi.xfer([data], 50000, 100, 8) # spi.writebytes([250]) GPIO.output(7, GPIO.HIGH) print('complete') time.sleep(2) #end while except KeyboardInterrupt: # sleep(0.1) spi.close() GPIO.cleanup() Na masterze (RPi) próbowałem ustawiać różne tryby (spi.mode), różne prędkości, próbowałem z spi.writebytes oraz z spi.xfer. Wszystko bez skutku. Na Atmedze, mrugam diodą co pół sekundy. Próbowałem osiągnąć taki efekt, by wysłać liczbę 250 i ustawić ją jako czas mrugania, co zauważyłbym jako szybsze mruganie diody. Próbowałem też zapalić inną diodę w przerwaniu od SPI - wszystko bezskutecznie. SPI w FuseBitach jest aktywne. Połączenia elektryczne są poprawne, przy czym Atmegowski SS jest podłączony do 7 pinu RPi. Byłbym bardzo wdzięczny za wszelką pomoc i sugestie. Pozdrawiam.
  3. Witajcie, ostatnio zajmuję się projektem, aby wprowadzić w firmie system zdalnego zapisywania stanu towarów, i do tego planu postanowiłem wykorzystać arduino. Niestety napotkałem na problem z którym nie mogę sobie poradzić z błędem którego nie potrafię wyłapać. Mam wrażenie że mikro kontroler w tym przypadku jakby się cofał. a oto mój kod pod piny <13,7> podpięta klawiatura 4x4, Jeśli ktoś miałby jakiś pomysł co z kodem może być nie tak to bardzo proszę o pomoc gdyż siedzę nad tym już około tygodnia i nie mogę ruszyć dalej Wielkie dzięki za pomoc ! #include <Keypad.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // set the LCD address to 0x27 for a 16 chars and 2 line display //deklaracja typu wyświetlacza // włączenie podwietlenia const byte ROWS = 4; // Ilość wierszy klawiatury const byte COLS = 4; // Ilość kolumn klawiatury byte rowPins[ROWS] = {13, 12, 11, 10}; //numery pinów w arduino dla wierszy byte colPins[COLS] = {9, 8, 7, 6}; //numery pinów w arduino dla kolumn char keys[ROWS][COLS] = { {'A','#','0','*'}, {'B','3','2','1'}, {'C','6','5','4'}, {'D','9','8','7'} }; Keypad klawiatura = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //Zmienne do przechowywania wartości long Numer1, Numer2, Numer; char klawisz; char akcja; boolean wynik = false; char Stan = 'M'; long kod; long szt; // sa 3 stany, stan 'M' oznacza Menu i wlacza sie tylko po skoncu innego stanu // stan 'O' oznacza odejmowanie towaru ze stanu i po jego koncu wlacza sie menu // stan 'D' oznacza dodawanie towaru i dziala podobie jak 'O' // stan 'S' oznacza eksport listy towaru na komputer void setup() { pinMode(4, INPUT_PULLUP); // przycisk oznaczajacy odejmowanie pinMode(3, INPUT_PULLUP); // przycisk oznaczajacy dodawanie lcd.begin(16, 2); //deklaracja typu wyświetlacza lcd.backlight(); // włączenie podwietlenia Serial.begin(9600); // Print a message to the LCD. lcd.backlight(); } int tablica_stan [70]; // numer tabeli to kod towaru a wartosc tabeli to ilosc na magazynie // I 1 I 2 I 3 I X(up) I // I 4 I 6 I 6 I Y(down) I // I 7 I 8 I 9 I C(kasuj) I // I Z(wstecz) I puste IW(wyb. tow)I K(zatwierdz) I void loop() { while (Stan == 'M') { lcd.setCursor(0, 0); lcd.print("wybierz -> aby dod"); lcd.setCursor(0, 1); lcd.print("wybierz -> aby odj"); while (digitalRead(3) == LOW) { Serial.println ("przycisk dodawania"); Stan = 'D'; } while (digitalRead(4) == LOW) { Serial.println ("przycisk odejmowania"); Stan = 'O'; } } while (Stan == 'O') { lcd.clear(); lcd.setCursor(0, 0); lcd.print("wybrales usuwanie"); lcd.setCursor(0, 1); lcd.print("wprowadz kod"); delay(1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wprowadz kod "); lcd.setCursor(0, 1); lcd.print("towaru"); delay(1000); INKL(); while (Numer =! kod){ Numer = kod; Numer = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wprowadz ilosc "); lcd.setCursor(0, 1); lcd.print("sztuk"); INKL(); Numer = szt; tablica_stan[kod] = tablica_stan[kod] + szt; if (tablica_stan[kod] == ( tablica_stan[kod] + szt) && tablica_stan[kod] > 0) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("dodanie towaru "); lcd.setCursor(0, 1); lcd.print("powiodlo sie"); szt = 0; kod = 0; Numer = 0; Stan = 'M'; delay(1000); lcd.clear(); } } } while (Stan == 'D') { lcd.clear(); lcd.setCursor(0, 0); lcd.print("wybrales dodawanie"); lcd.setCursor(0, 1); lcd.print("towaru"); delay(1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wprowadz kod "); lcd.setCursor(0, 1); lcd.print("towaru"); delay(1000); INKL(); Numer = kod; Numer = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wprowadz ilosc "); lcd.setCursor(0, 1); lcd.print("sztuk"); INKL(); Numer = szt; tablica_stan[kod] = tablica_stan[kod] + szt; if (tablica_stan[kod] == ( tablica_stan[kod] + szt) && tablica_stan[kod] > 0) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("dodanie towaru "); lcd.setCursor(0, 1); lcd.print("powiodlo sie"); szt = 0; kod = 0; Numer = 0; Stan = 'M'; delay(1000); lcd.clear(); } } } void INKL() { // Oznacza inicacje klawisza klawisz = klawiatura.getKey(); //pobranie wartości i przypisanie do zmiennej klawisz if (klawisz != NO_KEY) //jeśli nie ma wartości wzmiennej klawisz WykryjKlawisz(); // wykonaj "WykryjKlawisz" if (wynik == true) //jeśli wartość wynik jest prawdziwa Wyswietl(); // wykonaj "Wyswietl" } //Wykryj klawisz void WykryjKlawisz() { lcd.clear(); //wyczyszczenie wyswietlacza if (klawisz == '*') //jeżeli wciśnięty klawisz C { Serial.println ("klawisz c"); //w monitorze portu wyświetl "klawisz c" Numer = Numer1 = Numer2 = 0; wynik = false; //Przypisz 0 do zmiennych Numer, Numer1, Numer2 } if (klawisz == '1') //jeżeli klawisz 1 wciśnięty { Serial.println ("klawisz 1"); // w konsoli wyświetl klawisz 1 if (Numer == 0) //jeżeli zmienna jest pusta Numer = 1; //zmień wartość zmiennej na 1 else // jeżeli w zmiennej jest już jakaś liczba/cyfra Numer = (Numer * 10) + 1; //wpisz 1 za tą liczbą/cyfrą } if (klawisz == '2') { Serial.println ("klawisz 2"); if (Numer == 0) Numer = 2; else Numer = (Numer * 10) + 2; } if (klawisz == '3') { Serial.println ("klawisz 3"); if (klawisz == 0) Numer = 3; else Numer = (Numer * 10) + 3; } if (klawisz == '4') { Serial.println ("klawisz 4"); if (Numer == 0) Numer = 4; else Numer = (Numer * 10) + 4; } if (klawisz == '5') { Serial.println ("klawisz 5"); if (Numer == 0) Numer = 5; else Numer = (Numer * 10) + 5; } if (klawisz == '6') { Serial.println ("klawisz 6"); if (Numer == 0) Numer = 6; else Numer = (Numer * 10) + 6; } if (klawisz == '7') { Serial.println ("klawisz 7"); if (Numer == 0) Numer = 7; else Numer = (Numer * 10) + 7; } if (klawisz == '8') { Serial.println ("klawisz 8"); if (Numer == 0) Numer = 8; else Numer = (Numer * 10) + 8; } if (klawisz == '9') { Serial.println ("klawisz 9"); if (Numer == 0) Numer = 9; else Numer = (Numer * 10) + 9; } if (klawisz == '0') { Serial.println ("klawisz 0"); if (Numer == 0) Numer = 0; else Numer = (Numer * 10) + 0; } if (klawisz == '#') { Serial.println ("klawisz ="); Numer2 = Numer; wynik = true; } delay(100); } } void Wyswietl() { lcd.setCursor(0, 0); if (wynik == true) { } lcd.setCursor(0, 1); lcd.print(Numer); }
  4. Poszukujemy wykwalifikowanych inżynierów, którzy zdobyli doświadczenie w tworzeniu oprogramowania dla układów wbudowanych i chcą je pogłębić pracując na projektami w branży motoryzacyjnej. Jeżeli lubisz samochody, chcesz codziennie widzieć wyniki swojej pracy obserwując pojazdy na drogach całego świata dołącz do naszego zespołu! Jeśli jesteś osobą, która posiada: Wykształcenie wyższe (elektronika, automatyka, informatyka, telekomunikacja lub pokrewne) Bardzo dobrą znajomość języka C Umiejętność tworzenia oprogramowania dla systemów wbudowanych (doświadczenie komercyjne 5+ lat) Znajomość architektury i zasady działania mikroprocesorów Dobrą znajomość języka angielskiego Znajomość systemów operacyjnych czasu rzeczywistego Dlaczego warto do nas dołączyć: U nas rozwijasz swoją pasję do motoryzacji, pracując nad najnowszymi technologiami, które dopiero pojawią się na drogach Bierzesz udział w długoterminowych projektach realizowanych dla światowych marek samochodowych Oferujemy możliwość nieustającego doskonalenia swoich umiejętności i wiedzy Ciągły kontakt z najnowszymi technologiami z dziedziny samochodowych systemów wbudowanych Krótki proces rekrutacyjny - 1 rozmowa F2F Atrakcyjne widełki finansowe 15 000 - 18 000 PLN netto
  5. Witam wszystkich na forum. Od kilku dni posiłkując się starym i nowym kursem STM32F1 staram się przeportować z biblioteki StdPeriph na HAL program obsługujący czujnik HC-SR04, wykorzystujący przerwania i timery ( http://www.avislab.com/blog/stm32-exti/ ). Niestety program zawsze zwraca wartość pomiaru 0. Na 99% problem powoduje nieprawidłowa implementacja timera 3 lub błędnie napisane przerwanie służące do pomiaru długości sygnału Echo. Czy jest ktoś w stanie określić w którym miejscu jest błąd? Mój kod HAL: void sonar_init() { //Timer3 Echo __HAL_RCC_TIM3_CLK_ENABLE(); tim3.Instance = TIM3; tim3.Init.Prescaler = 64 - 1; tim3.Init.CounterMode = TIM_COUNTERMODE_UP; tim3.Init.ClockDivision = 0; tim3.Init.RepetitionCounter = 0; tim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; HAL_TIM_Base_Init(&tim3); HAL_TIM_Base_Start_IT(&tim3); __HAL_RCC_GPIOC_CLK_ENABLE(); //Trigger Pin8 GPIO_InitTypeDef gpio; gpio.Pin = GPIO_PIN_8; gpio.Mode = GPIO_MODE_OUTPUT_PP; gpio.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &gpio); //Echo Pin9 GPIO_InitTypeDef GPIO_InitStruct; gpio.Pin = GPIO_PIN_9; gpio.Mode = GPIO_MODE_AF_PP; gpio.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); } void EXTI9_5_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9); } void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(GPIO_Pin == GPIO_PIN_9){ if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_9) != 0) { // Rising __HAL_TIM_SET_COUNTER(&tim3, 0); } if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_9) == 0) { // Falling SonarValue = __HAL_TIM_GET_COUNTER(&tim3); } } } void sonar_start() { //10us TRIG int i; HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET); //TRIG ON for(i=0;i<0x6400;i++); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET); //TRIG OFF } unsigned int sonar_get() { unsigned long Sonar; // 354 Sound speed (mm/sec), 64000 - F_CPU, Result = mm Sonar = (354/2) * (unsigned long)SonarValue / (64000 / 64); return (unsigned int)Sonar; }
  6. Witam, Chcialem sie was zapytac, czy ta funkcja jest poprawna? Czy takie rozwiazanie nie bedzie powodowac wyciekow pamieci? Czy rozmiar tablicy jest dobrze alokowany? char * subarray; char buffor[30]; uint8_t bufforElementsNumber = 0; char * getSubArray(int size, char array[]) { subarray = NULL; subarray = malloc(sizeof(char) * size); for (int i = 0; i < size; i++) { subarray[i] = array[i]; } return subarray; }
  7. Korzystając z wolnej chwili, nadszedł czas na opisanie robota Thunderstorm na łamach portalu Forbot. Konstruktorami tego robota jestem ja oraz mój kolega Adam Fleszar. Na początku marca robot ten będzie obchodził swoje pierwsze urodziny. Zapraszamy do zapoznania się z jego opisem. Mechanika Konstrukcja robota Thunderstorm opiera się na korpusie wydrukowanym w technologii 3D z tworzywa ABS. Projekt tego elementu powstał w programie Autodesk Inventor 2012, kształt tej części jest zaprojektowany zgodnie z naszą intuicją i nie był optymalizowany pod żadnym kątem. Do korpusu przykręcony jest biały przód wykonany w tej samej technologii, do którego przymocowana jest płytka z 19-nastoma czujnikami rozmieszczonymi po łuku. Płytki PCB przymocowane są do wydrukowanych na korpusie kominków. Jako napęd zastosowaliśmy modelarskie silniki DC. Koła zębate użyte w przekładni pochodzą z serw TowerPro. Mocowania przekładni w postaci płaskowników aluminiowych zostały wykonane na mojej obrabiarce CNC. Oś koła stanowi pręt o średnicy 3mm wymontowany z napędów CD/DVD, nagwintowany na jednym z końców gdzie osadzona jest zębatka napędzająca koło. Na osi znajduję się również tarcza enkodera wymontowana z myszki kulkowej. Koła zastosowane w robocie pochodzą z modeli RC. Thunderstorm wyposażony został w turbinę, która przysysa robota do trasy. Napędzana jest ona silnikiem BLDC o mocy 200W sterowanym za pomocą regulatora 3F Jeti Advance 18 Pro. Jako ślizgacze zostały użyte trzy plastikowe kulki z ASG o średnicy 6mm. Elektronika Projektowana elektronika została podzielona na dwa współpracujące ze sobą systemy. Pierwszym z nich jest moduł mostka H sterujący silnikami napędowymi. W robocie znajdują się dwa takie układy, pracujące przy każdym kole niezależnie od siebie. Ich zadaniem jest dokładne kontrolowanie prędkości obrotowej kół na podstawie sygnałów z enkoderów zamocowanych na osi każdego koła. Drugim modułem jest układ, którego głównym celem jest odczyt linii i wygenerowanie odpowiedniego sterowania niezależnie dla lewego i prawego koła w robocie. Ponadto układ ten umożliwia komunikację z pilotem stosując gotowe moduły transmisji radiowej TLX905 oraz ma możliwość generowania sygnału o zmiennym wypełnieniu, koniecznym przy sterowaniu regulatorem prędkości obrotowej turbiny. Płytka z czujnikami znajduje się w przedniej części robota, a sygnały, które z niej wychodzą są podpięte do płytki kontrolującej linię przy pomocy dwóch tasiemek 12-żyłowych każda. Płytki PCB zostały wykonane w firmie Satland Prototype. Moduł sterownika silnika DC wyposażony jest w mikrokontroler ATmega88PA pracujący z częstotliwością 20MHz. Sam mostek H zbudowany jest z czterech tranzystorów IRF6668 w obudowach DirectFET sterowanych dwoma układami IR2104S. Częstotliwość sygnału PWM sterującego silnikiem wynosi 19,5kHz. Sterownik ten otrzymuje sygnał kroku i kierunku z kontrolera linii. Jedno zbocze narastające sygnału kroku odpowiada za obrót osi koła o jedną jednostkę enkodera w stronę wyznaczoną przez sygnał kierunku obrotu. Kontroler linii zbudowany jest w oparciu o mikrokontroler ATmega128A @ 16MHz. Sygnał z czujników linii KTIR0711S podawany jest na komparatory LM339 a następnie w postaci sygnału logicznego na wejścia mikrokontrolera. Moduł sterownika linii generuje dwa sygnały o zmiennej częstotliwości sterujące prędkością obrotową lewego i prawego koła jednocześnie. Do zasilania tego modułu jest wykorzystana przetwornica impulsowa zbudowana na układzie MAX5035, ale ze względu na zastosowanie regulatora 3F, który posiada wbudowany układ BEC nie jest ona wykorzystywana podczas jazdy, część cyfrowa jest wtedy zasilana bezpośrednio z regulatora 3F. Programy Programy na mikrokontrolery użyte w obu modułach napisane są w języku C. W mostkach sterujących silnikami DC działa algorytm PID, zaś w jednostce kontrolującej linię algorytm PD. Zasilanie Do zasilania robota stasowane są zamiennie akumulatory Turnigy nano-tech 850mAh 3S 25~40C lub 350mAh 3S 65~130C Lipo Pack. Osiągnięcia :arrow:1. miejsce – Robotic Tournament 2012 w Rybniku – Linefollower :arrow:3. miejsce – Trójmiejski Turniej Robotów 2012 w Gdańsku – Linefollower :arrow:3. miejsce – Trójmiejski Turniej Robotów 2012 w Gdańsku – Linefollower PRO :arrow:2. miejsce – Festiwal Robotyki CybAirBot 2012 w Poznaniu - Linefollower :arrow:1. miejsce – Roboxy 2012 w Gdańsku - Linefollower :arrow:1. miejsce – Robocomp 2012 w Krakowie – Linefollower :arrow:2. miejsce – Robocomp 2012 w Krakowie – Linefollower Enhanced :arrow:1. miejsce – ASTOR Robot Challenge 2012 w Sosnowcu – Linefollower :arrow:1. miejsce – ASTOR Robot Challenge 2012 w Sosnowcu – Linefollower Enhanced :arrow:1. miejsce – Sumo Challenge 2012 w Łodzi – Linefollower :arrow:3. miejsce –Robotic Arena 2012 we Wrocławiu – Linefollower Filmy z testów i zawodów Nowy film z ostatnich zawodów!
  8. MESS czyli Mały Elektroniczny Spychacz Sześcianów to moja pierwsza konstrukcja, która jest zarówno moim pierwszym projektem w technologii powierzchniowej. Prace nad robotem trwały nieco ponad tydzień, a całkowity koszt jego budowy to około 80zł. Algorytm sterujący został napisany w języku C. Wymiary nieznacznie przekraczają regulaminowe 5x5x5 i 100g wagi, jednak robot nie został zbudowany do startowania w zawodach. Jego zadaniem jest cieszyć oko radząc sobie bez problemu ze spychaniem przeszkód ( głównie małych papierowych sześcianów 4x4x4cm) z powierzchni ringu. 1.Konstrukcja mechaniczna Szkielet robota tworzą dwie płytki laminatu które jednocześnie pełnią funkcję obwodów drukowanych. Pomiędzy nimi umieszczone zostały dwa przerobione serwomechanizmy Redox S90 tak, aby ich wały wyjściowe znajdowały się w jednej osi. Konieczne było wycięcie części plastikowej obudowy serwomechanizmu w celu zrealizowania zamierzonych wymiarów robota. Koła MESS`a to popularne koła Pololu 32x7mm, które zostały delikatnie wyfrezowane w celu umieszczenia w nich orczyków od wspomnianych serwomechanizmów. 2. Elektronika i zasilanie Dolna płytka szkieletu zawiera dwa czujniki odbiciowe CNY70 służące do wykrywania białej linii granicznej ringu i niezbędne do ich obsługi elementy pasywne. Płytka posiada cztery wyprowadzenia dzięki którym łączy się z główną płytką sterującą górną( zasilanie i sygnały napięciowe od każdego z czujników ). Mózgiem robota jest mikrokontroler atmega8A w obudowie TQPF32 , a za wysterowanie silników odpowiedzialny jest podwójny mostek H TB6612. Na górnej płytce znajdują się ponad to wyprowadzenia ISP, wyprowadzenia pinów UART’a co daje możliwość debugowania w terminalu, przycisk uruchamiający pętle główną robota, czerwona dioda led i garstka niezbędnych elementów pasywnych do filtracji zasilania. Wykrywaniem przeszkód do zepchnięcia zajmuje się cyfrowy czujnik odległości SHARP GP2Y0D340K, generujący przerwania zewnętrzne procesora na zbocze opadające. MESS zasilany jest z pakietu Li-Pol Dualsky 7.4V 220mAh 25C, a za doprowadzenie odpowiedniego napięcia zasilającego logikę robota odpowiada stabilizator LDO LM1117 w obudowie TO252. 3. Zdjęcia 4.Film
  9. Wstęp MicroMamut to nasz drugi robot. Tym razem postawiliśmy na kategorie MicroSumo. Założenia dla robota były takie by był w miarę szybki i oparty o czujniki Sharpa GP2Y0D340K. Jest to pierwszy nasz robot z elektroniką zbudowaną w technologii SMD. Najwiekszym wyzwaniem dla robota było zmieszczenie wszystkich elementów w ramach wymiarów 5x5x5 cm. Robot został złożony na 3 godziny przez zawodami Robotic Arena 2013, ale od razu zajął tam 3cie miejsce. Później na większości zawodów, na których startował też plasował się na podium. Lista sukcesów w sezonie 2013/2014: III miejsce na Robotic Arena 2013 II miejsce na T-BOT 2014 I miejsce na Robomaticon 2014 II miejsce na ROBO~motion 2014 I miejsce na ROBOXY 2014 Projektowanie Robot został zaprojektowany przy pomocy programu SketchUP. Dzięki wykorzystaniu tego programu udało się w miarę wszystko upakować zgodnie z zamierzeniami. Dodatkowo obudowa zaprojektowana w programie została wydrukowana na drukarce 3D co przyspieszyło prace. Schemat i płyki Robot ma trzy płytki które poza miescem na elektronikę stanowią także poziome elementy konstrukcyjne robota. Dolna płytka jest podstawą robota do której przytwierdzone są silniki. Dodatkowo przylutowane są do niej czujniki linii. Połączona jest ona kablami z górną płytką. Średnia płytka jest podstawą dla akmulatorów. Zawiera ona stabilizator liniowy oraz mostek H. Jest połączona kablami z płytą górną. Górna płytka jest płytką, na której znajduje się procesor. Zbiera ona sygnały z pozostałych płytek oraz z czujników. Znajdują się też na niej diody oraz są do niej przytwierdzone moduł startowy oraz przyciski. Dodatkowo ma ona wyprowadzone złącze programatora oraz układu debugu przez RS-232. Projekt schematu i płytki zostały wykonane w Eaglu. Płytki zostały wykonane na zlecenie. Elektronika Podstawowe elementy wykorzystane w układzie to: 1. Procesor Atmega 16 - sterowanie całym robotem 2. 3 czujniki 40 cm Sharp GP2Y0D340K - czujniki przeciwnika, jeden patrzący na wprost i dwa ustawione pod kątem 30 st. 3. 3 czujniki linii - KTIR0711S - do wykrywania linii oczywiście. 4. TB6612- dwukanałowy mostek H dla silników, sterowany sygnałami PWM z procesora 5. Stabilizator napięcia lm1117 dla zapewnienia 5V zasilania dla układów. Generalnie elektronika spełnia dobrze swoje zadania, dzięki zastosowaniu technologii powierzchniowej udało się zaoszczędzić dość dużo miejsca. Zasilanie Zdecydowaliśmy się na zasilanie 7,4V z dwóch cel. Aby odpowiednio upakować układy i dobrze rozłożyć ciężar wykorzystaliśmy dwa ogniwa jednocelowe z których poprzez odpowiednie połączenie został stworzony pakiet dwucelowy. Mechanika Jak wspomniano wcześniej podstawa robota to dolna płytka elektroniczna. Silniki to kultowe Pololu 30:1. Ponieważ są one dosyć dużo i nie mieszczą się w jednej osi na szerokość, trzeba było znaleźć sposób na odpowiednie ich ułożenie. Zdecydowaliśmy się na ułożenie silników jeden za drugim i przekazanie napędu jednego z nich na oś za pomocą kół zębatych. Było to trudne technicznie ale zapewnia dobre właściwości jezdne robota. Koła zostały odlane z silikonu. Wszystkie płytki elektroniczne połączone są przewodami na stałe. Rezygnacja ze złącz to duża oszczędność miejsca, utrudnia to jednak mocno prace konserwujące robota. Obudowa została wykonana w technologii druku 3D, i ze względu na dostęp do robota jest sklejona taśmą klejącą zamiast klejem. Przednia obudowa pełni funkcję "noża", nie jest ona jednak w tym zbyt efektywna. Robot dociążony jest odważnikami z ołowiu zaprojektowanymi w 3D i odlewanymi specjalnie dla niego, oraz dodatkowo dwoma odważnikami stalowymi na przedniej obudowie. Pomimo tego ma tendencje do przewracania się na tył. W maju 2014 robot przeszedł gruntowny przegląd, i zostały wymienione przewody wewnętrzne które powodowały czasami przerwy w działaniu. Problemy były związane bardzo krótkim czasem budowy, ale zostały już rozwiązane. Program Początkowo program był bardzo prosty. Na przełomie 2013 i 2014 program został przepisany na nowszy, bardziej czytelny i dający większe możliwości rozwoju. Obydwa programy bazują na programie z robota FlyingMamut. Program stworzony jest w oparciu o konkretne reguły odpowiadające staną czujników oraz stanowi logiki. Na podstawie stanu czujników i stanu obecnego ustalany jest stan następny. Program został napisany w języku C. Używałem WinAVR. Programuję przez USBAsp. Do debugowania programu używam złącza RS-232, którego moduł z układem MAX232 podpisany jest dodatkowo do robota. Podsumowanie Robot jest kolejnym etapem w naszej przygodzie z robotami sumo. Tym razem podeszliśmy do tematu już bardziej profesjonalnie i korzystaliśmy z projektowania 3D oraz technologii SMD. Robot świetnie spisywał się przez cały sezon 2013/2014, choć pod koniec sezonu zaczął już częściej przegrywać z innymi konstrukcjami. Zaletami robota jest jego szybkość oraz dobre czujniki. Wadami są złe rozłożenie wagi oraz brak noża. Robot po małych ulepszeniach będzie startował dalej ponieważ ma jeszcze potencjał. W planie jest kolejna konstrukcja microsumo bazująca na doświadczeniach z tego robota.
  10. Witam. Przedstawiam wam moje drugie dzieło: wielozadaniowy robot Witek. Jest to mój drugi robot, powstał jakieś 4 miesiące temu w celach edukacyjnych, budowa jest dużo bardziej skomplikowana od mojego pierwszego robota ( CHAOS ). Elektronika montowana jest na wytrawionym PCB( pierwszy raz wytrawiałem i wyszło według mnie całkiem fajnie ). Schematy rysowane w eagle . Robot posiada budowę modułową, czyli mamy: - płytę główną - moduł z mostkiem H - moduł z odbiornikiem RC5 (TSOP) - wyświetlacz LCD 2x16 zgodny z HD44780 - moduł czujnika linii Elektronika: Sercem robota jest uC atmega8 zasilany napięciem 5v. Sterownik silników to układ scalony l298N z diodami likwidującymi szpilki napięciowe . Odbiornik RC5 to TSOP (nie wiem dokładnie jaki ponieważ pochodzi z demontażu). Ultradźwiękowy czujnik odległości HC-SR04. Inne drobiazgi takie jak rezystory, kondensatory itp. Moduł czujnika linii składa się z: - 3x CNY70 - potencjometr 5k5 - komparator LM339 - rezystory Niestety zabrakło funduszy na akumulator i robot zasilany jest z kabla . Mechanika: Napęd to dwa przerobione serwa TowerPro SG-92R. Serwo Redox S90 do obracania czujnika odległości. Koła od zabawki, przytwierdzone do orczyków za pomocą gorącego kleju . Największym problemem przy budowie robota było napisanie programu do odbioru RC5, ale się udało . Oprogramowanie: Program napisany jest w C. Nauczyłem wielu ważnych rzeczy przy pisaniu programu do robota, ponieważ musiałem wykorzystywać przerwania i timery . Starałem się wszystko sam pisać ale niestety z braku czasu, do obsługi LCD wziąłem gotowe rozwiązanie:). Robocik posiada 3 tryby jazdy: - omijanie przeszkód - jazda po linii - zdalne sterowanie W przyszłości mam zamiar dodać do robota możliwość komunikacji radiowej i zbudować do tego odpowiedni terminal . Zdj PCB: Screeny z eagle: - płyta główna: - moduł czujnika linii (Rozmieszczenie elementów w czujniku linii wzorowane na płytce użytkownika TOLO ): - moduł mostka H: Zdjęcia robota: Filmy:
  11. Witam. Chciałbym Wam przedstawić mojego najnowszego robota klasy Line Follower Standard o nazwie "Pionier". Po raz pierwszy robot zaprezentował się na zawodach Robomaticon 2014 w Warszawie. Jest to moja druga konstrukcja tego typu. Konstrukcja mechaniczna Robot składa się z dwóch modułów: płytki z czujnikami oraz modułu głównego. Obie płytki w całości zostały wykonane przeze mnie. Oba moduły zostały połączone dwiema cienkimi listewkami z wytrawionego laminatu o grubości 1.6 mm. Koła jakie używam to standardowe koła Pololu oraz koła Solarbotics. Całość wraz z akumulatorem i kołami waży 137g. Średnia prędkość robota to 1 - 2 m/s w zależności od trasy. Moduł z czujnikami Starałem się by masa modułu była możliwie jak najmniejsza. Płytka została wykonana z laminatu o grubości 1 mm. Wymiary płytki to: 160 mm x 15 mm. W module zastosowałem 19 czujników KTIR ułożonych w łuk. Na płytce zostało umieszczone złącze dla cyfrowego czujnika odległości Sharp 40 cm. Moduł z czujnikami jest połączony z modułem głównym za pomocą złącz ZIF i taśmą FFC. Moduł główny Moduł główny jest podwoziem konstrukcji. Oprócz układów elektronicznych umieściłem na nim silniki napędowe, którymi są dwa silniki Pololu 10:1 HP. Podwozie zostało wykonane z laminatu o grubości 1.6 mm. Wymiary płytki: 130 mm x 60 mm. Elektronika Sercem robota jest mikrokontroler Atmega128. Procesor jest odpowiedzialny za odczyt stanów z czujników, realizację algorytmu i sterowaniem mostkami. Silnikami sterują dwa mostki H TB6612. Kanały w mostku zostały połączone dzięki czemu wzrosła wydajność prądowa mostka. Z innych elementów na płytce znajdują się: złącze programatora, wyprowadzenia do interfejsu USART, odbiornik podczerwieni TSOP2236, 2 przyciski, 4 diody led oraz kwarc 16 MHz. Zostały też wyprowadzane piny na enkodery magnetyczne AS5304, które zamierzam zamontować. Całość zasilana jest z pakietu Li-Pol Redox 3S 11.1V. Pakiet zamocowany jest na rzepy dzięki czemu nie ma problemów z jego wyjęciem, np. do ładowania. Zasilanie z Li-Pola trafia na dwa stabilizatory. Jeden z nich to stabilizator regulowany LM338T o wydajności 5A odpowiedzialny za zasilanie silników, drugi to stabilizator liniowy jednonapięciowy 78S05 odpowiedzialny za zasilanie procesora i reszty podzespołów. Oprogramowanie Program został napisany w języku C. Do podążania za linią używany jest regulator PD. Osiągnięcia - 6 miejsce Robomaticon Warszawa 2014 - kategoria Line Follower Standard (wtedy jeszcze pod starą nazwą) - 2 miejsce ROBO~motion Rzeszów 2014 - kategoria Line Follower Standard - 2 miejsce ROBO~motion Rzeszów 2014 - kategoria Line Follower Enhanced Zdjęcia i filmy Podsumowując jestem zadowolony z konstrukcji. Wiele się przy niej nauczyłem, wyeliminowałem błędy konstrukcyjne i programowe z pierwszego robota. Zachęcam do wyrażania opinii i uwag na temat robota jak i zadawania pytań.
  12. Witam, Chciałbym przedstawić mojego robota minisumo. Jest to moja druga konstrukcja tego typu, pierwszej nie prezentowałem gdyż nie była tego warta(choć i t nie jest wolna od wad). Ale do rzeczy. Mechanika Konstrukcja nośna oparta jest o laminat, pocięty przy pomocy miniszlifierki i polutowany. Napęd stanowią 4 silniki Pololu 50:1 z kołami z aluminium z sylikonowymi oponami Elektronika Sterowaniem zajmuje się atmega32, która współpracuje z takimi układami jak: 4 mostki TB6612 (po jednym dla silnika), MBI5026GF (sterownik diod, które obrazują prace czujników) oraz LM339 (komparator obsługujący 4 czujniki podłoża). Płytka zaprojęktowana została samodzielnie w Eagle'u i wyprowadzone zostały na niej oprócz SPI także złącza ISP i USART oraz przeprowadzone napięcia ze złącza balance baterii. Płytka nie wyszła do końca taka jak planowałem, a zwłaszcza estetycznie. Dla dociekliwych: Taki szary zaciek na spodniej stronie to klej którym musiałem oblać kable przyłączeniowe baterii bo miały tendencję do obłamywania. Na stronie wierzchniej to dziwne coś obok elementu w pomarańczowej koszulce termokurczliwej to wspomniany LM339(lepiej widać na całościowym zdjęciu konstrukcji). Wlutowany zgodnie z projektem komparator smd odmawiał posłuszeństwa zaszła więc potrzeba jego wymiany. Ponieważ jednak robot miał działać na zawody, przesyłka z układem nie dotarłaby na czas a w lokalnym sklepie była tylko wersja dip konieczna była taka modyfikacja. Elektronika generalnie działa choć czasami jest problem z zakłóceniami. Przy silnikach mam już po 4 kondensatory 100nf ale i tak czasami, choć rzadko następuje reset uC. Co do rozwoju robota pod względem elektroniki to planowałem panel operatorski z wyświetlaczem od Nokii 3310, który pozwalałby na start z pilota, podejrzenie wartości z czujników, sprawdzenie stanu baterii czy ustawienie prędkości silników. Do wspomnianego panelu powstał nawet projekt pcb i część oprogramowania ale projekt z braku czasu nie został skończony. Oprogramowanie Napisane w całości w C. Robot startował w zawodach na UTP w Bydgoszczy gdzie uniwersytet udostępnia oprogramowanie dla zawodników(zawody dla początkujących) skorzystałem więc z tego gotowca dostosowując tylko funkcje obsługi silników i niektórych czujników do swoich potrzeb. Generalnie do zmiany została tylko obsługa MBI5026 bo nie obsługuje wszystkich dostępnych dód. Czujniki Robot posiada 6 czujników przeciwnika i 6 czujników podłoża. Z przodu jak i z tyłu pracują 2 analogowe Sharp'y jako czujniki przeciwnika i 2 Qrd1114 jako czujniki linii. Po bokach natomiast pracują Sharp cyfrowy i Qrd po lewej jak i prawej stronie. Co do zasięgu czujników przeciwnika to wiem tylko, że cyfrówki mają 40cm analogowych natomiast nie znam bo je dostałem i nie sprawdzałem w dokumentacji. Z tego co jednak zauważyłem analogi mają niższy zasięg. Zasilanie Robot zasilany jest z pakietu 2S 7.4V 900 mAh. Posiadam 2 takie pakiety, które pracują na zmianę. Zdjęcia konstrukcji Podsumowanie Najbardziej jestem zadowolony z konstrukcji mechanicznie. Robot na swoich 4 silnikach jest silny a i wydaje mi się, że udało mi się wszystko dość sensownie upchnąć. Humor psują mi trochę te rzadkie ale niechciane resety no i niezbyt profesjonalny wygląd elektroniki. W planach miałem stworzenie nowego pcb ale w tym roku kończę szkołę, dla której robot powstawał a z braku czasu raczej już nic nie zdążę zrobić. Dlatego też zdecydowałem się zaprezentować tą konstrukcję. MOV20130620_003.avi
  13. Witam, postanowiłem dzisiaj zaprezentować naszej małej społeczności robota którego ostatnimi czasy popełniłem. Jego konstrukcja rozpoczęła się tydzień przed Robotic Arena 2013. Powstała właściwie tylko dlatego, że nie wrobiliśmy się z kolegom z większym projektem a chciałem wystartować na zawodach. Budowa zamknęła się w ciągu 3 długich dni i nocy. No ale może skończę mówić o sobie i przedstawię głównego bohatera tego artykuł: Micro Line Follower - eLFik Płytka robota została zaprojektowana w programie Altium Designer. Do budowy wykorzystałem leżący gdzieś w szafce dwustronny laminat. Wykonałem ją metodą termotransferu a następnie pokryłem powłoką cyny za pomocą lutownicy, plecionki i kalafoni. Jej wymiary to 28x34mm. Silniki które zastosowałem w tej konstrukcji pochodzą z napędu zabawkowego helikoptera, który został rozebrany po zakończeniu swojego krótkiego żywota. Elektronika zasilana jest bezpośrednio z baterii. Sercem układu jest ATMega88PA taktowana wewnętrznym kwarcem 8MHz. Silniki sterowane są za pomocą 2 tranzystorów PNP. Czujniki lini to znane i lubiane KTIR0711S podłączone pod komparator. Robot ma możliwość komunikacji z komputerem za pomocą autorskiego złącza oraz RS-232. Część zastosowanych tutaj rozwiązań wynikło z doświadczenia lecz większość opierało się na założeniu "może pojedzie/zadziała". Niestety schematem się nie podzielę ponieważ zaginął mi podczas niespodziewanego formata. Program został napisany w języku C w środowisku Eclipse. Jest on implementacją regulatora PID zaprojektowanego przez firmę ATMEL oraz paru moich własnych rozwiązań. Całkowite wymiary robota to 40x34mm a jego waga bez dodatkowego dociążenia to 6g. Niestety, pomimo tego, że robot działa to nie jest w stanie osiągać dużych prędkości. Winna temu jest bezwładność silników przez którą nie reaguje dostatecznie szybko na podawane zmiany a układ sterujący nie pozwala na hamowanie prądem wstecznym. Jednak co by się z eLFikiem nie działo to jego budowa sprawiła mi wiele radości i nauczyła wielu rzeczy. Jeżeli wszystko pójdzie zgodnie z planem to podczas zawodów Robomaticon 2014 pojawię się z jego drugą wersją która mam nadzieje wyeliminuje dotychczas zauważone błędy konstrukcyjne. Na sam koniec filmik z przejazdu:
  14. FlyingMamut to nasz pierwszy robot. Założenia były takie żeby na nim się nauczyć. Robot był rozwijany od września 2012 do maja 2013. Dzięki udziałowi w międzyczasie w zawodach udało się w miarę możliwośći projekt na tyle poprawić że na ostatnich zawodach - Robocomp 2013 zajęliśmy 3 miejsce. Projektowanie Robot nie był jakoś szczególnie projektowany. Wykonaliśmy kilka szkiców i obraliśmy ogólną koncepcję. Robot miał być kostką, a z przodu miała wysuwać się tzw "Łapa" czyli blaszka pełniąca rolę klina. Jeśli chodzi o elektronikę to założyłem płytkę 1 stronną o wymiarach zbliżonych do 10x10, w technologii przewlekanej (2,54mm). Schemat i płytki Schemat i płytki zostały wykonane w Eaglu. Płyta głowna ma dosyć duży rozmiar, który na pewno mógłbły być mniejszy gdyby płytka była dwustronna. Dodatkowo zaprojektowałem osobne płytki dla elementów potrzebnych dla czujników CNY70 oraz Sharp 10 i 5 cm. Od tych czujników do głównej płytki biegną 3 żyłowe przewody. Elektronika Postawowe elementy wykorzystane w układzie to: 1. Procesor Atmega 16 - sterowanie całym robotem 2. 5 czujników 40 cm Sharp GP2Y0D340K - czujniki przeciwnika ustawione pod kątem 45 st. tak że pokrywają kąt widzenia 180 st. 3. 4 czujniki linii - CNY70 - do wykrywania linii oczywiście. 4. 2 czujniki 10 cm Sharp GP2Y0D810Z0F oraz 2 czujniki 5 cm Sharp GP2Y0D805Z0F. Czujniki te początkowo miały służyć dla wykrywania celów pod "łapą". Obecne informują że robot jest w zwarciu i pomagają reagować odpowiednio. 5. L298N - dwukanałowy mostek H dla silników głównych, sterowany sygnałami PWM z procesora 6. Jednokanałowy mostek H L293D, początkowo używany dla sterowania silnikiem łapy a następnie silnika otwierania skrzydeł. Sterowany zero-jedynkowo z procesora. 7. Stabilizator napięcia LM7805 dla zapewnienia 5V zasilania dla układów. Płytka została zrobiona medotą domową (termotransfer), podobnie jak lutowanie. Nadspodziewany rozmiar diod 1N5822 sprawił, że musiały one zostać powyginane w artystyczny sposób Generalnie elektronika spełnia dobrze swoje zadania, chodź korzystając z technologii powierzchniowej i płytki dwustronnej można by dużo miejsca zaoszczędzić. Nie została ona w żaden sposób zmodyfikowana od początku istnienia robota. Zasilanie Zdecydowaliśmy się na zasilanie 11,1 V z 3 celowego pakietu Dualsky. Początkowo był to pakiet 800 mAh, a następnie daliśmy wersję 400 mAh która w zupełności wystarcza a jest dużo mniejsza. Odpowiednie napięcie dla układów elektronicznych (5V) zapewnia stabilizator liniowy. Jeśli chodzi o silniki to PWM tak dobiera napięcie średnie aby ich nie spalić (max 9V). Mechanika Podstawa robota wykonana jest z stalowej blachy wycinanej poprzez cięcie wodą i odpowiednio powyginanej. Górna obudowa wykonana jest z cieńskiego aluminium. Materiały zostały wzięte z przedmiotów codziennego użytku typu tace itd. Silniki główne to kultowe Pololu 50:1. Są one bardzo dobre dla potrzeb Minisumo. Niestety było z nimi najwięcej awarii - dwa już się spaliły :/ Silniki początkowo zajdowały się w przedniej części robota, a obecnie znajdują się z tyłu, co bardzo poprawiło przyczepność podczas zwarcia, dzięki czemu robot nie daje się tak łatwo przepchnąć. Silniki i akumulator umieszczone są na spodzie robota a nad nimi płytka z elektroniką. Z przodu w rogach obudowy znajdują czujniki linii, jeden znajduje się z tyłu. W ostatecznej wersji przód robota uformowany jest w tzw. klin. Klin ma dość stromy kąt ze względu na duże rozmiary płytki z elektroniką. Początkowo wykorzystywaliśmy koła Pololu ale zupełnie nie spełniały one swojej funkcji. Robot pływał nawet przy niewielkich zakrętach. Obecnie sami odlewamy koła z silikonu co bardzo poprawiło przyczepność robota. Łapa Łapa w zamyśle miała służyć to podcięcia i wyrzucenia innych robotów z ringu. Niestety jej zamysł niezbyt się sprawdził. Przed walką znajdowała się pod robotem i następnie przy starcie walki była wysuwana poprzez silnik Pololu 1000:1 na którego był osadzony nagwintowany pręt. Położenie łapy było kontrolowane przez dwa styczniki informujące o skrajnych położeniach. W momencie wykrycia wjazdu przeciwnika na łapę (czujniki 5cm) miała ona możliwość podniesienia się pod kątem 45stopni. Niestety niezbyt to działało przy obciążeniu, a dodatkowym problemem był fakt że roboty z dobryk klinem wbiłały się pod łapę. Skrzydła Skrzydła są elementem podpatrzonym na filmikach z zawodów w Japoni. Mają one w zamyśle zmylać czujniki przeciwnika, podobnie jak płahta działa na byka Skrzydła przed walką są w pozycji pionowej tak aby zmieścić się w obrysie 10x10 cm a następnie są rozkładane poprzez wyciągniecie zawleczki przez silnik umieszczony na obudowie robota. Były one rozwijane w kilku fazach. Poszczególne elementy takie jak system otwierania, ich ułożenie, amortyzatory były kilkakrotnie ulepszane. Skrzydła na pewno w niektórych walkach pomogły, a pozatym są charakterystycznym elementem robota zapewniającym jego rozpoznawalność. Początkowy wygląd robota Robot w wersji końcowej Program Program stworzony jest w oparciu o konkretne reguły odpowiadające staną czujników oraz stanowi logiki. Na podstawie stanu czujników i stanu obecnego ustalany jest stan następny. Program został napisany w języku C.Używałem WinAVR. Programuję przez USBAsp. Do debugowania programu używam złącza RS-232, którego moduł z układem MAX232 podpisany jest dodatkowo do robota. W przyszłości planujemy skorzystać z modułów radiowych lub bluetooth. Podsumowanie Mimo wiadomych wad, jesteśmy zadowoleni z tego robota. Na pewno pozwolił on się nam dużo nauczyć i rozwinąć jako konstruktorzy robotów. Dzięki modyfikacją z zawodów na zawody stawał się coraz lepszy i udało się w końcu stanąć na podium. Zdajemy sobie oczywiście sprawę, że nie jest w stanie rywalizować z robotami z najwyższej półki. Mimo to robot będzie startował w kolejnych zawodach, przynajmniej do momentu aż powstanie nasz następny minisumo.
  15. Witam! Wielokrotnie czytywałem opisy robotów znajdujące się na forum,ich osiągnięcia na zawodach i zawsze chciałem zbudować podobna konstrukcje. Jednakże zadawałem sobie jedno pytanie-czy osoba całkowicie zielona w tematach związanych z elektronika i programowaniem ma jakakolwiek szanse na zbudowanie czegoś takiego oraz start w zawodach. Jak się okazało kilka miesięcy później- jest to wykonalne i wcale nie takie trudne jak się wydawało. Dlatego chciałem przedstawić Wam mojego pierwszego robota typu Line follower, o przewidywalnej nazwie „PRIMUS” (z łac. Pierwszy).Nie jest to może konstrukcja najwyższych lotów (korzystałem z dostępnych materiałów co widać chociażby po taśmie która potrzebna mi była w innym projekcie,nie chciałem jej przycinać),pełno w niej błędów ale jak na pierwszy raz- myślę ze nie można się bez tego obyć. Krótko o elektronice: Schemat elektroniczny wykonałem samodzielnie w programie Eagle, opierając się o wiedzą dostępna w internecie oraz na kilku książkach. Do sterowania robotem użyłem mikrokontrolera Atmega 8 z ustawionym taktowaniem wewnętrznym 8MHz do którego podpiąłem 5 czujników odbiciowych CNY70 oraz popularny mostek H (L293D) do sterowania silnikami. Czujniki zostały ułożone co 10mm, w linii prostej co jak się okazało dopiero na na zawodach nie było dobrym pomysłem Całość zasilana jest bateria LI-POL TURNIGY 0,8 mAh 7,4 V bo taką akurat miałem dostępną.Redukcja napięcia odbywa się poprzez stabilizator liniowy L7805. Strona mechaniczna: Moduł z czujnikami oraz płytka z resztą komponentów zostały wycięte ręcznie z jednego kawałka laminatu o grubości 1,5 mm. Sprawiło to że robocik jest bardzo sztywny ale niestety zyskuje niepotrzebnie na wadze. Do napędu użyłem znanych wszystkim silniczków z przekładniami Pololu HP 30:1 ,które są wg mnie strzałem w dziesiątkę jeżeli chodzi o tego typu konstrukcje.Do silniczków zamontowałem dedykowane opony Pololu o średnicy 32 mm, które również spełniają moje oczekiwania. Jako trzeci punkt podparcia użyłem ballcastera plastikowego,z którym musiałem troszkę pokombinować bo nijak nie chciał współpracować. Program: Był to mój największy problem,jako ze nie miałem nigdy styczności z żadnym językiem programowania.Znajomi podsunęli mi C więc zacząłem się uczyć Program jest w miarę prosty,nie zawiera skomplikowanych algorytmów,jest wzorowany na kodach źródłowych znalezionych w różnych publikacjach. W załączniku umieszczam kod programu, może komuś się takowy przyda.Jeżeli chodzi o schematy to proszę pisać-również udostępnię.Sam wiem jak ciężko jest samemu wystartować bez przykładowych projektów i kodów źródłowych. Na chwilę obecną startowałem w zawodach w Rzeszowie oraz w Krakowie na AGH ale nie udało mi się odnieść jakiś spektakularnych zwycięstw(ale zawsze w pierwszej 10).Trzeba poprawić kilka rzeczy,tak jak pisałem na wstępie ale nie zmienia to faktu,że jestem z tej konstrukcji w miarę zadowolony. I na koniec filmik: PS: Wiem,że jakoś zdjęć nie powala ale chwilowo nie mam nic innego jak komórka pod ręką... PRIMUS kod.txt
  16. Witam Chciałbym przedstawić swojego robota klasy nano sumo. Trochę danych technicznych: Nazwa: Saper Waga: 15g Zasilanie: Li-pol 3,7V 145mAh Wymiary: 25x25x25mm Procesor: Atmega8L Napęd: dwa mikro serwa - mocno przerobione Koła o średnicy 15mm. Dwa czujnik lini GP2S24 firmy SHARP Podwójny czujnik optyczny z przodu: dwie diody 1,8mm podczerwone i odbiornik TSOP32156 Elektronika na dwustronnym laminacie grubości 0,45mm Program napisany w C (WinAVR + AVRstudio) Robocik brał udział w pokazie walk robotów nanosumo we wrocławiu na Robotic Arena 2008, na którym wygrał walkę. Jeśli chcecie wiedzieć więcej to pytajcie. Ale zastrzegam sobie zachowanie kilku tajemnic
  17. Witam. Chciałbym Wam przedstawić mojego pierwszego robota klasy LineFollower o nazwie Turtle. Robot składa się z dwóch modułów. Po raz pierwszy zaprezentował się na zawodach ROBOmotion 2013 w Rzeszowie. Moduł czujników W module zastosowałem 5 transoptorów CNY70. Początkowo zostały one ułożone w linii prostej. Po pierwszych zawodach zmieniłem ich ułożenie poprzez przesunięcie 2 skrajnych sensorów w stronę modułu głównego. Czujniki są podłączone do kolejnych portów ADC mikrokontrolera. Wymiary modułu czujników to: 90 x 40mm. Moduł czujników połączony jest za pomocą listewek węglowych z modułem głównym. Moduł główny Płytka modułu głównego spełnia dwie podstawowe role: jest ona podwoziem dla robota oraz obwodem drukowanym. Wymiary: 90 x 70mm. Za przetwarzanie sygnału analogowego z czujników na postać cyfrową, realizacje algorytmu jazdy LineFollowera, a następnie sterowanie mostkami H i generowanie sygnału PWM odpowiedzialny jest mikrokontroler Atmega8 Jako sterownik silników zastosowany został moduł TB6612FNG. Jeden moduł odpowiedzialny jest za sterowanie dwóch silników. Do zasilania robota używam pakietu Li-Pol Turnigy nano-tech 300mAh. Bezpośrednio z akumlatora zasilane są silniki natomiast stabilizowane napięcie 5V w celu zasilenia pozostałej elektroniki zostało uzyskane dzięki przetwornicy S7V7F5. Napęd Napęd robota stanowią dwa silniki Pololu HP z przekładnią 30:1 na które zamontowane są koła wraz z oponami firmy Pololu o średnicy 32mm. Program Program został napisany w języku C. Zaimplementowany został algorytm PID z pewnymi modyfikacjami. Osiągnięcia 1 miejsce - Robocomp 2013 w Krakowie - LF Light Filmy Zamieszczam również dwa filmy które zostały nagrane u mnie w domu na prowizorycznej trasie. Za kilka dni postaram się dodać kilka nagrań z uczelni.
  18. Witajcie, jest to ulepszona pod każdym względem wersja mojej pierwszej machiny MacLiner. Początkowy zarys konstrukcji pojawił się w mojej głowie po zawodach Sumo Challenge 2011, w których brałem udział (zająłem wtedy przedostatnie miejsce). Ta sytuacja bardzo zmotywowała mnie do stworzenia czegoś szybszego, zwinniejszego. Tak powstał MacLiner 2.0. Chciałbym serdecznie podziękować użytkownikowi Sabre, dzięki któremu mogłem liczyć na szybkie przesyłki z Chin i nieocenioną pomoc w innych przelewach. Dziękuje także Firmie SALTAND Prototype, która udzieliła mi ogromnej zniżki na obwody drukowane. Model w Inventorze Dzięki zastosowaniu najnowszych technologii jakie daje Pakie AutoCAD, mogłem z bardzo wielką dokładnością określić położenie wszystkich elementów. Plik w formacie .dwg został przekonwerowany za pomocą programu DXF2SCR na format, który mogłem w dalszym etapie otworzyć w EAGLE i takim sposobem miałem gotowy zarys obu płytek. Takie wariacje pomogły mi także w doborze frezów pod Enkodery. Do tego ostatniego z pewnością wrócę pod koniec opisu. Szkic z projektu zawarty na rysunku 1. rys.1 Model LF w programie Inventor Moduł Listwy z Czujnikami Jak dobrze wiadomo jest to element, na który działa największa siła bezwładności. W tej wersji zastosowałem parzystą liczbę czujników. Jest ich aż 20. Część osób pewnie stwierdzi, że jest ich dość sporo i tutaj się z Wami zgodzę, trochę przerost formy nad treścią, aczkolwiek ważne, że się sprawdza. Poniżej (rysunek 2) zamieściłem fotografię, na której widać rozstawienie sensorów linii (KTIR0711S). Pewnie zapytacie z czego zrobione są podpory, otóż jest to zwyczajna taśma izolacyjna - działała wyśmienicie . Dodatkowo robot został zaopatrzony w czujnik zderzeniowy (GP2Y0D340K). Posiada on zasięg 40cm. Robot jadąc z predkością powyżej 2m/s potrzebuje z dużym wyprzedzeniem określić gdzie znajduje sie przeszkoda(cegła). rys.2 Moduł listwy z czujnikami Zasilanie W przpadku użycia robota z turbiną oczywiste staje się, że trzeba zastosować źródło napięcia o dość dużej wydajności prądowej. Wybór padł na pakiet Li-Pol(rysunek 3) o napięciu znamionowym 7.4v, pojemności 300mAh i wydajności prądowej równej 13.5A. Masa pakietu wynosi 23 gramy. Musiałem go troszkę zmodyfikować, a konkretnie złącze, ponieważ w pierwotnej postaci łatwo było o pomyłkę. rys.3 Pakiet Li-Pol Dualsky (zdjęcie pochodzi ze strony Botland.com.pl) Bezpośrednio z pakietu zasilane są silniki oraz napęd tunelowy. Większość elementów (mikrokontroler, czujniki, logika stopnia mocy oraz moduł bluetooth) wymagały napięcia 5V. Postanowiłem zastosować do tego celu przetwornicę ST1S10PHR. Bardzo zdziwił mnie fakt, że dość spora liczba osób skarżyła się na ten element. Przykładem może być "strzelająca turbina", o której sporo czytałem na forum. Osobiście wszystkie ścieżki poprowadziłem zgodnie z notą katalogową i do tej pory nie mam z nią najmniejszych problemów. Wyjątkiem jest moduł Bluetooth, który na płytce posiada stabilizator liniowy Low Dropout na 3.3v(LM1117), lecz zasilam go z układu BEC wbudowanego w sterownik silnika 3F(tego od napędu tunelowego). Poniżej przedstawiam schemat blokowy całego zasilania (rysunek 4). rys.4 Schemat blokowy zasilania Chassis - czyli bazowy element Główna płyta(rys.5):parametry: laminat FR-4, grubość 2mm, na której umieszczone są elementy take jak : Mikrokontroler ATmega 128, moduł TB6612, komparatory LM339D, przetwornica ST1S10PHR, odbiornik TSOP2236, złącze programatora. Zdecydowałem sie na użycie tak potężnego 8 bitowego procesora z paru względów: ogromna ilość wejść/wyjść (53), dobre ułożenie pinów, interface UART połączony z liniami programatora, 8 przerwań zewnętrznych. Nie zastosowałem 2. procesora do dekodowania kodu RC5 ponieważ, wydawało mi się to zbędne. Płytka powinna mieć grubość 1.5mm, tak jak było to w planach (ale wiadomo firma także może się pomylić ). rys.5 Chassis Stopień mocy - TB6622FNG Jako sterownik silnikami zastosowałem gotowy, dwukanałowy moduł wyprodukowany przez firmę Pololu(rysunek 6). Doszedłem do wniosku, że nie warto stosować wiecej niż 1 mostek (przynajmniej na razie ). Wydajnośc prądowa tego układu to 1A na kanał. Zdażały się sytuacje, gdzie robot w fazie testów zwyczajnie uderzał w elementy przed nim (np. ściana), lecz mostek za każdym razem wytrzymywał. ATmega komunikuje się z mostkiem za pomocą 7 linii(4-odpowiedzialne za kierunek, 2- sygnały PWM, STBY- wyłączenie układu). rys.6 Stopień mocy Bluetooth- czyli zapanuj nad bestią Na pokładzie robota znajduje się moduł bluetooth (BTM-222). Jak juz wczesniej wspomniałem, zasilany jest on z układu BEC. Jego zadaniem jest zdalne startowanie i zatrzymanie robota. Robot dzięki temu może zostać "sterowny" z poziomu np. telefonu, komputera. Układ zamontowany jest na baterii za pomocą rzepu przemysłowego. Na rysunku 7 zamieszczona jest mozaika ścieżek. rys.7 Moduł Bluetooth Aplikacja na telefon została napisana przeze mnie w środowisku NetBeans w języku Java. Program przystosowany zarówno na telelefon zaopatrzony w ekran dotykoy jak i pospolitą klawiaturę. Rysunek 8 zawiera screen z aplikacji. rys.7 MacLiner 2.0 APP Turbina- Up to 2m/s Napęd tunelowy jest teraz nieodzownym elementem każdego szybkiego robota. To dzięki niemu robot jest w stanie utrzymać się na torze przy prędkościach 2m/s. Poszedłem utartą scieżką i postanowiłem zakupić EDF27. Silnik, który znajduje się w turbinie potrafi rozpędzić wirnik do zawrotnych prędkości (prędkość łopaty zwiększa się o 11000 obrotów na każdy wolt). Niestety zapłaciłem najwyższą cenę przed zawodami Sumo Challenge 2012. Podczas testów do turbiny dostało sie ciało obce, w wyniku czego wirnik wpadł w oscylacje scierając się o tunel turbiny. Oczywiście na kolejne zawody zaopatrzyłem sie w kolejną. Silnikiem steruje regulator PLUSH 6A. Poniżej (rysunek 8) zdjęcie popularnego napędu tunelowego. rys.8 Turbina EDF27 Napęd i Koła Robota *Napęd tworzą dwa silniki Pololu HP 10:1(wraz z tylną osią) *Parametry techniczne: *Obroty na biegu jałowym przy zasilaniu 6V: 3000 obr./min; *Prąd biegu jałowego (6V): 120mA; *Prąd szczytowy: 1600mA; *Moment obrotowy: 0,3 kg*cm (29 mNm); *Wymiary: 24 x 10 x 12 mm; *Masa: 10g Jako kół postanowiłem użyć znanych z mojej wcześniejszej konstrukcji - Pololu 32mm. Enkodery - Szósty zmysł W robocie zostało przewidziane miejsce na enkodery optyczne wymontowane z myszki. Będą one w przyszłości służyły do mapowania trasy oraz jednej ciekawej rzeczy(Wizja podczas snu ). Jeśli projekt z dodaniem enkoderów się uda, z pewnością się nim podziele. Program Program został napisany w języku C w środowisku AVR-Studio. Zaimplementowany algorytm proporcjonalno-rózniczkujący pozwolił na płynną jazdę z dużą prędkością. Częstotliwość wykonywania pętli głównej 90-100Hz. W przyszłości kod zostanie przepisany na jezyk niskiego poziomu jakim jest Asembler. Osiągnięcia III miejsce Line Follower z Przeszkodami Sumo Challenge 2012 (bez Turbiny) VII miejsce Line Follower Sumo Challenge 2012 (bez Turbiny) VII miejsce Line Follower Robotic Arena 2012 • I miejsce Line Follower Robo-NET 2013 Tips- porady Podczas zawodów przez przypadek można dojść do paru fajnych odkryć. Szczotki- powszechnie stosowane jako "magnes" na zanieczyszczenia kół. Mi osobiście wpadł także całkiem ciekawy pomysł. Stało się podczas Robotic Arena 2012. Moje włosy zawsze wymagały ułożenia przed jakimkolwiek wyjściem. Dlatego zawsze biorę ze sobą pojemnik z gumą do stylizacji włosów . W czasie poszukiwania lustra dostałem olśnienia- Dlaczego nie użyćby tego specyfiku do czyszczenia bieżnika opon przed startem...? Pomysł okazał sie strzałem w dziesiątkę! Filmy:(bez Turbiny) Galeria A tutaj zbiór fotografi: Płyta_Główna_Schemat.pdf Płytka_Czujniki_SCHEMATIC.pdf Program_Java.rar Płyta_Główna_PCB.rar Płyta_Czujniki_PCB.rar Bluetooth_Schemat_PCB.rar
  19. Pragnę przedstawić mojego najnowszego robota klasy linefollower. Projektowany był głównie przez wakacje 2012. Po wakacjach płytki zostały wycięte, wytrawione i polutowane. Chciałem zdążyć na zawody Robotic Arena 2012 – pierwszą rocznicę moich startów w zawodach. Celem było jak najbardziej zbliżyć się do czołówki(dlatego robot ten jest wzorowany na innych konstrukcjach z odrobiną własnej fantazji) i zobaczyć jaki jest progres po roku. Elektronika Płytki, w celu obniżenia kosztów, zostały wykonane samodzielnie za pomocą termotransferu, a następnie wytrawione. Lutowanie było sporym wyzwaniem z racji sporej ilości przelotek. Czujniki linii to standardowo 19 czujników KTIR0711S podłączonych przez komparatory LM339 do uc Atmega128A . Silniki sterowane są przez moduły sterowników TB6612FNG (po jednym na silnik – zmostkowane kanały). Turbina sterowana jest przez sterownik H-KING 10A. Na płytce znajduje się TSOP31236, który umożliwia odbiór komend z pilota. Mechanika Konstrukcję stanowią płytki PCB. Robot jest napędzany przez 2 silniki Pololu HP 10:1 wraz z kołami wytoczonymi z poliamidu. Standardowo użyta została też turbina EDF27. Program napisany jest w C. Do sterowania używam PD. Dotychczasowe wyniki: 5. miejsce na zawodach Robocomp 2012 w Krakowie 6. miejsce na zawodach RoboticArena 2012 we Wrocławiu Niestety nie posiadam żadnych przejazdów z Wrocławia, ale mam nagranych kilka przejazdów z Krakowa(robot jeszcze nie był dobrze wysterowany i bujał się na prostej): Podsumowanie Ogólnie jestem zadowolony, główne cele zostały zrealizowane, ale czuję mały niedosyt . Mimo, że robot jest naprawdę szybki, bardzo dużo nauczyłem się przy jego budowie i zbliżyłem się mocno do czołówki, może nawet lekko chłopaków postraszyłem na RoboticArenie(albo raczej zaskoczyłem), to jednak pozostaje drobne rozczarowanie, bo dwa razy finał przeszedł mi koło nosa . Ale apetyt rośnie w miarę jedzenia, pół roku temu takie wyniki raczej brałbym w ciemno, więc dzisiaj mogę powiedzieć, że jestem w miarę zadowolony(jest motywacja )
  20. Przedstawiam mojego najnowszego LineFollowera, którym jest Silver. Prace nad robotem zostały rozpoczęte po RoboticArenie, jednak ostateczne uruchomienie robota było możliwe dopiero na kilka dni przed jego pierwszymi zawodami czyli T-BOT 2012. Jest to dość standardowa konstrukcja jak na ostatnie linefollowery, głównym założeniem jaki sobie postawiłem projektując konstrukcję była jak najmniejsza masa. Elektronika sterująca robotem jest dość prosta: 20 czujników KTIR + komparatory, do tego ATmega128, mostek TB6612, sterownik dla turbiny i to właściwie wszystko. Całość zasilana jest z pakietu 2S 350mAh. Konstrukcja mechaniczna składa się z jednej głównej płytki drukowanej wykonanej w firmie SatlandPrototype, do tego dwa silniki Pololu 10:1HP oraz koła wytoczone z aluminium przez hungrydevil'a. Mam też inny komplet, na którym testowałem odlewanie ogumienia z innych materiałów (głównie silikony), jednak ostatecznie zostałem na oponach mini-z. Program napisany jest w C, odczyty czujników cyfrowe, zaimplementowany PD, jednak praktycznie na wszystkich zawodach jeździł wyłącznie na samym członie P. Osiągnięcia: - finał na T-BOT 2012 - finał na RobotChallenge 2012 - FTL i FTL z przeszkodami - 3 miejsce na Robomaticonie 2012 Podsumowanie - ogólnie z konstrukcji jestem niezadowolony. Sprawiła mi sporo problemów i ostatecznie nie osiągnęła tyle ile mogła. Teraz skupiam się na całkowicie innym sofcie do robota oraz dobrym "debugowaniu" co ogromnie ułatwia i przyspiesza pracę. Płytek, schematów oraz kodu nie udostępniam. Nie wiem co może Was jeszcze zainteresować, więc czekam na ewentualne pytania.
  21. Witam! Chciałbym wam przedstawić mojego drugiego robota klasy linefollower. Teraz jest on na trochę większym poziomie niż Wolverine. Ogólnie koncepcja nowego robota powstała po zawodach T-Bot, na których zobaczyłem po raz pierwszy robota Botland Teamu. Decyzja padła szybko i była jednoznaczna. Zamawiam turbinę. I tak z kolegą, Harnasiem na następny dzień po powrocie do domów z zawodów zamówiliśmy potrzebne nam rzeczy z HK. I tutaj był największy problem. Na turbinę czekałem praktycznie 3 miesiące... No ale... teraz już robot ma wszystko co było przewidziane. Tutaj również dodam że to moja ostatnia konstrukcja z wykorzystaniem AVRów. Na filmie nie widać aby Turbinowiec był szybki lecz PWM wynosi już 230/255, a winą takiej jazdy jest przysysanie trasy do wirnika turbiny przez co hamuje i to dość znacznie. Postaram się nagrać coś na innym podłożu lub zawodach. Elektronika Robot posiada 2 mikrokontrolery, zaraz mi ktoś powie z oburzeniem " po co?! " Już tłumaczę. ATMega16 odpowiedzialna jest tylko i wyłącznie za odczyt z komparatorów, za obliczenia dotyczące regulatora PD oraz wysterowanie silników. Natomiast ATMega8 obsługuje TSOP'a, obsługuje sterownik do napędu tunelowego, załącza diody LED znajdujące się pod robotem oraz wysyła sygnały do "głównego" procka, no i oczywiście obsługa przycisków jest na nim ATMega16 jest taktowana kwarcem 16 MHz, natomiast ATMega8 napędzana jest z wewnętrznego oscylatora 1 MHz. Nie ma potrzeby „rozpędzania go” do większych prędkości. Mostki H w robocie to nic innego jak już sprawdzone nie jeden raz TB6612FNG z którymi nigdy nie miałem problemów. Do stabilizacji napięcia logiki jest wykorzystany L7805AC2T, natomiast dla silników przetwornica LM2576S, również z nią nigdy nie miałem problemów, tylko raz poszła z dymem, ale spełniała moje oczekiwania Program Cały kod napisany w C. Powstał bardzo szybko i dobrze spisywał się dla prędkości rzędu 1,5m/s, gdy nie było turbiny. Teraz z turbiną muszę zmieniać współczynniki, ale kiedyś dojdzie do perfekcji tak jak Wolverine. Czujniki Transoptory to już wszystkim znane i myślę że lubiane KTIRy0711s, jest ich 16, ułożone w linie prostą. Myślałem nad dołożeniem jeszcze trzech czujników na około 3cm przed robota aby robot mógł szybciej hamować, ale zrezygnowałem z tego. Przy poprzedniej konstrukcji mówiłem że nigdy nie dam mniej niż 16 czujników, a będę dawał ich więcej. Niestety ale pozostałem przy 16 czujnikach. Myślę że można z nich wyciągnąć przyzwoitą rozdzielczość i nie ma potrzeby stosowania więcej. Sygnał analogowy wychodzący z czujników jest podawany na komparatory LM339 a następnie trafia już do ATMegi16. Robot ma również wyprowadzone pady dla sharpa 340k, ale nie jest zamontowany, gdyż nie było takiej potrzeby. Wątpię w jego przydatność na tym poziomie. Płytka PCB Robot składa się z jednej płytki pcb, z czarną soldermaską. Płytka wykonana w firmie Satland Prototype, która dała mi bardzo duży rabat. Laminat ma grubość 1,5mm. Zastanawiałem się długo nad zastosowaniem laminatu 1mm ale bałem się że pęknie pod wpływem działania turbiny. Silniki Tutaj nic specjalnego, Pololu 10:1 w wersji HP. Myślę że do takiej konstrukcji nic więcej nie potrzeba. Pod silnikami znajdują się podkładki z laminatu, niestety wycinane krzywo w domu i pomalowane czarnym sprayem, kompletnie zapomniałem o nich w czasie projektowania PCB. Napęd tunelowy Tutaj też bez żadnych nowości. Zgapiony EDF 27 wraz z rekomendowanym regulatorem do niego 10A. Przed zbyt mocnym wygięciem płytki chronią diody 3mm, laminat ma 1,5mm grubości więc nie powinien pęknąć, w sumie to musi wystarczyć. Programowanie Tutaj do obu procków zastosowałem 1 złącze 10 pinowe IDC w standardzie Kanda. Za pomocą zworki ustalam który procesor ma być programowany. Zworka przerywa sygnał SCK, co w zupełności wystarcza do wygodnego działania. Wyprowadzony jest także USART, ale tylko z ATMega16. Myślałem nad „takim czymś” do zmieniania współczynników za pomocą drugiego uC. Na razie składam następnego robota i za bardzo nie mam czasu się tym zająć. Tutaj starszy filmik, pierwszy jedzie Wolverine, później Turbinowiec bez turbiny https://www.youtube.com/watch?v=fq4pDa_FbLs&feature=my_liked_videos&list=LLLl83Q1iIMDCwv97ZFhlsrg Tutaj najnowszy filmik: __________ Komentarz dodany przez: Treker Usunąłem zbędne sztuczne łamanie linii.
  22. Witam wszystkich, chciałbym wam zaprezentować mojego pierwszego robota kategorii minisumo, którego zrobiłem 2 lata temu. Wystartował on w zawodach na Uniwersytecie Technologiczno - Przyrodniczym w Bydgoszczy. Wygrał tylko 2 rundy w całych zawodach. Chciaż dla mnie sam udział był już sukcesem. Elektronika Płytkę sterującą dostałem od uniwersytetu w Bydgoszczy. - 3x czujniki analogowe Sharp - zasięg 80cm, - 4x czujniki odbiciowe QRD1114, - akumulator 11,1V o pojemności 1500mAh Mechanika - 2x serwomechanizmy Towerdpro MG996R, które przerobiłem na silniki, - koła o średnicy 82 mm i szerokości 10 mm, - guma na kołach to owijka od rakiet tenisowych. Ogółem cały robot wykonany jest z aluminium. Na zawodach robot walczył pod nazwą "Obrowianek", była to nazwa tymczasowa, potem uległa zmianie. Minusy konstrukcji: zbyt wysoki, zbyt wolny, zbyt słaba przyczepność, wadliwy program. Plusy: pierwsza konstrukcja - zakończona pomyślnie, obudowa użyta jako radiator, przez co dobrze oddawał ciepło, chyba solidnie zrobiony, gdyż na zawodach nie miał żadnych usterek Filmik z zawodów:
  23. Lizard 2 jest następcą swojej pierwszej wersji - Lizarda. W robocie głównym założeniem była jak najmniejsza masa. Elektronika Robot oparty jest o procesor STM32F103VCT6 o taktowaniu 72MHz. Czujnikami linii jest 20 transoptorów odbiciowych KTIR0711s. Jako komparatory zostały zastosowane MCP6564 . Mostki zastosowane w robocie to 2x TB6612. Do zatrzymywania robota służy odbiornik TSOP wraz z procesorem Atmega8. Robot ma możliwość rozbudowy o czujniki przeszkody. Jak widać na zdjęciach robot wyposażony jest w enkodery AS5145B o rozdzielczości 12bitów. Robot zasilany jest z pakietu 370mAh 2s. Jest to w zupełności wystarczająca rozdzielczość do zamocowania magnesu na kole. Płytka została wykonana w firmie Satland Prototype. Program W robocie zastosowany jest algorytm P. Wylicza on prędkości które są podawane do kolejnych regulatorów p które kontrolują prędkość silników. Silniki pracują w zamkniętej pętli sprzężenia zwrotnego wykonywanej co 1ms. Mechanika Robot jest wyposażony w 2 silniki pololu 10:1 HP wraz z kołami pololu. Robot gotowy do jazdy waży 125g. Zdjęcia Osiągnięcia -IV miejsce na zawodach Trójmiejski Turniej Robotów 2012 -finał Robomaticon 2012
  24. Witam, chciałbym zaprezentować Wam moją pierwszą konstrukcję: line followera o nazwie Autonom-1. Cel Celem projektu było zapoznanie się tematami natury elektroniczno-mechanicznymi podczas budowy robota. W głównej mierze miałobyć to poznanie mikrokontrolera, jego peryferiów oraz jego oprogramowanie. Jednak doświadczenia przy tworzeniu Autonoma-1 przerosły moje oczekiwania In plus naturalnie. Wnętrzności Robotem steruje popularny mikrokontroler atmega8 zasilany dwucelowym akulatorem li-pol redoxa 1300mAh poprzez stabilizator LM7805 (straszna grzałka ). Silniki HL149 , zasilane są bezpośrednio z akumulatora i sterowane poprzez mostek H oparty o kostkę L293D. Koła, tanie noname'y z modelarskiego, mają średnicę 62mm i jak na razie sprawdzają się przyzwoicie. Czujniki linii to 8 sztuk TCRT5000 w tandemie z komparatorami LM339N. Wsad napisałem w C. Logika sterowania silnikami to sam człon P. Na chwilę obecną nie byłem w stanie zmusić reszty do sensownego działania. Uruchomienie Pierwsze uruchomienie nie nastręczyło wielkich problemów. Przygotowałem prostą trasę i poszło: Przygotowałem więc bardziej skomplikowaną trasę i zaczęły się schody. Musiałem więc "nauczyć" robota jak radzić sobie z zakrętami 90st. albo szukać linii jak wypadnie z toru. Jako, że nowa trasa jest jest bardzo ciasna (w stosunku do rozstawu kół robota - ok. 17cm) uroiłem sobie, że pomoże skrócenie robota. To był błąd (nie dość, że lepiej nie jedzie, to wygląda gorzej ). Oto moja testowa trasa: Wnioski - Konstrukcja z pewnością jest w stanie jeździć szybciej. Muszę popracować nad programem, - Skrócenie robota nie było dobrym pomysłem, - Silniki są bardzo ciężkie, co utrudnia walkę z bezwładnością robota, - Jak na początek, przygotowałem zbyt ciasną trasę przygody z LFami. Autonom-1 to prosta konstrukcja. Nauczyła mnie wiele z tego co planowałem się dowiedzieć jak i tego czego się nie spodziewałem (pierwszy dwustronny termotransfer czy pierwsze SMD). Przyjemnie spędzając czas nauczyłem się wiele ciekawych i przydatnych rzeczy. peace! __________ Komentarz dodany przez: Treker Temat przeniosłem z konstrukcji początkujących. Poprawiłem sztuczne łamanie wierszy.
  25. Witam, pochwalę się moim pierwszym poważnym robotem autonomicznym, dzięki któremu udało mi się tytuł magistra uzyskać. Wcześniej robiłem jakieś proste konstrukcję (wyświetlacz widmowy czy prosty robot mobilny z lega technic), ale ta jest pierwsza z tych "poważniejszych";) Tematem pracy było zbudowanie w pełni autonomicznego robota mobilnego, oraz zaimplementowanie mu algorytmu umożliwiającego mu dotarcie do celu unikając przeszkód statycznych i dynamicznych. Środowisko pracy z założenia jest środowiskiem lokalnym (nie ma wbudowanej mapy otoczenia). Konstrukcja: Podwozie robota wykonane jest ze spienionego PCV – jest lżejsza i łatwiejsza w obróbce niż pleksi. Górny element obudowy przymocowany jest za pomocą czterech śrub. Elementy mocujące czujników przymocowane są klejem na gorąco, mocowania silników zostały przykręcone. Obudowa ma kształt okręgu o średnicy 175 mm. Dolna część podwozie ma specjalne wcięcia na mocowania silniki. W najszerszym miejscu szerokość konstrukcji (wraz z kołami) wynosi 250 mm, natomiast wysokość 94 mm. Wybrałem silniki - HL 149.6.21 ASM firmy Micro Motors. Mają zintegrowaną przekładnię 21:1 pozwalające na osiągnięcie 160 rpm i momentu 0,075 Nm – przy napięciu znamionowym 6 VDC. Kupiłem ja na Allegro za jakieś 15 zł za sztukę Elektronika Mózgiem robota jest ATmega 128. Ma dużą ilość wbudowanych urządzeń peryferyjnych, sporo wyprowadzeń I/O i dużo pamięci flash. Występuje niestety (albo stety) wyłącznie w obudowie SMD, jednak w sprzedaży istnieją gotowe moduły umożliwiające montaż THT, co zdecydowanie upraszcza projektowanie płytki PCB w warunkach domowych. Głównym zmysłem robota są 3 czujniki ultradźwiękowe HC-SR04. Według producenta zakres wykrywanych odległości to 2 – 500 cm z rozdzielczością 3 mm. Są to jednak parametry w wyidealizowanych warunkach, w rzeczywistości realnie i w miarę stabilnie można mierzyć w zakresie do 300 cm. Do sterowania kierunkiem oraz prędkością obrotową silników został użyty układ - L298. Scala on w jednej małej obudowie, Multiwatt 15, dwa mostki H. Zasilanie: zdecydowałem się użyć akumulatora litowo – polimerowego o pojemności – 2200 mAh i napięciu 7,4 V. Pozwala on na sprawną pracę robota przez ok. 60 min. Można go dostać w sklepie modelarskim już za ok 80 zł. Soft Tu nie ma co się rozpisywać. Całość kodu napisałem w "c". Myślę, że nie ma co go pokazywać bo jest "brzydki";P Napisany po prostu żeby działał, ale jest tam niezły bałagan, za parę miesięcy prawdopodobnie sam się w nim nie połapię Fotki
×
×
  • Utwórz nowe...