- LiTime Speicher und Akkus         
Seite 1 von 8 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 72

Thema: Probleme mit 22er-Lochscheiben

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180

    Probleme mit 22er-Lochscheiben

    hi sternthaler,

    ich habe ja bereits geschrieben, dass an neuen lochscheiben gearbeitet wird. Die sind nun fertig und es gibt probleme:
    - anzahl löcher - 22, ursprünglich 4 sw segmente und 4 ws segmente, die dann durch 8 löcher ersetzt wurden
    - verhältnis alt/neu = 1:2,75, in dem verhältnis verringerte ich auch die variable MY_GO_ENC_COUNT_VALUE auf 5723L . das war notwendig, weil mein asuro schon beim versuch die go funktion mit diesem programm zu testen fast vom tisch gefallen wäre. trotz der vorherigen ermittlung von ODO DARK und LIGHT werten, die nun so groß sind:
    MY_ODO_LIGHT_VALUE_L 76
    MY_ODO_DARK_VALUE_L 47
    MY_ODO_LIGHT_VALUE_R 87
    MY_ODO_DARK_VALUE_R 55

    und nun zum problem: TURN

    -die funktion lässt sich auf dem asuro nicht starten
    - manuelle verändeung in der myasuro.h lassen sich zwar durchführen, aber:

    sollte der wert im gleichen verhältnis 2,75 angepasst werden, wäre es 69 (ursprünglich bei 8 löchern 192)...
    Diese veränderun bewirkt aber nicht, dass der asuro beim turn(90,150) auch ein 90° winkel dreht, sondern einen viel kleineren. Manuelle veränderungen (erhöhungen) des wertes bewirken eine gewisse vergrößerung des winkels, ab dem wert 350 dreht der asuro überhaupt nicht, beim einsatz des test programms aus der encoder.c (quadrat fahren) fährt er vor, zuckt kurz und fährt wieder vor...
    was kann ich machen???
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken 2007_10_25_01-1_153.jpg  
    gruß inka

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo inka,
    für MY_TURN_ENC_COUNT_VALUE muss auf alle Fälle ein größerer Wert benutzt werden.
    Wenn du also vorher 192 hattest, sollten dann so ca. 530 benutzt werden.
    Ich habe mal in allen mir vorliegenden LIB-Version nachgeschaut. An den Variablen-Definitionen kann es eigentlich nicht liegen. Die sind immer mindestens mit int definiert worden.

    Was mich aber stark wundert ist der alte Wert von 192 bei 4/4-er Scheiben bei dir.
    Ich habe die 8/8-er Scheiben am Asuro. Bei mir habe ich ca. einen Wert von 215. Somit liegen wir nicht weit auseinander. Warum?
    Im Verhältnis zu meinen Scheiben sollte dein alter Wert dann nur bei ca. 108 liegen. Multipliziert mit den 2,75 also bei 300. Und damit schon viel zu weit weg von deinem Versuch mit 350.
    Könnte es sein, dass bei dir der Asuro bei Test 4 (Turn) 180° Grad dreht? Er soll nur 90° Grad drehen! (Alte SW-Scheiben)

    Was passiert überhaupt beim ausprobieren mit diesem Ermittlungsprogramm?
    Du solltest auf alle Fälle immer Test 1 (Tasten) und Test 2 (Hell-/Dunkel-Werte) machen.
    Test 3 (Go) und Test 4 (Turn) sind unabhängig voneinander.

    Liefert Test 3 (Go) funktionsfähige Werte?
    Bei Test 4 (Turn) wird beim Drücken der Tasten 'zu groß' bzw. 'zu klein' am Asuro der aktuelle Wert im PC-Programm rechts unter 'Daten' ausgegeben. Das sind die Werte in <>-Klammern. Was kommt da?


    Es gibt aber noch eine andere Variante, die dich wahrscheinlich zum heulen bringen würde.
    Du schreibst:
    anzahl löcher - 22
    Wenn auf der Scheibe nun 22 Löcher sind, ist es nämlich möglich, dass die Abfrage der Sensoren in der Lib zu langsam ist um die Löcher alle mitzubekommen. (Auf dem Foto gehe ich aber doch nur von 8 Löchern aus.)
    Eigentlich sollte dann aber das drehen/fahren immer viel zu weit sein, da ja 'angeblich' noch keine Tik's gefahren wurden, wenn sie nicht gemessen werden konnten. Also weiterfahren wäre angesagt.

    Im Moment bin ich mit meinem Latein am Ende.
    Poste mal ein paar Daten aus dem PC-Programm vom Test 4(Turn) und evl. auch mal deinen Programmcode.

    Gruß Sternthaler

    P.S.: Hier muss ich mal Reklame für inkas tollen Umbau machen.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken ansicht_bei_test_4__turn_.jpg  
    Lieber Asuro programieren als arbeiten gehen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hi sternthaler,

    momentan habe ich noch größere probleme, nicht einmal das go(200,150) geht, er fährt einfach nur geradeaus ohne anzuhalten...Ich poste hier mal die myasuro.h:
    Code:
    /* Tastaturabfrage */
    /*! Faktor zur Berechnung der gedrueckten Tasten.\n
          Der Originalwert ist \b 61L und koennten im Bereich zwischen ca. 58L und
          65L schwanken. Dieser Wert gleicht Toleranzen der Wiederstaende an den
          Tastern aus.
    */
    //#define MY_SWITCH_VALUE           61L   /*!< Multiplikator fuer Tasterwerte */
    #define MY_SWITCH_VALUE           63L   //20_08_2007
    
    /* Odometrie / Encoder */
    /*! Wert, der in der Odometrie ueberschritten werden muss, um zum
        weiterzaehlen der Ticks in encoder[] zu fuehren bei aktivierter
        Automatik\n
        Die Originalwerte (links, rechts) sind \b 160.
        Diese Werte sind sehr stark vom Umgebungslicht abhaengig.
        Sie MUESSEN GROESSER als die Werte fuer MY_ODO_DARK_VALUE_L sein.
    */
    //#define MY_ODO_LIGHT_VALUE_L     160    /*!< Encoderschwellwert fuer Hell (linke Seite) */
    //#define MY_ODO_LIGHT_VALUE_L     97    //20.08.2007
    //#define MY_ODO_LIGHT_VALUE_L     105    //16.10.2007
    #define MY_ODO_LIGHT_VALUE_L     76    //24.10.2007
    /*! Wert, der in der Odometrie unterschritten werden muss, um zum
        weiterzaehlen der Ticks in encoder[] zu fuehren bei aktivierter
        Automatik\n
        Die Originalwerte (links, rechts) sind \b 140.
        Diese Werte sind sehr stark vom Umgebungslicht abhaengig.
        Sie MUESSEN KLEINER als die Werte fuer MY_ODO_LIGHT_VALUE_L sein.
    */
    //#define MY_ODO_DARK_VALUE_L      140    /*!< Encoderschwellwert fuer Dunkel (linke Seite) */
    //#define MY_ODO_DARK_VALUE_L      59    //20.08.2007
    //#define MY_ODO_DARK_VALUE_L      65    //16.10.2007
    #define MY_ODO_DARK_VALUE_L      47    //24.10.2007
    /*! Wert, der in der Odometrie ueberschritten werden muss, um zum
        weiterzaehlen der Ticks in encoder[] zu fuehren bei aktivierter
        Automatik\n
        Die Originalwerte (links, rechts) sind \b 160.
        Diese Werte sind sehr stark vom Umgebungslicht abhaengig.
        Sie MUESSEN GROESSER als die Werte fuer MY_ODO_DARK_VALUE_R sein.
    */
    //#define MY_ODO_LIGHT_VALUE_R     160    /*!< Encoderschwellwert fuer Hell (rechte Seite) */
    //#define MY_ODO_LIGHT_VALUE_R     107    //16.10.2007
    #define MY_ODO_LIGHT_VALUE_R     87    //24.10.2007
    /*! Wert, der in der Odometrie unterschritten werden muss, um zum
        weiterzaehlen der Ticks in encoder[] zu fuehren bei aktivierter
        Automatik\n
        Die Originalwerte (links, rechts) sind \b 140.
        Diese Werte sind sehr stark vom Umgebungslicht abhaengig.
        Sie MUESSEN KLEINER als die Werte fuer MY_ODO_LIGHT_VALUE_R sein.
    */
    //#define MY_ODO_DARK_VALUE_R      140    /*!< Encoderschwellwert fuer Dunkel (rechte Seite) */
    //#define MY_ODO_DARK_VALUE_R      66    //16.10.2007
    #define MY_ODO_DARK_VALUE_R      55    //24.10.2007
    /* Werte für 12 Segmente Encoder */
    /*! Faktor zur Berechnung von Ticks um aus den in mm angegebenen Parameter
        umzurechnen.\n
        Der Originalwert ist \b 19363L und ist von der Anzahl der schwarz/weiss
        Teilstuecke auf den Odometriescheiben abhaengig.\n
        Der Originalwert wurde durch stochri ermittelt.
    */
    //#define MY_GO_ENC_COUNT_VALUE  19363L   /*!< GO Funktion, Divisor fuer Entfernung   */
    #define MY_GO_ENC_COUNT_VALUE  15740L   //20.08.2007
    //#define MY_GO_ENC_COUNT_VALUE  5723L   //24.10.2007
    /*! Faktor zur Berechnung von Ticks um aus den in Grad angegebenen Parameter
        umzurechnen.\n
        Der Originalwert ist \b 177L und ist von der Anzahl der schwarz/weiss
        Teilstuecke auf den Odometriescheiben abhaengig.\n
        Der Originalwert wurde durch stochri ermittelt.
    */
    //#define MY_TURN_ENC_COUNT_VALUE  177L   /*!< Turn Funktion, Mutiplikator fuer Winkel */
    //#define MY_TURN_ENC_COUNT_VALUE  197L   //20.08.2007
    //#define MY_TURN_ENC_COUNT_VALUE  210L   //06.09.2007
    #define MY_TURN_ENC_COUNT_VALUE  192   //16.10.2007
    //#define MY_TURN_ENC_COUNT_VALUE  500 //24.10.2007
    /* Werte zum ausgleichen unterschiedlicher Motoren */
    /*! Differenzangabe zwischen den beiden Motoren.\n
        Der angegeben Wert verteilt sich je zur Haelte auf die Vorgaben fuer die\n
        Motorgeschwindigkeit.\n
        Bei einem \n positiven Wert, wird der \n rechte Motor \b verstaerkt.\n
        Bei einem \n negativen Wert, wird der \n linke Motor \b verstaerkt.
      */
    #define MY_MOTOR_DIFF              0    /*!< 1/2 PLUS fuer Rechts, 1/2 MINUS fuer Links */
    
    #endif /* MYASURO_H */
    den test mit deinem programm für die ermittlung der myasuro werte werde ich noch einmal durchführen, beim letzten mal habe ich die werte für die hell/dunkel übergänge ermittelt, dann beim go test fuhr der asuro gleich stark nach rechts (musste ihn einfangen), es wurde die möglichkeit zum "zu kurz, zu lang ok nochmals" überhaupt nicht angeboten - (durch eine unterbrechnung der IR verbindung?), das turn testprogramm liess sich dann, als ich den asuro wieder so hinstellte, dass er in sichtweite des IR-transceivers war nicht starten, die status LED blinkte so weit ich mich erinnern kann nur kurz in rot und dann wieder grün.

    edit2: den taster-test habe ich vorher nicht durchgeführt - kann es sein, dass dann die tasten bei den darauffolgenden tests (go/turn) nicht/nicht richtig erkannt werden?

    auf dem neuen foto hier kann man die 22 löcher sehen denke ich und in der code tabelle sind die mit dieser 22er scheibe über ein ausgabeprogramm festgehaltenen werte:
    Code:
    L:	21	R:340	Lmax:10	Lmin:523	Rmax:170	Rmin:682
    L:	21	R:328	Lmax:15	Lmin:272	Rmax:249	Rmin:505
    L:	27	R:658	Lmax:21	Lmin:150	Rmax:453	Rmin:505
    L:	43	R:261	Lmax:32	Lmin:97	Rmax:453	Rmin:383
    L:	84	R:557	Lmax:58	Lmin:91	Rmax:505	Rmin:383
    L:	20	R:130	Lmax:58	Lmin:56	Rmax:505	Rmin:257
    L:	134	R:475	Lmax:96	Lmin:56	Rmax:505	Rmin:257
    L:	23	R:507	Lmax:96	Lmin:40	Rmax:506	Rmin:257
    L:	627	R:293	Lmax:361	Lmin:40	Rmax:506	Rmin:257
    L:	23	R:51	Lmax:361	Lmin:32	Rmax:506	Rmin:154
    L:	18	R:54	Lmax:361	Lmin:25	Rmax:506	Rmin:104
    L:	19	R:348	Lmax:361	Lmin:22	Rmax:506	Rmin:104
    L:	15	R:124	Lmax:361	Lmin:19	Rmax:506	Rmin:104
    L:	641	R:32	Lmax:501	Lmin:19	Rmax:506	Rmin:68
    L:	45	R:37	Lmax:501	Lmin:19	Rmax:506	Rmin:53
    L:	631	R:476	Lmax:566	Lmin:19	Rmax:506	Rmin:53
    L:	22	R:322	Lmax:566	Lmin:19	Rmax:506	Rmin:53
    L:	654	R:546	Lmax:610	Lmin:19	Rmax:526	Rmin:53
    L:	36	R:569	Lmax:610	Lmin:19	Rmax:547	Rmin:53
    L:	28	R:519	Lmax:610	Lmin:19	Rmax:547	Rmin:53
    L:	24	R:620	Lmax:610	Lmin:19	Rmax:583	Rmin:53
    L:	27	R:419	Lmax:610	Lmin:19	Rmax:583	Rmin:53
    L:	20	R:489	Lmax:610	Lmin:19	Rmax:583	Rmin:53
    L:	509	R:243	Lmax:610	Lmin:19	Rmax:583	Rmin:53
    L:	308	R:280	Lmax:610	Lmin:19	Rmax:583	Rmin:53
    L:	24	R:723	Lmax:610	Lmin:19	Rmax:653	Rmin:53
    L:	33	R:376	Lmax:610	Lmin:19	Rmax:653	Rmin:53
    L:	634	R:215	Lmax:622	Lmin:19	Rmax:653	Rmin:53
    L:	38	R:412	Lmax:622	Lmin:19	Rmax:653	Rmin:53
    L:	41	R:566	Lmax:622	Lmin:19	Rmax:653	Rmin:53
    L:	18	R:626	Lmax:622	Lmin:19	Rmax:653	Rmin:53
    L:	22	R:33	Lmax:622	Lmin:19	Rmax:653	Rmin:43
    L:	575	R:544	Lmax:622	Lmin:19	Rmax:653	Rmin:43
    L:	40	R:492	Lmax:622	Lmin:19	Rmax:653	Rmin:43
    L:	24	R:649	Lmax:622	Lmin:19	Rmax:653	Rmin:43
    L:	37	R:596	Lmax:622	Lmin:19	Rmax:653	Rmin:43
    L:	27	R:39	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	36	R:160	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	211	R:367	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	31	R:544	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	92	R:586	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	507	R:313	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	235	R:575	Lmax:622	Lmin:19	Rmax:653	Rmin:41
    L:	27	R:706	Lmax:622	Lmin:19	Rmax:679	Rmin:41
    L:	637	R:575	Lmax:629	Lmin:19	Rmax:679	Rmin:41
    L:	28	R:568	Lmax:629	Lmin:19	Rmax:679	Rmin:41
    L:	625	R:344	Lmax:629	Lmin:19	Rmax:679	Rmin:41
    L:	374	R:577	Lmax:629	Lmin:19	Rmax:679	Rmin:41
    L:	20	R:707	Lmax:629	Lmin:19	Rmax:693	Rmin:41
    L:	33	R:553	Lmax:629	Lmin:19	Rmax:693	Rmin:41
    L:	184	R:462	Lmax:629	Lmin:19	Rmax:693	Rmin:41
    L:	20	R:600	Lmax:629	Lmin:19	Rmax:693	Rmin:41
    L:	28	R:538	Lmax:629	Lmin:19	Rmax:693	Rmin:41
    L:	646	R:45	Lmax:637	Lmin:19	Rmax:693	Rmin:41
    L:	18	R:47	Lmax:637	Lmin:19	Rmax:693	Rmin:41
    L:	383	R:35	Lmax:637	Lmin:19	Rmax:693	Rmin:38
    L:	651	R:710	Lmax:644	Lmin:19	Rmax:701	Rmin:38
    L:	18	R:510	Lmax:644	Lmin:19	Rmax:701	Rmin:38
    L:	25	R:43	Lmax:644	Lmin:19	Rmax:701	Rmin:38
    L:	22	R:247	Lmax:644	Lmin:19	Rmax:701	Rmin:38
    danke...

    edit, 25.10. 13:59 - entspricht meine scheibe mit 8 löchern nicht eher der 8/8 reflektionsscheibe als der 4/4er?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken 2007_10_25_01-1.jpg  
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hi allerseits,

    jetzt nicht mehr über edit, weil das ja leicht übersehen werden kann. ich habe jetzt den asuro wieder so weit, dass er gerade stückchen mit go(200,150) fährt. so weit so gut.
    hier erstmal mein programm:
    Code:
    /*ladestation_anfahren*/
    
    #include "asuro.h"
    #include "inka.h"
    #include "stdio.h"
    int i;
    int main (void)
    
    {
    
    Init();
    
    WaitforStart();
    
    
    while(1)
    {
    batt_abfrage();
    
      {
      EncoderInit();
      void links_ausw();
     	if (PollSwitch()>0) {
    	StatusLED(RED);
    	Go (-100,150);
    	Turn (-90, 150);
    	}
    	else {
    	Go (200, 150);
    	StatusLED(GREEN);
    	Msleep(500);
    	}
      void links_ausw();	
    	if (PollSwitch()>0) {
    	StatusLED(RED);
    	Go (-100, 150);
    	Turn (-90, 150);
    	}
    	else {
    	Turn (180, 150);
    	StatusLED(YELLOW);
    	Msleep(500);
    	}
      }
    }
    return 0;
    }
    -------------
    void links_ausw(); ist aufruf einer routine aus der inka.c, die die IR Sensoren als entfernungsmessung verwendet, die sind momentan außer betrieb
    --------------
    jetzt habe ich - pragmatisch wie ich nun mal bin - versucht das problem mit dem TURN damit zu umgehen, dass ich ihn halt dabei lasse, wenn er per vorgegebenen wert in der myasuro.h nur ca. 45° winkel drehen will und ihn halt mit "turn(180,150) einen 90° winkel drehen lasse.
    Und die reaktion
    ist die gleiche, wie auf eine zahl in der asuro.h die >350 ist, nämlich ein kurzes aufblinken der statusLED (gelb), möglicherweise durch mein programm bedingt - und weiteres geradeaus fahren (das nächste go in der while schleife). Deutet sowas nicht auf einen - nennen wir es mal sowas wie einen überlauffehler durch eine zahl, die entsteht bei/durch die 22/22 scheibe?
    gruß inka

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.062
    sollte die anzahl der löcher wirklich zu viel sein? das sollte sich doch mit einer langsameren geschwindigkeit testen lassen... fährt der asuro mit 22 löchern bei niedrigen geschwindigkeiten normal, und mit großen geschwindigkeiten eigenartig? oder scheinen die probleme geschwindigkeitsunabhängig zu sein?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hi damaltor,
    bei programmen wie diesem:
    Code:
    //Programm zum Umfahren von Hindernissen mithilfe der Infrarot-Hinderniserkennung von waste
    //zusammengestellt und programmiert von julien
    
    #include "asuro.h" 
    #include <stdlib.h>
    #include "inka.h" 
    
    int main(void) 
    { 
       float puls;
       int hindernis=0;
       int richt=0, wegr=0, wegl=0, vorher=0, auswl=0, auswr=0, schritt=0;
       unsigned int Rmin = 1024, Rmax = 0, Lmin = 1024, Lmax = 0, Rmitte = 512, Lmitte = 512, lspeed=185, data[2];  
       unsigned char flagl=FALSE, flagr=FALSE;
       Init();
       WaitforStart();
       DDRD |= (1 << DDD1);      // Port D1 als Ausgang 
       PORTD &= ~(1 << PD1);      // PD1 auf LOW 
       puls = 1; 
    while(1) 
    {
          if (PIND & (1 << PD0)){
             StatusLED(GREEN);   // kein Hindernis
    		 } else {
    		 vorher=(int)(puls);
    		hindernis=1;
    		StatusLED(RED);      // Hindernis erkannt
    		}
           
       puls = 1.02 * puls;      // Pulsbreite wird um 2% erhöht 
       if (puls > 10){
       if (PIND & (1 << PD0)) hindernis=0;
       puls = 1;
       }
       OCR2 = 255 - (int)(puls);
       
       if(hindernis==1){ //"gucken", wo noch ein freier Weg ist und diesen dann fahren
       if(schritt==0){ //nach rechts "gucken"
       MotorDir(FWD,RWD);
       Msleep(100);
       }
       if(schritt==1){ 
       auswr=(int)(puls);
       }
       if(schritt==2){ //nach links gucken
       MotorDir(RWD,FWD);
       Msleep(100);
       }
       if(schritt==3){
       auswl=(int)(puls);
       }
       if(schritt==4){ //richtigen weg fahren
        if(auswr>auswl) richt=1;
    	if(auswr<auswl) richt=2;
    	if(auswr==auswl) richt=3;
    	}
    	if(schritt<4) schritt++;
    	}
       
       if(hindernis==0){ //kein Hindernis in Sicht - geradeaus fahren
       richt=0;
       schritt=0;
               OdometrieData(data); // 0. links, 1. rechts        
            // max links 
            if (data[0] > Lmax) 
                Lmax += (data[0] - Lmax) / 2; 
            // min links 
            if (data[0] < Lmin) 
                Lmin -= (Lmin - data[0]) / 2; 
            // max rechts 
            if (data[1] > Rmax) 
                Rmax += (data[1] - Rmax) / 2; 
            // min rechts 
            if (data[1] < Rmin) 
                Rmin -= (Rmin - data[1]) / 2; 
        Rmitte=(Rmax+Rmin)/2; 
        Lmitte=(Lmin+Lmax)/2; 
          if ((data[0] < Lmitte) && (flagl == TRUE)) { 
          flagl = FALSE; 
          wegl++; 
          } 
          if ((data[0] > Lmitte) && (flagl == FALSE)) { 
          flagl = TRUE; 
          wegl++; 
          } 
          if ((data[1] < Rmitte) && (flagr == TRUE)) { 
          flagr = FALSE; 
          wegr++; 
          } 
          if ((data[1] > Rmitte) && (flagr == FALSE)) { 
          flagr = TRUE; 
          wegr++; 
          }
    	if(wegl<wegr) lspeed++;
    	if(wegl>wegr) lspeed--;
    	if(wegl>=1000){ wegl=0; wegr=wegr-1000; } //zurücksetzen, damit kein Überlauf nach
    	if(wegr>=1000){ wegr=0; wegl=wegl-1000; } //längeren Fahrten passiert
    	}
    	if(richt==0) MotorDir(FWD,FWD); //geradeaus
        if(richt==1) MotorDir(RWD,FWD); //links
    	if(richt==2) MotorDir(FWD,RWD); //rechts
    	if(richt==3) MotorDir(RWD,RWD); //zurück
    
        MotorSpeed(lspeed,170);
      }
       return 0; 
    }
    fährt er einwandfrei, es werden aber auch weder go, noch turn verwendet...
    im gegenteil, der ist noch nie so geradeuas gefahren wie mit den roten 22er scheiben...
    gruß inka

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Super Ansatz von damaltor dem Problem so auf die Schliche zu kommen.

    Im Source selber kann ich nämlich nichts entdecken. Auch das, von dir inka, angedeutete Problem einer eventuell zu klein definierten Variable ist nicht zu sehen.

    Gruß Sternthaler

    [EDIT] Da habe ich wohl die Antwort von inka gerade nicht mitbekommen.
    Lieber Asuro programieren als arbeiten gehen.

  8. #8
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.062
    hmm... mahc doch mal die probe aufs exempel... einmal mit speed 100 geradeaus, links drehen, rechts drehen und dann einmal mit 255... was passiert?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hi damator,

    mit folgendem programm:
    Code:
    #include "asuro.h"
    #include "inka.h"
    
    
    int main (void)
    
    {
    
    Init();
    WaitforStart();
    EncoderInit ();
    Go(100,100);
    Turn(100,100);
    Go(100,100);
    Turn(-100,100);
    
    Go(100,150);
    Turn(100,150);
    Go(100,150);
    Turn(-100,150);
    
    Go(100,200);
    Turn(100,200);
    Go(100,200);
    Turn(-100,200);
    
    return 0;
    }
    ruckelt er 6x 100mm vor, mit ansteigenden geschwindigkeiten, beim start mit 100 braucht er einen kleinen schubs, um die Turns kümmer er sich nicht...
    gruß inka

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.062
    das ist deprimierend. hast du noch andere odo scheiben für die gegenprobe? also nur testweise, um zu sehen ob sich überhaupt was tut, egal wie viel er dreht. interessant wäre, OB er dreht. das problem wird interessant...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 1 von 8 123 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test