-         
Ergebnis 1 bis 4 von 4

Thema: Nibo 1 - Odometrie gibt keine Werte (Ticks)

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    64
    Beiträge
    697

    Nibo 1 - Odometrie gibt keine Werte (Ticks)

    Anzeige

    Bei Experimenten mit Nibo1 kommen (plötzlich?) keine Werte mehr von der Odometrie. Ich habe folgendes Testprogramm aufgesetzt:

    Code:
     #include <stdlib.h> #include <avr/io.h>
     #include <avr/interrupt.h>
     
    
    
     #include "nibo/niboconfig.h"
     #include "nibo/iodefs.h"
     
     #include "nibo/delay.h"
     #include "nibo/analog.h"
     #include "nibo/pwm.h"
     #include "nibo/i2cmaster.h"
     #include "nibo/display.h"
    
    
     #include "nibo/bot.h"
     #include "nibo/leds.h"
     #include "nibo/gfx.h"
     #include "nibo/irco.h"
     #include "nibo/motco.h"
     #include "nibo/floor.h"
    
    
    
    
     void textout(int x, int y, char* str, int ft)
     {
         gfx_move(x,y);
         gfx_set_proportional(ft);
         gfx_print_text(str);
     }
    
    
     void Go(int dist, int cm_pro_sec)
     {
         const float TICKS_PER_CM = 1.75f;
    
    
         motco_resetOdometry(0,0);
         motco_update();
         
         int16_t limit = dist * TICKS_PER_CM;
         
         
         int16_t pwm   = cm_pro_sec * 80;
         if (pwm >  1024)  pwm =  1024;
         if (pwm < -1024)  pwm = -1024;
    
    
         motco_setPWM(pwm,pwm);
         motco_setSpeed(cm_pro_sec * TICKS_PER_CM , cm_pro_sec * TICKS_PER_CM);
         motco_update();
    
    
         //delay(3000); //TODO: muss weg
         
         char ticks_r_string[6];
         char ticks_l_string[6];
         char limit_string[6];
         char speed_l_string[6];
         char speed_r_string[6];
    
    
    
    
         do
         {
             motco_update(); /* hoffentlich geradeaus fahren */
        
             
             textout(0,56,"                           ",0);
             
             itoa(motco_ticks_l,ticks_l_string,10);
             textout(0,56,ticks_l_string,0);
             
             itoa(motco_ticks_r,ticks_r_string,10);
             textout(25,56,ticks_r_string,0);
             
             itoa(limit,limit_string,10);
             textout(50,56,limit_string,0);    
             
             itoa(motco_speed_l,speed_l_string,10);
             textout(75,56,speed_l_string,0);
             
             itoa(motco_speed_r,speed_r_string,10);
             textout(100,56,speed_r_string,0);     
             
             delay(200);
         }
         while(motco_ticks_r < limit);
     }
    
    
     int main()
     {
         sei(); // enable interrupts
         bot_init();
         leds_init();
         pwm_init();
         display_init(2);
         gfx_init();
         motco_setSpeedParameters(5,6,7);
         
         leds_set_displaylight(800);
    
    
         textout(10,10,"Nibo meldet:",0);
         textout(10,24,"Motor an!",0);
         textout(10,38,"Licht an!",0);
         
         leds_set_headlights(512);
         
         int i,j;
         for(i=1;i<=6;++i)
         {
             for(j=0;j<i;++j)
             leds_set_status(LEDS_GREEN,j);
             
             Go(10,i);
         }
    
    
         leds_set_headlights(0);
         
         motco_stop();
         motco_update();
         
         for(j=0;j<6;++j)
         leds_set_status(0,j);
         
         textout(10,24,"Motor aus!",0);
         textout(10,38,"Licht aus!",0);
         
         while(1);
         return 0;
     }
    Die Werte für ticks oder speed bleiben bei 0.

    Kennt jemand dieses Problem? Fehler im Programm? Dass die Hardware auf beiden Seiten ausfällt, halte ich für unwahrscheinlich, es sei denn eine kalte Lötstelle / ein Defekt, der beide Seiten betrifft. Was sollte man nachlöten?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    64
    Beiträge
    697
    Dass hier niemand antwortet, zeigt, wie schnell man mit neben der Masse liegenden Bots "einsam" wird.

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.251
    Dass hier niemand antwortet, zeigt, wie schnell man mit neben der Masse liegenden Bots "einsam" wird.
    Na ja, nicht wirklich (behaupte ich - jedenfalls ist´s nicht meine Erfahrung hier, zumal ich ja meist neben der "Masse" liege). Ich wollte/konnte nix schreiben, weil meine Nibo ja die Nibobee ist und ich den Aufbau bei Dir nicht kenne. Daher gibts von mir nur allgemeine Anmerkungen. Meine Probleme mit Odometrie kamen fast immer von "Fremdlicht" - irgendwelche mal-da/mal-nicht-Einflüsse von einfallendem Licht.

    Abhilfe:
    1) Methode des genauen Hinsehens : wo sind vermeidbare Spalte für Lichteinfall? U.U. verdächtige Spalte mit schwarzem Isolierband abdecken.
    1b) Methode wie oben - mögliche kalte Lötstellen oder Wackelkontakte (z.B. DMM an Versorgung des Sensors, evtl. auch an Signal-out).
    1c) nimmt die Odometriesensorik überhaupt an der lokalen Energieversorgung teil? (im Prinzip Teil von 1b)
    1d) Methode wie oben: sind die richtigen Bauteile eingebaut? Aber es steht ja "..kommen (plötzlich?) keine Werte ..".
    2) Testprogramm: WENN Odometriesensor schaltet z.B. Signal-on, dann geht ne LED an, bei Signal-off geht die LED aus. Danach/dazu u.U. mit ner nicht zu schwachen Lichtqelle in Nähe der Sensoren rumfuchteln.
    3) Ausser dem DMM hilft natürlich auch ein Oszilloskop und klitzekleine Abgreifklemmen. In seltenen Fällen habe ich Testanschlüsse auch an verdächtigen Stellen angelötet.
    4) Nur so - als allgemeine Frage: ist Deine Odometrie als Reflexlichtschranke oder als Spaltscheibe mit Gabellichtschranke aufgebaut?

    Vielleicht hilfts was, vermutlich hast Du das meiste/alles schon erledigt.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    64
    Beiträge
    697
    Es war 1b, also eine kalte Lötstelle. Nach Erwärmen der Lötungen - nach Sichtkontrolle - im Bereich des Steckers auf der Hauptplatine funktioniert die Odometrie wieder bestens. Das ist wirklich schön, denn mit dem Nibo1 kan man einiges testen.

Ähnliche Themen

  1. [ERLEDIGT] PCF8574AP gibt komische Werte aus
    Von RP6fahrer im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 9
    Letzter Beitrag: 23.02.2016, 17:06
  2. Odometrie - Encoder Werte
    Von Early09 im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 01.01.2012, 23:55
  3. NIBO 2 Odometrie funktioniert nicht. Roboter fährt im Kreis.
    Von RJF im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 8
    Letzter Beitrag: 02.07.2010, 22:24
  4. seltsame odometrie werte
    Von tape im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 07.05.2008, 15:06
  5. Display gibt falsche WErte aus
    Von axors im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 31.12.2005, 11:36

Stichworte

Berechtigungen

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