- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
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 Experte
    Registriert seit
    06.11.2010
    Beiträge
    773

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

    Hallo RP6ler,

    ich habe seit einiger Zeit ein für mein Projekt ernstes Problem:
    Ich lese in LabView die via BTM222 ankommenden Sensordaten aus. Und das sind mittlerweile nicht wenige:
    Von der Base (Slave) kommt alles Übliche sowie zwei weitere Sharps und zwei Bumper hinten. Von der M32 (auch Slave) kommt Micro und Taster, von M128 kommt Zweitbatteriestand, Vier IR-Abstandssensoren, SRF02, zwei von der Snakevision und Temperatur sowei Luftfeuchtigkeit.

    Mein Problem ist, dass sobald der RP6 fährt, der Fluss meiner Daten total ins stocken kommt. Und zwar nur von der M32 und der Base, das heißt ACS-und Bumperdaten vorne und hinten, Helligkeit, Mikro, Buttons, Geschwindigkeit, RC5-Empfang und Batterie werden nur noch alle ca. 3 bis 15 Sekunden (genauer gehts nicht, das kommt mal so und mal so) aktualisiert. Dass es an meinem LabView-Programm nicht liegen kann, nehme ich an, da die Daten der M128 wunderbar aktuell sind. Ebenso werden Befehle vom PC an den RP6 sofort umgesetzt, auch auf allen Boards (Servos, Motoren, Lichter, ACS an/aus, ... ).

    Im Klartext: Befehle werden auf allen Boards IMMER umgesetzt, Sensoren kommen von Base und M32 nicht mehr an die M128, sobald die Motoren an sind.

    Kann mir da bitte jemand helfen? Gibt es da eine Lösungsmöglichkeit? Kann es etwa sein, dass die Base bei angeschalteten Motoren mit der Motorregelung so sehr gefordert wird, dass sie die Register vernachlässigt?
    Zur Anmerkung: Ich benutze nicht die standard-Interrupt-Einstellungen auf der M128, sondern die von FabianE. - kann es daran liegen?

    Danke Euch allen!
    Fabian

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,

    das kann viele Ursachen haben (sowohl auf dem Master als auch auf den Slaves) und ist allgemein schwer zu debuggen wenn man nur einen Forenbeitrag vor sich hat

    Läuft der I2C Bus mit 100kBit/s oder 400kBit/s? Mal umschalten.
    Wieviele Daten fragst Du wie häufig ab?
    Bytes / s ?
    Natürlich entsteht noch Protokoll overhead (Start, Stop, pausen... ) also die 400kBit/s ist NICHT die Nutzdatenrate.

    Ändert sich in Deinem Programm auf der M128 irgendwas wenn die Motoren laufen?
    (werden mehr Daten abgefragt...?)

    Klappt es wenn Du die Daten weniger häufig abfragst oder ein paar Daten weglässt?
    Frag mal NUR die Base oder NUR die M32 ab.
    Nutzt Du die Interrupt Signale oder fragst Du einfach IMMER ALLE Sensordaten ab?


    Die Regelungsroutinen auf der Base benötigen natürlich zusätzliche Rechenleistung und es werden durch die Drehgeber Interrupt Events im MEGA32 erzeugt (je Flanke ein Interrupt - d.h. 625 je Radumdrehung und Encoder).
    Die Regelungsroutinen werden standardmäßig alle 200ms aufgerufen.

    Bitte auch bedenken das der MEGA32 auf der Base mit 8MHz läuft (weniger Energiebedarf) und nicht mit 16MHz wie auf dem RP6-M32 Modul.

    MfG,
    SlyD

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Oha, viele Fragen, ich versuche sie mal zu beantworten:
    Bus läuft, soweit ich weiß mit 100kBit/s. Wie kann ich ihn umstellen?
    In der M128 ändert sich soweit nix. Der Fahrbefehl wird empfangen, decodiert und in veränderter Form ins Register für die Base geschrieben.
    Ich kann mal versuchen, das Register zu kürzen, vielleicht läuft es dann besser.
    Wenn ich die M32 auskommentiere, also nur die Base verwende, verändert sich auch nix.
    Wenn ich das richtig sehe, werde die Daten stets ausgelesen, Bumper und ACS vorne legen aber Int0.

    Soll ich einfach mal die Dateien hochladen? Ich glaube, ich kann nicht alle Fragen gut genug beantworten:
    Läuft der I2C Bus mit 100kBit/s oder 400kBit/s? Mal umschalten.
    Wieviele Daten fragst Du wie häufig ab?
    Bytes / s ?
    Natürlich entsteht noch Protokoll overhead (Start, Stop, pausen... ) also die 400kBit/s ist NICHT die Nutzdatenrate.
    ___EDIT:
    Vielleicht sollte ich noch erwähnen, dass es mal besser, mal schlechter geht. Hin und wieder treten überhaupt keine Probleme auf.
    _____
    ___EDIT2:
    Wo kann ich denn die Int-Leitungen wieder auf standard zurücksetzen? Nur in der M128 oder muss ich das in allen drei Controllern machen?
    Habe gerade gesehen, dass die Meisten Sensoren nur etwas schlechter als vorher reagieren, aber die schlimmsten Probleme liegen in den vorderen Bumpern und dem vorderen ACS - also genau den beiden Sensoren, die via Interrupt abgefragt werden.

    Grüße
    Geändert von fabqu (07.02.2012 um 11:52 Uhr)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    31.01.2009
    Ort
    schwabch
    Alter
    39
    Beiträge
    93
    Hi,
    Vielleicht sollte ich noch erwähnen, dass es mal besser, mal schlechter geht. Hin und wieder treten überhaupt keine Probleme auf.
    Wenn ich das lese würde ich Tippen das es was mit der Spannung zu tun hat, kurze spannungseinbrüche.

    Wieviel Akku Power hast du noch wenn es fehler gibt und wenn alles funzt?
    Haben die Motoren einen Seberaten Akku, als die M32 und M128?

    Denn es kann sein das bei Hoher Motorlast oder bei Richtungsänderungen zu Fehlfunktionne bei den Hirnen kommen !

    Edit:
    Kannst du mal die Akku Daten loggen, denn das kann den fehler eingrenzen ?
    Mal messen wieviel beim M32 ( Base ), M32 ( Erw ) M128 ankommt.

    MFG Oliver G

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    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

  6. #6
    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!

Ä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
  •  

fchao-Sinus-Wechselrichter AliExpress