Timelapse robot hulp gevraagd

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 1
Geregistreerd: 05 Feb 2017, 02:34

Timelapse robot hulp gevraagd

Berichtdoor MBC » 05 Feb 2017, 14:28

Beste Arduino forum leden,

Sinds enkele maanden ben ik in bezit van een 3D printer. Omdat ik mijn toekomstige creaties graag wil delen met de wereld, ben ik aan de slag gegaan met timelapse fotografie. Om de timelapse filmpjes nog een extra dimensie te geven leek het mij leuk om de camera om de printer heen te laten bewegen tijdens het filmen.

Afbeelding

de camera kan over de rode lijn bewegen en tegelijkertijd om eigen as meedraaien om de printer in beeld te houden.

Met K'NEX heb ik een eerste prototype gemaakt. Een 5v stappenmotor zorgt voor de aandrijving van rig

https://youtu.be/99eW_FRtGrk

De camera kan roteren door middel van een 9 gram servomotor

https://youtu.be/9JRiyeOR7zA

Omdat de Arduino programmeertaal nog heel nieuw voor mij is ben ik vastgelopen bij het volgende:

Voor de stappenmotor heb ik online de volgende code gevonden:

-----------------------------------------------------------------

int stepperpins[]= {2,3,4,5};
int stepperCurPos = 0;

void SetupStepper()
{
for (int x=0; x<4; x++)
pinMode(stepperpins[x], OUTPUT);
}

void MoveStepper(int direction)
{

digitalWrite(stepperpins[stepperCurPos], 0);
stepperCurPos += direction;
if (stepperCurPos > 3)
stepperCurPos = 0;
if (stepperCurPos < 0)
stepperCurPos = 3;

digitalWrite(stepperpins[stepperCurPos], 1);

}

void setup () {

SetupStepper ();
}

int msdly = 3;

void loop () {

for (int x=0; x<5000; x++)
{
MoveStepper (1);
delay (msdly);
}
for (int x=0; x<5000; x++)
{
MoveStepper (-1);
delay(msdly);
}

}
-----------------------------------------------------------------

De servo bestuur ik momenteel met een joystick:

#include <Servo.h>
#define SERVO_PIN 9
#define GROUND_JOY_PIN A3 //joystick ground pin will connect to Arduino analog pin A3
#define VOUT_JOY_PIN A2 //joystick +5 V pin will connect to Arduino analog pin A2
#define XJOY_PIN A1 //X axis reading from joystick will go into analog pin A1
Servo myservo ;

void setup()
{
Serial.begin(9600);
pinMode(VOUT_JOY_PIN, OUTPUT) ; //pin A3 shall be used as output
pinMode(GROUND_JOY_PIN, OUTPUT) ; //pin A2 shall be used as output
digitalWrite(VOUT_JOY_PIN, HIGH) ; //set pin A3 to high (+5V)
digitalWrite(GROUND_JOY_PIN,LOW) ; //set pin A3 to low (ground)
myservo.attach(9);
}

void loop()
{
delay(200);
int joystickXVal = analogRead(XJOY_PIN) ; //read joystick input on pin A1
Serial.print(joystickXVal); //print the value from A1
Serial.println(" = input from joystick"); //print "=input from joystick" next to the value
Serial.print((joystickXVal+520)/10); //print a from A1 calculated, scaled value
Serial.println(" = output to servo"); //print "=output to servo" next to the value
Serial.println() ;
myservo.write((joystickXVal+520)/10); //write the calculated value to the servo
}

........................................................................................................................

Nu zoek ik een manier om aan de eerste code een functie toe te voegen om de camera mee te laten bewegen.

Afbeelding

Het is de bedoeling dat de rig recht voor de printer begint met de camera postie op 0 graden. Wanneer de rig naar rechts beweegt moet de camera negatief meedraaien. Wanneer de rig op meest rechtse pun is ( 5000 stappen) moet de camera -45 graden gedraaid zijn. En vervolgens neer links het tegenovergestelde ( rig -5000 stappen, camera + 45 graden)

Ik hoop dat mijn verhaal enigszins duidelijk is. En ik ben heel benieuw of iemand mij in de goede richting kan helpen?

Met vriendelijke groet,

Maarten

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Timelapse robot hulp gevraagd

Berichtdoor Koepel » 06 Feb 2017, 06:10

Het is wiskunde. Wanneer je hoek van de camera in graden kunt instellen dan kun je die hoek berekenen met de atan() "arctangens".
Kun je de servo motor in graden instellen ? En kun je controleren dat het ook echt klopt ?
Vanaf het midden van de 3D printer tot de rode lijn is de "overstaande". Vanaf de camera tot het middelpunt van de rode lijn is de "aanliggende". Dan atan( overstaande / aanliggende ) en omzetten naar graden.

Volgens mij wordt het beeld schokkerig door de K'NEX tandwielen, het elastiek en de servo motor.
Bij http://hackaday.com/ staan voorbeelden, ik weet alleen niet waarop je het beste kunt zoeken: "camera rig" of "camera motion" of "camera dolly" ?

Bij de Arduino IDE wordt al een library voor een stepper motor meegeleverd: https://www.arduino.cc/en/Reference/Stepper.
Voor zwaardere stepper motors die langzaam op snelheid moeten worden gebracht is er ook een stepper library met alles er op en er aan: http://www.airspayce.com/mikem/arduino/AccelStepper/

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Timelapse robot hulp gevraagd

Berichtdoor shooter » 06 Feb 2017, 20:51

je kunt het inderdaad met wiskunde oplossen, maar simpeler kan ook, hou bij hoeveel stappen de motor gedaan heeft, dus een teller die van -5000 tot 5000 is.
doe dan een map met die waarde, dus bijvoorbeeld servostand=map(stepstand,-5000,5000,+45,-45);
en zet in de bovenste loop dan ook nog een myservo.write.
in je programma mag overigens maar 1 setup en 1 loop zitten.
paul deelen
shooter@home.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Timelapse robot hulp gevraagd

Berichtdoor shooter » 06 Feb 2017, 20:58

Na het kijken van de filmpjes , je zult wel iets moeten doen aan die elastiekjes, bijvoorbeeld met een draadeind in de stepper en getapte gaatjes in 2 plaatjes. dat is veel stabieler, maar voor een eerste test is het prima.
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 24 gasten