Kalibrieren

Natürlich, das war mir lieber!
Ist wirklich seltsam, weil er ja auch schon allein in die Station gefahren ist. Also er hatt nicht immer solche makken. Und so erkennt er den Draht ja wunderbar. Ist wirklich nur wenn er in die Station fahren soll!?
 
Der Fehler könnte auch in der Firmware des Mowers stecken. Hast du da mal eine neue versucht?
 
Du meinst eine neu runterladen und aufspielen, weil neue gibt's ja keine oder!? Aber ich glaube er merkt sich ja einige Sachen oder, ich habe neulich eine Änderung gemacht wegen dem langsamen rückwärts fahren aus der Station und nach dem flashen waren alle Einstellungen noch so wie ich sie vorher gespeichert habe.!?
 
Alle veränderten Einstellungen werden im Eeprom gespeichert und beim Start werden die in der Firmware hinterlegten Werte überschrieben.

Einmal zurücksetzen hilft da. "Factory settings" anklicken. Danach ohne zu speichern neu starten. Dann die Einstellungen einmal speichern. So war das, meine ich.

Du hast auch was im Code geändert? Ist es erst seitdem oder war es schon vorher so?
 
Na nur das mit dem langsamen Rückwärtsfahren der Station, dann den watchdog delay, die Inas habe ich dort auch auf 0.011 damit alles zusammen passt und was den Mow800 betrifft, mit der Laufrichtung der Motoren.

Kann ich gar nicht sagen, wie gesagt mal funktioniert es mal nicht🤷‍♂️
 
Last edited:
Das Poti vom Perimeter-Empfänger ist voll aufgedreht und der Kondensator ist gebrückt?
Läuft der Teensy mit voller Geschwindigkeit?
Ich finde deinen SMAG wert zu klein. Bei mir sind es bis zu 15000! Und der Strom im Perimeterdraht wird mit 550mA angezeigt, laut INA. Spannung ca. 9,5V, laut INA.
Wie groß ist der Widerstand der Perimeterschleife und wie groß ist dein Lastwiderstand?
 
Ja davon gehe ich stark aus, ich kann es jedoch nochmal prüfen. Ich meine es hatte sich immer dem Sendercode geändert. Mit dem alten Sendercode hatte ich sehr viel Mag aber sehr wenig Smag Werte. Kann das sein!? Ob da der Ina Wert eine Rolle spielt oder der Sende intervall vo. 140ms oder 50 ms. Ich habe keine Ahnung!?

4.5 Ohm hatt der Draht und dazu kommt noch ein 15 Ohm Lastwiederstand.
 
Last edited:
Das Multimeter zeigt keine brauchbaren ströme, da hier kein vernünftiger Gleichstrom fließt, auch kein Sinusförmiger Wechselstrom. 9V sollten aber passen.

Die Genauigkeit ist bei den INAs nicht sehr gut, bei den 10milliOhm varianten sogar recht bescheiden.
Entscheidend ist die Einstellung wann der Sender Ein- und Ausgeschaltet wird.

PERI_CURRENT_MIN hast du scheinbar eingestellt.

Obwohl ich da Widersprechen muss, da der Verzug ja auch entsteht wenn ich den Mäher Händich hinausschiebe und es ja kein Ladestrom mehr gibt, bleibt ja diese selbe Verzögerung des Perimeterstroms!? Ausschalten funktioniert super, sobald der Mäher an die Ladepunkte kommt geht er auch aus.
 
Wenn der Mäher an die Ladepunkte kommt steigt der Ladestrom sprunghaft an, beim Verlassen muss er deutlich den Wert von PeriOnOffThreschold unterschreiten. Wie groß ist dein Ladestrom, der von dem Sender gemessen wird, wenn der Mäher nicht in der Station steht? (ChargeThreshold muss auf 0 stehen!)
 
Muss ich mal schauen heut, das könnte sein das er da was misst aber nicht auf dem Display anzeigt. Aber wieso sollte der wert den er da evtl. Misst, sich nach 10-12 Sekunden ändern das er freischaltet!? Das ist ja eigentl. auch seltsam.
 
Bei diesen geringen Strömen schwanken die gemessenen Werte. Es kann also dauern bis der Wert unterschritten wird.

Ich bin gerade noch unterwegs, schreibe aber nachher mal was du ändern kannst um den Strom auf dem Display anzuzeigen.
 
The video show a bad wire signal reading .
Try to send more power in the wire using a 10 Ohms resistor or less :

In sender side: What are your setting:
Code:
#define OTAUpdates 1                  // OTA Updates

#define WhatsApp_messages 1           // Receive Messages when the mower starts from station and returns to station. (Configuration necessary)
                                      // 1) Create the Whatabot contact in your smartphone. The phone number is: +54 9 2364205798
                                      // 2) Send: "I allow whatabot to send me messages"
                                      // 3) Copy the phonenumber and the API that Whatabot sent you and enter it below.
                                      // Type your phone-number (e.g.: +49 170 123456789 --> 4917012345678) and your API-key in PersonalAccessData.h


#define AUTO_START_SIGNAL 1           // Use to start sender when mower leave station
#define USE_STATION 1                 // This station is used to charge the Mower. Then show the chargecurrent.
#define USE_PERI_CURRENT 1            // Use Feedback for perimeter current measurements? (set to '0' if not connected!)
//#define USE_BUTTON 0                // Use button to start mowing or send mower to station not finish
//#define SerialOutput 1

Now in the code the 10 secondes delay is here:
Code:
void loop() {

  #ifdef OTAUpdates
    ArduinoOTA.handle();
  #endif

  if (millis() >= nextTimeControl) {
    nextTimeControl = millis() + 10000;  //after debug can set this to 10 secondes

    #ifdef Screen
      StaticScreenParts();
    #endif
It was only 1 second in my initial code.
So change the line:
nextTimeControl = millis() + 1000; //after debug can set this to 10 secondes


@SefanH
Certainly not a solution because normally it's never append , but:
ISR routine need to be as short as possible to work at high frequency : try to remove Serial and screen code part in the error .
Code:
void IRAM_ATTR onTimer() {
  portENTER_CRITICAL_ISR(&timerMux);
  if (enableSenderA) {

    if (sigcode_norm[step] == 1) {
      digitalWrite(pinIN1, LOW);
      digitalWrite(pinIN2, HIGH);

    } else (sigcode_norm[step] == -1) {
      digitalWrite(pinIN1, HIGH);
      digitalWrite(pinIN2, LOW);

    }
    step++;
    if (step == sigcode_size) {
      step = 0;
    }
  }
  if (enableSenderB) {

    if (sigcode_norm[step] == 1) {
      digitalWrite(pinIN3, LOW);
      digitalWrite(pinIN4, HIGH);

    } else (sigcode_norm[step] == -1) {
      digitalWrite(pinIN3, HIGH);
      digitalWrite(pinIN4, LOW);

    }
    step++;
    if (step == sigcode_size) {
      step = 0;
    }
  }
  portEXIT_CRITICAL_ISR(&timerMux);
}
// End of Signalmanagement
 
Last edited:
@Bernard

Ok, I screwed the transmitter on again and checked everything. My voltage for the perimeter loop was definitely too low. It only had about 8 volts. Now I have set it to 11.5v and lo and behold we are in and above the 10,000 range!
"Work with experts one time...."

The entire line plus high load resistor is just over 16 ohms.

The settings in the sketch are the same as in your excerpt.

Bernard hit the mark again with the 1000 ms. That's it anyway, now the loop comes sooner. Phenomenal!!!👌👍

Ok, ich habe den Sender nochmal aufgeschraubt und alles überprüft.
Meine Spannung für die Perimeterschleife war aufjedenfall zu niedrig. Sie hatte nur knapp 8 volt. Jetzt habe ich Sie auf 11.5v Eingestellt und siehe da wir befinden uns im und über dem 10000er bereich!
"einmal mit Profis arbeiten...."

Die gesamte Leitung Plus Hochlastwiderstand hatt etwas über 16 Ohm.

Die Einstellung im Sketch sind genauso wie in deinem Ausschnitt.

Wiedermal ins schwarze getroffen Bernard, mit den 1000 ms. das wars auf jedenfall, jetzt kommt die schleife eher. Phänomenal!!!
 

Attachments

  • Screenshot_20240516_201124_ArduRemote.jpg
    Screenshot_20240516_201124_ArduRemote.jpg
    610.2 KB · Views: 4
  • 20240516_194619.jpg
    20240516_194619.jpg
    1.6 MB · Views: 4
  • 20240516_194634.jpg
    20240516_194634.jpg
    907.8 KB · Views: 4
@SefanH

Ok erstmal vielen Dank, fürs schnelle Umschreiben des Codes und hochladen aaaaaber, ich habe den alten Orginalen wieder genommen.

1. Grund ist "ChargeThreshold" auf 0 = keine schleife mehr.

2. Grund Das abändern bzw. Verkürzen des IRAM_ATTR onTimer = keine schleife mehr!?

Also habe ich nur die Millisekunden im Sketch geändert und wieder hochgeladen. Jetzt funzt es erstmal ganz gut. Jetzt habe ich so 300mah laut Multimeter, die zum Treiber gehen.

Den Mäher habe ich zurückgesetzt und neu gestartet damit ich wieder Ausgangswerte habe.

Nur leider ist "Back to Station" immer noch eine Katastrophe. Wire mähen bekommt er ganz gut hin aber das andere eher nicht?
Verstehe ich aber nicht wirklich, hatt echt mal besser funktioniert!? Er macht alles sehr schnell und mit zuviel Schwung!?
 

Attachments

Last edited:
Es können auch die Track-PID Werte sein. Versuch da mal einige Änderungen. Die Werte für P, I und D findest du unter Settings - Perimeter.
Weine Werte sind:
P=16,5
l=8
D=0

Zur Einstellung: Roland aus dem Ardumower Forum beschreibt es so:

Für das Perimetertracking musst du die PID Werte optimieren. Ich würde I und D auf 0 setzen und dann P solange justieren bis er anfängt zu schwingen. Dann P etwas runtersetzen und dann D leicht anpassen, dass das Zappeln etwas gedämpft wird. Dann P um ca. 30% (musst du ausprobieren womit er am besten läuft) verringern. Wenn er mit P und D vernünftig läuft, I anpassen.
 
Last edited:
You set the perimeter Max value at 17120 .You need to put here the max value you can read when mower is just above the wire.
Now for the strange behaviour when mower find the wire can you try to:
TEST WITHOUT SONAR Activate (i never test the code for sonar while tracking)
Check console when mower roll, it's not normal


Into setting motor:
reduce speed max in PWM
test with PID = 1 / 0.4 / 0
Check that when mower drive in flat ground RPM/PWM Speed L/R are both near the max value.
For example PWM max =150 / RPM max=34 with PWM real time = 80 / RPM real time = 34 are bad setting value
Also actual speed coeff need between 0.9 and 1.1 on flat ground.

Into setting Perimeter:
Reduce the tracking max speed if tracking in not smooth.
Test with PID =16.5 / 8 / 0
 
@SefanH
Ich Danke dir.... ich werde testen und berichten. In der Anleitung steht auch etwas von Abstand zwischen Räder und Perimeter Empfänger. Aber dafür gibt's ja keine Einstellung, das muss ich glaub auch über POD realisieren!
 
Last edited:
You set the perimeter Max value at 17120 .You need to put here the max value you can read when mower is just above the wire.
Now for the strange behaviour when mower find the wire can you try to:
TEST WITHOUT SONAR Activate (i never test the code for sonar while tracking)
Check console when mower roll, it's not normal


Into setting motor:
reduce speed max in PWM
test with PID = 1 / 0.4 / 0
Check that when mower drive in flat ground RPM/PWM Speed L/R are both near the max value.
For example PWM max =150 / RPM max=34 with PWM real time = 80 / RPM real time = 34 are bad setting value
Also actual speed coeff need between 0.9 and 1.1 on flat ground.

Into setting Perimeter:
Reduce the tracking max speed if tracking in not smooth.
Test with PID =16.5 / 8 / 0


OK, so he measured the high perimeter value at one point and I assumed that. Maybe the cable wasn't that deep there!? But I already put it down again yesterday.

OK, the rest are still the orginal values from the original firmware. I'll adjust it and report back.

Thank you...
 
Back
Top