Merkwürdiges Verhalten der Antriebe

Hallo zusammen,

Update

Also jetzt drehen die Antriebe in die "richtige" Richtung.
Merkwürdig ist dass sobald ich Rights drücke sich nur 1 Rad dreht drücke ich nochmal drehen sich beide Räder in die Gleiche Richtung
Das selbe bei der Richtung Left
Noch überraschender ist die Tatsache … er reagiert auf die Ultraschallsensoren :) leider dreht er sich dann im Kriese bis ich ihm mit off ausschalte.
Die US Sensoren reagieren laut ArduRemote korrekt es gibt keine Instabilität dh Fluktuation der Werte.
Woran kann es liegen ?
Komisch ist auch dass die Ardu app mir eine "Drehzahl der Motoren zeigt obwohl ich es nicht angeschlossen habe worauf bezieht die die Werte ??
Auch was ich beobachten konnte ist er fährt sanft an und bleibt bei ca. 50 % der Leistung ( der Antriebe ) stecken ich erreiche nicht die volle Speed obwohl laut mover cpp die PWM bei 255 steht also volle kraft voraus.

Würde gerne jetzt meine Schleife Testen doch zuerst sollte ich die Krankheiten beseitigen welche anliegen.

Ich hoffe Ihr könnt mir weiterhelfen.

SG
Chris
 
Ich glaube das hat mit der speziellen Ansteuerung zu tun.

Im Motortest in der Konsole funktioniert es wie es soll? Halbe Geschwindigkeit, volle Geschwindigkeit?
Weil du schreibst, er fährt nur halbe Geschwindigkeit, würde ich die pwm Ansteuerung im Treiber mal anders probieren.
Wenn man in drivers.cpp die verschiedenen Optionen vergleicht, sieht man verschiedene.

z.B:
void setMC33926(int pinDir, int pinPWM, int speed){
if (speed < 0){
digitalWrite(pinDir, HIGH) ;
PinMan.analogWrite(pinPWM, 255-((byte)abs(speed))); // diese Zeile in deinem Treiber schreiben
} else {
digitalWrite(pinDir, LOW) ;
PinMan.analogWrite(pinPWM, ((byte)speed));



Ich dachte die NegativPwm-ansteuerung braucht man nur wenn man den Treiber mit 2 Pins ansteuert. Aber da liege ich wohl falsch.


noch eine Frage: wenn man Stop drückt, bleiben die Motoren dann stehen?
 
Hallo Gk

das ist es ja er fährt in der Konsole nur 1 Geschwindigkeit 1/2 Speed
Das verhalten der Antriebe wird immer komischer ich sehe dahinter keine Logik.
Mal drehen die richtig dann wieder nicht dann beim Test mit der Ardumower app sobald ich nach links drücke .. Chaos pur entweder dreht nur 1 Rad dann das andere mal in die eine dann wiederum in die andere Richtung.

Wurde die Software explizit für die bei Matronics angebotene Antriebe angepasst ? Es ist für mich schwer nachzuvollziehen wo besser gesagt wie ich die Motoren mit "nur" einer + und - Ansteuerung Steuern soll.
Soll oder muss ich für die Azurit die "speziellen" Antriebe einsetzen beduetet das für mich umbau des Chassis tausch der Akkus also kpl. umbau für quasi nur 2 neue Motoren.

Ein wenig frustriert mich das ganze.


Ich Probiere deinen Code und melde mich dann.

Vielen Dank erstmal.

SG

Chris
 
Hi Gk

erstaunlicherweise ist die Zeile:

PinMan.analogWrite(pinPWM, 255-((byte)abs(speed))); // diese Zeile in deinem Treiber schreiben

bei mir schon drin.
MIr fehelen die Ideen worauf es liegne könnte...

Um diene Frag zu beantworten ja sobald ich Stop ( Reverse ) drücke gehen die Antriebe sanft in den Stopp Modus.
Halten nicht sofort an sondern werden über eine "Rampe" abgebremst ( Ich hoffe dies soll so sein ??)

Habe jetzt auch noch "versucht" am Perimeter entlang zu fahren ... geht gar nicht dreht sich wild in der gegend herum.

Ich denke die korrekte ansteuerung der Antriebe ist erstmal prio 1

sg
Chris
 
es ist mir klar das diese Zeile schon im code enthalten ist, weil ich sie rauskopiert habe.

Du hast mich nicht richtig verstanden.
In drivers.cpp hast du von mir einen veränderten l298 Treiber mit Dir1, Dir2 bekommen.
Dieser wurde in der mower.cpp mit den.Setl298n-Zeilen aktiviert.(könnte man ändern in setMC33926, oder setL9958, oder setRomeoMotor)

Die Zeile die ich vorher meinte ist aus "void setMC33926". Es gibt 3 verschiedene Ansteuerungen wenn man die PinMan.analogWrite Zeilen vergleicht.
Du solltest jetzt diese Zeilen vom Mc33926 kopieren, und die PinMan.analogWrite Zeilen vom l298N ersetzen.


Zum abbremsen: Odometrie ist nicht eingeschaltet?
 
Ja das habe ich schon am Anfang gemacht Ich dachte mir schon, dass ich es für den MC33926 machen soll.
Die anderen Motoren Treiber (speziell l298 ) habe ich nicht verändert.


Odometrien ist natürlich aus ...macht auch keinen Sinn wenn ich keine Werte von den antrieben bekomme...


Besteht evtl. dei möglichkeit die Motoren über 1 Pin anzusteuern ? und dem anderen zb. auf dauer HIGH oder LOW zu setzen?

Keine Ahnunug was ich sonst noch machen kann...
 
Das habe ich gemeint, im anderen Posting. Es ist einfacher die Hardware zu ändern.

Im Schaltplan sieht man Wie die Mc33926 angeschlossen werden. Pwm auf In1 und Dir auf In2. Mc33926 D1 auf Gnd und D2 auf 5v(Brücken).

Ich hoffe du meinst mit 1 Dir Pin.

Ps an welchen Pin ist jetzt Pwm angeschlossen? Am Mega und am Mc33926(Anhang)?
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2731/mc33926-2.PNG/
 
Zuletzt bearbeitet von einem Moderator:
Hmm werde ich wohl tun müssen.
PWM ist bei mir an einen der PWM Anschlüsse beim Mega angeschlossen 1x 8 und 1x 7

Komisch ist dass der Mäher Motor immer mit voll Speed läuft

Egal ich verschalte es so wie du es mir empfohlen hast.
Meinst du es so wie im Anhang ? EN ist bei mir gebrückt ( siehe gelbe Umrandung) soll ich ihm auch verschalten oder gebrückt lassen ?
Kann ich gefahrlos D1 und D2 auf 5Volt Versorgung draufschalten ?
Bei mir läuft die 5 Volt Versorgung über eine Extra Batterie Eine Andere (12 Volt) Batterie versorgt die Antriebe und den Arduino.
Damit muss ich keine STEP DOWN Regler benutzen und die Spannung nicht verbraten.
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1857/Test_1.png/
 
Zuletzt bearbeitet von einem Moderator:
D1 und D2 mit einer Brücke wie enable versehen.

Du hast also den pwm Pin an D1 oder D2 angeschlossen. Im Anhang vorher war die Beschreibung der Pins. Ich glaube dann stimmt die Ansteuerung mit negativPwm nicht. Nur wenn er so angeschlossen wie oben beschrieben.
 
Hallo Gk

habe alles entsprechend verdrahtet und im Quellcode meine DIR2 Pins zurückgestellt.
Jetzt bekomme ich eine Fehlermeldung die ich nicht nachvollziehen kann
Habe beide Dateien Fehler Text_1 und meine jetzige mover.cpp worauf sich die Meldung bezieht angehängt

K.A was ich noch übersehen habe
Ich habe alle dir2 Pins auskommentiert und oder wir in der mover.cpp entfernt
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1857/Fehler_1.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Hi gk

hab's hinbekommen habe eine Funktion Deklaration übersehen … sorry

Läuft und zwar in der Konsole wie es laufen soll 1/2 Speed dann full Speed
Werde es morgen ergiebig testen , melde mich mit Ergebnissen.

Erstmal 1000 Dank !! Du bist hier der King !
 
Hallo gk,

Alles dreht sich wie es soll. Drehen klappt prima auch die Richtungen stimmen alles ganz gut.... nur wie kann ich die Antriebe agiler machen?
Der Mower reagiert sehr gediegen auf die Sensorik. Bis er abbremst ist er über das Hindernis drüber gefahren.
Die Reaktion der Antriebe grundsätzlich ist sehr langsam. Klar das schont die Motoren … aber runiert meine Möbel :)

Kann ich die Atriebe entsprechend umstellen ?

SG
Chris
 
Kann ich mit einem Trick die UNterspannungsüberwachung deaktivieren?

Mein Mäher misst nämlich während der Fahrt auf einmal 20V obwohl der Akku voll ist und schaltet dann komplett aus.

Erst nach enfernen der Batt. Spannung und neuem Start fährt er wieder ein paar Meter, bis dann erneut das Problem auftaucht und er wieder abschaltet.

Bitte um Hilfe, das Gras wächst und ich brauch bald eine Sense;)
 
Hi GK

bin mal wieder am werkeln.
So es tut sich langsam was ;-)

Jetzt habe ich Perimeter -schleife getestet. Joup es läuft aaaber Wie bekomme ich Ihm richtig eingestellt ?
Zwar fährt er die Schleife ab was echt geil ist , zeigt mir, dass er sich innerhalb des Perimeters befindet wenn er rausgeht auch outside usw.
Doch er reagiert leider etwas träge . Wie komme ich mit den Einstellungen am besten klar?

Gibt es dazu eine Guide ? Z.B. was bewirken die Einstellungen.
Es ist jede Menge was man einstellen kann. :)

Was ist wirklich von Bedeutung, wenn ich Ihm innerhalb der schleife fahren lassen will und sobald er in die nähe kommt, oder die Schleife anfährt, umgehend dreht und sich nach innen bewegt.

Was mich auch noch interessant ist . Sind nach Aktivieren der Schleife die Sonar Sensoren aus ? oder liegt hier die Priorisierung der schleife vor den Sensoren ?

Würde mich über eine Antwort freuen

SG
Chris
 
Hallo,

Gut das er wenigstens mal fährt.
Anleitung habe ich leider auch keine. Das er bei der Schleife gleich dreht, hätte ich auch gerne. Da bin ich aber selbst überfragt.
Eventuell die software von Roland oder Bernard mal durchsuchen( die verwenden aber Due).
Wie bei der Hardware im Schaltplan, kann man bei der Software im Code suchen.

zB: beim Perimeter suchen und abfahren wird MaxRpm dividiert( Das habe ich glaube ich auf weniger gestellt, finde es grade nicht in robot.cpp)

Wegen dem Sonar: das ist bei State_Peri_track auskommentiert(in Robot.cpp)

Im Letzten Post habe ich was von accel reduzieren geschrieben. Gemeint habe ich MotorZeroSettleTime. Das habe ich beim überfliegen von robot.cpp gesehen, der Wert wird dazugerechnet, dann wird er natürlich langsamer. Ändern auf eigene Gefahr..
 
Hi gk

Ja das mit der Schleife macht mich bissl stutzig. Der "Originla" Mäher dreht umgehend …
Wie weit musst du da von der Wand weg bleiben??

Habe die Motoren umgebaut die drehen jetzt mit nur 30 Rpm.
Die Sensoren innerhalb der Schleife sind mir wichtig ich will nichit ständig irgendwo dagegenstossen ... Bumper ist nicht eingebaut, was ich aber machen werde ist eine rein mechanische Lösung ( quasi zusätzlich zu den US ) mit beweglichen Chassi.

DUE liegt bei mir auch schon rum. Meinst du, dass die Software vom Roland oder Bernhard was bringt ?
Hat evtl. jemand damit schon Erfahrung ?

Mir ist das Aufgrund der Ladschaftlicher gegebenheit sehr wichtig, dass er zuminedest die Schleife nicht erst nach 5 Sek. drüberfahren bemerkt.
Genauso sind die US Sensoren wichtig.

Als nächstes teste ich die Batterie funktion. Dank deiner Anleitung. Mal sehen wie er sich das so verhält... vor allem weil ich eine Kopfladestetion Einbauen werde.
Danke für den Tipp mit : MotorZeroSettleTime teste es mal durch.

Melde mich asap

SG
Chris
 
Hallo

das Fahren innerhalb des Primeters klappt ganz gut habe meinem Mover sogar so weit dass er die Schleife nur ganz minimal überfährt.
Leider tauch folgendes Problem auf :
Sobald die Räder durchdrehen und das tun sie gelegntlich geht er Time out und bleibt stehen.
Warum ist es so empfindlich an dieser Stelle? (Feuchtigkeit , Gefälle, …)
Was auch merkwürdig ist das wie ich es beobachtet habe er in engen Passagen irgendwann aufgibt ... geht time out und bleibt stehen .
Besteht hier die Möglichkeit ihm so einzustellen, dass solange er rückwärts fährt er nicht timeout gehen kann ?
Auch wenn ich jetzt mein Time out höher stelle von mir aus auf 3-4 sek oder mehr kann ich nicht 100% sagen, ob er zurückgefharen ist, klar irgendwann kann schluß sein doch ärgerlich ist, er bleibt stehen und jetzt ist das Eingreifen notwendig.
Sprich ich kann ihm nicht alleine fahren lassen weil er sonst in der Pampa stehen bleibt und wartet bis er resetet bzw. neu gestartet wird.

Was auch sehr merkwürdig ist sind die US Sensoren ....
Die gehen zwar doch manchmal "übersieht" er Objekte die rel. nah sind.
Eingestellt ist Trigger below 20 cm
Was bei Objekten die ca. 30 cm von Mover entfernt sind ganz gut klappt, doch dreht er Aufgrund z.B. der Schleife und das Objekt ist "nur" 4 cm weg von ihm "sieht" er es nicht und fährt weiter dadrauf zu !??
Laut der Überwachung-Funktion in der app funktionieren die Sensoren aber prima ( ich erhalte genaue cm Werte )

Wie kann ich die 2 Schwachstellen beseitigen ?


SG

Chris
 
Hallo gk

ich habe das ganze versucht einzugrenzen.
Folgendes geht bzw. geht nicht.
Sensoren alleine ohne schleife alles cm genau und reproduzierbar. Läuft wie ein Uhrwerk.
Perimeter ein und es geht los … Perimeter ohne US Sensoren das gleiche ...( dachte evtl. wird der Perimeter Sensor von den US Sensoren gestört)
Er bleibt einfach stehen ohne Fehlermeldung … Dann nach dem Reset fährt er normal dann prescht er vor ( 100% Geschw.. ) schießt quasi über den Begrenzung Kabel und bleibt stehen.
Timeout kommt erst nach 10 Sek. ( weil ich es jetzt so eingestellt habe).
Wie kann ich die Schleife überwachen ? Monitoring der Schleife bzw. des Empfängers ?
Ich verstehe es nicht. Signal ist stark und recht stabil. Bricht laut Perimeter Anzeige ( in der Ardu app) smag und in / outside nicht ab.
Die WIKI beschreibung habe ich gesehen. Was ich meine war eher eine Anleitung worauf man achten sollte um dort kein Mist enstelluen zu können.

Ich finde auch sonst keine Fehler Außer Time Out nach 10 Sek ….
 
Oben