Pages: [1] 2 3   Go Down
Author Topic: Plotter - 3 servos  (Read 7651 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi
This is my first post here.
I want to show you my simple "plotter".
it is not very precise because of the servos. But it works.
The software reads plt files (eg Corel Draw).
Software and source code I will send soon.

[media]http://www.youtube.com/watch?v=sGTdJ2Mnzj4[/media]
[media]http://www.youtube.com/watch?v=CBEa8y97hJc&feature=related[/media]

Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 489
Arduino addicted
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Very impressive! :O

Good work, man! smiley-grin
Logged

Seattle, WA USA
Online Online
Brattain Member
*****
Karma: 547
Posts: 45978
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Very clever. Very nice work. I'm impressed.
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 170
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

please tell me how to do this!

i have 3 servo's kicking around

i am dying to use them  ;D
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tomorrow will send the software and instructions on how to build it.
Logged

Berlin
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks your socks off
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I like it, produces the look of those "wiggly lines"-stiles in Google Sketchup...

Keep on the good work!
Logged

Norway
Offline Offline
Sr. Member
****
Karma: 0
Posts: 370
R-Doo-Inoo in the making :3
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

nice stuffs smiley
Logged

B-dui in creation.

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I can't make a picture (my camera doesn't work) so I've made some drawings.

draw 1:

draw 2:


Important:
-When arm is setted as shown on draw 2, servos have to be in their middle positions (90 degree)
-distance between servo 1 and servo 2 has to be the same as distance between servo 2 and servo 3
-length of the parts is not very important


I think that everyone here know how to connect servos to the arduino so I will not describe it.



Arduino code:
Code:
#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);
}





and finally the PC software is here:
http://ezio.ovh.org/pliki/arm_plotter.rar

There is a file "settings.txt". You can set up and down limit of the servos to avoid destroy your arm.

[media]http://www.youtube.com/watch?v=8IS1pGwm_00[/media]
« Last Edit: January 19, 2010, 09:28:33 pm by eziosoft » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I've updated the software.
here is new version.
http://ezio.ovh.org/pliki/arm plotter v2.rar

 It has better resolution. And I added excel sheet to calibrate servos outputs.

[media]http://www.youtube.com/watch?v=YYttzcBl_EM[/media]
[media]http://www.youtube.com/watch?v=hYDu0YdoYg8[/media]
« Last Edit: February 02, 2010, 10:42:05 pm by eziosoft » Logged

venezuela
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Venezuelan Arduinologist.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

really impresive work........... makes my think....... going to give it a try............................. thanks for sharing......   smiley-grin
Logged

Bonn, Germany
Offline Offline
God Member
*****
Karma: 0
Posts: 903
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

very impressive thing... might have really a gooood idea on how to use it smiley-mad)


Logged

Believe me, Mike, I calculated the odds of this succeeding against the odds I was doing something incredibly stupid[ch8230] and I went ahead

0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey man, very cool project. You should just work on the appearance of the arm more and it should be perfect.
How do u know that the servo has reached the required angle for a specific x,y location...before feeding the next angular position??
I really need[ch65279] to know how this is implemented.
Thanks.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino sends one byte to confirm that it is ready for next position.

Full arduino code is here: http://ezio.ovh.org/pliki/arm plotter v2.rar

hope this helps

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


appearance of the arm -
hmm well this is not very useful project. And this is only proof of concept. Servos are not very precise.
« Last Edit: February 12, 2010, 07:59:31 am by eziosoft » Logged

UK
Offline Offline
Sr. Member
****
Karma: 1
Posts: 491
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I thought servo.read() only returned what angle you'd set it to - the servo doesn't have any way of returning it's actual physical position. Or am I wrong?

Andrew
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm confused as well. Can you kindly explain again from where do you get the measurement of the servo angle...when it doesn't have any feedback.
I really appreciate your help. It's essential for me to understand this, as I'm doing a somewhat similar project, and it's driving me nuts!
Logged

Pages: [1] 2 3   Go Up
Jump to: