Skocz do zawartości

Rysujące ramię.


Kaytec

Pomocna odpowiedź

Witam, oglądając najlepsza stacje tv (youtube), znalazłem coś takiego:

Efekt powalający, jak na stopień skomplikowania konstrukcji.

Teraz pytanie: Czy da się zrobić na krokowcach/zwykłych i procku AVR? Czy widzieliście podobne patenty? Osobiście zrobiłbym to ramie w jakimś pluszowym potworze z USB w ogonie i naprawdę niezła zabawka by była.

__________

Komentarz dodany przez: Sabre

Poprawiłem link do youtube'a

[ Dodano: 05 Lip 10 06:04 ]

Mniej dokładne, ale za to z pełnym programem i opisem wszystkiego. W dodatku do zrobienia w 5min.

Źródło

Link do komentarza
Share on other sites

Pomysł fajny, jedyny problem stanowi oprogramowanie, które przetworzy obraz na wektory dzięki czemu będzie możliwe "rysowanie". mog123 rozumie, że chodzi Ci o wykonywanie planowanego obrazu z samych kropek?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Niestety przejście na wektor jest największym problemem, a wiąże się to z obróbką zdjęcia, tak jak to zostało przedstawione na 1 filmiku, wersja kropkowa jest o tyle prostsza że wystarczy skonwertować zdjęcie do czarno-białego, uwzględniając rozdzielczość dostępną na urządzeniu i pixel po pixelu wykonywać.

Link do komentarza
Share on other sites

Przy drugim filmiku podałem również link. Tam jest cała aplikacja do sterowania rysującym ramieniem, obsługuje pliki .PLT (corel draw np.). Aplikacja jest FREEWARE'owa w dodatku stworzył ją Polak (nick. ezio).

Tak to wygląda w praktyce:

pełna dokumentacja tutaj:

http://ezio.ovh.org/index.php?option=com_content&view=article&id=14:diy-drawing-robot-arm&catid=3:arduino-projects&Itemid=4

A cały program wraz z wsadem na arduino (nie wiem czy tam są wsady czy co)

tutaj: http://www.ezio.ovh.org/pliki/arm_plotter_v2.rar

Można odpalić dwa filmy na raz - widać jak to działa w praktyce:

Szczegóły na forum arduino http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1263856487

Proszę nie pisać w tym temacie mało konstruktywnych postów jak powyżej (bez obrazy)

Prosiłbym o znawcę arduino o zapoznanie się z kodem i plikami, w celu jak najlepszego przejścia na zwykłego AVR.

#include <Servo.h>

#define led0 13
#define Servo1Pin 17
#define Servo2Pin 18
#define Servo3Pin 19

Servo servo1;
Servo servo2;
Servo servo3;

byte s1=90;
byte s2=90;
byte s3=90;

byte DELAY=10;
boolean inProgress=false;

//#include <LiquidCrystal.h>
//LiquidCrystal lcd(12, 8, 7, 6, 5, 4, 2);

void setup()
{
  // lcd.begin(16,2);
 Serial.begin(9600);
 pinMode(led0,OUTPUT);
 attachServos();
}

void loop()
{

 digitalWrite(led0,inProgress);

 if(Serial.available())
 {

   if (Serial.read()==0xAA)
   {
     do{
     }
     while(Serial.available()<=4);
     //serwa
     s1=Serial.read();
     s2=Serial.read();
     s3=Serial.read();
     DELAY=Serial.read();
     inProgress=true;
   }
 }


   if (servo1.read()>s1) servo1.write(servo1.read()-1);
   if (servo1.read()<s1) servo1.write(servo1.read()+1);

   if (servo2.read()>s2) servo2.write(servo2.read()-1);
   if (servo2.read()<s2) servo2.write(servo2.read()+1);

   if (servo3.read()>s3) servo3.write(servo3.read()-1);
   if (servo3.read()<s3) servo3.write(servo3.read()+1);


   if (inProgress==true && servo1.read()==s1 && servo2.read()==s2 && servo3.read()==s3)
   {
     Serial.print(1,BYTE);
     inProgress=false;
   }

   delay(DELAY);

   /*
       lcd.clear();
       lcd.print(servo1.read(),DEC);
       lcd.print("-");
       lcd.print(s1,DEC);
       lcd.print(" ");
       lcd.print(servo2.read(),DEC);
        lcd.print("-");
       lcd.print(s2,DEC);
       lcd.setCursor(0,1);
       lcd.print(servo3.read(),DEC);
        lcd.print("-");
       lcd.print(s3,DEC);
       lcd.print(" ");
       lcd.print(DELAY,DEC);
       lcd.print(" ");
*/

}





//////////////////////////////////////////////////////////////
void attachServos()
{

 servo1.attach(Servo1Pin);
 servo2.attach(Servo2Pin);
 servo3.attach(Servo3Pin);
}





Moje pytanie, jak przystosować to do pracy z Atmegą lub innym łatwo dostępnym prockiem.

Pozdrawiam.

Link do komentarza
Share on other sites

Można przecież wykorzystać dowolny program do przekonwertowania bitmapy na wektorki, co prawda nie zrobimy tego w samym urządzeniu, ale znając sposób kodowania obrazu można by stosunkowo prosto 'wynaleźć' 'ścieżkę', po której miałoby poruszać się pisadło. Coś jak generowanie plików step albo g-code. Potem pozostaje sprawa przeliczenia współrzędnych w układzie współrzędnych kartezjańskim (bo tak raczej jest zapisywana wektorowa grafika - punkt początkowy linii, końcowy, grubość i kolor) na układ ?polarny? (z angielskiego polar coordinates, nie wiem czy po polsku też to tak się nazywa).

edit:

Prosiłbym o znawcę arduino o zapoznanie się z kodem i plikami, w celu jak najlepszego przejścia na zwykłego AVR.

Arduino jest na zwykłe AVR, możesz to skompilować w arduino IDE i wrzucić do dowolnej 8emki tudzież x8emki (oprócz 48).

Link do komentarza
Share on other sites

Jako ciekawostkę dodam iż robot na pierwszym filmiku to Lego NXT który używa procesorów Atmela z serii AVR. Silniki to zwyczajne silniki DC z enkoderami i przekładnią. Byłem kiedyś na wykładzie dotyczącym tych robotów i widziałem jakie rzeczy można roić za pomocą tych klocków.

Link do komentarza
Share on other sites

Lego NXT który używa procesorów Atmela z serii AVR.

Ale jednak główna jednostka obliczeniowa to ARM, co prawda ze stajni atmela. Ciekawą sprawą jest to, ze schematy kostki nxt są udostępnione przez lego, dla wszystkich do wglądu. Więcej informacji: http://mindstormsnxt.blogspot.com/2006/08/whats-inside-nxt-brick.html

Link do komentarza
Share on other sites

Pomysł fajny, jedyny problem stanowi oprogramowanie, które przetworzy obraz na wektory dzięki czemu będzie możliwe "rysowanie". mog123 rozumie, że chodzi Ci o wykonywanie planowanego obrazu z samych kropek?

Taki program można napisać z mniej niż 6 godzin. Osobiście pisałem program który znajdował barwę i konwertował ją na obraz czarno biały z możliwością ustawienia czułości algorytmu wyszukującego, zajęło to mi niej niż 2 godziny.

Link do komentarza
Share on other sites

Witam.

Jako autor jednego z wyżej przedstawionych ramion moze odpowiem na kilka pytan które kieruje do mnie kolega kaytec1.

1. Czy da się to zrobić używając tylko AVR - jakiego?

- arduino to nic innego jak Atmel ATmega168 (nowsza wersja opiera sie o ATmega328 natomiast starsza ATmega8, no jest jeszcze wersja Mega z ATmega1280).

Sama płytka nie jest niczym niezwykłym. Zawiera procka i to co potrzebne do niego (zasilanie, kwarc itd). Atmel ma wszystkie nóżki wyprowadzane w celu łatwości użytkowania. Dodatkowo jest dodany układ FTDI zapewniający łatwą komunikację z PC emulując rs232 przez USB.

Schemat najprostszego arduino (pracującego na wewnętrznym oscylatorze) to:

3081589957_cb1dbf65b1.jpg

To co czyni ze zwykłego atmela arduino to bootloader, który w raz z środowiskiem programistycznym znakomicie ułatwia pracę i zabawę z atmelem.

Więc nic nie stoi na przeszkodzie aby samemu skonstruować arduino.

Na poniższym zdjęciu dioda sterowana kodem RC5 z pilota oczywiście bazująca na arduino.

3548303468_e97ce81870.jpg

Wiec jeżeli chcemy arduino to bierzemy atmela186 ( lub innego wymienionego powyżej) używając programatora wgrywamy bootloader ustawiamy bit lock i fusy i juz.

Dalsze programowanie procesora naszymi programami wykonuje się przez rs232.

2. Jakiego dokładnie użyłeś arduino, w Polsce nadal nie są popularne wśród elektroników. Czy można użyć jakiegoś klona na łatwo dostępnym procku?

Właśnie dziwi mnie ze w Polsce ta platforma jest mało dostępna a jak juz jest to strasznie droga. Oczywiscie mozna zrobić ją samemu. Sam niedawno robilem. Podłączyłem do tego wyświetlacz i TMP36 (czujnik temperatury) i ethernetshield ( tak nazywa sie plytka do arduino która daje mozliwosc podlaczenia arduino do sieci lan/Internetem http://tronixstuff.files.wordpress.com/2010/04/ethernetshield.jpg). potem dodalem do tego nadajnik na 433Mhz i to co mi z tego wyszlo wyswietlalo temperaturę, zapisywalo ją co jakis czas w bazie danych na serwerze (mozna zobaczyc tutaj http://ezio.ovh.org/termo/ ) a dodatkowo dzieki nadajnikowi na 433mhz moglem sterowac o takim http://www.diax.pl/pic/7362.jpg zestawem wlacznikow przez Internet z pc lub z mojego tel komorkowego.

3.Czy mógłbyś mi napisać co mam zrobić aby uruchomić to na AVR?

na to juz chyba odpowiedziałem wyżej.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Właśnie dziwi mnie ze w Polsce ta platforma jest mało dostępna a jak juz jest to strasznie droga. Oczywiscie mozna zrobić ją samemu.

A mnie to nie dziwi - w Polsce 'czyste' AVRy zadomowiły się już na dobre, wytrawić płytkę też nie jest problemem, poza tym dużo ludzi chce używać np timerów do innych zadań niż tylko PWM i portC chcą wykorzystać jako GPIO, choćby ze względu na ilość pinów (dlatego porzuciłem arduino IDE). Albo jak chcesz przesiąść się np. na m16 - klops. Dużym plusem arduino jest jednak łatwość pisania, w tym C (a może to jest nawet cpp) kod jest bardziej przejrzysty niż w Bascomie IMO, a nie trzeba bawić się w rejestry - gdyby tylko dawało wiecej możliwości, wiecej procków, wtedy może byłoby bardziej lubiane.

Link do komentarza
Share on other sites

ezio, a na jakiej podstawie wyznaczasz położenie tego ramienia, żeby pokrywało się ze współrzędnymi wyznaczonymi do rysowania. Rozumie, że tym zasadniczo się program zajmuje, jednak mnie interesuje czym się posłużyłeś żeby to wyznaczyć.

Ogólnie rzecz ujmując, program na PC przekształca i obrazuje dane z pliku HPGL (*.plr), które są przekazywane do uC, który steruje serwami ... chyba dobrze pojąłem zasadę działania urządzenia. Postanowiłem sobie też coś takiego zmontować, jednak troszkę inaczej. Uproszczenie programu sterującego z PC do przesyłu pliku plr, na uC gdzie zostaną dokonane kompletne obliczenia które pozwolą wyznaczyć położenie ramienia w przestrzeni X Y. W sumie jest to kinematyka złożona, co dość komplikuje opracowanie wzoru który by dane X Y przeliczał na wychylenia serwa. Na razie gromadzę sobie dane dla kilku punktów X Y, na papierze wykreślę położenie ramion, z punktu zgięcia położenie zostanie wrzucone do programu Statistca, który wygeneruje mi wzór matematyczny do sterowania. Ciekaw jestem jak to wyjdzie 😃, bo innego pomysłu na wyznaczanie tego nie mam.

Link do komentarza
Share on other sites

Ja jak na razie cały czas walczę z bootloaderem arduino na atmege8, niestety na kwarcu 8Mhz chyba nic nie zrobię. Ma ktoś szczegółowy opis ustawienia fusów dla atmegi? Może jest jakiś sposób zgrania programu normalnie a nie przez rs232.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.