- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Probleme nach Modifikation des Liniensensors

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2008
    Beiträge
    25

    Probleme nach Modifikation des Liniensensors

    Anzeige

    E-Bike
    Hallo miteinander!

    Ich habe seit dem umbau des Liniensensors (für US anbau) problemme mit den Motoren sie machen keine bewegung mehr wenn ich die Linienverfolgung einschalte hier mal das Programm
    Code:
    #include "asuro.h"
    
    int main(void){
    	unsigned int data[2];
    
    	Init();
    	FrontLED(ON);
    	MotorDir(FWD,FWD);
    	
    	while(1);{ 
    
    		LineData(data); 
    
    		if (data [0] > data [1] ) 
    		{MotorSpeed(200,150);} 
    		
    	else
    		{MotorSpeed(150,200);} 
    		}
    	return 0;
    }
    Die Front Led funzt und wenn ich das Sensorsignal zwischen Pin 25 oder Pin 26 nach V+ messe habe ich bei abgedunkeltem sensor 0,4V bei Hellichkeit VCC (bei ausgebautem Prozessor).

    Mit anderen Programmen wie z.B. dem quadrat für die Odometrie also dem :


    Code:
    // *******************************************
    // * Odometrie für ASURO                     *
    // * Roboter fährt ein Quadrat ab            *
    // *                                         *
    // *                                         *
    // * (c) 2007 Robin Gruber                   *
    // * Details zum Code in:                    *
    // * "Mehr Spaß mit ASURO, Band II"          *
    // *******************************************
    
    #include "asuro.h"
    
    // Schwellwert fr die Hell/Dunkel-Unterscheidung
    // Eventuell muss damit etwas variiert werden
    #define TRIGGERLEVEL 600
    #define HYSTERESIS 10
    #define LOW 0
    #define HIGH 1
    
    int main(void)
    {
        unsigned int data[2];
        signed int status[2]={0,0};
        // Startwert fr halbe Motorgeschwindigkeit
        signed int difference=0;
        unsigned int distance=0; 
        signed int speed;
        int i;
        Init();
        while(1) {
    	switch (distance) {
    		// Am Anfang der Strecke Vollgas
    		case 0: MotorDir(FWD,FWD); speed=255; break;
    		// Am Ende langsamer werden ...
    		case 150: speed=200; break;
    		case 160: speed=150; break;
    		// stehen bleiben
    		case 172: MotorDir(BREAK,BREAK);
    		          // etwas warten, bis der Roboter wirklich steht
    			  for (i=0; i<100; i++) {Sleep(255);}
    			  // auf der Stelle nach links drehen
    			  MotorDir(RWD,FWD); 
    			  speed=255;
    			  // und noch vermeiden, dass die Verz�erung
    			  // mehrmals aufgerufen wird
    			  distance=173; 
    			  break;
    		case 191: speed=200; break;
    		case 197: speed=150; break;
    		case 201: MotorDir(BREAK,BREAK); 
    	  	          // etwas warten, bis der Roboter wirklich steht
    			  for (i=0; i<100; i++) {Sleep(255);}
    			  MotorDir(FWD,FWD); speed=255;
    			  distance=0;
    			  break;
    	}
            // Helligkeitswerte der Lichtschranken auslesen
            OdometrieData(data);
            // Wechsel linker Sensor von niedrig auf hoch?
            if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) {
                status[0]=HIGH;
                difference++;
    	    distance++;
            }
            // Wechsel linker Sensor von hoch auf niedrig?
            if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) {
                status[0]=LOW;
                difference++;
    	    distance++;
            }
            // Wechsel rechter Sensor von niedrig auf hoch?
            if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) {
                status[1]=HIGH;
                difference--;
            }
            // Wechsel rechter Sensor von hoch auf niedrig?
            if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) {
                status[1]=LOW;
                difference--;
            }
            // zur Sicherheit: verhindern, dass der Differenzz�ler
            // den erlaubten Wertebereich verl�st
            if (difference<-speed) difference=-speed;
            if (difference>speed) difference=speed;
            
            // Status-LED noch entsprechend der erkannten Segmente
            // aufleuchten lassen, grn fr links, rot fr rechts
            StatusLED(status[0]+status[1]*2);
            
            // Z�ldifferenz passend auf die Motoren verteilen
            if (difference>0) MotorSpeed(speed-difference,speed);
            else MotorSpeed(speed,speed+difference);
            
        }
        return 0;
    }
    Funzen Die Motoren einwandfrei.

    HILFE!!

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Das Semikolon ist hier zuviel:

    while(1);{
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2008
    Beiträge
    25
    Danke für die schnelle antwort aber so einfach wars leider nicht

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Das war's nicht? Seltsam. Was tut sich hier:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
       unsigned int data[2];
    
       Init();
       FrontLED(ON);
       MotorDir(FWD,FWD);
       MotorSpeed(200,150);
       while(1)
       {
          LineData(data);
    
          if (data [0] > data [1])
             StatusLED(RED);
    		else
    		   StatusLED(YELLOW);
    	}
       return 0;
    }
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2008
    Beiträge
    25
    Er fährt eine lange rechtskurve die status led leuchtet gelb reagieren aber leider nicht auf den liniensensor.

    Was ich noch vergessen habe ich musste die kontackte mit kabel verbinden weil sich beim auslösen leider 2 lötaugen abgelöst haben ich habe die verbindungen schon mehrfach überprüft konnte aber noch keinen fehler finden was aber auch am schaltplan liegen könnte fall jemand einen schaltplan der die verbindungen auf der platine zeigt hat wär es super wenn er mir den schicken könnte.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    16.12.2009
    Beiträge
    71
    Hatte genau das gleiche Problem. Lötaugen waren futsch, dadurch aber auch die Verbindung zu R15. Habe das Problem auch mit ner Drahtbrücke gelöst.
    Schaltpläne sind in der Anleitung als PDF enthalten
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken platine_unten_142.jpg  

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2008
    Beiträge
    25
    Mit diesem Schaltplan habe ich es auch repariert ich will nur ausschließen dass ich beim übertragen den schaltplans auf ober und unterseiten der Platine was durcheinander gebracht habe.





    Edit:
    Dank des Fotos der Platinen unterseite habe ich gerade bemerkt das ich V+ von T9 und T10 an VCC (Pin 7) und nicht an AVCC (Pin 20) gelötet habe leider war das aber woll nicht der einzige fehler

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    16.12.2009
    Beiträge
    71
    Ich hab an Hand des Schaltplans die Verbindungen( überall wo d9 und 10 rangehen) mit nem Durchgangsprüfer gescheckt, und was nötig war mit ner Drahtbrücke repariert.Selbst vcc+ musste ich neu verkabeln. Beim Selbsttest funktioniert alles. Mit nem Lienieprogramm habe ich allerdings noch nicht probiert.
    Gruß Frank

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2008
    Beiträge
    25
    JUHU ich habs es lag woll doch an AVCC ich habe nur vergessen das ich zum testen mal andere fotowiderstände eingebaut habe nur sind die nicht so empfindlich wie sie sein sollten.


    Wenn ich jetzt noch den US Sensor zum laufen bringe bin ich glücklich.

Berechtigungen

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

12V Akku bauen