RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBObee Niboo bee rechte motor schneller als der linke?

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Niboo bee rechte motor schneller als der linke?

Niboo bee rechte motor schneller als der linke? 12 Jahre 1 Woche her #965

  • marce18
  • marce18s Avatar
  • OFFLINE
  • Junior Boarder
  • Beiträge: 10
Ich habe ein Problem und zwar der rechte Motor von Nibo bee dreht sich schneller als der linke und deshalb bewegt sich der Roboter nur nach links und macht eine runde immer wieder. Meine Frage. Könnte es sein das es bei der 100 Kiloohm also bei der Potentiometer ich etwas verändern muss, oder spiel das keine rolle.
Was könnte die Ursach sein?

Meine Programmierung
#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/analog.h>
#include <nibobee/line.h>
#include <nibobee/led.h>
#include <nibobee/delay.h>

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

int main() {
activate_output_group(IO_LEDS); // LED bits als Output
motpwm_init();
motpwm_setLeft(0);
motpwm_setRight(0);
analog_init();
line_readPersistent(); // Kalibrierung für Liniensensoren laden
set_output_group(IO_SENS); // interne Pull-up Widerstände aktivieren
activate_output_bit(IO_LINE_EN);

int16_t speed_flt_l=0;
int16_t speed_flt_r=0;

// Countdown: LEDs blinken lassen
for (uint8_t i=0; i<10; ++i) {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
_delay_ms(10);
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
_delay_ms(990);
}
led_set(LED_L_YE, 1);
led_set(LED_R_YE, 1);
_delay_ms(1000);
led_set(LED_L_YE, 0);
led_set(LED_R_YE, 0);

// Hauptschleife:
while(1) {
sei();
_delay_ms(1);
int16_t speed_l=0;
int16_t speed_r=0;

// Sensorwerte aktualisiseren
int16_t lval = line_get(LINE_L);
int16_t cval = line_get(LINE_C);
int16_t rval = line_get(LINE_R);

if (lval+cval+rval < 20) {
// kein Boden (alle Werte schwarz!)
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
speed_r=0, speed_l=0;
} else if ((lval<cval) && (lval<rval)) {
// Linie ist links (der linke Sensor hat den kleinsten Wert)
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 0);
// Rechter Motor schnell, linken Motor langsamer, in Abhängigkeit
// vom Unterschied zum mittleren Sensor besonders stark abbremsen
speed_r=550, speed_l=450-1*(cval-lval);
} else if ((rval<cval) && (rval<lval)) {
// Linie ist rechts (der rechte Sensor hat den kleinsten Wert)
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 1);
// Linker Motor schnell, rechter Motor langsamer, in Abhängigkeit
// vom Unterschied zum mittleren Sensor besonders stark abbremsen
speed_r=450-1*(cval-rval), speed_l=550;
} else {
// Linie ist mittig (der mittlere Sensor hat den kleinsten Wert)
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
// Beide Motoren sehr schnell, je nach Unterschied zum mittleren
// Sensor noch etwas schneller bzw. langsamer
speed_r=750 + 1*(rval-cval), speed_l=750 + 1*(lval-cval);
}

// Soll-Geschwindigkeit filtern: 75% alter Wert, 25% neuer Wert
// alt*75/100 + neu*25/100 = (3*alt+1*neu)/4
speed_flt_l*=3; speed_flt_l+=speed_l; speed_flt_l/=4;
speed_flt_r*=3; speed_flt_r+=speed_r; speed_flt_r/=4;

// Soll Werte für Motoren setzen
motpwm_setLeft(speed_flt_l);
motpwm_setRight(speed_flt_r);

}
return 0;
}
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Niboo bee rechte motor schneller als der linke? 12 Jahre 1 Woche her #968

  • elektrolutz
  • elektrolutzs Avatar
  • OFFLINE
  • Gold Boarder
  • NiboBee+BGX1+Tunig-Kit, Nibo2+GFX+NDS3+UCOM-IR2
  • Beiträge: 401
Hallo marce18,

ich habe Dein Programm nicht auf meiner Biene getestet.

Sind die Liniensensoren richtig kalibriert?
Manchmal gibt es auch Probleme mit den Liniensensoren, weil sie vom Anfassen verdreckt oder verbogen sind.
Zu dem kann es auch Probleme geben, wenn die Sensorik unter sehr unterschiedlichen Lichtbedingungen ausgewertet wird. Die Sensoren reagieren auf IR-Licht. Je nach dem wie stark der IR-Anteil des Umgebungslichtes ist, kann sich das störend auswirken. (Z.B. Sonnenlicht hat mehr IR-Anteile gegenüber Neonlicht aus der Raumbeleuchtung.)
Gegebenenfalls die Kalibrierung öfters durchführen.

Hilfreich wäre bei deinem Problem der Einsatz des Displays. Darüber könntest Du dir die im Programm zur Verfügung stehenden Messwerte der Sensorik anschauen.


Mit dem Poti kann man die Signalgüte der Odometriesensoren anpassen, ich habe aber bisher noch keine Situation gehabt, bei der hier Einstellungen erforderlich waren.
Gruß aus Werl elektrolutz
Theorie ist, wenn man weiß, wie alles funktioniert. -- Praxis ist, wenn alles klappt und keiner weiß warum!
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.054 Sekunden

Werbung