- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 16

Thema: I2C-Problem bei laufenden Motoren?? (Oder anderes Kommunikationsproblem)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    > Soll ich einfach mal die Dateien hochladen? Ich glaube, ich kann nicht alle Fragen gut genug beantworten:

    Wird wohl nicht anders gehen nur ob ich Zeit habe 1000 Zeilen Code en Detail durchzugehen ist eine andere Sache
    (nur Du weisst wo Du rumgebastelt hast und die Stellen solltest Du dann auch dick und fett markieren)

    Du hast allerdings auch noch nicht gesagt mit welcher Rate / Interval Du die Sensoren abfragst.


    Was Oliver sagt kann auch durchaus ein Problem sein.

    MEGA32 8MHz
    + MEGA32 16MHz
    + MEGA128 14.x MHz
    + Display? (Hintergrundbeleuchtung!)
    + 2x SRF02
    + 4x GP2Dxxx? (die ziehen recht viel)
    + paar andere Sensoren und weitere Elektronik
    + x ?

    Dann noch + 2 Motoren...

    Da kommt schon einiges zusammen und man sollte gute Akkus verwenden.
    Hast ja auch schon ein zweites Akkupack drauf?
    Was davon ist an welchem Akku dran?

    Steck sonst probehalber mal die US und IR Sensoren ab und ggf. auch das Display.

    (das schon recht komplexe System erstmal wieder aufs minimum reduzieren - nur M128 und Base am besten.
    Wenn das läuft kannste den Rest wieder zuschalten)

    MfG,
    SlyD

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Jo, werd ich mal so machen. Ich verwende gerade ein 9V- Netzgerät. Das war aber nur ein recht billiges, ich werde morgen mal in der Uni mit einem guten rangehen und es damit testen. Wenn es nicht klappt, wird alles runtergeschmissen, was geht (2 Sharps, Servos, LCD, ACS vorne können ruck-zuck via Jumper abgesteckt werden) .
    Wie kann ich denn die Abfragerate rausfinden?

    @SlyD: Wenn du erlaubst, dann lade ich die Dateien mal für Dich hoch. Die einzig wichtigen Dinge sind, denke ich, die Register in den Slaves (sind in den Mains) und das .cc-File "PCConnection"
    Ich habe eigentlich nicht allzuviel rumgebastelt an den Programmen vom FabianE.
    - Register in Base verlängert um zwei Sharps (ADC0 und 1) und zwei Bumper sowie um RC5-Code und -Toggle
    - M32: ich glaub gar nix
    - M128: Register auslesen dementsprechend angepasst, alle 8 ADCs werden gelesen, alle von mir zusätzlich angebrachten Sensoren (2 Sharps, 2 Bumper, 1 SRF02, 2 Sensoren vom Snakevision, 4 Sensoren vom 2D-IR-Abstandssensor, 1 Luftfeuchtigkeitssensor, 1 Batteriesensor) werden zusätzlich an die Serielle ausgegeben, ebenso RC5-Codes.

    STOP: Dateien zu groß (war ja klar! )
    Die maximale Dateigröße für diesen Dateityp beträgt 488,3 KB. Deine Datei ist 877,5 KB groß.
    Bist du bei der Dropbox? Dann könnt ich sie dir darüber schicken. Oder pn mit eMail oder wie es für dich am günstigsten ist!

    Grüße und Danke für die Hilfe!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Du hast eine PN.

    Aber ob ich Dir dabei helfen kann weiss ich nicht - der Code stammt ja von FabianE und nicht von mir...


    > Wie kann ich denn die Abfragerate rausfinden?

    Na die sollte ja irgendwo festgelegt sein darüber wie oft eben anfragen gestartet werden.
    Muss ich mir den Code mal ansehen - scheinbar hast Du selbst die Funktionsweise ja nicht so ganz vollständig nachvollzogen

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Hab das mal kurz angeschaut.


    Also im Slave (RP6Base) kannste erstmal das hier:
    Zeile 489...
    if(getStopwatch1() >= 1000)
    {
    SerialHeartBeat();
    StartErrorFrame();
    writeString_P("RP6 Remotrol ist mit dem Slave-Controller verbunden!\n");
    writeString_P("Das Kabel muss an den Master-Controller angeklemmt werden!\n");
    EndErrorFrame();
    setStopwatch1(0);
    }
    rauswerfen spart schonmal etwas Rechenzeit (die UART Ausgabe ist ja blockierend und die Baudrate ist standardmäßig nur 38.4kBit/s also dauert das länger als man denkt sowas auszugeben - könnte man natürlich auf 500kBit/s erhöhen).
    Ist ja nix an der seriellen Schnittstelle angeschlossen also dürfte das überflüssig sein.

    Dann mal schauen obs was bringt in RP6CCLib.cc
    Zeile 841:
    // I2C Modul initialisieren:
    I2C_Init(I2C_100kHz);

    in 400kHz zu ändern.

    Bei viel Datenverkehr auf dem Bus ist das sinnvoll.


    Dann in M128_PCConnection.cc
    Zeile 725:
    timeBetweenFrames = 240;

    mal probehalber auf 1000 oder 2000 erhöhen.

    Die SRF02 im Code deaktivieren und auch alles andere was nicht benötigt wird.


    Dazu dann noch die Hardwaregeschichten die oben schon vorgeschlagen wurden.

    Dann schrittweise wieder zuschalten und testen.

    MfG,
    SlyD

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Das ist doch schon mal einiges.
    Ich verwende jetzt 2 Netzgeräte:
    Ein gutes für Base, M32 und M128. Ein nicht ganz so gutes für BTM222, Snake, Kamera, 2D-IR, 2 Sharps, LED-Scheinwerfer, Servos -> Damit kann man denke ich die Stromschwankungen ausgrenzen!?!???
    Das gute Netzgerät zeigt mir einen Stromverbrauch von 250mA an bei 5cm-Motorgeschwindigkeit (Geschwindigkeitsparameter liegt bei 20 von 200) und 160mA ohne Motoren. Kann das so stimmen?

    -> Habe in der Base rausgestrichen, was du sagtest.
    -> Habe die Rate auf 400kHz erhöht.
    Danach ging es schon besser. Die meisten Sorgen machen ACS vorne (ACS hinten mit den beiden Sharps geht einwandfrei), der RC5-Empfang, die Motordrehzahlen. Die Lichtwerte kommen mit geringer Verzögerung (so 2 Sekunden etwa) - solange die Motoren laufen. Ohne Motoren geht alles wunderbar.
    Mit Motoren haben die anderen Sensoren (Mikro und Snakevision, 2D-IR-Sensor und SRF02) eine ganz leichte Verzögerung gegenüber ohne Motoren.

    -> Habe dann die Framerate erhöht auf verschiedene Werte (1000, 300, 100, 2000, ...) mit folgendem "Erfolg":
    Bei geringeren Werte als die 240 kommen die Sensorwerte, die vorher auch gut kamen, schneller an (klar!) und bei zu hohen war einfach zu viel Zeit zwischen den Frames, das kann auch nicht die Lösung sein.

    EDIT:
    Habe gerade noch was verändert: ObstacleLeft bzw -Right werden nun IMMER gesendet, nicht nur, wenn der alte Obstacle-Wert nicht mehr dem neuen entspricht. Und siehe da: Es geht besser, zwar auch mit mehr als 1 Sek Verzögerung, aber es kommt immerhin immer (irgendwann) ein Wert!

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Juhuuu!
    Habe noch mal die TimeBetweenFrames runter auf 180 und es funzt einfach alles
    Die Daten kommen mit nicht mal 1 Sek Verzögerung
    Ergo: Ein Problem ist, dass die M128 manchmal wohl das "ObjektLinks!" überlaufen hat und es nicht gesendet hat. Man muss also Obstacles immer senden lassen.

    Super, danke Euch!
    Danke Dir SlyD fürs "Korrekturlesen" der Programme.
    Ich hoffe, wenn meine drei Profs das Projekt morgen begutachten, geht auch noch alles...


    -> RC5-Code-Empfang geht aber immer noch nicht. Auch wenn ich die RC5_Data immer senden lasse...
    Geändert von fabqu (08.02.2012 um 13:03 Uhr)

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Freut mich

    Es gibt sicher noch viel weiteres Optimierungspotential.
    Dazu müsste man aber den Code mal etwas detaillierter auseinanderpflücken...

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Ok!
    Traust du mir sowas zu?
    Ich bin in Sachen Programmieren ja ned so der Über-Horst... Ich bin immer noch am Lernen, was das angeht.

    Vielleicht kann ich ja mit dem FabianE. mal was dazu machen.


    Hier mal ein Foto von dem Ungetüm:
    Man erkenn die Kamera mit SRF02, den 2D-IR-Sensor und hinten das SnakeVision.
    Verbaut sind gerade 5 Platinen.

Ähnliche Themen

  1. Asuro oder Robby RP5? Oder doch etwas anderes?
    Von whitecrane22 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 18.09.2011, 08:01
  2. Yeti, RP6 oder doch was anderes?
    Von julien im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 6
    Letzter Beitrag: 07.10.2008, 14:41
  3. PICKit 1 oder 2 oder noch was anderes zum Einsteigen?
    Von robo-sebi im Forum PIC Controller
    Antworten: 22
    Letzter Beitrag: 29.10.2007, 12:02
  4. LCD oder was anderes spinnt
    Von xxrider im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 25.07.2007, 19:55
  5. Lichtschranke??oder etwas anderes?
    Von sulu im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 13.08.2005, 07:15

Berechtigungen

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

12V Akku bauen