- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 566

Thema: outdoor I

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Klebwax Beitrag anzeigen
    Das sehe ich ganz anders. Auch wenn ich kein AVR-Fan bin, ist der Mega2560 schon ziemlich kräftig. Nur mal so zum Vergleich, obwohl die "MIPS" nicht so wirklich vergleichbar sind: für den Mega werden 16 MIPS angegeben, für den ersten PC mit 8088 0,75 MIPS und für die ersten 386 2,15 MIPS (und da lief schonmal Windows drauf). Um deine Aufgaben zu schaffen hat der Mega ausreichend MIPS und eine Menge eingebaute Hardware zur Unterstützung.
    ich glaube meine probleme beruhen nicht auf der ungenügenden rechenpower des mega2560, sondern am nicht funktionierendem timing der abläufe "fahren" und "orten"...

    Zitat Zitat von Klebwax Beitrag anzeigen
    Ich versuche mal ein Konzept zu skizzieren, wie das IMHO machbar ist. Es bietet sich an, mit den Steppern anzufangen. Wenn ich mich richtig erinnere, taktest du mit 4ms, wenn es mal etwas schneller sein soll, könnten es auch 2ms sein. Ich würde also einen Timerinterrupt mit ca. 2ms aufsetzen. Von diesem werden unabhängig von der Mainloop die Motoren bedient. Gleichzeitig werden alle Schalter und Kontakte eingelesen und entprellt.
    leuchtet absolut ein, ich hatte (und habe teilweise immer noch) schwierigkeiten die kontrolle der Stepper allein so zu machen, dass es einigermassen läuft, anfangs ohne eine lib, dann mit der accelstepper lib und zuletzt mit einem mix von beidem. Stepper allein würden nun laufen, im prinzip so, wie ich es wollte...
    Ich bin dann, was die weitergehenden funktionen der roboters betrifft, einem anderen konzept gefolgt, der von Rabenauge beschrieben wurde:

    Ich verwende einen timer:

    Code:
    void timer()
    {
      aktuelle_timer_millis = millis();
    
      if (aktuelle_timer_millis - vergangene_timer_millis >= interval_timer)  // halbe sekunde um
      {
        vergangene_timer_millis = aktuelle_timer_millis;
        halbe_tick ++; // 500ms sind um
    
        if (halbe_tick > 2) // hier ist eine volle Sekunde vorbei
        {
          halbe_tick = 1; // wechselt alle halbe Sekunde
          sekunden_tick++;// wechselt jede volle Sekunde
    
          Serial.println(sekunden_tick);
    
        }
        if (sekunden_tick >= 11) // mehr brauchen wir nicht
        {
          sekunden_tick = 0;
    
        }
    
      }
    }
    und "sekundenaufgaben"
    Code:
    void sekunden_aufgaben()
    {
      if (sekunden_tick == 1)
      {
        //    spannung_messung_gemacht = 0;
      }
    
      if ((sekunden_tick == 2) && (spannung_messung_gemacht == 0))
      {
        //    spannung_messen_chip();
        //    spannung_messen_3();
      }
    
      if (sekunden_tick == 3)
      {
        ping_zwei_sensoren_gemacht = 0;
        //    myservo.write(35);
      }
    
      if ((sekunden_tick == 4) && (ping_zwei_sensoren_gemacht == 0))
      {
          sonar_2_sensoren ();
          start_1();
      }
      if (sekunden_tick == 5)
      {
    
      }
      if (sekunden_tick == 6)
      {
        ping_zwei_sensoren_gemacht = 0;
        //    myservo.write(70);
      }
    
      if ((sekunden_tick == 7) && (ping_zwei_sensoren_gemacht == 0))
      {
          sonar_2_sensoren ();
          start_1();
      }
    
      if (sekunden_tick == 8)
      {
        //    hindernis_vorh_mitte_entprellt();
      }
    
      if (sekunden_tick == 9)
      {
        ping_zwei_sensoren_gemacht = 0;
        //    myservo.write(0);
      }
    
      if ((sekunden_tick == 10) && (ping_zwei_sensoren_gemacht == 0))
      {
          sonar_2_sensoren ();
          start_1();
      }
    
      if (sekunden_tick == 11)
      {
    
      }
    }
    die beide in der loop() laufen...

    Zitat Zitat von Klebwax Beitrag anzeigen
    Nun zu den US-Sensoren. Eigentlich sind sie ein schlechtes Design. Als sie mal erfunden wurden, waren sie reine Hardware bestehend aus Treiber, OP-Amps und Komparator. Die echte Auswertung musste der µC machen. Soweit war das in Ordnung. Der neueste Schaltplan, den ich gesehen habe, hat aber einen eigenen Prozessor drauf, der das eigentlich erledigen könnte. Um aber mit den alten Teilen kompatibel zu sein, erzeugt der die gleichen Signale wie sie. Aber auch dafür hat der Mega Unterstützung, den Input-Capture. Damit kann man das zeitliche Eintreten einer Taktflanke automatisch aufzeichnen, ohne den Prozessor zu blockieren. Es gibt davon mehrere Einheiten, damit kann man auch mehrere Sensoren, möglicherweise abwechselnd, laufen lassen.
    auch die habe ich schon verwendet, ohne dass sich die Stepper (allerdings eine andere art Stepper als die NEMA17 und die customstepper lib) sich mit irgendetwas anderem ins gehege gekommen wären....


    Zitat Zitat von Klebwax Beitrag anzeigen
    Die Vorstellung, daß das Aufteilen der Aufgaben auf mehrere Prozessoren einem das Leben erleichtert, ist trügerisch. Am Ende ist der Aufwand, die µCs zu überwachen und zu synchronisieren und dabei kein Ereignis zu verpassen größer, als alles mit einem zu erledigen.
    bei der verwendung der timerfunktion und der sekundenaufgaben dachte ich es wäre (natürlich durch zwei controler und I2C etwas verkompliziert) relativ einfach ein paar werte von einem mc zu generieren (die ortungsabstände) um sie vom anderen controler zu lesen und auszuwerten...

    Was die ISR's betrifft, bin ich trotz mehrere kurze anläufe immer wieder davor zurückgeschreckt, wenn sich nur eine andere (vielleicht auch nur vermeintlich einfachere) methode der lösung angeboten habe...
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Klebwax Beitrag anzeigen
    Ich versuche mal ein Konzept zu skizzieren, wie das IMHO machbar ist. Es bietet sich an, mit den Steppern anzufangen. Wenn ich mich richtig erinnere, taktest du mit 4ms, wenn es mal etwas schneller sein soll, könnten es auch 2ms sein. Ich würde also einen Timerinterrupt mit ca. 2ms aufsetzen. Von diesem werden unabhängig von der Mainloop die Motoren bedient. Gleichzeitig werden alle Schalter und Kontakte eingelesen und entprellt.
    ich möchte mein letztes statement etwas ergänzen:
    natürlich weiss ich um die vorteile der ISR routinen, habe auch versucht mich in die problematik in verschiedenen tutorials und anderen webseiten einzulesen, bin dabei aber nicht wirklich weitergekommen ...
    Es wäre vielleicht ein versuch wert, wenn jemand mit mir zusammen versuchen würde, die problematik schritt für schritt durchzuarbeiten, an codebeispielen, fragen und erklärungen...
    Insofern sollte mein letzte äusserung hier im thread keine rigorose ablehnung in richtung ISR sein. Den thread würde das sicher bereichern...
    gruß inka

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,
    letzter stand heute - trockenlauf für die horizontale und vertikale hindernis-erkennung - die verfizierung in "echt" folgt in den nächsten tagen...
    gruß inka

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Abstandsmessung Outdoor bis 3m
    Von robo218 im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 14.12.2017, 06:56
  2. outdoor spy robot
    Von jancrombach im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 14.08.2010, 13:09
  3. Outdoor Roboter
    Von OsramLED im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 07.08.2006, 09:34
  4. Outdoor-Robo
    Von RobotrixerP im Forum Mechanik
    Antworten: 3
    Letzter Beitrag: 16.04.2006, 18:38
  5. Outdoor - Navigation
    Von Quaio im Forum Sensoren / Sensorik
    Antworten: 37
    Letzter Beitrag: 21.04.2005, 12:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress