- 12V Akku mit 280 Ah bauen         

Kommentare

  1. Avatar von Kaspernase
    Hallo Thomas,

    sorry das ich zu spät bei dir melde da ich lange nicht mehr bei Roboternetz reingeschaut habe weil meine PC komplet kaputt war und danach noch den Gastherme auch kaputt gegangen hm...
    das war teuer mit den Gastherme und konnte meine PC nicht neu kaufen und muss hart sparen hm.... und mit den Fräse habe ich schon gebaut und fast fertig und es fehlen noch den Trapezgewindestangen
    und Trapezmuttern und dazu noch den Halterung für den Trapezmutter.Den Computerstuerung und Schrittmotoren habe ich schon da und wenn es fertig ist bin ich mal gespannt wie das läuft und hoffe
    das es klappt.

    Gruss

    Bodo der Robo bastler









    Zitat Zitat von Smith-mini-plane
    Hallo Bodo,
    na ja Platinenfräse , deine ist ja schon ausgewachsen !!
    Erstmal welche Steuerung hast du ???
    Motoren und Steuerung müßen ja zusammenpassen !!!
    Ih würde auf 3-4 Nm gehen da kannst du auch ein wenig Gas geben .
    Bei meiner fast gleiche Verfahrwege habe ich nur kleine mit 0.8 A
    da ist bei 10mm/s Schluß.


    Gruß Thomas
  2. Avatar von Kaspernase
    Hallo,

    ich finde den Code den fehler nicht ich habe es aus dem buch abgeschrieben so wie es ist und ist trotzdem fehler drin und habe mehr mals ggprüft und keine fehler gefunden hm....

    /**********************
    code to look for obstacles
    **********************/

    // servo defines
    const int sweepServoPin = 9; // pin connected to servo
    const int servoDelay = 500; // time in ms for servo to move

    const int MIN_DISTANCE = 8; // robot stop when object is nearer (in inches)
    const int CLEAR_DISTANCE = 24; // distance in inches considered attracive to move
    const int MAX_DISTANCE = 150; // the maximum range of the distance sensor

    // servo angles left, right, center
    const int servoAngles[] = { 150, 30, 90};

    const byte pingPin = 10; // digital pin 10

    void lookBegin()
    {
    irSensorBegin(); // initialize sensors
    softServoAttach(sweepServoPin); /// attaches the servo pin to the servo object
    }

    // returns true if the given obstacle is detected
    boolean lookForObstacle(int obstacle)
    {
    switch(obstacle) {
    case OBST_FRONT_EDGE: return irEdgeDetect(DIR_LEFT) && irEdgeDetect(DIR_RIGHT);
    case OBST_LEFT_EDGE: return irEdgeDetect(DIR_LEFT);
    case OBST_RIGHT_EDGE: return irEdgeDetect(DIR_RIGHT);
    case OBST_FRONT: return lookAt(servoAngles[DIR_CENTER]) <= MIN_DISTANCE;
    }
    return false;
    }

    // returns the distance of objects at the given angle
    int lookAt(int angle)
    {
    softServoWrite(angle, servoDelay ); // wait for servo to get into position
    int distance, samples;
    long cume;
    distance = samples = cume = 0;
    for(int i =0; i < 4; i++)
    {
    distance = pingGetDistance(pingPin);
    if(distance > 0)
    {
    // printInValue(",distance);
    samples++;
    cume+= distance;
    }
    }
    if(samples > 0)
    distance = cume / samples;
    else
    distance = 0;

    if( angle != servoAngles[DIR_CENTER])
    {
    Serial.print("looking at dir ");
    Serial.print(angle), Serial.print(" distance= ");
    Serial.printIn(distance);
    softServoWrite(servoAngles[DIR_CENTER], servoDelay/2);
    }
    return distance;
    }

    // function to check if robot can continue moving in current direction
    // returns true if robot is not blocked moving in current direction
    // this version only tests for obstacles in front
    boolean checkMovement()
    {
    boolean isClear = true; // default return value if no obstacles
    if(moveGetState() == MOV_FORWARD)
    {
    if(lookForObstacle(OBST_FRONT) == true)
    {
    isClear = false;
    }
    }
    return isClear;
    }

    // Look for and avoid obstacles using servo to scan
    void roam()
    {
    int distance = lookAt(servoAngles[DIR_CENTER]);
    if(distance == 0)
    {
    moveStop();
    Serial.printIn("No front sensor");
    return; // no sensor
    }
    else if(distance <= MIN_DISTANCE)
    {
    moveStop();
    //Serial.print("Scanning:");
    int leftDistance = lookAt(servoAngles[DIR_LEFT]);
    if(leftDistance > CLEAR_DISTANCE) {
    // serial.print(" moving left: ");
    moveRotate(-90);
    }
    else {
    delay(500);
    int rightDistance = lookAt(servoAngles[DIR_RIGHT]);
    if(rightDistance > CLEAR_DISTANCE) {
    // Serial.printIn(" moving right: ");
    moveRotate(90);
    }
    else {
    // Serial.print(" no clearence : ");
    distance = max( leftDistance, rightDistance);
    if(distance < CLEAR_DISTANCE/2) {
    timedMove(MOV_BACK, 1000); // back up for one second
    moveRotate(-180); // turn around
    }
    else {
    if(leftDistance > rightDistance)
    moveRotate(-90);
    else
    moveRotate(90);
    }
    }
    }
    }
    }

    // the following is based on loop code from myRobotEdge
    // robot checks for edge and moves to avoid
    void avoidEdge()
    {
    if( lookForObstacle(OBST_FRONT_EDGE) == true)
    {
    Serial.printIn("left and right sensor detected edge");
    timedMove(MOV_BACK, 300);
    moveRotate(120);
    while(lookForObstacle(OBST_FRONT_EDGE) == true )
    moveStop(); // stop motors if still over cliff
    }
    else if(lookForObstacle(OBST_LEFT_EDGE) ==true)
    {
    Serial.printIn("left sensor detected edge");
    timedMove(MOV_BACK, 100);
    moveRotate(30);
    }
    else if(lookForObstacle(OBST_RIGHT_EDGE) == true)
    {
    Serial.printIn("right sensor detected edge");
    timedMove(MOV_BACK, 100);
    moveRotate(-30);
    }
    }
  3. Avatar von Smith-mini-plane
    Hallo Bodo,
    na ja Platinenfräse , deine ist ja schon ausgewachsen !!
    Erstmal welche Steuerung hast du ???
    Motoren und Steuerung müßen ja zusammenpassen !!!
    Ih würde auf 3-4 Nm gehen da kannst du auch ein wenig Gas geben .
    Bei meiner fast gleiche Verfahrwege habe ich nur kleine mit 0.8 A
    da ist bei 10mm/s Schluß.


    Gruß Thomas

Labornetzteil AliExpress