- 3D-Druck Einstieg und Tipps         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: Problem mit der Odometrie Hardwarefehler? [gelöst]

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Anzeige

    Praxistest und DIY Projekte
    @liggi
    Schön, dass es geht. Schade, dass du erst das funktionierende Programm gepostet hattest. Ja ja viel Wind um nichts gegeben.

    @damaltor
    hmmm, vertust du dich da mit den Liniensensoren T9 und T10?
    Bei denen ist das so, dass die Spannung dann größer wird.
    Die ODO-Sensoren T11 und T12 werden gegen Masse gezogen bei viel Licht. Damit geht die Spannung runter.
    Lieber Asuro programieren als arbeiten gehen.

  2. #22
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    mmh habs auch grad gemerkt... -.- schaltplan hilft
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    @damaltor
    Zum Schaltplan vom Asuro habe ich mir schon seit langer Zeit ein Icon in der Schnellstartleiste abgelegt.
    Auch ein Knopf zur ATmega8-Doku läßt sich immer gerne drücken. Was fehlt ist der Button zum gekühlten Bier. Da muss immer noch der Asuro fahren.
    Hey, schau mal auf die Uhr. Musst du morgen nicht zur FH? Oder wird noch gebüffelt?
    Lieber Asuro programieren als arbeiten gehen.

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    30
    Beiträge
    98
    Hallo Leute ich hab mal eine Frage:
    Habt ihr irgendwelche Vorrichtungen um Fremdlich von der Odometrie abzuhallten? Und ist es sinnvoll?

    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  5. #25
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    ein ausgeschnittener teil einer pralinenverpackung (diese plastik einlagen)... halbiert gibt das ne art schirm die etwas helfen kann. oder einen kleinen karton aus pappe bauen.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #26
    Neuer Benutzer
    Registriert seit
    01.09.2007
    Ort
    Rainrod
    Alter
    32
    Beiträge
    4
    Hallo
    Also ich hab da ein Problem mit meiner Odometrie.
    Ich hab grösstenteils den Code von liggi übernommen und ein wenig verändert.
    Ich poste jetzt nur mal die Funktion und die definierten Werte, sonst wird das so unübersichtlich.
    Was der Code machen soll:
    Der Asuro soll geradeausfahren: OK
    Sollte ein Taster gedrückt werden soll er aus der Funktion springen und entsprechend reagieren: OK
    Wenn er stehen bleibt soll er dies erkennen und reagieren:
    Und genau das funktioniert nur teilweise. Wenn ich ihn beim Fahren mit dem Finger stoppe, passiert gar nichts. Erst wenn ich ihn ein paar Ticks mit dem Zahnrad machen lasse erkennt er, dass da was nicht stimmt und fährt zurück.
    Könnt ihr euch den Code vll. mal durchgucken und mir sagen wo's hakt?
    Bleibt die Schleife irgendwo hängen? Weil eigentlich sollte die ja die ganze Zeit laufen und dann auch ständig prüfen, ob der Asuro steht.

    LG Nils


    Code:
    #define TRIGGERLEVEL 600
    #define PUFFER 3 
    #define COUNTERABFRAGE 40
    
    #define LOW 0
    #define HIGH 1
    #define SPEED 120
    
    int odometrie() 
    {
    
          unsigned int data[2]; // für die Odometrie Daten
          signed int status[2] = {0, 0}; // vorheriger Status der Odometrie links und rechts
          signed int difference = 0;
    	  int weg = 0; // Bei jedem Wechsel der Odometrie wird weg für beide Räder erhöht.
    	  int weg_alt = 0; // Zwischenspeichern des vorherigen gefahrenen Weges
    	  int counter = 0;  // Wenn counter einen bestimmten Wert (COUNTERABFRAGE) erreicht, wird weg mit weg_alt verglichen und entsprechend reagiert
       
    	MotorDir(FWD,FWD);
    	MotorSpeed(SPEED,SPEED);
    	
    	while(PollSwitch() == 0)  
    	{
    	  OdometrieData(data);                               
                    if ((status[0] == LOW) && (data[0] < TRIGGERLEVEL))      /*Wenn linker Sensor von niedrig auf hoch wechselt*/
                       {
                       status[0] = HIGH;
                       difference++;
    	      weg++;
                   }
          
          if ((status[0] == HIGH) && (data[0] > TRIGGERLEVEL))   /*Wenn linker Sensor von hoch auf niedrig wechselt*/
          {
             status[0] = LOW;
             difference++;
              weg++;
          }
          if ((status[1] == LOW) && (data[1] < TRIGGERLEVEL))      /*Wenn rechter Sensor von niedrig auf hoch wechselt*/
          {
             status[1] = HIGH;
             difference--;
             weg++;
          }
          if ((status[1] == HIGH) && (data[1] > TRIGGERLEVEL))   /*Wenn rechter Sensor von hoch auf niedrig wechselt*/
          {
             status[1] = LOW;
             difference--;
             weg++;
          }
          
          if (difference < !SPEED)                                 /*Sicherheitsabfragen*/
          {
             difference = !SPEED;
          }                  
          if (difference > SPEED)
          {
             difference = SPEED;
          }    
    
            
          if (difference > 0)
          {
             MotorSpeed(SPEED - difference, SPEED);                     /*Motoren einstellen*/
          }      
          else if (difference < 0)
          {
             MotorSpeed(SPEED, SPEED + difference);
          }
          if (SPEED - difference <= 100)
          {
             difference=0;
          }
    	  
        counter++;
    	   if (counter == COUNTERABFRAGE)
    	    {
    		  counter = 0;
    		   if (weg - PUFFER <= weg_alt)
    		   {
    		    weg_alt = 0;
    		    weg = 0;
    			
    			// Zurückfahren mit einer anderen Funktion
    			
    			}
    			else
    			{ 
    			weg_alt = weg;
    			}
    		}
        	
    	
    	
    	
    	
    	}
    }
    [/code]

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    05.12.2007
    Ort
    landkreis Cloppenburg
    Alter
    34
    Beiträge
    5
    sorry damaltor,

    jetzt hab ich es mit Main auf mal geschafft, frag nicht wie^^

    jedenfalls wenn ich das Prog
    Code:
    #include <asuro.h>
    
    int main(void)
    {
    void PrintInt(int wert)
    {
        char text[16]="      ";
        itoa(wert,text,10);
        SerWrite(text,strlen(text));
    }
    
    void Msleep(int dauer)
    {
        int z;
        for(z=0;z<dauer;z++) Sleep(36);
    } 
      return 0;
    }
    in meinem AVR Studio 4 hab und F7 drücke kommt ne FehlerMeldung
    ( Fehlermeldung : avr- objdump -KeinDatenträger
    Es befindet sich kein Datenträger im Laufwerk. Legen Sie einen Datenträger in Laufwerk \Device\Harddisk4\DR9 ein

    Abbrechen ? Wiederholen? Weiter?)

    egal was ich drücke die meldung kommt immer wieder --_--
    obwohl ich asuro.c in Sourcefiles dirn hab und die Lib und Inc datei auch, mit libAsuro.a
    und Optimation...auf 00

    wenn ich die über den TaskMangaer abschiessen lasse geht alles 1A

    und ne 2. Frage....wie schaffe ich es mit einem USB Transciver es mir über den HyperTerminal ausgeben zu lassen?

  8. #28
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    zeige mal deinen code her bitte.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  9. #29
    Neuer Benutzer Öfters hier
    Registriert seit
    05.12.2007
    Ort
    landkreis Cloppenburg
    Alter
    34
    Beiträge
    5
    sorry damaltor,

    jetzt hab ich es mit Main auf mal geschafft, frag nicht wie^^ [== erldedigtes Problem ]

    jedenfalls wenn ich das Prog
    Code:
    #include <asuro.h>
    
    int main(void)
    {
    void PrintInt(int wert)
    {
        char text[16]="      ";
        itoa(wert,text,10);
        SerWrite(text,strlen(text));
    }
    
    void Msleep(int dauer)
    {
        int z;
        for(z=0;z<dauer;z++) Sleep(36);
    }
      return 0;
    }

    in meinem AVR Studio 4 hab und F7 drücke kommt ne FehlerMeldung
    ( Fehlermeldung : avr- objdump -KeinDatenträger
    Es befindet sich kein Datenträger im Laufwerk. Legen Sie einen Datenträger in Laufwerk \Device\Harddisk4\DR9 ein

    Abbrechen ? Wiederholen? Weiter?)

    egal was ich drücke die meldung kommt immer wieder --_-- Eh?
    obwohl ich asuro.c in Sourcefiles dirn hab und die Lib und Inc datei auch, mit libAsuro.a
    und Optimation...auf 00

    wenn ich die über den TaskMangaer abschiessen lasse geht alles 1A

    und ne 2. Frage....wie schaffe ich es mit einem USB Transciver es mir über den HyperTerminal ausgeben zu lassen?
    CSS-Clan ; www.notouch.de
    Mit Macht folgt große Verantwortung;1 Min was falsches im Leben machen, hat Lebenslange folgen

  10. #30
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    die fehlermeldung ist etwas suspekt. aber das scheint ein fehler im studio zu sein.

    der USB transceiver kann nur mit dem ganz alten treiber von der cd oder mit dem allerneuesten von ftdi text im hyperterminal ausgeben, mit dem treiber von der arexx seite geht das NICHT. wenn du mehr infos brauchst, dann sag bescheid oder frag die suchfunktion mal, das problem ist bekannt.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

Solar Speicher und Akkus Tests