Fragen zur Ardumower-GPS-App und zum Mähverhalten

Wenn Du mit Sapos arbeitest, musst Du lt. https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Position_source_mode Du absolute Mode wählen und dann Deine lokale Position eintragen. Ich habe diese mit einer GPS App ermittelt und auf 4 Nachkommastellen genau eingetragen. Vertan hatte ich mich damit, Long und Lat vertauscht eingegeben, da diese in meiner GPS App in einer anderen Reihenfolge angegeben waren. Und laut Deinem Screenshot, ist Dir der Fehler auch passiert.

Danke für den Tipp...Genau das war das Problem.
Danach hatte ich noch viel mit der Odometrie rumgespielt, weil er keine geraden Bahnen gefahren ist.
Dann fiel mir der Bugfix mit den Kondensatoren aus dem Wiki wieder ein.
Eingelötet, und nun fährt er wie er soll perfekte Bahnen...😁😁😁
Am Wochenende bau ich die Messer drunter 👍

Vielen Dank nochmal an alle für die vielen Tipps beim Aufbau...Ohne euch hätte ich das Projekt wahrscheinlich schon aufgegeben oder an die Wand geworfen :)
 
Hi zusammen,

ich übernehme mal wieder "meinen" Threat zum Aufbau des Mowers.
@greymfm76: kannst Du den evtl. umbenennen? Der Titel passt nicht mehr ganz zu meinen ersten Fragen.
Vielleicht sollten wir daraus "Fragen vor dem Kauf und zum Aufbau mit Board 1.4, GPS-RTK und Brushless Antrieb" machen?

Ich wollte hier eigentlich eine komplette Doku von Fragen, die sich der Reihe nach beim Aufbau des Mowers mit dem neuen Board 1.4 und den neuen BL-Antrieben ergeben, erstellen. Im Moment läuft die etwas durcheinander.
Vielleicht sollten wir Fragen zu Software, wenn sich nicht speziell mit dem Board 1.4 zu tun haben, in einem eigenen Thema stellen?

Ich hab jetzt auch eine IMU nachbestellt.

Auf dem Board 1.4 kann ich keine Beschriftung der Polarität der Motoren finden. Auch nicht, wenn die Stecker noch nicht gelötet sind.
Die Polarität kann man nur aus der Anleitung für B1.3 herauslesen. Ich nehme an, dass die für 1.4 nicht geändert wurde, oder?

Wie wird die Odometrie bei BL angeschlossen?
Bernd hat ein Foto von den Anschlüssen gemacht, da ist die Verkabelung sehr gut zu erkennen.
Also Anschlüsse Motoren und ODO:

Bei euren Bilder stimmt die Poolung für den Linken Motor aber nicht überein? Und nun??

Die Bilder für die Odometrie helfen mir weiter. Danke.
Ich habe mir jetzt auch einmal wieder neues Material bestellt: IMU, Stecker , Crimpzange,... damit es weiter gehen kann...
 
Hat jemand schon erfolgreich diese Kombi am laufen:
Sunray+RTK+Brushless+PCB1.4 ?

Ich hab gestern mal meine ersten Runden mit meinem Ardumower gedreht, aber nur per manueller Steuerung und ausgeschalteter Mähscheibe (noch nicht ausgewuchtet).

Ich hab bei der Steuerung das Problem dass er Mower nur sehr ruckhaft fährt, also die BL Motoren fahren auf max. Drehzahl hoch, soweit ich das richtig interpretiere.
Es lässt sich auch keine b.z. 20° Kurve fahren, sondern nur geradeaus oder drehen.
Unterstützt Sunray die BL Motoren noch nicht richtig, oder hab ich in der Config noch etwas falsch eingstellt?



// Ardumower Sunray
// Copyright (c) 2013-2020 by Alexander Grau, Grau GmbH
// Licensed GPLv3 for open source use
// or Grau GmbH Commercial License for commercial use (http://grauonline.de/cms2/?page_id=153)

/* see Wiki for installation details:
http://wiki.ardumower.de/index.php?title=Ardumower_Sunray

requirements:
+ Ardumower chassis and Ardumower motors
+ Ardumower PCB 1.3
+ Adafruit Grand Central M4 (highly recommended) or Arduino Due
+ Ardumower BLE UART module (HM-10/CC2540/CC2541)
+ optional: Ardumower IMU (MPU6050/MPU9150/MPU9250/MPU9255) - choose your IMU below
+ optional: Ardumower WIFI (ESP8266 ESP-01 with stock firmware)
+ optional: HTU21D temperature/humidity sensor
+ optional: sonar, bumperduino, freewheel sensor
+ Ardumower RTK (ublox F9P)


1. Rename file 'config_example.h' into 'config.h'

2. Configure the options below and finally compile and upload this project.


Adafruit Grand Central M4 NOTE: You have to add SDA, SCL pull-up resistors to the board
and deactivate Due clone reset cicuit (JP13):

Arduino Due UPLOAD NOTE:

If using Arduino Due 'native' USB port for uploading, choose board 'Arduino Due native' in the
Arduino IDE and COM port 'Arduino Due native port'.

If using Arduino Due 'programming' USB port for uploading, choose board 'Arduino Due programming' in the
Arduino IDE and COM port 'Arduino Due programming port'.

Also, you may choose the serial port below for serial monitor output (CONSOLE).

*/



#ifdef __cplusplus
#include "udpserial.h"
#include "sdserial.h"
#include "src/agcm4/adafruit_grand_central.h"
#ifdef __linux__
#include "src/raspi/raspi.h"
#include <Console.h>
#endif
#endif

//#define DRV_SERIAL_ROBOT 1
#define DRV_ARDUMOWER 1 // keep this for Ardumower


// ------- Bluetooth4.0/BLE module -----------------------------------
// see Wiki on how to install the BLE module and configure the jumpers:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Bluetooth_BLE_UART_module
#define ENABLE_PASS 1 // comment out to disable password authentication
#define PASS 123456 // choose password for WiFi/BLE communication

// ------- RTK GPS module -----------------------------------
// see Wiki on how to install the GPS module and configure the jumpers:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Bluetooth_BLE_UART_module

// -------- IMU sensor ----------------------------------------------
// choose one MPU IMU (make sure to connect AD0 on the MPU board to 3.3v)
// verify in CONSOLE that your IMU was found (you will hear 8 buzzer beeps for automatic calibration at start)
// see Wiki for wiring, how to position the module, and to configure the I2C pullup jumpers:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#IMU.2C_sensor_fusion

//#define MPU6050
//#define MPU9150
#define MPU9250 // also choose this for MPU9255


// should the mower turn off if IMU is tilt over? (yes: uncomment line, no: comment line)
#define ENABLE_TILT_DETECTION 1

// ------- SD card map load/resume and logging ---------------------------------
// all serial console output can be logged to a (FAT32 formatted) SD card
// NOTE: for full log file inspections, we will need your sunray.ino.elf binary
// (you can find out the location of the compiled .elf file while compiling with verbose compilation switched on
// via 'File->Preferences->Full output during compile') - detailed steps here:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#SD_card_module
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#SD_card_logging
//#define ENABLE_SD 1 // enable SD card services (resuming, logging)? (uncomment to activate)
//#define ENABLE_SD_LOG 1 // enable SD card logging? (uncomment to activate)
//#define ENABLE_SD_RESUME 1 // enable SD card map load/resume on reset? (uncomment to activate)


// ------ odometry -----------------------------------
// values below are for Ardumower chassis and Ardumower motors
// see Wiki on how to configure the odometry divider:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#PCB1.3_odometry_divider
// NOTE: It is important to verify your odometry is working accurate.
// Follow the steps described in the Wiki to verify your odometry returns approx. 1 meter distance for
// driving the same distance on the ground (without connected GPS):
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Odometry_test
// https://forum.ardumower.de/threads/andere-räder-wie-config-h-ändern.23865/post-41732
#define WHEEL_BASE_CM 36 // wheel-to-wheel distance (cm)
#define WHEEL_DIAMETER 250 // wheel diameter (mm)

//#define ENABLE_ODOMETRY_ERROR_DETECTION true // use this to detect odometry erros
#define ENABLE_ODOMETRY_ERROR_DETECTION false

// choose ticks per wheel revolution :
// ...for the 36mm diameter motor (blue cap) https://www.marotronics.de/2-x-36er-DC-Planeten-Getriebemotor-24-Volt-mit-HallIC-30-33-RPM-8mm-Welle
//#define TICKS_PER_REVOLUTION 1310 / 2 // odometry ticks per wheel revolution

// ...for the 36mm diameter motor (black cap) https://www.marotronics.de/MA36-DC-...-30-33-RPM-8mm-Welle-ab-2-Stueck-Staffelpreis
// #define TICKS_PER_REVOLUTION 975 / 2

// ...for the newer 42mm diameter motor (green connector) https://www.marotronics.de/MA42-DC-...-30-33-RPM-8mm-Welle-ab-2-Stueck-Staffelpreis
// #define TICKS_PER_REVOLUTION 696 / 2 // odometry ticks per wheel revolution

// ...for the older 42mm diameter motor (white connector) https://wiki.ardumower.de/images/d/d6/Ardumower_chassis_inside_ready.jpg
#define TICKS_PER_REVOLUTION 1050 / 2 // odometry ticks per wheel revolution

// ...for the brushless motor april 2021 https://wiki.ardumower.de/index.php?title=Datei:BLUnit.JPG
//#define TICKS_PER_REVOLUTION 1300 / 2 // 1194/2 odometry ticks per wheel revolution

// #define TICKS_PER_REVOLUTION 304 // odometry ticks per wheel revolution (RM18)


// ----- gear motors --------------------------------------------------
#define MOTOR_DRIVER_BRUSHLESS 1 // uncomment this for new brushless motor drivers

#define MOTOR_OVERLOAD_CURRENT 0.8 // gear motors overload current (amps)

//#define USE_LINEAR_SPEED_RAMP true // use a speed ramp for the linear speed
#define USE_LINEAR_SPEED_RAMP false // do not use a speed ramp

// motor speed control (PID coefficients) - these values are tuned for Ardumower motors
// general information about PID controllers: https://wiki.ardumower.de/index.php?title=PID_control
#define MOTOR_PID_KP 2.0 // do not change 2.0 (for non-Ardumower motors or if the motor speed control is too fast you may try: KP=1.0, KI=0, KD=0)
#define MOTOR_PID_KI 0.03 // do not change 0.03
#define MOTOR_PID_KD 0.03 // do not change 0.03


// ----- mowing motor -------------------------------------------------
#define MOW_OVERLOAD_CURRENT 2.0 // mowing motor overload current (amps)

// should the direction of mowing motor toggle each start? (yes: true, no: false)
#define MOW_TOGGLE_DIR true
//#define MOW_TOGGLE_DIR false

// should the motor overload detection be enabled?
//#define ENABLE_OVERLOAD_DETECTION true
#define ENABLE_OVERLOAD_DETECTION false

// should the motor fault (error) detection be enabled?
#define ENABLE_FAULT_DETECTION true
//#define ENABLE_FAULT_DETECTION false // use this if you keep getting 'motor error'


// ------ WIFI module (ESP8266 ESP-01 with ESP firmware 2.2.1) --------------------------------
// NOTE: all settings (maps, absolute position source etc.) are stored in your phone - when using another
// device for the WIFI connection (PC etc.), you will have to transfer those settings (share maps via app,
// re-enter absolute position source etc) !
// see Wiki on how to install the WIFI module and configure the WIFI jumpers:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Bluetooth_BLE_UART_module

#define START_AP false // should WIFI module start its own access point?
#define WIFI_IP 192,168,2,15 // choose IP e.g. 192,168,4,1 (comment out for dynamic IP/DHCP) - NOTE: use commans instead of points
#define WIFI_SSID "myssid" // choose WiFi network ID
#define WIFI_PASS "mypassword" // choose WiFi network password

// client (app) ---> server (robot)
#define ENABLE_SERVER true // must be enabled if robot should act as server (recommended)
//#define ENABLE_SERVER false // must be disabled if robot should act as client (requires external relay server)

// a relay server allows to access the robot via the Internet by transferring data from app to robot and vice versa (not available yet, highly experimental)
// client (app) ---> relay server <--- client (robot)
#define ENABLE_RELAY false // must be enabled to use relay server
#define RELAY_USER "username" // choose a unique user name/number!
#define RELAY_MACHINE "robot1" // choose a unique robot id
#define RELAY_HOST "grauonline.net" // relay server name
#define RELAY_PORT 5000 // relay server port

//#define ENABLE_UDP 1 // enable console for UDP? (for developers only)
#define UDP_SERVER_IP 192,168,2,56 // remote UDP IP and port to connect to
#define UDP_SERVER_PORT 4210

// --------- NTRIP client (linux only, highly experimental) ---------------------------------
#define NTRIP_HOST "195.227.70.119" // sapos nrw
#define NTRIP_PORT 2101
#define NTRIP_MOUNT "VRS_3_4G_NW"
#define NTRIP_USER "user"
#define NTRIP_PASS "pass"

// ------ MQTT (highly experimental - ENABLE_SERVER must be set to false for this to work :-/ ) -----------------------------
// you can access your robot using a MQTT broker - choose a topic prefix for your robot below - available MQTT topics:
// robot1/cmd (cmd can be: start, stop, dock)
// robot1/op (current robot operation as text)
// robot1/gps/sol (current gps solution as text)
// robot1/gps/pos (current gps position as text)
//#define ENABLE_MQTT true // start MQTT client? (true for yes, false for no)
#define ENABLE_MQTT false
#define MQTT_TOPIC_PREFIX "robot1" // the MQTT topic prefix for your robot
#define MQTT_SERVER "192.168.2.47" // your MQTT broker IP or hostname (e.g. "broker.mqtt-dashboard.com")
#define MQTT_PORT 1883


// ------ ultrasonic sensor -----------------------------
// see Wiki on how to install the ultrasonic sensors:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Ultrasonic_sensor

//#define SONAR_ENABLE true
#define SONAR_ENABLE false
#define SONAR_TRIGGER_OBSTACLES true // should sonar be used to trigger obstacles? if not, mower will only slow down
#define SONAR_LEFT_OBSTACLE_CM 10 // stop mowing operation below this distance (cm)
#define SONAR_CENTER_OBSTACLE_CM 10 // stop mowing operation below this distance (cm)
#define SONAR_RIGHT_OBSTACLE_CM 10 // stop mowing operation below this distance (cm)

// ------ rain sensor ----------------------------------------------------------
//#define RAIN_ENABLE true // if activated, mower will dock when rain sensor triggers
#define RAIN_ENABLE false

// ------ time-of-flight distance sensor (VL53L0X) -----------------------------
// do not use this sensor (not recommended)
//#define TOF_ENABLE true
#define TOF_ENABLE false
#define TOF_OBSTACLE_CM 100 // stop mowing operation below this distance (cm)


// ------ bumper sensor (bumperduino, freewheel etc.) ----------------
// see Wiki on how to install bumperduino or freewheel sensor:
// https://wiki.ardumower.de/index.php?title=Bumper_sensor
// https://wiki.ardumower.de/index.php?title=Free_wheel_sensor
// #define BUMPER_ENABLE true
#define BUMPER_ENABLE false
#define BUMPER_DEADTIME 1000 // linear motion dead-time (ms) after bumper is allowed to trigger


// ----- battery charging current measurement (INA169) --------------
// the Marotronics charger outputs max 1.5A
// ( https://www.marotronics.de/Ladegera...kus-24V-mit-Status-LED-auch-fuer-Li-Ion-Akkus )
// so we are using the INA169 in non-bridged mode (max. 2.5A)
// ( https://www.marotronics.de/INA169-Analog-DC-Current-Sensor-Breakout-60V-25A-5A-Marotronics )

//#define CURRENT_FACTOR 0.5 // PCB1.3 (non-bridged INA169, max. 2.5A)
//#define CURRENT_FACTOR 1.0 // PCB1.3 (bridged INA169, max. 5A)
#define CURRENT_FACTOR 1.98 // PCB1.4 (non-bridged INA169, max. 2.5A)
//#define CURRENT_FACTOR 2.941 // PCB1.4 (bridged INA169, max. 5A)

#define GO_HOME_VOLTAGE 21.5 // start going to dock below this voltage
// The battery will charge if both battery voltage is below that value and charging current is above that value.
#define BAT_FULL_VOLTAGE 28.7 // start mowing again at this voltage
#define BAT_FULL_CURRENT 0.2 // start mowing again below this charging current (amps)

// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Automatic_battery_switch_off
#define BAT_SWITCH_OFF_IDLE false // switch off if idle (JP8 must be set to autom.)
#define BAT_SWITCH_OFF_UNDERVOLTAGE true // switch off if undervoltage (JP8 must be set to autom.)


// ------ GPS ------------------------------------------
// NOTE: if you experience GPS checksum errors, try to increase UART FIFO size:
// 1. Arduino IDE->File->Preferences->Click on 'preferences.txt' at the bottom
// 2. Locate file 'packages/arduino/hardware/sam/xxxxx/cores/arduino/RingBuffer.h'
// (for Adafruit Grand Central M4: 'packages\adafruit\hardware\samd\xxxxx\cores\arduino\RingBuffer.h')
// change: #define SERIAL_BUFFER_SIZE 128 into into: #define SERIAL_BUFFER_SIZE 1024

//#define REQUIRE_VALID_GPS true // mower will pause if no float and no fix GPS solution during mowing
#define REQUIRE_VALID_GPS false // mower will continue to mow if no float or no fix solution

#define GPS_SPEED_DETECTION true // will detect obstacles via GPS feedback (no speed)
//#define GPS_SPEED_DETECTION false

// detect if robot is actually moving (obstacle detection via GPS feedback)
#define GPS_MOTION_DETECTION true // if robot is not moving trigger obstacle avoidance
//#define GPS_MOTION_DETECTION false // ignore if robot is not moving
#define GPS_MOTION_DETECTION_TIMEOUT 10 // timeout for motion (secs)

// configure ublox f9p with optimal settings (will be stored in f9p RAM only)
// NOTE: due to a PCB1.3 bug GPS_RX pin is not working and you have to fix this by a wire:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#PCB1.3_GPS_pin_fix (see step 2)
#define GPS_CONFIG true // configure GPS receiver (recommended - requires GPS wire fix above!)
//#define GPS_CONFIG false // do not configure GPS receiver (no GPS wire fix required)

#define GPS_CONFIG_FILTER true // use signal strength filter? (recommended to get rid of 'FIX jumps')
//#define GPS_CONFIG_FILTER false // use this if you have difficulties to get a FIX solution


// ------ experimental options -------------------------

#define OSTACLE_AVOIDANCE true // try to find a way around obstacle
//#define OSTACLE_AVOIDANCE false // stop robot on obstacle
#define OBSTACLE_DIAMETER 1.2 // choose diameter of obstacles placed in front of robot (m) for obstacle avoidance

// detect robot being kidnapped? robot will go into error if distance to tracked path is greater than 1m
//#define KIDNAP_DETECT true
#define KIDNAP_DETECT false

// drive curves smoothly?
#define SMOOTH_CURVES true
//#define SMOOTH_CURVES false


//#define ENABLE_PATH_FINDER true // path finder is experimental (can be slow - you may have to wait until robot actually starts)
#define ENABLE_PATH_FINDER false
#define ALLOW_ROUTE_OUTSIDE_PERI_METER 1.0 // max. distance (m) to allow routing from outside perimeter
// (increase if you get 'no map route' errors near perimeter)

// is a docking station available?
//#define DOCKING_STATION true // use this if docking station available and mower should dock automatically
#define DOCKING_STATION false // mower will just stop after mowing instead of docking automatically

//#define DOCK_AUTO_START true // robot will automatically continue mowing after docked automatically
#define DOCK_AUTO_START false // robot will not automatically continue mowing after docked automatically


// stanley control for path tracking - determines gain how fast to correct for lateral path errors
#define STANLEY_CONTROL_K_NORMAL 0.5 // 0.5 for path tracking control when in normal or fast motion
#define STANLEY_CONTROL_K_SLOW 0.1 // 0.1 for path tracking control when in slow motion (e.g. docking tracking)

// activate support for model R/C control?
// use PCB pin 'mow' for R/C model control speed and PCB pin 'steering' for R/C model control steering,
// also connect 5v and GND and activate model R/C control via PCB P20 start button for 3 sec.
// more details: https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#R.2FC_model
//#define RCMODEL_ENABLE true
#define RCMODEL_ENABLE false

// button control (turns on additional features via the POWER-ON button)
#define BUTTON_CONTROL true // additional features activated (press-and-hold button for specific beep count:
// 1 beep=start/stop, 5 beeps=dock, 3 beeps=R/C mode ON/OFF)
//#define BUTTON_CONTROL false // additional features deactivated


// --------- serial monitor output (CONSOLE) ------------------------
// which Arduino Due USB port do you want to your for serial monitor output (CONSOLE)?
// Arduino Due native USB port => choose SerialUSB
// Arduino Due programming port => choose Serial
#ifdef _SAM3XA_
#define BOARD "Arduino Due"
#define CONSOLE SerialUSB // Arduino Due: do not change (used for Due native USB serial console)
#elif __SAMD51__
#define BOARD "Adafruit Grand Central M4"
#define CONSOLE Serial // Adafruit Grand Central M4
#elif __linux__
#define BOARD "Raspberry PI"
#define CONSOLE Console
#endif

// ------- serial ports and baudrates---------------------------------
#define CONSOLE_BAUDRATE 115200 // baudrate used for console
//#define CONSOLE_BAUDRATE 921600 // baudrate used for console
#define BLE_BAUDRATE 115200 // baudrate used for BLE
#define BLE_NAME "Ardumower" // name for BLE module
#define GPS_BAUDRATE 115200 // baudrate for GPS RTK module
#define WIFI_BAUDRATE 115200 // baudrate for WIFI module

#ifdef _SAM3XA_ // Arduino Due
#define WIFI Serial1
#define ROBOT Serial1
#define BLE Serial2
#define GPS Serial3
//#define GPS Serial // only use this for .ubx logs (sendgps.py)
#elif __SAMD51__ // Adafruit Grand Central M4
#define WIFI Serial2
#define ROBOT Serial2
#define BLE Serial3
#define GPS Serial4
#elif __linux__
#define WIFI SerialWIFI
#define SERIAL_WIFI_PATH "/dev/null"
#define BLE SerialBLE
#define GPS SerialGPS
#define SERIAL_GPS_PATH "/dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00"
#define ROBOT SerialROBOT
#define SERIAL_ROBOT_PATH "/dev/ttyUSB1"
#define NTRIP SerialNTRIP
#define SERIAL_NTRIP_PATH "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_00000000-if00-port0"
#endif



// ------- I2C addresses -----------------------------
#define DS1307_ADDRESS B1101000
#define AT24C32_ADDRESS B1010000


// ------- PCB1.3/Due settings -------------------------
#define IOREF 3.3 // I/O reference voltage

// ------ hardware pins---------------------------------------
// no configuration needed here
#define pinMotorEnable 37 // EN motors enable
#define pinMotorLeftPWM 5 // M1_IN1 left motor PWM pin
#define pinMotorLeftDir 31 // M1_IN2 left motor Dir pin
#define pinMotorLeftSense A1 // M1_FB left motor current sense
#define pinMotorLeftFault 25 // M1_SF left motor fault

#define pinMotorRightPWM 3 // M2_IN1 right motor PWM pin
#define pinMotorRightDir 33 // M2_IN2 right motor Dir pin
#define pinMotorRightSense A0 // M2_FB right motor current sense
#define pinMotorRightFault 27 // M2_SF right motor fault

#define pinMotorMowPWM 2 // M1_IN1 mower motor PWM pin (if using MOSFET, use this pin)
#define pinMotorMowDir 29 // M1_IN2 mower motor Dir pin (if using MOSFET, keep unconnected)
#define pinMotorMowSense A3 // M1_FB mower motor current sense
#define pinMotorMowFault 26 // M1_SF mower motor fault (if using MOSFET/L298N, keep unconnected)
#define pinMotorMowEnable 28 // EN mower motor enable (if using MOSFET/L298N, keep unconnected)
#define pinMotorMowRpm A11

#define pinFreeWheel 8 // front/rear free wheel sensor
#define pinBumperLeft 39 // bumper pins
#define pinBumperRight 38

#define pinDropLeft 45 // drop pins Dropsensor - Absturzsensor
#define pinDropRight 23 // drop pins Dropsensor - Absturzsensor

#define pinSonarCenterTrigger 24 // ultrasonic sensor pins
#define pinSonarCenterEcho 22
#define pinSonarRightTrigger 30
#define pinSonarRightEcho 32
#define pinSonarLeftTrigger 34
#define pinSonarLeftEcho 36
#define pinPerimeterRight A4 // perimeter
#define pinDockingReflector A4 // docking IR reflector
#define pinPerimeterLeft A5

#define pinLED 13 // LED
#define pinBuzzer 53 // Buzzer
#define pinTilt 35 // Tilt sensor (required for TC-G158 board)
#define pinButton 51 // digital ON/OFF button
#define pinBatteryVoltage A2 // battery voltage sensor
#define pinBatterySwitch 4 // battery-OFF switch
#define pinChargeVoltage A9 // charging voltage sensor
#define pinChargeCurrent A8 // charge current sensor
#define pinChargeRelay 50 // charge relay
#define pinRemoteMow 12 // remote control mower motor
#define pinRemoteSteer 11 // remote control steering
#define pinRemoteSpeed 10 // remote control speed
#define pinRemoteSwitch 52 // remote control switch
#define pinVoltageMeasurement A7 // test pin for your own voltage measurements
#if defined(_SAM3XA_) // Arduino Due
#define pinOdometryLeft DAC0 // left odometry sensor
#define pinOdometryRight CANRX // right odometry sensor
#define pinReservedP46 CANTX // reserved
#define pinReservedP48 DAC1 // reserved
#else // Adafruit Grand Central M4
#define pinOdometryLeft A12 // left odometry sensor
#define pinOdometryRight A14 // right odometry sensor
#define pinReservedP46 A15 // reserved
#define pinReservedP48 A13 // reserved
#endif
#define pinLawnFrontRecv 40 // lawn sensor front receive
#define pinLawnFrontSend 41 // lawn sensor front sender
#define pinLawnBackRecv 42 // lawn sensor back receive
#define pinLawnBackSend 43 // lawn sensor back sender
#define pinUserSwitch1 46 // user-defined switch 1
#define pinUserSwitch2 47 // user-defined switch 2
#define pinUserSwitch3 48 // user-defined switch 3
#define pinRain 44 // rain sensor
#define pinReservedP14 A7 // reserved
#define pinReservedP22 A6 // reserved
#define pinReservedP26 A10 // reserved

// IMU (compass/gyro/accel): I2C (SCL, SDA)
// Bluetooth: Serial2 (TX2, RX2)
// GPS: Serial3 (TX3, RX3)
// WIFI: Serial1 (TX1, RX1)

#define DEBUG(x) CONSOLE.print(x)
#define DEBUGLN(x) CONSOLE.println(x)

#if defined(ENABLE_SD_LOG)
#define CONSOLE sdSerial
#elif defined(ENABLE_UDP)
#define CONSOLE udpSerial
#endif

#ifndef SDCARD_SS_PIN
#if defined(_SAM3XA_) // Arduino Due
#define SDCARD_SS_PIN pinUserSwitch1
#else
#define SDCARD_SS_PIN 4
#endif
#endif
 
Hat jemand schon erfolgreich diese Kombi am laufen:
Sunray+RTK+Brushless+PCB1.4 ?

Ich hab gestern mal meine ersten Runden mit meinem Ardumower gedreht, aber nur per manueller Steuerung und ausgeschalteter Mähscheibe (noch nicht ausgewuchtet).

Ich hab bei der Steuerung das Problem dass er Mower nur sehr ruckhaft fährt, also die BL Motoren fahren auf max. Drehzahl hoch, soweit ich das richtig interpretiere.
Es lässt sich auch keine b.z. 20° Kurve fahren, sondern nur geradeaus oder drehen.
Unterstützt Sunray die BL Motoren noch nicht richtig, oder hab ich in der Config noch etwas falsch eingstellt?
Ich denke hier:
// ...for the older 42mm diameter motor (white connector) https://wiki.ardumower.de/images/d/d6/Ardumower_chassis_inside_ready.jpg
#define TICKS_PER_REVOLUTION 1050 / 2 // odometry ticks per wheel revolution

// ...for the brushless motor april 2021 https://wiki.ardumower.de/index.php?title=Datei:BLUnit.JPG
//#define TICKS_PER_REVOLUTION 1300 / 2 // 1194/2 odometry ticks per wheel revolution
liegt der Fehler ...

Du hast die ODO für die alten 42mm Motoren genommen und nicht für die BL Antriebe.
Die Kondensatoren wie in der Wiki hast du für die ODO dran?
 
Bin auch schon wieder am Nachbestellen ;-(
So wird das noch länger dauern ;-((
Bei den BL Treibern der Antriebsmotoren hatte ich dummerweise jeweils den Motoranschluß falsch eingelötet. Ein Fehler weniger ;-)

Ich versuche meinen Eintrag bei allen gefundenen Tips/Problemen/Fix zu aktualisieren, vielleicht kann er ja als Grundlage für zukünftige Anleitungen dienen.
(https://forum.ardumower.de/threads/...gps-app-und-zum-mähverhalten.24112/post-46034)
 
Danke für den Tipp, hatte gedacht dass die Odo Verbindung nicht zwingend notwendig ist und habs weggelassen weil ich noch zu wenig 4pol-kabel hatte.
Hab jetzt das ultraschallkabel geopfert, jetzt fährt er sich ganz gut.
Hab keine 220nF, hab daher 100nF genommen, ist aber denke ich zu wenig weil sich an meinem problem noch nichts geändert hat:

Der Mähmotor schaltet nach ein paar Sekunden ab - überstromerkennung?
Dann wechselt er vermutlich die Drehrichtung, in der er dann aber auf volle Drehzahl geht, so dass auch die Nachbarn wach werden. Odo nicht erkannt-nur in eine Richtung?
 
Meiner Meinung ists egal wenn man beim BL Motor Spule und Sensor gleich vertauscht, aber anscheinend doch nicht, also U V W jeweils gleich ist. Aber anscheinend machts einen großen unterschied weil jetzt die Stromaufnahme stark gesunken ist und links/rechtslauf auch gleichmäßig ist. Hatte Gelb mit Grün vertauscht.

Hab jetzt mal pwmMaxMow = 130; gesetzt, werds morgen nochmal testen. Ich denke er dreht mit 180 trotzdem noch zu hoch weil die Strommessung nicht ganz stimmt,
Die Stromaufnahme die ich mit dem Multimeter messe ist immer deutlich höher als das was die App anzeigt (ist 0,6A anzeige 0,4A). Eine Verdopplung von CURRENT_FACTOR hat aber auch nicht das gewünschte Ergebnis gebracht.
 
Super, seit heute online:

https://wiki.ardumower.de/index.php?title=PCB_1.4_(Deutsch)


Und falls es jemanden interessiert. Mein Maleur beim Anschluß der BL Motoren hat offensichtlich doch die SMD Sicherung gekostet. Laut obiger Bauanleitung ist hier eine mit Halterung verbaut. Auf meinem Board allerdings nicht. Ich bestelle also einmal wieder Bauteile und warte....
 
Zuletzt bearbeitet:
Bei mir sind die Sicherungen auch alle fest verlötet.
pwmMaxMow = 180; ist doch die beste einstellung...allerdings wäre wünschenswert die Geschwindigkeit für manuellen Betrieb über die App einstellen zu können.

Mein Ardumower hat heute seine ersten ~400m² gemäht :)
Also wenn jemand das gleiche Setup hat wie ich (Sunray+RTK+Brushless+PCB1.4) und noch startprobleme hat, könnte ich ab jetzt weiterhelfen.
 
Moin zusammen,
und die großen 2200er Elkos werden für BL wohl doch nicht benötigt. Ich denke das übernehmen die Elkos auf den BL-Treiber-Platinen.
Jetzt ist nur die Frage, stören die dann, wenn sie jetzt mal drin sind? Ich glaub ich löte die wieder raus.
Also wenn jemand das gleiche Setup hat wie ich (Sunray+RTK+Brushless+PCB1.4) und noch startprobleme hat, könnte ich ab jetzt weiterhelfen.
Da komm ich dann gerne drauf zurück. :)


Dirk
 
Ich hab sie drinnen lassen, ein Elko kann nicht schaden, ist ja nur zum spannung stabilisierrn da. So gesehen wird die versorungsspannung der BL platinen schon vorstabilisiert.
 
Zuletzt bearbeitet:
Moin zusammen, ich versuche über die Sunray APP eine Karte aufzuzeichen. im Feld steht aber gleich die "Warning: Coordinates are too large for the firmware, Activate absolute pos mode and set origin closer to robot" Was muss ich hier machen? Als Position wird "238XX,59E 998XX.45N -96Grad" Da müsste doch was mit 52Grad Nord und 7Grad Ost stehen, was stell ich denn nun ein als POS Mode: Abolute oder Relative , und müssen die Felder LAT und LON ausgefüllt werden? Format? Danke
 
Hi,
ich trau mich ja gar nicht fragen, aber ich bin schon dauernd auf der Suche, wo ich Infos dazu finde, wie die I2C-Module angeschlossen werden müssen.
Die XH-Stecker sind doch auf der Platine an zwei Spannungsversorgungspins (im Bild die beiden grünen Pfade) angeschlossen.
Die obere ist mit 5V die untere mit 3,3V belegt.
Ich muss die Module je nachdem, welche Spannung sie benötigen an die entsprechende Leitung anschließen und dann den Jumper auch entsprechend setzen?
 

Anhänge

  • I2C_2.JPG
    I2C_2.JPG
    141,3 KB · Aufrufe: 11
Mit dem Jumper legst du den Signalpegel auf SCL und SDA fest und setzt die Pullups. 5V und 3,3 V an den Pins sind die Spannungsversorgung des Moduls. Je nach dem, musst du das Modul dann anschließen. Viele haben 5V Spannung und 3,3V Pegel. Dann schließt du VCC an den 5V Pin an und setzt den Jumper auf 3,3.
 
Zuletzt bearbeitet:
Hallo wieder mal,
ich hab grad das Board das erste Mal mit Spannung versorgt und am DC-DC-Wandler erfolgreich die 9V eingestellt.

Danach habe ich die BL-Adpaterplatine aufgelötet und die Spannungen an den grünen Steckern für die Motorstromversorgungen gemessen.
Das Thema, dass Spannungen verkehrt gepolt sind haben wir weiter oben ja schon mal besprochen. (Deshalb wollte ich die ja auch mal kontrollieren)

Nun sind bei mir alle Motorspannungen gleich am Board aber nicht passend zur Anleitung.
Im Bild unten habe ich das nochmal dargestellt. Links die Anleitung, rechts meine Messung.
Blau ist Minus, Rot dementsprechend Plus. Wie man sieht ist der Mower und der rechte Motor anders gepolt als es die Anleitung eigentlich vorgibt.

Das erklärt auch das Bild vom Bernd aus #76.

Ich nehme an, dass ich mich nun nicht nach der Anleitung (ist auch in dem Entwurf für 1.4 noch nicht geändert) richten soll, sondern so wie Bernd auf dem Bild das echte, gemessene Plus an die Motorplatine an Plus anschließen muss?
 

Anhänge

  • Motorspannungen.JPG
    Motorspannungen.JPG
    70,8 KB · Aufrufe: 37
Oben