Liste der Anhänge anzeigen (Anzahl: 1)
Wer findet den Fehler, Belohnung
Ich komme einfach nicht weiter und finde den Fehler nicht, also wer den Fehler findet und den Roboter einwandfrei zum laufen bringt kriegt 50€.
Im Anhang der aktuelle Code, und der Referenzcode vom letzten Jahr mit alter Hardware. Aus dem Referenzcode von 2 mit I2C verbundenen Atmega1284 ist der aktuelle Code für einen Atmega2560 entstanden.
Nur letztes Jahr ist der Roboter einwandfrei gefahren (>200 Betriebsstunden), dieses Jahr nicht:mad:.
Fehlerbild:
Reagiert selten auf Bumper oder Schleifensensoren
Bei Vorwärtsfahrt wird auf einmal für 1/2s auf Rückwärts geschalten, dann wieder vorwärts weiter (normalerweise werden immer Pausen bei Richtungswechsel gesetzt damit die Fahrmotoren auslaufen können)
Während Messerstart fährt der Roboter auf einmal los
Im Fahren zeigt er auf einmal am LCD den Modus Zurücksetzen an, auch Speed für rückwärts wird gesetzt, fährt aber ohne Halt ruhig vorwärts weiter.
Was funktioniert: im Einzeltest eigentlich alles, Menüs funktionieren, Kompass geht, GPS kommt an, Daten gehen über Bluetooth raus, Messerdrehzahl wird eingeregelt, wird gestoppt wenn Messerdrehzahl zu niedrig ist, Sensoren und Bumper werden auch immer super erkannt:confused:. Auffällig nur bei Einzeltest Messerstart drehen sich dann auch die Fahrmotoren mit, was nie vorkommen sollte.
Für Einzeltests gibt es die Funktion testsbeieinschalten, die bei Tastendruck gleich nach dem Hauptschalter an ausgeführt wird.
Fuses:
Ext Crytall OSc 8- 65ms (16Mhz Quarz)
EESave on
Brownout 4.3V
Bootloader vorbereitet und getestet, derzeit nicht verwendet.
Akkuauswertung nicht verwendet da der LiIon ja defekt ist, verwende zum Testen einen anderen alten Akku.
Code ist noch großteils ins Spaghettiform, fange gerade an in einzelne Module aufzusplitten, aber das geht auch nur wenn es mal funktioniert, sonst baue ich vielleicht noch zusätzliche Fehler ein.
Vieles vom Code ist praktisch identisch zum Referenzcode, nur angepasst an zB neue Anzahl Impulse/Radumdrehung oder Umstellung von Winkel Radiant auf Grad und der Integration GPS/Bluetooth. Dafür ist der Datentransfer zum Slave entfallen.
Programmiert wird mit Atmel Studio 6.2
LG Werner
Liste der Anhänge anzeigen (Anzahl: 1)
Hier sind ein paar Warnungen und Fehler rein über statische Analyse des Codes.
Anhang 30529
Unintialisierte Variable führen bsp. zu undefiniertem Verhalten. manchmal geht's .. Manchmal nicht ....
Liste der Anhänge anzeigen (Anzahl: 1)
Noch ein Versuch der Sache auf den Grund zu gehen:
Habe die Pins der Motorsteuerung am Atmega gewechselt, einfach mal um einen Defekt oder übersprechen vom Steuerung Mähmotor auf die Antriebsmotoren auszuschließen.
Erster Test: Alles natürlich angesteckt, aber noch die alten Motorpins konfiguriert: Fahrmotoren werden nicht angesteuert => Kein Übersprechen der Leitungen per Hardware.
Zweiter Test: Jetzt werden die richtigen Motorpins konfiguriert: Fahrmotoren laufen schon wieder bei Messerstart an, bei Rückwärtsfahrt wird schon nach 1s das Relais auf vorwärts geschalten, Anzeige am Display und PWM bleibt immer noch im Modus für Rückwärts.
Also Fehler wie immer, gleiches Verhalten im vollen und mini Programm.
Im Anhang das Mini Programm, braucht nur mehr 106 Bytes Ram, dass da der Stack übergeht kann man wohl ausschließen.
Wie schon erwähnt scheint alles andere zu funktionieren, auch bei Fahrfunktion Spiralfahrt wird die PWM der Motoren richtig geregelt, Bumper, Sensoren erkannt, zumindest lt Display daraufhin gedreht, etc.
Es sind nur diese 4 Ausgänge (2x Relais für Fahrtrichtung Rückwärts, 2x SD Enable am Motortreiber) die nicht richtig geschalten werden.
Könnte ja noch verstehen dass zB wegen Überlast der Ports die Relais nicht geschalten werden können und deswegen nach 1s die Relais abfallen, aber warum gehen die Enable Leitungen zum falschen Zeitpunkt auf high?
Braucht wer einen zu 99% funktionierenden Rasenroboter?? Erst 440 Betriebsstunden alt
LG Werner