PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ladezustandswarnung des Loaders "austricksen"



radbruch
05.03.2011, 22:47
Hallo

Ich habe die Spannungsversorgung meines RP6 auf vier Babyzellen a 4000mA umgerüstet (Einspeisung an der selben Stelle, Spannungsregler ausgebaut und überbrückt). Da die Spannungsmessung der Akkus unverändert ist meldet der Loader beim Verbinden auch brav 5,irgendwas Volt bei geladenen Akkus. Allerdings motzt er dann gleich nach dem Verbindungsaufbau und in Folge bei jedem Flashversuch die seiner Meinung nach zu niedrige Bordspannung an. Das kann man verhindern, wenn man in der Configdatei (boards.cfg im Config-Verzeichniss des Loaders, ich verwende v1.5f vom 29.06.2010) im Eintrag für die Base den Level der Spannungsversorgungswarnung ändert:


# RobotLoader
# - Board Library -
# [c]2007 - 2010 AREXX ENGINEERING
#
# created by Dominik S. Herwald
#
# DO NOT EDIT THIS FILE!

Boards.count=5

# RP6 Robot Base
Boards.0.id=1
Boards.0.name=RP6 Robot Base
Boards.0.processor=MEGA32
Boards.0.memStart=0x0000
Boards.0.memEnd=0x7800
Boards.0.highspeed=true
Boards.0.battery_warning=4.5

...

Urspünglich standen da 5.5, testweise verwende ich (trotz der Editwarnung) zur Zeit 4.5

Sehr clever gemacht von SlyD :)

Gruß

mic

RolfD
06.03.2011, 15:43
Hm... das ist mutig. 4 Zellen direkt am System. Das geht ... 4 x 1,2V Zellenspannung = 4,8V, da muss dann natürlich auch die 4,5 hin. Eigentlich müste die Warnung sowieso auf 5,8v.. also 5v +1 Diodenspannung da sonst der 5V Regler spinnen würde. Allerdings reagiert das System nun tendentiell empfindlich auf Schwankungen der Zellen/Versorgungsspannung in Richtung Brownout (wohl der Grund für SlyDs Abfrage) und Du hast keine Reserven wenn die Zellenspannung absinkt. Leere Zellen haben nur sowas um die 0,8v ... Und der Motorstrom steigt evtl. wegen niedriger Versorgung... W=U*I ... also bei gleicher Leistung macht weniger U mehr I ... muss evtl in der Motorenüberwachung angepasst werden. Du betreibst die PWM Motorentreiber so immerhin dauerhaft mit 2,5-3 Volt geringerer Spannung und die CPU auch direkt da dran. Ob das längerfristig stabil ist... hm... Ich würde den ausgelöteten Regler nicht zu weit weg legen. Soviel Gewinn ist das auch nicht mit den 4Ah ... weil... 4Ah *4,8V= 19,2 Watt/h .. nimmt man 6 zellen a 2,7Ah kommt man immerhin auf 16,2 Watt/h.. Du hast deine Reichweite also um unglaubliche 3 Wattstunden oder 20% erhöht :) zumindest so lange die Zellen voll genug sind und die CPU nicht wegen Unterspannung/Brownout zickt... praktisch ist das wohl eher das Hornberger Schießen :) Die Packungsdichte der Ladungsträger ist bei guten AA Zellen einfach besser als bei Mignon Zellen, man müsste schon 8Ah da rauskitzeln damit man echte Gewinne hat.
LG RolfD

TobiKa
06.03.2011, 16:27
Und der Motorstrom steigt evtl. wegen niedriger Versorgung... W=U*I ... also bei gleicher Leistung macht weniger U mehr I ...
Wie soll das denn gehen?!

RolfD
06.03.2011, 16:43
Mit dem Taschenrechner.... und dem Ohmschen Gesetzen. Wenn Du Fragen hast, dann bitte so präzise, das man darauf auch antworten kann.
LG Rolf

radbruch
06.03.2011, 16:45
Hallo

Wirklich mutig ist das nicht. asuro, probot, nibobee, caterpillar und auch der ra2 arbeiten mit vier Akkus bei mir schon zum Teil recht lange ohne Probleme. Einzig mein RP6 hatte bisher den "Luxus" eines Spannungsreglers an 6 Akkus. Die arm64-Platine des ra2 besitzt zwar auch einen Spannungsregler, der benötigt aber mehr als 6 Zellen um die Bordspannung beim gleichzeitigem Betrieb aller Servos ausreichend stabil zu halten. Bei meinen Tests reichten auch 8 AA-Zellen (und gebrückter D1) nicht aus, mit 4 Baby-Zellen ohne Spannungsregler funktioniert er aber tadellos. Da ich meinen ra2 auf dem RP6 aufgesetzt habe und nicht zwei Akkupacks durch die Landschaft kutschieren will, blieb vorerst nur diese Möglichkeit übrig. Außerdem habe ich den Verdacht, die serielle Laderei der Akkus im RP6 ist auf Dauer schädlich für die Akkus. Den ausgelöteten Spannungsregler habe natürlich verliersicher aufbewahrt ;)


http://www.youtube.com/watch?v=U8cpVntdCGs

Das arm64 steuert über I2C den RP6 (auf dem RP6 läuft das Slavedemo), das Display und die Tastatur. Da bastle ich zwar schon ewig dran rum, aber wirklich weiter geht es nicht, weil ich mich zu sehr von anderen Dingen ablenken lasse. Immerhin habe ich jetzt endlich die Spannungsversorgung in Angriff genommen. Software gibt's noch keine. Das ist zwar nichts weltbewegendes, für mich aber das erste Projekt das viele meiner bisherigen "Errungenschaften" kombiniert.

Gruß

mic

TobiKa
06.03.2011, 16:48
Mit dem Taschenrechner.... und dem Ohmschen Gesetzen. Wenn Du Fragen hast, dann bitte so präzise, das man darauf auch antworten kann.
LG Rolf
Bei konstantem Widerstand und kleiner Spannung kommt bei mir ein kleiner Strom raus.

RolfD
06.03.2011, 16:55
@Radbruch
naja wenns funktioniert ist ja gut :) mir wär das glaube ich zu kritisch.
Ich hab im Microcontroller.net zuletzt eine Ansteuerung für ruckfreie Servos gesehen, mit denen man Flankenansteuerungen vornimmt, vielleicht wäre das was für dich. Ich suchs noch mal eben.
Habs.. schau mal da... http://www.mikrocontroller.net/topic/31369
Dann ziehen auch die Servos weniger (Anlauf)Strom.
@Tobika
richtig... ich rede aber nicht von R sondern von W als Produkt der Terme U und I .... und da muss man nun mal ein Term vergrößern wenn man den anderen verkleinert bei gleichbleibenden Produkt.
LG Rolf

TobiKa
06.03.2011, 17:01
Das ist schon klar.
Nur verstehe ich den Sinn deines Beitrags aber noch immer nicht, da die Leistung nicht konstant bleiben wird, wenn man sie Spannung senkt.

SlyD
06.03.2011, 17:08
@RolfD


Eigentlich müste die Warnung sowieso auf 5,8v.. also 5v +1 Diodenspannung da sonst der 5V Regler spinnen würde.

Nö das ist ein LDO der spinnt nicht so schnell :)
Ginge bei niedriger Last auch mit ca. 5,2V noch.

MfG,
SlyD

radbruch
06.03.2011, 17:21
Huch, was habe ich nun wieder ausgelöst?

Der RP6 soll den Arm nur kurze Strecken langsam durch die Gegend fahren. Dazu braucht er, trotz des Mehrgewichts, vermutlich nicht soviel Leistung wie solo mit Vollgas. Die Motorenüberwachung werde ich wohl nicht anpassen müssen, denn der erlaubte Maximalstrom ist nicht von der Versorgungsspannung abhängig. Das Ganze sollte ja nicht der Leistungssteigerung der Versorgung dienen sondern den zweiten Akkupack unnötig machen.

Danke für den Link, ich schau's grad an...

RolfD
06.03.2011, 17:32
@SlyD
aso ok.. ja da geht das, ich kenn das noch von den normalen 7805ern.. die brauchten so 0,7 bis 0,8 V mehr.
@Tobika
Es ist nun mal so das Leistung sich aus U*I berechnet, ob und wie die Leistung erbracht oder auch abgenommen/umgesetzt wird ist damit nicht gesagt. Aber stell dir einfach vor, das dein RP6 eine Schräge hoch fährt... Sagen wir 10cm/sek bei 8V und 500 mA ... jetzt reduzierst du die Motorspannung um 3 Volt... was muss steigen damit Du den RP6 in der gleichen Geschwindigkeit dort hoch kriegst? der Motorstrom...! Letztlich umgesetzt durch längere PWM Impulse in der Motorbrücke... der RP6 wird das natürlich abkönnen, was ich damit aber sagen will ist, das es eben doch zu verschiebungen im Lastverhalten kommen kann. Und daher macht es auch Sinn das mal zu erwähnen. Der Motor ist ja nun mal nicht der begrenzende Faktor bezüglich seiner Leistung - zumindest nicht bei so kleinen Werten. (Wobei PWM am Motoranker aber eh schon ein Produkt aus u*i in Verdengelung mit 1/t ist... aber das geht zu weit)
@Radbruch, schau noch mal mein letzter Post oben, ich hab den Link drangesetzt, da gibts auch ein Filmchen irgendwo... oder "Sanfte Servos AVR" suchen. Es geht da um Beschleunigungs- und Bremsflanken und so ne Art Microstepping (so nennt man das wohl bei Steppern).

EDIT: Ich hatte Dein Post als Anleitung missverstanden, die Kapazität des RP6 durch größere Zellen "zu erhöhen" was ich etwas kritisch sah. Das es technische Notwendigkeiten bezüglich der 2 Akupacks gab und weniger um Leistung ging, ergab sich ja erst in den späteren Posts.
LG Rolf

TobiKa
06.03.2011, 17:41
Der Motor ist ja nun mal nicht der begrenzende Faktor bezüglich seiner Leistung - zumindest nicht bei so kleinen Werten.
Ah ok, darum gehts. Ja dann isses mir nun auch klar, was du damit sagen wolltest.

radbruch
06.03.2011, 18:27
Hallo

Ich denke, dass mit der Leistung ist nun geklärt. Solange der RP6 einigermaßen zahm fährt sollte es funktionieren. Als Hintertür habe ich immer noch die Option die H-Brücke des RP6 mit zusätzlichen 1 bis 2 Akkus zu versorgen.

Zu der angesprochenen Servoansteuerung: Ich hab's jetzt mal überflogen und muss leider sagen, dass wäre für meine Anwendung der absolute Overkill. Selbstverständlich respektiere ich die Leistung des Programmieres und möchte seine Arbeit hier auch nicht zerpflücken. (Zumal mich die "Kollegen" seit der Kamerageschichte eh hassen;) Ich werde, wie eigentlich bisher immer, auch bei der Programmierung des Arms meinen eigenen Weg gehen. Möglicherweise erfinde ich dabei manche Räder neu, aber ich will ja in erster Linie etwas lernen und nicht nur einfach "Abschreiben".

Übrigends steuert mein arm64 den RP6 mit angepassten I2C-Funktionen des m32 an, allerdings immer noch auf Basis der orginalen I2C-Libraries. Wenn deine I2C-Modifikationen den Beta-Status verlassen haben, würde ich die gerne auch übernehmen. Als Tester bin ich aber nicht geeignet, weil ich noch zuwenig Praxis mit I2C habe.

Gruß

mic

RolfD
06.03.2011, 18:37
Dafür ist die neue I2C Lib ja gedacht :) Ich warte auf das Ersatzboard, Rechnung hab ich schon und bezahlt ist auch. Geht bald weiter. Du hast ne arm64 da laufen? Schick :)

Wegen Servo.. naja mich interessieren die Politics nicht... mein Löteisen wird genau so warm wie Deins oder dem Entwickler seins da im anderen Forum. Und gute Ideen sind nun mal zu allererst gute Ideen. Aber ok, wenns dir nix bringt. *schulterzuck

Ach ja.. zu den Accus..man kann sie zwar seriell laden, aber man sollte sich aber ab und zu den Luxus gönnen und mal die Zellen ausbauen und alle einzeln gründlich entladen oder laden. Sonst arbeiten die nicht 100% gleich und irgendwann bekommen die ne Art Ladehemmung da niemals alle Zellen immer 100% den gleichen Ladezustand haben. Die sind dann noch nicht im Eimer. aber das ist ne Vorstufe dazu. Lässt sich aber früh genug behandelt wieder hinbekommen. Alle 50 Ladungen so eine Accu-kur und man hat mehr Freude an seinem Nickel-Cadmium oder Metallhydrit.
LG Rolf

radbruch
06.03.2011, 19:46
Hallo

Meine 2500er-NIMHs vom Discounter sind immer noch der erste Satz, allerdings schwächelten sie in letzter Zeit zunehmend. Ich hatte sie dann ein paarmal einzeln im Ladegerät geladen, dann wurde die Standzeit wieder besser. Aber das Ausbauen nervte sehr. Das war letztlich auch der Tritt in den Hintern der mich nun endlich zum Umrüsten auf externe Baby-Zellen bewegte. Vielleicht war das der Grund warum das arm64 mit den RP6-Akkus nicht zusammenarbeiten wollte? Alternativ hatte ich schon ein Loch auf der Rückseite des RP6 angedacht durch das man den Akkuhalter ohne Demontage der Platine rausziehen könnte.


Aber ok, wenns dir nix bringt. *schulterzuckEs überzeugt mich nicht. Drei Timer, eine zweifelhafte physikalische Grundlage

// In der folgenden Zeile steckt ganz furchtbar viel Physik...
servo[i].dtmax = ((servo_register[REG_TT]<<8) + servo_register[REG_TT+1])/(sqrt(servo[i].hub<<1));
unnötig aufgeblasener und unschöner/unsicherer Code

switch (i) { // Den laufenden Servopuls beenden
case 0: break; // <-- Hier war noch keiner an.
case 1: PORTB = PINB &!(1<<0); break; // Servo an Port B.0
case 2: PORTB = PINB &!(1<<1); break; // usw.
...
case 6: PORTB = PINB &!(1<<5); break;
}

goto next;
...
goto next;
...
return; // in der ISR!
next:
sowie nichtssagende Videos, gepaart mit quasi null Resonanz auf den Thread, ermuntern mich nicht wirklich, das für mein arm64 mit seinen sechs 16bit-Hardware-PWM-Kanälen umzumoddeln ;)

Gruß

mic

RolfD
06.03.2011, 21:51
Ich akzeptiere deine Einstellung zu dem Servoprogramm aber simmer mal ehrlich.... der Code ist für nen AVR gedacht...
Die "furchtbar komplizierte Berechnung" da oben dürfte eine einfache Allerwelts-Parabelkurve sein... eine Rampe wäre auch möglich und würde weniger Rechenzeit kosten, Beschleunigung träger Massen auf einer Parabel abzubilden liegt jedoch seid Newton recht nahe :) Und Ansteuerungen von Servos im AVR - sprich ohne richtige HardwarePWM - ist immer Timergefummels... aber ich sehe ein, das es dir in der speziellen Problemstellung nichts nutzt. Die Idee ist trotzdem nicht von der Hand zu weisen denn sie setzt ein durchaus verbreitetes Konzept der lastausgleichenden Anlaufsteuerung mit Parabelkurven / Rampen um, was Motoren und Getriebe schont und optisch sanfter läuft. Der Code ist sicher verbesserungs-würdig und -fähig aber das ist eher Herrausforderung als Hindernis. Es ist wie bei so vielen Dingen - eine Lösung von der Stange ist eben kein Ersatz für eine selbstgebaute maßgeschneiderte Lösung. Das Programm und das Filmchen beweisen aber, das es sich lohnen kann, da Hirnschmalz zu investieren. Mehr wollte ich damit eigentlich nicht anregen. 1:1 abschreiben funktioniert sowieso selten... wir hatten grade wieder so ein Fall in der Politik :)
LG Rolf

radbruch
06.03.2011, 23:44
Ich akzeptiere deine Einstellung zu dem ServoprogrammDen Eindruck habe ich aber eher nicht ;)

Ich muss abwägen, ob mich die Einarbeitung in das fremde Programm und die Portierung auf meine Anwendung oder ein eigener Ansatz schneller zu meinem Ziel bringt. Die Grundlagen zur Impulserzeugung habe ich mir schon erarbeitet, ebenso wie die gleichzeitige Erzeugung einer Zeitbasis. Was mir noch fehlt ist ein Algorithmus zur Berechnung der Beschleunigungs- und Verzögerungsrampen. Blöderweise ist aber genau der nicht gut dokumentiert. Da ich auf Anhieb viele Punkte nicht mit meinen eigenen Erkenntnissen in Einklang bringen kann, gehe ich davon aus, dass auch die Rampenberechnung meinen Ansprüchen nicht genügen wird.

Grundsätzlich stellt sich noch die Frage, ob ich überhaupt Rampen benötigen werde und ob man diese mit einem RC-Servo überhaupt umsetzen kann.


Das Programm und das Filmchen beweisen aber, das es sich lohnen kann, da Hirnschmalz zu investieren.Das Programm verwendet alle Timer des Mega8 und sperrt sie damit für andere Anwendungen. In den extrem kurzen Videosequenzen kann ich die beschriebene Funktion bei bestem Willen nicht erkennen.

RolfD
07.03.2011, 01:36
Hi noch mal,

Den Eindruck habe ich aber eher nicht ;)

Doch natürlich... warum sollte es anders sein... es ist Dein Bot... deine Servos :)

Aber etwas ernster...



Grundsätzlich stellt sich noch die Frage, ob ich überhaupt Rampen benötigen werde und ob man diese mit einem RC-Servo überhaupt umsetzen kann.


Das sind 2 Fragen, den ersten Teil musst Du dir selbst beantworten und man kann ihn auch invertieren... "kannst Du auf Rampen verzichten?" Und da sagt die tägliche Praxis offensichtlich "ja". Der zweite Teil ... beantwortet ansich die Physik. Je mehr Trägheit ein Servo zu bewegen hat, um so relevanter wird es - theoretisch - , natürlich spielt es bei einem SRF auf dem Ruderhorn kaum eine Rolle aber Dein Servos müssen mehrere andere stemmen. Ob ein Servo für diese Ansteuerung tatsächlich geeignet ist, müsste man vielleicht noch mal testen. Nicht jeder Servo ist baugleich und es gibt weitere Faktoren und vielleicht ist es dir ja auch total 88 ob der nu ruckelt oder nicht...

Aber dessen Idee per se in Frage zu stellen finde ich nicht ok.



Das Programm verwendet alle Timer des Mega8 und sperrt sie damit für andere Anwendungen. In den extrem kurzen Videosequenzen kann ich die beschriebene Funktion bei bestem Willen nicht erkennen.

Was die Timer (und Code) angeht, orientierst Du dich wieder viel zu sehr am Source und nicht an der zugrunde liegenden Idee. Hab ich oben schon angesprochen. Man kann die Idee sicher auch noch anders in Software gießen - auf dem ARM64 sowieso..
Das ist das eine, das andere, man hört das die Servos ruhiger laufen - sehen tut man tatsächlich wenig - ausser das Servos bei den Movements normalerweise auseinander fliegen würden wenn man sie herkömlich unter Last so ansteuert. Leider erkennt man aber nicht welches Gewicht da bewegt wird und da kritisierst Du zurecht die Aussagefähigkeit der Bilder. Das ist aber kein Beweis das es nicht geht. Ich glaube nun mal nicht daran, das jemand unwidersprochen nen Fakeprogramm mit 3 Timern schreibt und ins Netz setzt nur um andere in die Irre zu führen oder sich auf Palcebo-Effekten auszuruhen ... irgendwas wird da schon dran sein. Aber das zu messen bräuchte man z.B. ein gutes Ampermeter oder Oszi und den direkten Vergleich mit und ohne Rampe... und mehr Infos.

Ich würde vorschlagen, wir beenden unseren "Servodisput" hier denn er führt zu nichts - ich hab kein Servo/Robotarm zum testen da und selbst wenn, hättest du mit dem ARM64 immer noch andere Systemvoraussetzungen... es ist also echt müßig sich da zu streiten da wir unsere Standpunkte bisher beide nicht mit Praxis unterstreichen können. Von meiner Seite war es nur ein gut gemeinter Vorschlag.

Allein schon deswegen unterstreich ich noch mal den ersten Quote.
LG Rolf