- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Rechter Motor hat keine Power

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Anzeige

    Powerstation Test
    Hmm, versuch die selbe code eins mal mit encoder[0]. Wie geht das? Im vergleich mit dem encoder[1] fall.

  2. #22
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2009
    Alter
    39
    Beiträge
    13
    Ohh man, das ich da nicht früher drauf gekommen bin

    Wenn ich mit encoder[0] arbeite hab ich genau das gleiche Problem.

    Werd also die Schaltung noch mal in diese Richtung prüfen müssen.
    Vielen Vielen Dank!!!!

    Hab da aber ein anderes kleines Programmtechnisches Problem.
    Vielleicht kann mir da mal jemand helfen. Hab wahrscheinlich ne kleine Denkblockade.

    Denn jedesmal wenn ein case im Switch fertig ist hängt sich mein Programm auf.

    Code:
    #include "asuro.h"
    #include "myasuro.h"
    
    int x=0;									//Zählvariablen für diverse Zählschleifen
    char emfangene_daten[10];
    
    
    void Goo(int d,int l)								//eigene go anweisung 
    {	
    	StatusLED(GREEN);
    	
    	SetMotorPower(d,d+5);								//Fahr los mit vorgegebenem Tempo,richtung über +/- Wert
    	
    	l=l*38/10;											//l ist die Strecke die zurück gelegt werden soll. 1cm = 3.8 ticks												
    	EncoderInit();
    		for(encoder[1]=0; encoder[1]<=l; )				//Abfrage nur von einem Encoder, da der andere defekt ist!
    		{
    			Msleep (10);
    		}
    	MotorSpeed(BREAK,BREAK);
    }
    
    
    int main(void)
    {
    
        
      Init();  									//Devinierter Zustand vom ATMEL
      
     
     while(1)
    {
    	  while (PollSwitch() == 0)
    	  { 
    		StatusLED (GREEN);
    		Msleep (500);
    		StatusLED (RED);
    		Msleep (500);
    	  }
    		
    		switch (PollSwitch())					//Auswahlmenü gesteuert über Pollswitch
    		{
    			case 1:emfang();					//aufruf von Emfang
    			break;
    			
    			case 4: 								//Kleine Fahranweisung zu Demo zwecken.
    			StatusLED (YELLOW);						//Funktioniert nicht!!!!
    			Msleep (2000);
    			
    			EncoderInit ();
    			for (x=1; x<=4; x++)					//Asuro fährt ein quadrat
    				{GoTurn ( 0, 45, 200);					//45° hier entspricht 90° drehung im real, da "grobe" encoderscheibe eingebaut
    				GoTurn (150, 0, 200);}
    			Msleep(1000);
    			
    			for (x=1; x<=2; x++)					//Asuro fährt einen kreis vorwärts und rückwärts
    				{if (x==1)
    				GoTurn (300, 90, 255);
    				else 
    				GoTurn (-300, -90, 255);
    				Msleep(500);}
    			break;
    		
    		
    			default: 								//Bei falscheingabe blinkt die Status LED 5x Gelb
    			for(x=1; x<=5; x++)
    				{StatusLED(OFF);
    				Msleep(500);
    				StatusLED(YELLOW);
    				Msleep(500);}
    		break;
    	  }
    		
    	return 0;
    	}
    }
    
    int emfang(void)							//Steuerung über Seriel
    {
    	EncoderInit ();
    	
    	
    	StatusLED (YELLOW);  
    	BackLED (ON, OFF);						
    	Msleep (500);
    	BackLED (OFF,ON);
    	Msleep (500);
    	BackLED (OFF,OFF);							//AUS damit, sonst probleme mit Odometrie!!!!
    	
    	SerWrite ("READY", 10);
    	SerPrint ("\n\r");
    	SerRead (emfangene_daten, 1, 0);			//Warte auf Daten, ohne timeout!!
    	
    	switch (emfangene_daten[0])
    	{
    		case'T':								//keine Daten erhalten
    		break;
    		
    		case '1':								//Wenn daten =1 fahr vor.
    		Goo( 100, 10);
    		break;
    		
    		case '2':								//wenn daten =2 fahr zurück
    		Goo (-100, 10);
    		break;
    		
    		default:								//sonst sendefehler 5xgelb
    		for(x=1; x<=5; x++)	
    		{
    			StatusLED(OFF);
    			Msleep(500);
    			StatusLED(YELLOW);
    			Msleep(500);
    		}
    		break;
    	}
    return 0;
    }
    Schon einmal Danke im Vorraus

  3. #23
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Hinter dem Case Statement ist das programm ja auch irgendwie zuende. Das Resturn 0 ist da zuviel, da sollte das Porgramm nie hinkommen. Wo solle es auch zurück hingehen von Main.

  4. #24
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo schocksnert (erinnert mich an 'Schock schwere Not'),

    erst einmal ein 'Willkommen im Forum'.

    Wenn ich alles richtig mitbekommen habe, dann hast du dir selber schon die Lösung gegeben.
    Der rechte Motor tut es 'angeblich' nicht. Aber halt nur beim GoTurn().
    Im letzten Post von dir steht im Kommentar: "Abfrage nur von einem Encoder, da der andere defekt ist! "
    Jepp, [1] ist der rechte Motor. Und da scheint deine Odometrie ja zu funktionieren.
    Also ist klar, das deine linke ODO-Seite eine Macke hat.
    In GoTurn() aber versuchen beide Seiten ausgewogen zu agieren. Also muss bei defekter linker ODO-Seite der Motor drehen, drehen, drehen. Aber es passiert nichts an den linken ODOs.
    Das Programm denkt also links ist keine Drehung und regelt die RECHTE Seite auf 0-Speed bis endlich Impulse von der linken Seite kommen.
    Die aber bleiben aus, und somit dreht der linke Moter die Zahnräder platt.

    Du hast also die mühevolle Aufgabe, dass du erst die linke Odometrie reparieren musst.

    Gruß Sternthaler.

    P.S.: Schön, dass dir mein Programm gefällt. Auch wenn es hier nicht helfen kann.
    Gib mal ne'n Tipp, wo hier Schnaps getrunken wird. Den Thread muss ich mir unbedingt ansehen
    Lieber Asuro programieren als arbeiten gehen.

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2009
    Alter
    39
    Beiträge
    13
    Hey danke für die schnelle Antwort.
    Werd die änderungenspäter mal ins Programm einpflegen und dann natürlich darüber berichten. Das mit dem Schnapps hatte ich bei der Suche nach der "Perfekten" abdeckung der Odometrie entdeckt und fand die Idee einfach nur Klasse Underberg

  6. #26
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Das ist am ende deine main code:
    Code:
    ...
       return 0; 
       } 
    }
    Siehst du warum er absturtzt? Den einer-letzte hacke ist noch von den while(1)-schleife. Den return 0; gehört dahinter.

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2009
    Alter
    39
    Beiträge
    13
    Hey danke für die Hilfe, manchmal sieht man vor lauter Bäumen den Wald nicht.

    Aber jetzt Funktioniert er einigermaßen. Muss jetzt nur noch den Fehler am Encoder finden. Bin aber guter Dinge das ich das Finde.

    Noch einmal VIELEN VIELEN DANK an alle die mir geholfen haben!!!!

    Grüße Alexander

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

12V Akku bauen