-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: ASURO Projekt Einen Motor pausieren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2017
    Beiträge
    7

    ASURO Projekt Einen Motor pausieren

    Anzeige

    Hallo
    Ich bin Schüler und anfänger was Programmieren betrifft... weshalb ich mir leider alles zusammenschnipseln muss.

    Mein Problemm ist, dass ich ein Projekt mit dem ASURO erarbeiten muss. Darum habe ich ihn zu einer Sortiermaschine umgebaut die drei verschieden große Murmeln sortiert. Ein Motor wirft meine Murmel in die Rollbahn und die Fototransistoren erkennen die jeweilige Kugelgröße durch mehr oder weniger helligkeit. Je nach Kugelgröße richtet der zweite Motor meinen Sortierarm aus, so das die Kugel in das gewünschte Fach rollt.
    Problem ist nun, das der Auswerfmotor {rechter Motor} (ganz am Ende des beigefügten Programmes siehe !!!!!!!! ) die ganze zeit läuft er soll aber eine bestimmte zeit pausieren bis die Kugel jnten ankommt. Mit Msleep funktioniert das ja nicht, da sonst das ganze Programm stopt und meine Fototransistoren die vorbeirollende Kugel nicht erkennen.

    Gibt es hier eine Möglichkeit nur den auswerf Motor eine bestimmte Zeit pausieren zu lasen ?

    #include <avr/io.h>
    #include "asuro.h"
    int main(void)
    {
    Init();
    unsigned int data[2]; //Initialisiert zwei Int-werte hintereinander
    FrontLED(ON);
    Msleep(1000);
    while (1)
    {


    LineData(data);

    if ((data[0]<700) && (data [1]<700))
    {
    MotorDir(FWD,FWD);
    MotorSpeed(85,0);
    Msleep(160);
    MotorSpeed(0,0);
    Msleep(3000);
    MotorDir(RWD,RWD);
    MotorSpeed(85,0);
    Msleep(160);
    MotorSpeed(0,0);

    }

    if ((data[0]>700) && (data[1]>700))
    {
    MotorDir(FWD,FWD);
    MotorSpeed(0,0);

    }

    if ((data[0]>700) && (data[1]<700))
    {
    MotorDir(RWD,RWD);
    MotorSpeed(85,0);
    Msleep(160);
    MotorSpeed(0,0);
    Msleep(3000);
    MotorDir(FWD,FWD);
    MotorSpeed(85,0);
    Msleep(160);
    MotorSpeed(0,0);
    }

    MotorDir(FWD,FWD); !!!!!!!!!!!!
    MotorSpeed(0,100);
    Msleep(480);
    MotorSpeed(0,0);


    }
    }
    Danke

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    49
    Beiträge
    2.581
    Kann man machen, aber zum Sortieren, sollen doch drei verschiedene Positionen angefahren werden.
    Da der Asuro ja Odometrie hat,
    Klicke auf die Grafik für eine größere Ansicht

Name:	odometrie.jpg
Hits:	3
Größe:	6,3 KB
ID:	32590
    kann man auch einfach die Position anfahren und am Ende der Kugelbahn noch eine Lichtschranke anbauen.
    Wenn eine Kugel die Sortierlichtschranken durchläuft wird einmal der Motor angewiesen eine Position anzufahren und eine Merkvariable gesetzt.
    Wenn der Motor die Position erreicht hat (Zählen der Farbwechsel am Odometriesensor), bleibt diese Positionsvorgabe erhalten, bis die Lichtschranke am ende durchlaufne wird und diese die Merkvariable wieder löscht.
    Damit ist dann auch die Freigabe für die nächste Kugel an den Motor 1 gegeben.
    Du kannst Den Code übrigens auch in Code Tags packen.
    Code:
    Code
    Dann wird der Post nicht ellenlang.

    Die Funktion ist unter erweitert.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2017
    Beiträge
    7
    Hallo i make it

    Erstmal Danke für die Tipps nur ist es so, dass wir die Odometrie nicht verwenden sollen, da auch diese nicht 100% genau ist weshalb ich es mit einem Anschlag gebaut habe. Also bei ganz kleiner Kugel gährt der Motor garnicht bei groß nach rechts und klein nach links jeweils bis maximal Anschlag.
    Die Anlage ist auch gebaut wehalb ich auch beide Fototransistoren schon verbaut habe um die Kugelgrößen auszulesen.
    Nun ist es so, dass ich seit zwei Wochen versuche mein Programm umzuschreiben, um zu verhindern, dass ich meine ganze Anlage umbauen muss.
    Leider habe ich wenig Programmierkenntnisse und mein Lehrer auch. Und an den Prüfer kann ich mich nicht wenden.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    49
    Beiträge
    2.581
    Hm, und wie findest Du wieder in die Mitte wenn die ganz kleine Kugel als drittes kommt?
    Da fährt der Motor ja je nach Richtung von der aus er kommt immer bis zum jeweils gegenüberliegenden Anschlag.

    Das funktioniert mit den Anschlägen also prinzipbedingt nur für zwei Positionen.
    Aber selbst da könnte man mit je einem Taster pro Position arbeiten der bei Betätigen die Position als erreicht anzeigt und der Motor über diese Variable dann angehalten wird, bis die Rinne frei ist und die Nächste Kugel "vermessen" wird.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2017
    Beiträge
    7
    Der Motor fährt mit einer gewissen Geschwindigeit, für eine bestimmte Zeit, wie im Programm beschrieben. Bei der ganz kleinen Kugel fährt der Motor garnicht. So funktionieren slle drei möglichkeiten. Das ist ja auch nicht das Problem, denn es funktioniert bis auf den 2. Motor. Problem ist hier der Motor der die Kugeln einzeln aus dem Sammelbehälter herausbefördert. Er soll nämlich immer zu einer bestimmten Zeit die nächste Kugel auf die Sortierbahn befördern. Doch wie bekomme ich das hin? So das der Motor alle 5 sekunden zum beispiel eine Kugel losschickt weil mit MotorDir(Break,Break); und mit Msleep funktioniert es nicht gewünscht.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    49
    Beiträge
    2.581

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2017
    Beiträge
    7
    Danke für den Tipp leider funktioniert das nicht, da es eine ähnliche Funktion wie Msleep ausführt.
    Ich bräuchte einen befehl der in meiner Schleife eine zeitbegrenzte Schleife startet in der der Auswerfmotor nicht inbegriffen ist, so dass das Programm meine Fototransistoren in dem Zeitraum wo die Kugeln vorbeirollen ausließt. Anschließend den Sortiermotor bewegt und dann die Schleife wieder beendet und zum Auswerfmotor springt. ?!

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    30
    Beiträge
    4.601
    Du hast verschiedene Timer, die Interrupts auslösen können. Somit kannst du Zähler bauen die bei einem Interrupt hochzählen und darauf reagieren.

    PS: Codes bitte mit Codetags versehen.

    MfG Hannes

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    49
    Beiträge
    2.581
    Zitat Zitat von luba1248 Beitrag anzeigen
    leider funktioniert das nicht, da es eine ähnliche Funktion wie Msleep ausführt.
    Ganz und gar nicht.
    http://www.asurowiki.de/pmwiki/pub/html/time_8c.html
    Gettime ist zwar wie Mssleep in der time.c, aber der Befehl holt nur die Systemzeit.
    Damit macht man eine Zeitbegrenzte Schleife.
    Bei jedem Durchlauf des Hauptprogramms holt man einmal mit Gettime die Systemzeit unf schreibt sie in Variable A.
    Da wo die Wartezeit ablaufen soll, definiert man einen Wert für die Wartezeit (C)und übergibt dann einmal! den Wert der Variablen A in eine andere Variable B.
    Danach vergleicht man immer nur ob A minus B kleiner ist als C.
    Solange die Bedingung erfüllt ist lässt man die Motorvariable auf aus, sonst auf an.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2017
    Beiträge
    7
    Okay dann tut es mir leid ich probiere es nochmal bin nur etwas unfähig... Danke noch

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 28.06.2007, 19:34
  2. Was für einen Motor fur einen Rasenmäher?
    Von LLiinnuuxx im Forum Motoren
    Antworten: 76
    Letzter Beitrag: 07.11.2006, 21:15
  3. Suche einen Motor für einen Roboterarm
    Von Battle MC im Forum Motoren
    Antworten: 20
    Letzter Beitrag: 22.03.2006, 07:50
  4. Was für einen Motor?
    Von Blubb im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 01.03.2005, 17:59
  5. Projekt: Motor per PC steuern
    Von paramedic im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 04.12.2004, 00:20

Stichworte

Berechtigungen

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