Neues vom Strandbeest

Der Strandbeest Bausatz ist jetzt schon eine Weile im Umlauf, und auf verschiedenen Kanälen habe ich Rückmeldungen über Nachbauten erhalten. Schwierigkeiten gab es insgesamt wenige – wenn, dann war jeder Fall ein „Einzelschicksal“ mit einem individuellen Problem. Zum Glück bisher keine systematischen Fehler :-)

Viel Zeit für Bugfixing musste ich also nicht aufwenden, daher habe ich mir den Mittelteil des Strandbeestes mal vorgenommen und die Servos gegen zwei (sogar günstigere) Getriebemotoren ausgetauscht. Siehe da: Das macht gleich noch etwas mehr Spaß, denn man geht instinktiv einen Schritt zurück, wenn die neue Version angetrappelt kommt.

Sieht gut aus? Finde ich auch :) Folgende Änderungen sind notwendig: zwei neue Trägerplatten für die Motoren ausschneiden. Acht Scheiben aus MDF für die Kopplung der Motorwelle an die Gewindestange müssen auch neu ausgelasert werden. Leider sind die Gewindestangen für die neue Variante zu kurz, also neu zuschneiden. Zum Einsatz kommen zwei „gelbe Motoren“ und ein L298 Motorregler, der auch gleich die 5V für den Arduino Nano und den RC Receiver macht. IMG_3881 Dafür entfallen zwei Servos und der Spannungsregler. Alles in allem käme man mit der neuen Version etwas günstiger weg, wenn die alte Version nicht bereits zusammengebaut herum stünde. Bei den Schrauben tut sich auch etwas: 4 8 Stück M3*10 M3*12 fallen weg, dafür kommen 4 Stück M3*30 dazu, außerdem werden noch 4 Muttern M4 und zwei passende Scheiben benötigt. IMG_3887Oben nicht abgebildet: die beiden Trägerplatten, in die die Servos eingeschraubt sind, die passen natürlich auch nicht mehr.

Wie wird das ganze nun zusammengebaut? Aus den Scheiben und Ringen wird wieder ein Sandwich zusammengeklebt, im Inneren befindet sich die Einschlagmutter, die vorher einzupressen ist. Die oberste Scheibe des Stapels hat einen passenden Ausschnitt, der ohne allzu viel Spiel auf die Motorwelle passt. Angeschraubt werden kann da nichts – die Motorwelle bietet nicht so viel Widerstand oder Platz, als das da viel befestigt werden könnte.
IMG_3884Auf die Welle (Gewindestange) werden zwei Muttern aufgeschraubt, die gestützt von einer Scheibe die Gewinderstange hinter der ersten Bein-Trägerplatte festhalten (Foto folgt) und so verhindern, dass das Sandwich von der Motorwelle abrutscht. So viel zum mechanischen Umbau – die Änderungen an der Verdrahtung und der Software folgen in den nächsten Tagen hier im Blog. Achso: Files mit den neuen Teilen folgen dann auch.

Auf der Maker Faire 2016 in Hannover gibt es das neue Modell natürlich auch zu sehen!

Weiter oben steht es schon geschrieben: Der L298D hat auch einen 5V Teil, so dass sich die folgende neue Spannungsversorgung ergibt:

Bisher brauchten die Servos zwei Pins am Arduino Nano. Der Motorregler braucht gleich mal sechs, so dass der Nano fast komplett belegt ist:

Der Aufmerksame Leser findet in den beiden Abbildungen noch Hinweise auf ein Display – das habe ich zum Debuggen noch mit auf dem Strandbeest montiert. Es handelt sich um das hier beschriebene OLED.

Was fehlt noch? Ach ja, der Quelltext:

// Strandbeest RC V1.2 -- 2016-05-22
// LED Statusanzeige, Modellumschaltung, Heartbeat, Display
// Adaptive Geschwindigkeitseinstellung
// FlySky Receiver

#include <Wire.h>
#include <FastLED.h>
#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 

#define BAUDRATE 19200

//RGB Leds
#define Anzahl 3
#define OutputPin 3
CRGB LEDs[Anzahl];

// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;

const uint8_t logo_bitmap[] PROGMEM = {
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x78
,0x13,0xff,0xc3,0xff,0xf0,0xff,0xff,0xc8
,0x13,0xff,0xc3,0xff,0xf0,0xff,0xff,0xc8
,0x1e,0x00,0xc3,0x00,0x30,0xc0,0x00,0x78
,0x00,0x00,0xc3,0x00,0x30,0xc0,0x00,0x00
,0x00,0x00,0xc3,0x00,0x30,0xc0,0x00,0x00
,0x1e,0x00,0xc3,0x1e,0x30,0xc0,0x00,0x78
,0x13,0xf0,0xc3,0x12,0x30,0xc3,0xff,0xc8
,0x13,0xf0,0xc3,0x12,0x30,0xc3,0xff,0xc8
,0x1e,0x30,0xc3,0x1e,0x30,0xc3,0x00,0x78
,0x00,0x30,0xc3,0x0c,0x30,0xc3,0x00,0x00
,0x00,0x30,0xc3,0x0c,0x30,0xc3,0x00,0x00
,0x0c,0x78,0xc3,0x0c,0x30,0xc3,0x1e,0x78
,0x12,0x48,0xc3,0x0c,0x30,0xc3,0x12,0x48
,0x12,0x48,0xc3,0x0c,0x30,0xc3,0x12,0x48
,0x16,0x78,0xc3,0x0c,0x30,0xc3,0x1e,0x78
,0x0c,0x30,0xc3,0x0c,0x30,0xc3,0x0c,0x00
,0x00,0x30,0xc3,0x0c,0x30,0xc3,0x0c,0x00
,0x1e,0x30,0xc3,0x0c,0x31,0xe7,0x8c,0x00
,0x13,0xf0,0xc3,0x0c,0x31,0x24,0x8f,0xf0
,0x13,0xf0,0xc3,0x0c,0x31,0x24,0x8f,0xf0
,0x1e,0x00,0xc3,0x0c,0x31,0xe7,0x8e,0x30
,0x00,0x00,0xc3,0x0c,0x30,0x00,0x0e,0x30
,0x00,0x00,0xc3,0x0c,0x48,0x00,0x12,0x30
,0x1e,0x00,0xc3,0x0c,0x48,0x00,0x12,0x30
,0x13,0xff,0xc3,0x0c,0x78,0xff,0x1e,0x30
,0x13,0xff,0xc3,0x0c,0x31,0xff,0x8c,0x30
,0x1e,0x00,0xc3,0x0c,0x03,0xc1,0xc0,0x30
,0x00,0x00,0xc3,0x0c,0x07,0x00,0xe0,0x30
,0x00,0x00,0xc3,0x0c,0x0e,0x00,0x70,0x30
,0x1c,0x78,0xc3,0x0c,0x1c,0x00,0x3e,0x30
,0x12,0x48,0xc3,0x0c,0x38,0x00,0x12,0x30
,0x12,0x48,0xc3,0x0c,0x30,0x00,0x12,0x30
,0x1e,0x78,0xc3,0x0c,0x30,0x00,0x1e,0x30
,0x0c,0x30,0xc3,0x0c,0x30,0x00,0x0c,0x30
,0x0c,0x30,0xff,0x0c,0x30,0x00,0x0c,0x30
,0x0c,0x30,0xff,0x0c,0x30,0x00,0x0c,0x38
,0x0c,0x30,0x00,0x0c,0x30,0x00,0x0c,0x48
,0x0c,0x38,0x00,0x1c,0x38,0x00,0x1c,0x48
,0x0c,0x1c,0x00,0x38,0x1c,0x00,0x38,0x78
,0x0c,0x0e,0x00,0x70,0x0e,0x00,0x70,0x10
,0x0c,0x07,0x00,0xe0,0x07,0x00,0xe0,0x00
,0x0c,0x03,0x81,0xc3,0x83,0x81,0xc0,0x38
,0x0c,0x01,0xff,0x82,0x41,0xff,0x80,0x48
,0x0c,0x00,0xff,0x02,0x40,0xff,0x00,0x48
,0x0c,0x00,0x00,0x03,0xc0,0x00,0x00,0x78
,0x0c,0x00,0x00,0x01,0x80,0x00,0x00,0x30
,0x0c,0x00,0x00,0x01,0x80,0x00,0x00,0x30
,0x0c,0x00,0x00,0x01,0x80,0x00,0x00,0x30
,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xf0
,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xf0
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

#define RCchA 11  //Channel 2, rechter Stick vor/rueck auf der FlySky
#define RCchB 12  //Channel 1, rechter Stick rechts/links auf der FlySky 
#define RCchE 2   //Channel 5, SWA auf der FlySky
#define RCchF 4   //Channel 6, SWB auf der FlySky

long chA;
long chB;
long chE;
long chF; //not in use

unsigned long maxfwd=1900;
unsigned long maxbck=1300;
unsigned long maxlft=1300;
unsigned long maxrgt=1900;

int mySpeed=0;

int huecnt=0;
int redcnt=0;
int reddir=0;
int myStatus=0;

int displaycnt=0;

void setup()
{
  //Logo aufs Display
  u8g.firstPage();  
  while(u8g.nextPage()==1)
  { //x,y,number of bytes per line,anzahl zeilen, wo stehts
    u8g.drawBitmapP( 32, 1, 8, 64, logo_bitmap);
  }
  
  pinMode(RCchA, INPUT);
  pinMode(RCchB, INPUT);
  pinMode(RCchE, INPUT);
  pinMode(RCchF, INPUT); //Not in Use
  
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  
  FastLED.addLeds <NEOPIXEL, OutputPin> (LEDs, Anzahl);

  LEDs[0]=0x004000;
  LEDs[1]=0x000000;
  LEDs[2]=0x000000;
  FastLED.show();
  delay(500);
  LEDs[1]=0x004000;
  FastLED.show();
  delay(500);
  LEDs[2]=0x004000;
  FastLED.show();
  delay(500);
   
  //ready - blau
  LEDs[0]=0x000040;
  LEDs[1]=0x000040;
  LEDs[2]=0x000040;
  FastLED.show();
}

void loop()
{
  chA = pulseIn(RCchA, HIGH, 30000);
  if (chA==0)
  {
    //no rc
    chA = pulseIn(RCchA, HIGH, 30000);
    //Alles auf Null
    analogWrite(enA, 0);
    analogWrite(enB, 0);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);  
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);  
    
    // HUE CYCLE
    LEDs[0] = CHSV( huecnt, 255, 128);
    LEDs[1] = CHSV( huecnt, 255, 128);
    LEDs[2] = CHSV( huecnt, 255, 128);
    FastLED.show();
    huecnt++;
    if (huecnt==256){huecnt=0;}
    myStatus=0;
  }
  else
  {
    myStatus=1;
    chE = pulseIn(RCchE, HIGH, 30000); //Check for Enable
    if (chE > 1700) //Schalter SWA = 1
    {
      //Kein Enable
      //Alles auf Null
      analogWrite(enA, 0);
      analogWrite(enB, 0);
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);  
      digitalWrite(in3, LOW);
      digitalWrite(in4, LOW); 
      
      //Neutral - r/l blau, mitte rot mit heartbeat
      LEDs[0]=0x000040;
      LEDs[1].r=redcnt;
      LEDs[1].g=0;
      LEDs[1].b=0;
      LEDs[2]=0x000040;
      FastLED.show();

      //heartbeat
      if (reddir==0) 
      {
        //count up
        redcnt++;
        if (redcnt==80)
        {
          reddir=1; //Zährichtung umschalten auf abwärts
        }
      }
      else
      {
        //count down
        redcnt--;
        if (redcnt==0)
        {
          reddir=0; //Zährichtung umschalten auf abwärts
        }
      }
    }
    else //Schalter SWA = 0
    {
      chB = pulseIn(RCchB, HIGH, 30000);

      if (chB < 1200) //Links
      {
        if ((chA > 1200) &&(chA < 1700)) //VorRück in etwa auf Mitte?
        {
          if (chB<maxlft){maxlft=chB;} //linksanschlag=kleine Werte
          if (maxlft==0){maxlft=1000;}
          mySpeed=map(chB,maxlft,1500,254,0);
          // turn on motor A
          digitalWrite(in1, HIGH);
          digitalWrite(in2, LOW);
          analogWrite(enA, mySpeed);
          // turn on motor B,
          digitalWrite(in3, LOW);
          digitalWrite(in4, HIGH);
          analogWrite(enB, mySpeed);
  
          LEDs[0]=0x400000;
          LEDs[1]=0x804000;
          LEDs[2]=0x004000;
          FastLED.show();
        }
      }
      else if  (chB > 1700) //rechts
      {
        if ((chA > 1200) &&(chA < 1700)) //VorRück in etwa auf Mitte?
        {
          if (chB>maxrgt){maxrgt=chB;} //rechtsanschlag=große Werte
          mySpeed=map(chB,1500,maxrgt,0,254);
          // turn on motor A
          digitalWrite(in1, LOW);
          digitalWrite(in2, HIGH);
          analogWrite(enA, mySpeed);
          // turn on motor B,
          digitalWrite(in3, HIGH);
          digitalWrite(in4, LOW);
          analogWrite(enB, mySpeed);
  
          LEDs[0]=0x004000;
          LEDs[1]=0x804000;
          LEDs[2]=0x400000;
          FastLED.show();
        }
      }
      else
      {
      if (chA > 1550) //Vor
      {
        if (chA>maxfwd){maxfwd=chA;} //anschlag oben=große Werte
        mySpeed=map(chA,1500,maxfwd,0,254);

        // turn on motor A
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        analogWrite(enA, mySpeed);
        // turn on motor B
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
        analogWrite(enB, mySpeed);
        
        LEDs[0].r=0;
        LEDs[0].g=(mySpeed/4);
        LEDs[0].b=((255-mySpeed)/4);
        
        LEDs[1]=0x804000;
        
        LEDs[2].r=0;
        LEDs[2].g=(mySpeed/4);
        LEDs[2].b=((255-mySpeed)/4);

        FastLED.show();
      }
      else if  (chA < 1450) //Rueck
      {
        if (chA<maxbck){maxbck=chA;} //anschlag unten=kleine Werte
        mySpeed=map(chA,maxbck,1500,254,0);

        // turn on motor A
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        analogWrite(enA, mySpeed);
        // turn on motor B
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        analogWrite(enB, mySpeed);
        
        LEDs[0].g=0;
        LEDs[0].r=(mySpeed/4);
        LEDs[0].b=((255-mySpeed)/4);
        
        LEDs[1]=0x804000;
        
        LEDs[2].g=0;
        LEDs[2].r=(mySpeed/4);
        LEDs[2].b=((255-mySpeed)/4);
        FastLED.show();
      }
      else //
      {
        //Serial.println("Neutral");

        //Alles auf Null
        analogWrite(enA, 0);
        analogWrite(enB, 0);
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);  
        digitalWrite(in3, LOW);
        digitalWrite(in4, LOW); 
        
        //Neutral - r/l blau, Mitte grün
        LEDs[0]=0x000040;
        LEDs[1]=0x804000; //orange
        LEDs[2]=0x000040;
        FastLED.show();
      }
    }
    }
  }
  
  displaycnt++;
  if (displaycnt>30)
  {
    if (myStatus==0) //norc
    {
      u8g.firstPage();  
      while(u8g.nextPage()==1)
      { //x,y,number of bytes per line,anzahl zeilen, wo stehts
        u8g.drawBitmapP( 32, 1, 8, 64, logo_bitmap);
      }
    }
    else //rc
    {
      u8g.firstPage();  
      while(u8g.nextPage()==1)
      { //x,y,number of bytes per line,anzahl zeilen, wo stehts
        String mr=String(maxrgt);
        String ml=String(maxlft);
        
        u8g.setFont(u8g_font_6x10);
        u8g.drawStr( 0, 30, "R");

        u8g.setPrintPos(10, 30); 
        u8g.print(maxrgt);
        
        u8g.drawStr( 0, 40, "L");
        
        u8g.setPrintPos(10, 40); 
        u8g.print(maxlft);
        
        //u8g.drawStrP( 10, 40, ml);
      }
    }
    displaycnt=0;
  }
}

Hier noch einmal das Display: und die in Innenraum festgeschnallten Komponenten:

Auch gut zu sehen: die drei LEDs. Grüner Draht links: Das ist die Datenleitung.

50 Gedanken zu „Neues vom Strandbeest

    • Hi,
      ich hab mal schnell die Make aufgeblättert, nachgelesen, verdammt. Du hast Recht. Das war dann wohl noch eine der Optimierungen, die ich in der Beschreibung gemacht habe, um die Teilevielfalt zu drücken. Dann bleiben wohl ein paar M3*12 übrig. Ich mache die Tage mal eine neue vollständige Liste ohne hin- und herrechnen. Die Verdrahtung des Motortreibers und den Sketch habe ich auch noch zu liefern.
      Vielen Dank auf jeden Fall für den Hinweis!

      Viele Grüße
      Joachim

    • Hi Monte,
      der freundliche Chinese spezifiziert die „gelben Motoren“ für 3 bis 6V. Ich verwende einen 7,4V Lipo vor dem Motortreiber und bisher gab es noch keine Rauchwolken. Zweieinhalb Tage Maker Faire „Dauerbetrieb“ sind ohne Motorschaden vorübergegangen.

      Viele Grüße
      Jo

  1. Hallo

    Sieht echt gut aus das Upgrade mit den Getriebemotoren.

    Stellst du die neuste Version der Teile auch als Download bereit?

    Grüsse und Danke für das tolle und coole Projekt
    Patrick

  2. Hallo Jo,

    was heißt: „die Änderungen an der Verdrahtung und der Software folgen in den nächsten Tagen hier im Blog.“?

    LG Monte

    • Hi,

      es gibt bei der Motoransteuerung ein paar Änderungen. Dort wo bisher mittels Servo Library einfach Drehwinkel rausgeschrieben wurde, muss nun das Setzen von zwei Port (für die Drehrichtung) und eines PWM Signals (Einschaltzeit der H-Brücke) rein. Damit werden aus vormals zwei Port für das Servo nun sechs. Die Software ist fertig (die verwende ich ja schon in meinem Modell), aber die muss um ein paar Anpassungen für den Mehr-Modellbetrieb bereinigt und um ein paar Kommentare ergänzt werden. Das Schaltbild müsste ich überhaupt erstmal zeichnen.

      Ich arbeite dran :)
      Viele Grüße
      Jo

    • Das Sandwich Scheibe/Ring/Ring/Scheibe wird auf die Motorwelle gesteckt. Allerdings kann man es auf der Motorwelle nicht so richtig festschrauben, weil das aller nur zäher Kunststoff ist und die Wandstärken nicht wirklich gut Kräfte aufnehmen. Daher werden auf die Gewindestange (M4) zwei Mutter aufgeschraubt, die mit einer Scheibe hinter der ersten Beinträgerplatte festgekontert werden. So kann sich die Gewindestangenwelle nicht mehr von der Motorwelle herunterschieben.

  3. „Aus den Scheiben und Ringen wird wieder ein Sandwich zusammengeklebt, im Inneren befindet sich die Einschlagmutter, die vorher einzupressen ist. Die oberste Scheibe des Stapels hat einen passenden Ausschnitt, der ohne allzu viel Spiel auf die Motorwelle passt.“
    Heißt dass das man einen 4 Scheiben dicken Sandwich hat?

    LG Monte

  4. Auf der Maker Faire sagtest du dass die Einschlagmutter nicht ganz, sondern nur leicht reingedrückt werden sollten.
    Wie war das nochmal?

    • Falls noch von Interesse:
      Das MDF ist nur vier Millimeter dick, die Gewindehülse der Einschlagmuttern aber etwa 7 bis 8 mm hoch. Aus eigener Erfahrung kann ich sagen, dass Gewinde geht kaputt wenn man zu fest drückt und keine Unterlage mit Loch verwendet.
      Wenn man aber die Einschlagmuttern nur sanft eindrückt, so dass das Gewinde büpndig mit dem MDF kommt, kann man noch die Gewindestange einschrauben und der Abstand passt zu den Zahnrädern der Beine (dort wird eine MDF Unterlagscheibe untergelegt).
      Stefan

  5. Hallo Jo,

    beim Starten der Motoren im Strandbeest bewegen sie sich kurz hören aber nach kurzer Zeit auf.
    Nach dem Aus und wieder Anschalten bewegen sie sich wieder kurz.
    Hast du eine Ahnung warum?

    LG Monte

    PS: Das Ganze bei 6V und auch bei 7.5V

    • Hast Du schon eine Ansteuerschaltung/einen Motortreiber davor oder kommt die Versorgung der Motoren noch direkt aus einem Akku oder Netzteil?

  6. Hallo Jo

    Wollte noch einmal wegen den aktuellen Downloads nachfragen, oder wirst du die Zeichnungen mit den Updates nicht mehr veröffentlichen?

    Danke und Gruss
    Patrick

  7. Pingback: 6 Common Problems to Avoid When Building a Strandbeest – DIY Woodworking Machines

  8. Pingback: Make: Japan | テオ・ヤンセンのストランドビーストを作るときの6つの問題

  9. Pingback: 6 Common Problems to Avoid When Building a Strandbeest – How To : Lifehack

  10. Hallo,
    Hier in Fablab Groningen (NL) sind wir begeistert von ihr Strandbeest wie beschrieben in de Deutschen Ausgabe des Make Magazins, Heft 1/2016, Tolles idee! So haben wir haben ons gedacht ihr Strandbeest nach zu bauen. Wir versuchen die version 1.5 mit die gelben Motoren zu machen. In Neues vom Stranbeest auf Ihre Website haben ich gelesen es folgt noch ein Update für die Bauanleitung und die Verdrahtung des Motortreibers und den Arduino Sketch. Wie weit ist es heute damit? Die Files für die Variante mit Getriebemotoren haben wir schon runtergeladen.

    Viele Grüsse
    Bert Heijenga

  11. Hallo Jo,
    Ich habe das Strandbeest V1.5 gebaut und es lief auch alles glatt. allerdings rutschen die „Getriebesandwiches“ immer vom Motor runter, wenn ich sie starte. Wie kann ich das fixieren?

    Grüße,
    Enrico

    • Hallo Enrico, ich habe zwei Varianten im Einsatz:
      1. Holzscheiben auf die Motorwelle stecken und mit einer kleinen Schraube, die durch die Einschlagmutter passt, in die Motorwelle schrauben. Erst danach die Gewindestange in die Einschlagmutter einschrauben und kontern.
      2. Holzscheibe mit Gewindestange auf den Motor stecken und auf der Rückseite der ersten Beinträgerplatte einfach noch einmal mit zwei Muttern und einer Scheibe eine „Sperre“ auf der Gewindestange anbringen, die das Abrutschen verhindert.

      Viele Grüße
      Jo

  12. Hello Joachim,
    We at Fablab Groningen (NL) are building the improved version of your strandbeest,with the yellow motors. All the wooden parts are lasered out and put together. Now we are still waiting for the updated electronic circuit layout. Any change to see that soon?

    thanx, Bert

  13. Hallo Joachim, ich bin begeistert von deinem neuen Strandbeest mit den gelben Motoren. Hierzu habe ich eine Frage: Du hast farbige LED’s eingebaut. Was benötige ich alles an Zubehör damit diese funktionieren. Wie viele wurden eingebaut? Wie sehen diese aus? Werden diese separat eingeschaltet.

    Hast Du inzwischen auch eine Anleitung betreffend Änderungen (Verkabelung, Programmierung Arduino) bei Verwendung der gelben Motoren heraus gebracht?

    Würden mich sehr über eine Antwort von Dir freuen.

    Beste Grüsse
    Thomas

    • Hallo Thomas,

      die LEDs sind WS2812B, die hängen alle in einer Kette hintereinander (wie ein LED Streifen) und sind insgesamt über drei Drähte angeschlossen. Das sind +5V, Masse und eine Datenleitung. An jeder LED findest Du für die Datenleitung einen Ein- und einen Ausgang.

      Schau mal hier: https://learn.adafruit.com/adafruit-neopixel-uberguide/basic-connections

      Passende Libraries für den Arduino wären fastLED oder Neopixel.

      Zum Thema gelbe Motoren, Verkabelung und Software bringe ich später noch etwas.

      Viele Grüße
      Jo

      • Hallo Jo, komme nochmals auf Dich zu. Ich habe nun alle Komponente zusammen und wäre soweit den Arduino nano zu programmieren. Kann ich den kompletten Quelltext von dir genauso auf den Arduino kopieren wie du ihn abgebildet hast ? Habe jedoch kein Display und keine LED’s. Ist leider alles Neuland für mich und ich habe mich wohl etwas überschätzt mit der Elektronik. Hoffe auf rasche Antwort von Dir, damit ich in einer Woche mit dem Strandbeest fertig werde. Vielen Dank und beste Grüsse

  14. Am 13 juni 2016 haben Sie geschrieben:
    Die Software ist fertig (die verwende ich ja schon in meinem Modell), aber die muss um ein paar Anpassungen für den Mehr-Modellbetrieb bereinigt und um ein paar Kommentare ergänzt werden. Das Schaltbild müsste ich überhaupt erstmal zeichnen.
    Wie ist es jetzt damit?

    • Hallo Bert,

      eine ganze Reihe von Kommentaren wurden vom CMS einfach ohne Benachrichtigung unterdrückt. Sorry. Ich habe den Artikel oben um die notwendigen Informationen ergänzt.
      Falls Euch zur Vervollständigung des Bausatzes noch etwas fehlt, meldet euch bitte wieder!
      Schön, dass das Strandbeest in das Land seiner Herkunft zurückkehrt :-)

      Viele Grüße
      Jo

  15. Hallo Joachim, habe heute deinen Quelltext wie Du ihn veröffentlicht hast, ins Arduino Programm kopiert und auf den Arduino nano uploaded. Leider kommen sofort Fehlermeldungen. Es ist vermutlich zu viel Text vorhanden?! Wie komme ich zu einem Programm, das funktioniert (sonst scheitere ich kläglich an meinem Schulprojekt). Arduino funktioniert wenn ich Examples drauflade… Jetzt fehlt nur noch das Programm, damit das Strandbeest läuft (ohne Display und LED’s). Danke für deine Hilfe!

    • Hallo Tom,

      der Aurduino sollte sich ohne Fehlermeldung programmieren lassen – egal ob ein Display oder die LEDs tatsächlich angeschlossen sind.
      Hast Du die benötigten Bibliotheken heruntergeladen und installiert? Falls Du jetzt ein großes Fragezeichen hast, dann lautet die Antwort vermutlich nein. Benötigt werden die Bibliotheken FastLED und U8glib. Wenn es nach der Installation immer noch Fehlermeldungen gibt, dann wäre es hilfreich, wenn Du sie mit postest.

      Beste Grüße
      Jo

      • Hallo Jo, die Fehlermeldung war zuerst bei den Zeilen (Nummerierung), da im Arduinoprogramm schon Zeilen vorhanden sind, dann kam die Fehlermeldung mit den Bibliotheken. Diese haben wir dann alle weggelassen, was die LED’s und das Display betreffen und blockweise auf den Arduino uploaded. Es gab dann auch keine Fehlermeldung mehr. Wir kamen bis void loop()
        {
        // put your main code here, to run repeatedly:
        chA = pulseIn(RCchA, HIGH, 30000);
        if (chA==0)
        {
        und hier hätte sich etwas bewegen müssen, was leider nicht der Fall war. Wir hatten Hilfe bis hierher von einem Informatiker, aber er kannte den Arduino nicht und so musste er sich zuerst einarbeiten. Er hat dann ein Blink Example von Arduino draufgeladen, aber leider blinkte es weiter und reagierte nicht auf Befehle. Er konnte den Puls nicht definieren, weiss nicht wo dies beschrieben ist, resp. woher er diesen ableiten kann. Wir haben nun hier aufgegeben und Plan B hervorgerufen: Und zwar haben wir zwei Servos auseinander genommen und die Regler an die gelben Motoren angeschlossen, damit wir diese verwenden können. Der Informatiker ist nun zwei Wochen in den Ferien, aber es lässt ihn nicht in Ruhe und wird es dann nochmals probieren. Mein Projekt muss ich aber nächste Woche abgeben und so ist es ok für mich mit Plan B. Vielen Dank trotz allem. Beste Grüsse, Tom

        • Hallo Tom,
          einerseits natürlich schade, dass es nicht wie ursprünglich geplant funktioniert hat. Andererseits hast Du Bastlerqualitäten bewiesen, in dem Du eine Umgehungslösung gefunden hast. Das ist mindestens genau so viel wert. Aus solchen Situationen nimmt man gewöhnlich mehr für sich mit, als wenn man einfach alles nach Plan zusammensteckt und es direkt funktioniert :-)

          Viel Erfolg mit dem Projekt und viele Grüße
          Jo

          • Hallo Jo, hoffe meine letzte Frage an dich. Beim Arduino Nano Pinout hast du bei D5 – L298D „EnA“ und bei D10 – L298D „EnB“. EnA und EnB sind bei meinem Motorregler (und ich habe denselben wie du), nicht besteckbar, d.h. ich kann diese beiden Pole nicht belegen, deshalb habe ich anstatt sechs nur die vier Kabel von D6 – D9 belegt mit In1-4. Ist das richtig so? Vielen Dank für deine Hilfe. Gruss Tom

          • Hallo Tom, ist da an Stelle der beiden Pins „gar nichts“ oder sind da zwei Steckbrücken/Jumper oder etwas Ähnliches?
            Gruß
            Jo

  16. Hallo Jo und Tom,
    Hier gibt es ein gute Tutorial über L298N (same as D?):
    http://www.instructables.com/id/Arduino-Modules-L298N-Dual-H-Bridge-Motor-Controll/
    in Step eins wird erklärt wie man mit die zwei Jumper umgeht.
    Und Jo, danke für deine Antwort, obwohl etwas spät. Ich hatte mich schon Gedanken gemacht über deine Gesundheit :-)
    Ich bin jetzt beschäfigt mit dem Elektronik-Schaltbild, Ich glaube ich versteh es jetzt…

    grüsse aus Groningen
    Bert Heijenga

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.