retrointerfacing

- connecting past and future -

Archive for August, 2010

Repstrap using HP840c’s

with one comment

With the StarLC10 matrix repstrap ending up as pizza plotter, a start has been made building a new 3D machine using only the parts of 3 HP deskjet 840c printers.

r0013937

The printers contain many useful parts, the casing is made almost entirely out of ABS (printing material, hurray!)

r0013939

Especially the sliders come in nice, rectangular frame’s which make mounting them easy. For the first tests a frame has been assembled using standard aluminum X-beams (boikon).

r0013962

Using the cleaner bin (which normally brushes and seals the cartridge) a Z-axis has been made which has at least 8cm of travel:

r0013947 r0013958 r0013959

Arduino-based control of a DC motor using incremental encoder and PID is not much more difficult than controlling a stepper motor. See the wiki for full documentation.

void setup(){
  int oldposition;
  Serial.begin(9600);
  attachInterrupt(0, encoder, RISING);
  pinMode(10,OUTPUT);
  pinMode(12,OUTPUT);
  setMotor(-150);
  delay(50);
  while(position!=oldposition)  {
    oldposition=position;
    delay(50);
  }
  setMotor(0);
  position=0;
}
void loop(){
if(millis()>time+1)
{
  float setpoint = 1000+400*sin(n/200)+200*sin(n/50); // 1890 positions
  float error = setpoint - position;
  setMotor((int)(limit((Kp*error + Kd*(error-oldError) + limit((Ki*sumError),antiWindup)),255)));
  oldError = error;
  sumError+=error;
  n++;
  time=millis();
}
}
void encoder() {// encoder service routine
  if (digitalRead(4)>0) position++;
  else position--;
}
void setMotor(int value){ // set PWM of motor, value may range from -255 to 255
  if (value>=0)   {
    digitalWrite(12,LOW);
    analogWrite(10,value);
  }
  if (value<0)   {
    digitalWrite(12,HIGH);
    analogWrite(10,value);
  }
}

next up: including the extruder head, interfacing, making connections, shredding abs, making a scrap-2-3mm-wire extruder system, etc.. etc…

Written by edwin

August 22nd, 2010 at 9:28 pm

Posted in fablab, fabrication

Tagged with ,

18-servo walker

with 3 comments

New A4 flat-kit design: a 18-servo 6-legged hexapod. It does not walk (yet) but servo control works and the mechanics look good:

r0013970

All parts can be cut from a single A4 sheet of acrylic glass. Other parts include 18 miniature servo’s (selling for 5EUR as TopLine mini-servo ES-05 JR (at Conrad Electronic)) and an ottantotto board

r0013969

The servo’s are controlled using a simple soft-servo library (for the timebeing) which can be found here.

Written by edwin

August 22nd, 2010 at 8:53 pm

Posted in Arduino, Robotics, fablab, fabrication

Tagged with

Standalone dial-a-song

without comments

Using a telephone retro-interface and Arduino wav-shield-derivative a box has been build which allows you to use an old rotary phone as standalone dial-a-song system. This makes an excellent CD-pre-listening device for our CD-sales stand at concerts.

r0013957

The system is fully documented (including schematics, software, PCB layout) on the wiki. Although numerous designs have been made where the innards of rotary telephones have been replaced by other electronics (birthday card sound chip, GSM telephone), this project has a completely different approach. No changes to the telephone have been made. The phonebox generates line-voltage, even the 90V 20Hz ringer voltage. A sound input/output is added for line level signals. The box is powered using 12V dc, so mobile operation is possible.

phonebox electronics

The idea (accidentally re-invented) is not new - so it is in two respects a retro-interface From wikipedia: Established by rock band They Might Be Giants (TMBG), Dial-A-Song consisted of an answering machine with a tape of the band playing various songs. The machine played one track at a time, ranging from demos and uncompleted work to fake advertisements the band had created.

So basically this design is your dial-a-song-in-a-box….

Written by edwin

August 22nd, 2010 at 8:03 pm

Flatpack Walker with Sensor

without comments

As presented for the first time on FAB6, using a Sharp gp2y0a02 sensor the flatpack-walker just got a little bit smarter. As long as the distance sensor is triggered, the robot walks backwards.

flatpack

The code is still pretty simple:

// avoid obstacles using Sharp G2P sensor on Analog 0
#include <Servo.h>
Servo frontservo,backservo;
char walkpattern[] = {60,100,100,100,100,60,60,60};
void setup(){
  frontservo.attach(9);
  backservo.attach(10);
}
void loop(){
  for(int n=0;n<4;n++){
    if(analogRead(0)>500){
      frontservo.write(walkpattern[2*n]);
      backservo.write(walkpattern[(2*n)+1]);
    }
    else{
      backservo.write(walkpattern[2*n]);
      frontservo.write(walkpattern[(2*n)+1]);
    }
    delay(200);
  }
}

Written by edwin

August 22nd, 2010 at 7:40 pm

Posted in Arduino, Robotics, fablab

Tagged with