Odometrie bringt Mega zum Absturz?

Hallo Jem,

ich bin leider nicht so fit im Arduino programmieren, aber ich denke wenn ich z.B. wie bei mir nur 30 Impulse an der Welle habe anstatt 1060 oder so, da hat man ja auch mehr Zeit oder verstehe ich das falsch?
Gruß Axel
 
Naja, in dem Moment, wo der Interrupt die Funktion aufruft, wird das eigentliche zyklische Programm angehalten (also mittendrin) und fortgesetzt, sobald die Interruptfunktion abgearbeitet ist. Wenn man gerade an bestimmten Stellen im Code ist, kann eine Unterbrechung halt ungünstig sein. Je häufiger eine Interruptfunktion aufgerufen wird und je länger sie dauert, umso schlechter. Ob es jetzt schlechter ist, eine schnelle Funktion 100x pro Sekunde oder eine langsame 5x pro Sekunde im Interrupt aufzurufen, muss mit Benchmarks geklärt werden. Ich wollte nur klarstellen, was bei einem Interrupt passiert.
Die Zykluszeit in vielen industriellen oder mobilen Steuergeräten wird auf einen gewissen Wert festgelegt. Meine letzten Steuerungen hatten eine Zykluszeit von 10ms, wobei der eigentliche Zyklus unter 1ms gedauert hat. In der Zwischenzeit wurden Kommunikation und andere Interrupte abgearbeitet. Somit war auch eine Laufzeitmessung zwischen 2 Flanken auch kein Problem. Aber das waren auch 32bit-Mikrokontroller mit mehreren Kernen und vielen MHz Taktrate (keine Mikroprozessoren ...). Das war RISC-Power pur ... aber bei den Arduinos ist halt Rechenpower recht begrenzt.

Gruß,
Jem
 
Die 1060 Impulse sind eigentlich zu viel. Das stimmt. Es ist geplant eine kleine Schaltung dazwischen zusetzten die dafür sorgen wird das nicht mehr alle Impulse zur Auswertung kommen.
Soviel ich weiß sind die Motoren nur mit diesem Standard Encoder lieferbar.

Gruß
Uwe
 
Ok, das mit den Interrupts ist mir schon klar. Bei meiner SPS ist das ja auch so. Ich wollte halt nur verstehen was ihr dann damit macht. Ich mache es halt bei der SPS so das ich mit jedem Interrupt einen Zeitstempel speichere. Beim nächste wird dann halt die Differenz gebildet und mit der Zeit auf der anderen Seite verglichen. Wie gesagt ich habe leider keine Ahnung wie das der Arduino macht. Bei der SPS ist das halt mit wenigen Zeilen geschrieben. Natürlich muss man hier auch auf Zykluszeiten achten.
Ich finde es Super was ihr bis jetzt alles geschaffen habt und auch die weiteren Aussichten (z.B. Sunray) machen das Projekt einzigartig!
 
ja, wie ich oben schrieb, ist die micros()-Funktion ein Zeitstempel, der genau genug wäre, um damit dann auch zu regeln. Ich habe keine Ahnung, wieviele Takte er benötigt, deswegen bin ich der Meinung, dass ein stupides Hochzählen eines Zählers schneller ist. Wie sich das verhält, wenn man jetzt deutlich weniger Interrupts hat -> kA. Aber ich glaube, ich werde es mal ausprobieren ... :)
 
Ich habe bei mir ein Signal je Motor Umdrehung und bei einer Untersetzung von 60:1 gibt das 60 Signale je Radumdrehung.
Mehr sind, glaube ich auch nicht nötig, da sonnst zu viele Interrupts ausgelöst werden.

Wie der ein Platine die die Interrupts runterrechnet ist echt Sinnlos. Besser ist die Odometrie anpassen. also bei einer Gabellichtschranke, die auf der Motorwelle sitzt nur ein oder zwei Öffnungen. Ist Einfacher und bring weniger Fehler als noch eine Schaltung die Fehler enthalten kann und Geld kostet.

Die Lichtscheibe einfach mit schwarzem papier abdecken.

Aber obwohl ich nur wenig Signale habe, habe ich ich auch Probleme sobald ich die Odometrie einschalte.

Ich mach die Tage mal ein Video.

Gruß Stefan
 
Nochmal einen Tipp für alle die Probleme mit einem Mega haben, wo das Mega scheinbar abstürzt.
Ich kämpfe jetzt schon seit mehreren Wochen mit dem Problem das mein Mower einfach auf nichts mehr reagiert und sich nur durch einen Neustart über den Hauptschalter wieder bedienen lässt.
Fatal an diesem Problem ist, dass dann natürlich auch kein Perimeter und Bumper mehr erkannt wird und er dann auch keine Begrenzung mehr kennt. :eek:hmy:
So wie ich das hier gelesen habe dachte ich auch erst an die Odometrie und habe diese dann abgeschaltet. Leider ohne Erfolg. Dann mehrmals Software überprüft und neu aufgespielt. Immer noch nicht gelöst. Neues Mega eingebaut. Gleiches Ergebnis. Das gesamte Board (0.5er) nachgelötet. Problem blieb leider weiterhin bestehen.
Wenn der Mäher in der Ladestation stand trat das Problem niemals auf. Auch wenn ich den Mäher aufgebockt auf der Werkbank laufen lassen habe ca. 3 - 3,5 Stunden, lief er immer ohne Störung durch.
Somit konnte es nur ein Wackelkontakt sein.
Dann habe ich die Odometrie nicht nur ausgeschaltet sondern auch komplett vom Board abgezogen. Und siehe da, Fehler tritt nicht mehr auf. Jetzt schon 2 Akkuladungen ohne Problem. Zuvor hatte er sporadisch diesen Fehler. Mal nach 5min, mal nach 1min, mal nach 1 Stunde aber niemals eine ganze Akkuladung.
Somit ist denke ich das Problem gefunden. Also der Steckkontakt auf dem Pfostenstecker hat da wohl einen Wako. Ich werde jetzt nochmal einen Versuch starten und die Odometrie fest am Board verlöten.

Also jetzt nochmal zu meinem Tipp.
Wenn ihr was in der Software ausschaltet solltet ihr das auch auf jeden Fall vom Board abziehen da sonst immer noch Störungen übertragen werden.

Gruß
Stephan
 
Hallo Stephan,
das Problem ist das die Interrupts auch ausgelöst werden wenn die Odometrie ausgeschaltet ist.
Laut deiner Signatur hast die 1.04 ?

Probier mal die letzte Version, da wurden von Boliven auch umfangreiche Odometrie teste eingebaut. Ich bin damit auch noch nicht ganz durch.

Wicht, und genau das war mein Problem, die genaue Kalibrierung der Odometrie, sprich Ticks/cm Anzahl der Ticks und Radabstand, GENAU eintragen.

Gruss Stefan
 
Hallo Stefan,
Das mit der Signatur ist falsch bei mir. Ich nutze die VER "1.0a7-Azurit-dev".
Wenn ich das mit dem iPad änder speichert es die Signatur irgendwie nicht. Aber das nur nebenbei.
Die Odometrie ist bei mir (1way) auch optimal eingestellt und mit der Änderung im Konsolentest für Odometrie dreht mein Rad auch exakt 1 Umdrehung und dies auch nach mehrfacher Wiederholung.
Ich wollte mit meinem Post oben auch nur dehnen helfen, die wie ich, Probleme mit einem Absturz des Megas haben und nicht direkt den Fehler finden. Das kann echt demotivierend sein.
Ich dachte halt wenn man z.B. die Odometrie abschaltet würden auch automatisch die Interupts dafür gestoppt.
Ich komme halt nicht aus der Softwarewelt und lerne täglich dazu. ;)
Gruß
Stephan
 
Hallo Simon,
ich musste nichts weiter anpassen. Es ist lediglich eine schlecht Verbindung (Wako) an einem Pfostenstecker von der Odometrie zum Ardumowerboard gewesen. Diese habe ich jetzt einfach alle direkt verlötet und nicht mehr gesteckt.
Gruß
Stephan
 
Bei mir hat es sich ähnlich verhalten. Ich habe Odometrie das letzte Jahr nicht verwendet. Jetzt habe ich die Software auf 1.08 angehoben und dachte, versuche es nochmal. War sofort das gleiche Verhalten. Ich habe dann mal die Gabellichtschranken auseinander genommen und geschaut, woran es liegt. An einer Lichtschranke war eine Kaltlötstelle. Je nachdem, wie man das Ding hält oder wackelt, kommt es zu unzähligen auslösern. Habe es einfach nachgelötet und jetzt rennt der Bock auch mit Odometrie.
 
Wirklich Klasse dass Du es gefunden hast - wir fügen einen Hinweis auf Abstürze mit Odometrie der Dokumentation hinzu.
 
Gestern habe ich die Odo aber wieder rausgenommen. Mit der Version 1.08 bleibt der Mäher öfters einfach stehen und wechselt in den State OFF. Im Error Counter sehe ich dann, dass die Batterie gezählt wurde. Die ist aber ausreichend geladen. Manchmal dauert es 30 Minuten, manchmal ist nach 5 Minuten schluss. Ohne Odometrie läuft er dann aber locker 2h.

Ich werde mal versuche, mit weniger Interrupts zu fahren. Muss mir mal bei Zeiten eine neue Odometrie Scheibe drucken. Aktuell komme ich auf ca. 700 Ticks pro Umdrehung
 
Hallo,
hier hat sich ja seit 10 Monaten nix mehr getan habt Ihr eure Probleme gelöst ?
ich bin jetzt in der Probeaufbau Phase erstmal mit einen Mini aber habe auch das gleiche beschriebene Problem!
Habe die aktuelle ver1.09 und werde morgen mal alle Stecker und Lötstellen überprüfen und ggf fest anlöten.
Wanst das war wäre es ja super !!!
 
Hallo,
ich habe mal alle Lötstellen nachgelötet selbst die Verbindungen am MEGA und Shield (allerdings nur für A12 bis A15)
ich bin zwar der Meinung das sich da was verbessert hat aber so richtig gefällt mir das immer noch nicht.

In einer Schleife 2m x 1m fährt der Mini ca. 5 bis 10 Minuten danach bleibt er ohne ERR stehen.
BT geht auch wenn ich Ihn wieder starte geht das wieder so 5 bis 10 min gut.
Manchmal bricht alles zusammen und er dreht sich nur noch in diesen fall geht auch BT nicht mehr.

Da ich mir ja einen großen umbauen wollte aber der Mini nicht sauber läuft, will ich erst diesen ans rennen bekommen.

Wenn es beim Mini und einer kleinen Testschleife allerdings normal ist würde ich so langsam an den großen gehen!
 
Oben