-         

Ergebnis 1 bis 3 von 3

Thema: Probleme mit PollSwitch

  1. #1

    Probleme mit PollSwitch

    Anzeige

    Hallo,

    ich habe mir schon einige Beiträge hier durchgelesen und versucht, mein Problem so zu lösen, allerdings habe ich es nicht ganz verstanden. Mein Problem ist, dass der Asuro sich nach einer Tasterbetägtigung dreht, jedoch dann nicht aufhört sich zu drehen, sondern die Drehung noch einige Male öfter macht. Im Forum habe ich gelesen, dass es etwas mit dem Kondensator zu tun haben könnte. Wie kann ich meinen Quelltext nun so verändern, dass das Problem nicht mehr auftritt?

    Code:
    #include "asuro.h"
    #define HALT 100
    //richtiges Programm mit Poll
    
    int main(void)
    {
    	Init();
    
    
    	unsigned int Ftrans[2];
    	unsigned char abgrund = FALSE;
    	unsigned char t;
    	
    
    	FrontLED(ON);
    	MotorDir(FWD,FWD);
    	
        while(1)
    	{
    		t = PollSwitch();
    		MotorDir(FWD,FWD);
    		LineData(Ftrans);
    		if(!(abgrund) && (t==0))
    		{
    			LineData(Ftrans);
    			if (Ftrans[1] > Ftrans[0])
    			{
    				MotorSpeed(90,230);
    				BackLED(OFF,ON);
    				StatusLED(GREEN);
    				abgrund = FALSE;
    			}
    			else if((Ftrans[0] < HALT) && (Ftrans[1] < HALT))
    			{
    				MotorDir(BREAK,BREAK);									
    				MotorSpeed(0,0);
    				StatusLED(RED);
    				abgrund=TRUE;
    			}
    			else
    			{
    				MotorSpeed(230,90);
    				BackLED(ON,OFF);
    				StatusLED(YELLOW);
    				abgrund = FALSE;
    			}
    		}
    		else if(abgrund)
    		{
    			MotorDir(FWD,FWD);
    			MotorSpeed(120,120);
    			Msleep(400);
    			MotorSpeed(140,0);
    			Msleep(1400);
    			abgrund=FALSE;
    		}
    		else if(t>0)
    		{
    			MotorDir(RWD,RWD);
    			MotorSpeed(185,0);
    			Msleep(1100);
    			MotorDir(BREAK,BREAK);
    			MotorSpeed(0,0);
    			abgrund=FALSE;
    		}
    	}
    	while(1)
    	return 0;
    }

    Grüße Markus

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Hi reini89,

    das liegt daran, dass du die Pollswitch() - Funktion mehrmals ausführen musst und damit sich der Kondensator C7 entlädt. Ist ein altes Leiden das Asuro.

    Es gibt hierzu schon viele Beträge im Forum.

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo Markus

    ich habe mir schon einige Beiträge hier durchgelesen und versucht, mein Problem so zu lösen, allerdings habe ich es nicht ganz verstanden.
    Es sind (meiner Meinung nach) eigentlich zwei Probleme die beim PollSwitch() auftreten. Zum einen können die ermittelten Werte durch Bauteilestreuung (oder falsche Bestückung) vom Soll abweichen. Dagegen hilft eine Anpassung der Tastenkalibierung in der Library (bei Versionen unter 2.7?) Die Formel dazu findet man am Ende der Funktion in der Datei asuro.c

    Zweites Problem sind die Störungen durch laufende Motoren bei der Abfrage. Diese kann man meist durch mehrfaches Einlesen der Werte und Vergleich unterdrücken. Ein einfacher Ansatz zur Tastenabfrage (es könnte auch ein falsch erkannter Abgrund Ursache für das Drehen sein):

    else if( (t>0) && (t==PollSwitch()) )

    Nur wenn das zweite Einlesen den selben Wert wie t ergibt dreht der asuro (nicht getestet, weil mein asuro noch Urlaub hat ;)

    Wie pinsel schreibt, gibt es zu diesem Thema aber mehrere Theorien...

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

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