Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mono Wheel Bot



Seiten : 1 2 [3]

radbruch
26.05.2008, 00:08
Nur so ein Gedanke: Was passiert denn bei einer rein ohmschen Last wie z.B. eine (Auto-)Glühbirne? Als Hinweis auf schlecht entstörte Motoren? Irgendwas muss das doch verursachen..

mausi_mick
26.05.2008, 06:58
hi Murdoc_mm,

ich halte den Vorschlag von radbruch auch für sehr gut, ich habe kein besonderes Vertrauen in die Strommessungen mit einem (langsamen ) Multimeter.
Bei den sehr hohen (Ermittlung siehe unten) Anfahrströmen der Motoren sollte man
auch mehrere Sicherheitsmassnahmen vornehmen, die eventuell
auch die Resetprobleme beheben:
- kurze, dicke (Kupfer-) Leitungen mitn >= 1,6 Quadratmm vom Akku zu den Treibern und den Motoren,
- separater Anschluss / Absicherung für Spannungsversorgung Controller
(abtrennen von Motorversorgung vielleicht mit separater Diode/Elko)
- Einzelabsicherung der Treiber/Motoren mit schneller (6A ?) Sicherung
- Beim Test Leistungsvorwiderstand von 2-3 Ohm vor die Motoren (Strombegrenzung auf ca 5A), Rsense mit 0,33 Ohm(?) hilft da nicht wirklich,
- erstmal nur einen Motor betreiben
- Entstörung des Motors mit (kleinen ?)Keramikkondensatoren zwischen den +-Anschlüssen und Gehäuse (ich weiss aber nicht, ob das bei PWM und H-Brücke funktioniert, hängt vermutlich auch von der PWM-Frequenz ab)
- Verdrillen der Motorzuleitung, Abschirmung könnte auch helfen.

Möglich ist auch , dass sich die Motoren beim Anfahren gegenseitig behindern, da die Motorkennlinien nicht 100% übereinstimmen.
Das kann eventuell auch zu Schwingungen (Aufschaukeln) führen.

In Deinem Programm hab ich nichts unangenehmes gefunden, nur dass Du
I von 0 an alle 40ms hochzählst.
Hast Du mal ermittelt, bei welchem Wert I der Motor überhaupt anläuft.
Den Wert würde ich dann als Startwert I start nehmen, damit der Motor nicht unnötig lange Strom zieht, ohne sich zu bewegen (er zieht dann wohl - wenn Du ohne Rsense arbeitest - in den High-Phasen ca 15 A (eventuell durch die Induktivität ("da kommt der Strom spät) der Ankerwicklung wird der Wert in der kurzen Zeit nicht erreicht . Diese Peaks siehst Du natürlich auf deinem Multimeter nicht, da der angezeigte Wert ja der PWM-Mittelwert ist , sie können aber den Treiberbaustein schädigen.

Und nun noch eine Bemerkung zu den Motordaten:

aus den paar im Datenblatt des Motors RE540/1 (MFA / Como Drills 919D Series) zu Leerlauf und Betrieb im Optimum lässt sich der Anlauf / Blockkierstrom (für Drehzahl 0) ermitteln.
Da die Motorstromkennlinie bei solchen Gleichstrommotoren linear verläuft, ergibt sich aus den zwei Wertepaaren Leerlauf: (Drehmoment = 0/ I Leer = 0,52 A ) und Nennbetrieb: (Drehmoment = 154,4 gcm, I Nenn = 2,85 A ) und dem Blockierdrehmoment (Drehzahl = 0, Drehmoment = 1000 gcm) der Blockier-Anfahrstrom zu 15,5 A.
( Skizze kann ich zur Zeit nicht posten, da ich meine 3 MB Grenze überschritten habe)).
Bei Drehzahlen unterhalb der Nenndrehzahl (13360) liegt der Strom über 2,85 A, bei z.B 10700 Umdrehungen bereits bei ca 5 A.

Klingon77
26.05.2008, 08:29
hi Murdoc_mm,

wenn es von Deiner Schaltung aus betrachtet keine Probleme verursacht, ziehe einfach mal ein Kabel von der Akku-Masse zu einem der untern quer verlaufenden 6mm breiten Flachstähle.

Damit setzt Du das mech. Innenteil auf Masse.

Das Stahlteil deshalb, weil es im Gegensatz zum Alu keine nicht leitende Oxydschicht bildet.

Eine der Schrauben der Überschlagsicherungs-Bügel (oder besser zwei; eine links und eine rechts) würden sich anbieten. Die Farbe unter dem Alu-Röhrchen weggekratzt und ein Litzenkabel dazwischen.
Eine Kontrollmessung kannst Du oben an der blanken Stahlwelle der oberen Laufrollenschwinge machen. Wenn die Masse dort ankommt ist der Rest ebenfalls auf Masse.

Ist schnell gemacht und gibt evtl. etwas mehr Aufschluß, ob das Problem durch elektrische Aufladung hervorgerufen wird.


Wenn alle Stricke reißen, könnte ich Dir meinen alten Russen (Oszi) leihweise schicken.
Wird aber nicht billig.

Du könntest Ihn mir dann bei Deinem nächsten Besuch in der Heimat von Deutschland aus zurückschicken.
Zur Zeit brauche ich ihn nicht; es würde also nicht eilen.


Die Anforderungen für elektronische Schaltungen im KFZ-Bereich sind, glaube ich, sehr hoch.

Evtl. findest Du dort (Google) ein paar Schaltungs-Tips, wie man das Problem mit Spannungsspitzen entschärfen kann.


Was mir noch einfällt wäre eine separate Stromversorgung für die Elektronik (oder nur für den Prozessor).
In den nach oben verlaufenden Streben sollte noch genügend Platz für ein oder zwei Akku-Pack´s sein.
Zum testen sicherlich eine Überlegung wert.

Evt. könnte/müsste man mit schnellen Optokopplern die Signale ausgeben und einlesen. Dann sollte aber auch Ruhe sein.

Der Prozessor selber hat keinen "Knacks"? Schon mal einen anderen versucht?

Sorry, wenn ich hier meine laienhafte Lösungsvorschläge -ansätze poste; bin halt Mechaniker und habe keine allzu große Kenntnisse über Elektronik.


immer noch zuversichtliche Grüße,

Klingon77

uwegw
26.05.2008, 09:31
Das gleiche mit Last und ohne. Sehr oft wenn die Motoren das Rad antreiben aber auch wenn sie frei laufen passiert es.
Daher würde ich den Bandgenerator-Effekt erst mal ausschließen. Die Störung scheint aber von der Belastung der Motoren abhängig zu sein.

Zum MCUCSR: eigentlich müsste es reichen, am Programmbeginn das Register auszulesen, zu löschen und den Wert auszugeben. Hab das aber selber noch nie ausprobiert.

Ansonsten gib doch noch mal die aktuelle Beschaltung von Reset, VCC und AVCC am AVR an. Vielleicht lässt sich da ja noch mehr an Entstörmaßnahmen finden.

EMV-mäßig ist so ein Lochrasteraufbau jedenfalls immer recht heikel. Vielleicht müssen doch noch ordentlich geätzte Platinen her (könnte ich dir in den Semesterferien wohl ätzen). Ich würde die Elektronik auf jeden Fall modularer aufbauen. Also getrennte Platinen für Controller, Motorteiber, Sensoren etc. Das hat den großen Vorteil, dass man zb auf einen neuen Treiber umsteigen kann, ohne an vorhandenen Platinen rumzulöten.

radbruch
26.05.2008, 09:48
Hallo

Bei den "laienhaften" Vorschlägen kann ich mich auch beteiligen. Ich habe keine praktische Erfahrungen mit (selbstprogramierter Hardware-) PWM, schon gar nicht in Bascom. Beim Versuch die Konfiguration im Testcode oben nachzuvollziehen bin ich über die Byte/Wort-Problematik gestolpert (Datenblatt Mega32 Seite 89 "Accessing 16-bit Registers").

Selbstverständlich gehe ich auch davon aus dass Bascom dies richtig macht, aber sicherheitshalber würde ich beim Schreiben von Pwm1a/b die Interrupts sperren. Ein Fehler beim Schreiben des High-Byte könnte meiner Meinung nach auch einen plötzlichen großen Motorstrom verursachen.


'abbremsen
Do
DISABLE INTERRUPTS
Pwm1b = I
ENABLE INTERRUPTS

Waitms 40
I = I - 5
Loop Until I < 10

Gruß

mic

Murdoc_mm
26.05.2008, 11:28
Hi,

erstmal Danke für die vilen Antworten.


- kurze, dicke (Kupfer-) Leitungen mitn >= 1,6 Quadratmm vom Akku zu den Treibern und den Motoren

Ich hab für die Zuleitung zur Platine und für die Motorleitungen 1,5mm² flex. Kupferkabel genommen. Auf der platine verteil ich über die Lötbahnen und mehrere zusammengezwirbelte Litzen (am Anfang hatte ich auch da das Kupferkabel genommen aber das stellte sich als zu starr heraus, sodass ich mehrere Litzen verwenden musste).

Leider musste ich ein paar Abstriche in Sachen Kurz machen. Die Motorzuleitungen sind etwa 30-35 cm lang obwohl 20 cm locker ausreichen würden. Aber dann hätte ich große Probleme die Platine einzusetzen und für Wartung heraus zu nehmen.


- separater Anschluss / Absicherung für Spannungsversorgung Controller (abtrennen von Motorversorgung vielleicht mit separater Diode/Elko)

Eigentlich ist zwischen Controllerspannung und Versorgungsspannung ein Schaltregler und ein Festspannungsregler, also die Versorgungsspannung wird zwei mal verringert (und damit von der Versorgungsspannung getrennt) aber ich werd mal versuchen ne diode einzubauen.


- Einzelabsicherung der Treiber/Motoren mit schneller (6A ?) Sicherung

Schwierig. Aber auch wenn das Problem gelöst ist ne Überlegung wert.


- Beim Test Leistungsvorwiderstand von 2-3 Ohm vor die Motoren (Strombegrenzung auf ca 5A), Rsense mit 0,33 Ohm(?) hilft da nicht wirklich

Für Rsense hab ich 2x0,59 Ohm parallel verbaut (einer allein hat nicht genug Wärmeabstrahlung).


- erstmal nur einen Motor betreiben

Dann kommt wieder dieses Pseudo-funktionieren und kaum hab ich beide dran funzt es nicht mehr.


- Entstörung des Motors mit (kleinen ?)Keramikkondensatoren zwischen den +-Anschlüssen und Gehäuse (ich weiss aber nicht, ob das bei PWM und H-Brücke funktioniert, hängt vermutlich auch von der PWM-Frequenz ab)

Hab ich. In dieser Dreiecksanordnung je einen 100nF und einen 10nF Kerko. Eigentlich hab ich auch noch Ferritkerne bestellt aber die wahren zu klein.


- Verdrillen der Motorzuleitung, Abschirmung könnte auch helfen.

Sind verdrillt.


Möglich ist auch , dass sich die Motoren beim Anfahren gegenseitig behindern, da die Motorkennlinien nicht 100% übereinstimmen.
Das kann eventuell auch zu Schwingungen (Aufschaukeln) führen.

Es passiert auch wenn die Motoren nicht mechanisch gekoppelt sind (aber seltener).

@Klingon:

Keine Pange. Auch der Laie sieht manchmal mehr als der Profi. Dein Oszi brauchst du mir nicht schicken (aber Danke für das Angebot), da die Versandkosten wohl höher werden als ein preiswertes neues zu kaufen.

Das Gehäuse auf Masse zu legen dachte ich auch schon aber ich wollte den schönen Lack nicht zerstören. Aber Opfer müssen wohl sein ](*,) .

Einen anderen Prozessor hab ich noch nicht versucht aber ich denke nicht das es am IC liegt. Aber versuch macht klug.


Ansonsten gib doch noch mal die aktuelle Beschaltung von Reset, VCC und AVCC am AVR an. Vielleicht lässt sich da ja noch mehr an Entstörmaßnahmen finden.

Reset über 10KOhm an 5V, keine Kondensatoren. VCC und AVCC muss ich selbst noch mal gucken (ich denke beide natürlich an 5V und mit je 100nF gegen Masse). Aref an 3,3V mit 100nF gegen Masse.

Gruß

Bluesmash
26.05.2008, 12:11
Ich habe jetzt nicht alles durchgelesen... aber ich glaube du programmierst mit bascom? könnte es sein das die stackwerte zu niedrig sind? und der prozessor dadurch ins nirvana läuft?

wenn dies schonmal gepostet wurde bitte entschuldigen ;) es sind halt doch ein paar seiten in diesem tread ;)

gruss bluesmash

mausi_mick
26.05.2008, 12:59
hallo Murdoc_mm,

danke für die schnelle Antwort,
passt meiner Ansicht nach eigentlich alles, nur die R Sense mit 0,3 Ohm bei einem Anker/-Kollektorwiderstand von ca 0,8 Ohm (12V/15A) begrenzen eigentlich nur auf ca 10 A. Der Motor ist halt "sau-stark".

Falls es noch weitere Probleme gibt, könnte ich Dir auch ein paar TLE5205
für nix schicken, die fangen wohl auch Spitzenströme von 10-15A ab.
Eine hoffentlich vernünftige Ansteuerungsschaltung (mit PWM und DIR) hab
ich aufgebaut, nur muss man die PWM-Frequenz wohl unter 2 kHz halten.
-Siemens war schon immer für langsame aber sichre Technik bekannt.

Der TLE5205 ist wohl auch besser für Auswertungen über Microcontroller,
da er Informationen wie Überstrom etc. als 8-Bit Wert ausgibt ...

PS: Ich hab die Skizze der Motorkennlinie, wie sie sich aus den Parametern ergibt, posten können (siehe vorhergende Seite)

Gruß und viel Erfolg bei der Problembehebung

mausi_mick

Borki90
26.05.2008, 16:25
hallo

ich würde es mit einem neuen Controller versuchen, denn ich habe aktuell ein ähnliches Problem mit einem von meinen. Aus irgendeinem Grund resetet er sich dauernd, und dies tut er nicht nur bei Motorenansteuerungen.. aus welchem Grund habe ich keine Ahnung... Die Betriebsspannung meines Bots will ich seit etwa einem Halben Jahr mit einem Oszi überprüfen, jedoch habe ich immer noch keins..

Was die Entstörung angeht: Ich habe neben den obligaten Kondensatoren (am Motor) und den Freilaufdioden (beim Treiber) noch entstördrosseln von Conrad in die Leitunngen gelötet (s.Bild)

mfg Borki90

PS: mit einem anderen Controller funktioniert alles einwandfrei.. \:D/

Murdoc_mm
26.05.2008, 20:50
Hi,

so ich hab jetzt einige Sachen ausprobiert.

Anderer Controller hat nichts gebracht. Erst sah es gut aus aber nach etwa 3-4 min hat sich das Programm aufgehangen und ist in der Laufphase geblieben (hat sich einfach weiter gedreht ohne Anzeichen von Abbremsen oder Reset). Nachdem ich dann die Versorgungsspannung kurz weggenommen habe gings zwar wieder aber kurz darauf kammen die ersten Resets wieder.

Danach hab ich das Programm wie Radbruch es geschrieben hat geändert (die Interrupts an- und abschalten). Hat auch nichts geändert. Die Resets traten weiter auf.

Und momentan bin ich am Überprüfen ob der Controller auch bei anderen Programmen resetet. Hab dafür ein kleines Prog geschrieben was die LEDs blinken lässt wenn ich einen bestimmten Pin auf Masse gezogen habe. Falls ein Reset kommt startet das Prog von neuem --> dann hören die LEDs auf zu blinken und warten wieder das ich das Blinken einschalte. Läuft seit 20 min ohne Reset.

Während ich das Blinken einschaltete ist mir wieder mal aufgefallen das wenn ich meinen Finger auf die beiden Beinchen des Quarzes lege irgendwas passiert. Z.B. wurde das Blinken sehr langsam oder hörte ganz auf. Ein Reset wurde aber nicht ausgelöst. Wenn ich meinen Finger wieder wegnahm ging das Blinken fröhlich weiter ohne das ich neu starten musste --> heißt das Prog wurde nur verlangsamt. Aber dann ist mir was anderes in den Sinn gekommen: Könnten die Magnetfelder der Motoren, der Kabel oder sonst was den Quarz stören? Wenn ja wie könnte ich das verhindern (wie schirmt man einen Quarz, der schon sehr nah (ca. 0,5 cm) am Controller ist, ab)?

Gruß

oberallgeier
26.05.2008, 22:07
... wie schirmt man einen Quarz, der schon sehr nah (ca. 0,5 cm) am Controller ist, ab ...Also meine Quarze sind - vermutlich wie Deine - in so ´nem metallischen Flachmann, egal ob HC49xxx oder HC18xxx . Da ist unten ein Ringspalt nichtmetallisch (Isolierung) ums Beinchen - etwa 1 mm breit. D.h. - diese fabrikseitig bereits mitgelieferte Abschirmung ist wohl dicht bis in den Millimeter-Wellenbereich - - Gigahertz sind das. Kann es sein, dass die Spikes bei Dir so eine irre Anstiegszeit haben ? Oder hab ich da in Physik nicht aufgepasst?

mausi_mick
27.05.2008, 03:48
Hi Murdoc_mm,

mit den Quarzen - ist ganz normal - wenn man sich den Pins nähert oder sie berührt, dass sich dann die Schwingfrequenz ändert, sie werden halt (kapazitiv) anders belastet. Die Schwingung kann dann ganz abreissen oder er kann auf einer anderen (Ober ?-)Welle schwingen. Bei mir z.B. läuft er ohne die 22 pF, da vermutlich durch die Platine/Leiterbahnführung bereits eine ähnliche kapazitive Belastung besteht.

Aber was die Magnetfelder angeht , könntest Du recht haben - nicht die des Motors oder bezüglich des Quarzes - sondern die der Motorstrom führenden Leiterbahnen in Controllernähe. Auch die langen Leitungen zu den Motoren sind wohl eher "Sendeantennen" über einen grossen Frequenzbereich.
Auf denen tummelt sich einiges an Peaks - auf dem Oscar sieht man nur noch wenig von dem "sauberen" PWM-Signal, durch die Motorinduktivität sieht das immer recht bizarr aus.
Liegen diese Motorstrom führenden Leitungen in der Nähe von Signalleitungen, kann in denen einiges durch Induktion passieren.

Daher - vom Akku ausgehend - getrennte Versorgungsleitungen (+ und -(Masse) ) zu den Motortreibern , die dann mit kurzen Leitungen die Motoren versorgen.
Diese Leitungen sollten räumlich weit von dem Controller und (erst recht) von dem Analogteil (Verstärker für Sensoren/Gyros etc) entfernt sein.

Der Vorschlag von uwegw , es etwas modularer aufzubauen, kommt dem eigentlich entgegen.
Ich finde das zwar ganz gut mit Deinem "Motherboard" für dieSpannungsaufbereitung (für Kleinverbraucher), Controller und Sensoren - das reduziert den Kabelsalat - aber diese Leistungsteile
für die Motoren würde ich eher auf kleine Platin(ch)en, die man in Motornähe platzieren sollte, auslagern. Der Verdrahtungsaufwand wächst dadurch nur minimal: pro Motor 2 dicke Stromversorgungsleitungen für die H-Brücke vom Akku aus und noch 2 (bis 3) Steuerleitungen zum/vom Controller. An die Versorgungspins der H-Brücke gehören auch dicke Elkos (bei den Strömen sind wohl 4700 µF / 25V (16V ?) oder mehr angebracht)
(parallel dazu schnelle keramische C mit 0,1 µF). Das reduziert dann Störungen auf den relativ langen Leitungen zwischen Akku und H-Brücke.
Die dann kurzen Leitungen (mit dem EMV-Schmutz drauf) von der H-Brücke sind dann eher unkritisch.

Damit würde man die EMV-Pobleme reduzieren und hoffentlich auch die
Reset-Probleme beheben.

lass Dich nicht zu sehr Nerven und viel Erfolg

mausi_mick




Gruß

mausi_mick

uwegw
27.05.2008, 10:40
Um die Sache mit dem Quarz zu prüfen, könntest du mal auf den internen Oszillator umschalten. Es sieht so aus, als würden die Störungen in die Taktleitungen einkoppeln und den Oszillator durcheinanderbringen.

Hast du beim Test mit dem Blinkprogramm auch die Motoren daneben laufen lassen?

Und separate Treiberplatinen dürften wirklich schon einiges an Störungen von der Elektronik fernhalten. Man könnte sie ja zb an der Querstrebe unter dem Motor befestigen. Man könnte die Aluteile ja sogar als Kühlkörper nutzen.

Murdoc_mm
31.05.2008, 17:17
Hi,


Hast du beim Test mit dem Blinkprogramm auch die Motoren daneben laufen lassen?

Nein. Also das Problem hat eindeutig was mit den Motoren(-strom???) zu tun.

Hab heute mal den internen Quarz ausprobiert und siehe da: es funzt super. Kaum auf ext. umgestellt treten die Probs wieder auf.

Leider ist das auslagern der Motoransteuerung nicht so einfach wie es sich anhört. An den Streben ist nur wenig Platz übrig und dieser ist auch noch schwer zugänglich. (Außerdem bedeutet es, das ich wieder die Motortreiber auslöten muss --> wenn das Problem gelöst ist wird wohl die Platine auch auf-gelöst sein ](*,) ) Aber ich werd mal sehen ob ich das hinbekomm.

Gruß

mausi_mick
31.05.2008, 17:43
Hi Murdoc_mm,

bevor Du mit dem Auslöten beginnst, vielleicht noch einen Versuch, der nicht so zeitaufwändig ist:
Versuche die Stromversorgung der Motoren von denen des Prozessors noch mehr zu entkoppeln : vor den Stepdownwandler/Regler für den Atmega noch eine Diode (3A, vielleicht reicht auch eine 1 A ( 1N400x ) ) und dahinter einen Elko mit 1000 / 2200 µF und parallel dazu ein kermischen Kondensator mit 0,1 µF.
Vielleicht wird ja der Reset durch eine kurzfristige Unterspannung auf der Versorgungsleitung ausgelöst...

Gruß und Erfolg

mausi_mick

uwegw
31.05.2008, 18:08
Hab heute mal den internen Quarz ausprobiert und siehe da: es funzt super. Kaum auf ext. umgestellt treten die Probs wieder auf
Gut, dann haben wir ja mal nen Punkt, wo wir ansetzen können. Brauchst du unbedingt einen quarzgenauen Takt? Wegen der Funkanbindung über UART wahrscheinlich ja, oder? Dann wäre ein Quarzoszillator einen Versuch wert. Denn beim normalen Quarz ist ein Teil der Oszillatorschaltung im AVR integriert, und die XTAL-Leitungen sind daher quasi analog und ziemlich empfindlich, wie du merkst. Bei einem fertigen Oszillator steckt die komplette Takterzeugung in einem abgeschrimten Gehäuse, und das Taktsignal kommt von einem stärkeren Ausgangstreiber, sodass es theoretisch störfester sein müsste...

EDIT: hab grad mal nachgemessen: an einem Quarz messe ich auf der XTAL-Leitung eine Amplitude von +-0,2V. Am Oszillator hingegen geht die Spannung fast von 0 bis 5V. Also ein deutlich höherer Signalpegel!

Die Motortreiber würde ich erst mal drin lassen und dann vielleicht später die Elektronik auf geätzte Platinen verteilen, wenn die Probleme anders nicht in den Griff zu bekommen sind.

Murdoc_mm
02.06.2008, 18:06
Hi,


bevor Du mit dem Auslöten beginnst, vielleicht noch einen Versuch, der nicht so zeitaufwändig ist:
Versuche die Stromversorgung der Motoren von denen des Prozessors noch mehr zu entkoppeln : vor den Stepdownwandler/Regler für den Atmega noch eine Diode (3A, vielleicht reicht auch eine 1 A ( 1N400x ) ) und dahinter einen Elko mit 1000 / 2200 µF und parallel dazu ein kermischen Kondensator mit 0,1 µF.
Vielleicht wird ja der Reset durch eine kurzfristige Unterspannung auf der Versorgungsleitung ausgelöst...

Hat nichts gebracht. (Aber war sowieso ne gute Idee, drum lass ich die Diode gleich drin \:D/ .)


Brauchst du unbedingt einen quarzgenauen Takt? Wegen der Funkanbindung über UART wahrscheinlich ja, oder? Dann wäre ein Quarzoszillator einen Versuch wert.

Jap, ich brauch in erster Linie viel Rechenpower für die Sensorauswertung und -verarbeitung. Den Oszillator werd ich als nächstes versuchen. Bin grad dabei ne günstige Bestellmöglichkeit zu finden. (Bei kleinen Mengen oder Spezialteilen bestell ich eigentlich immer über Ebay aber Quarzoszillatoren werden anscheinend nicht so häufig angeboten.)

Gruß

uwegw
03.06.2008, 11:16
(Bei kleinen Mengen oder Spezialteilen bestell ich eigentlich immer über Ebay aber Quarzoszillatoren werden anscheinend nicht so häufig angeboten.)

Gruß
http://cgi.ebay.de/Quarzoszillator-Frequenz-auswaehlen-DIL14_W0QQitemZ160240019557QQihZ006QQcategoryZ2774 7QQrdZ1QQssPageNameZWD1VQQcmdZViewItem

oberallgeier
03.06.2008, 12:04
Für die zahle ich bei CSD (http://www.csd-electronics.de/) 1,45, Versandkosten pauschal bis 31,5 KG - 3,59€. Und ich kann dort auch ein einzelnes Teil bestellen :)

Murdoc_mm
03.06.2008, 12:37
Hi,

tja, so leicht ist das leider nicht \:D/ . Ich wohne im Ausland und muss meistens mehr Porto bezahlen als die Waren überhaupt wert sind.



(Bei kleinen Mengen oder Spezialteilen bestell ich eigentlich immer über Ebay aber Quarzoszillatoren werden anscheinend nicht so häufig angeboten.)
http://cgi.ebay.de/Quarzoszillator-Frequenz-auswaehlen-DIL14_W0QQitemZ160240019557QQihZ006QQcategoryZ2774 7QQrdZ1QQssPageNameZWD1VQQcmdZViewItem
Die liefern zwar ins Ausland, aber für die 5 Eu Porto und die 1,49 die der Oszillator kostet bekomm ich schon ein paar mehr. (Außerdem haben die kein PayPal. :-& )

Ich dachte an die hier (obwohl die Beschreibung etwas dürftig ist): Edit: Angebot ist mittlerweile beendet.


Für die zahle ich bei CSD 1,45, Versandkosten pauschal bis 31,5 KG - 3,59€. Und ich kann dort auch ein einzelnes Teil bestellen
Für mich wird das (der???) Porto leider schon zweistellig.

Aber danke euch beiden für die Mühe.

Gruß

Hessibaby
03.06.2008, 14:19
Welche Frequenz muss der Oszillator haben ?
Dan schau ich mal in meinen Kisten nach.

Gruß

Murdoc_mm
03.06.2008, 15:09
Welche Frequenz muss der Oszillator haben ?
Dan schau ich mal in meinen Kisten nach.

Danke für das Angebot aber da ist das gleiche Problem. Die zu mir zu schicken kostet mehr als 2 Tage zu warten und diese hier (Edit: Angebot ist mittlerweile beendet) zu ersteigern. 50 Stück sind zwar gleich wieder ein bissel viel aber so hab ich wenigstens Ersatz und wenns ein paar mehr zum günstigen Preis gibt sag ich nicht nein.

(Ich bin immer wieder erstaunt wie viele Leute mir helfen wollen obwohl sie mich ja nicht kennen. Das muss mal lobend erwähnt werden!)

Gruß

radbruch
03.06.2008, 15:21
Ich bin immer wieder erstaunt wie viele Leute mir helfen wollen obwohl sie mich ja nicht kennen.
Wir wollen eben alle sehen wie das MW durch die Gegend flizt. (Aber wenn das so weitergeht müssen wir uns wohl noch Gedanken über Spikes oder Ketten machen...)

mausi_mick
04.06.2008, 04:30
Hi Murdoc_mm,

ich sehe das ähnlich wie radbruch,
aber das "Helfen" per Ferndiagnose ist problematisch.

Auch ist die Situation für Dich auch nicht gerade einfach, wo Du ohne Oscar etc. messtechnisch doch relativ im Dunkeln stehst.

Vielleicht sollte man in der etwas festgefahrenen Situation mehrgleisig
vorgehen:
- mit relativ "einfachen" Massnahmen wie Entkoppeln der Versorgungsspannung, unempfindlicheren Oszillator etc die akuten Resetprobleme in den Griff kriegen (oder es versuchen)
- parallel dazu ein störfesteres Design entwickeln mit getrennten Platinen für
- Leistungsteile (H-Brücken(,(Schaltnetzteile),
- Prozessor (und Sensoren)
- (Analogteile -( z.B. Sensordatenaufbereitung))

wobei man sich auch Gedanken über die Platzierung der Platinen, Leitungsführung(kurze Leitung H-Brücke -Motor, Massepunkt(e)) ,
und eventuelle Schirmungsmassnahmen machen sollte.

Ohne diese Massnahmen wird man, wenn der Antrieb nicht nur die ca 1,5 Kg ? des äusseren Rades bewegen muss, sondern die ca 13 Kg (?) des gesamten MW beschleunigen muss und dann auch gegen die Reibung Rad/Boden ankämpfen muss( führt zu höherer Motorbelestung , d.h. grössern Strömen, d.h. grösseren elektromagn. Störungen ), aus diesen Problemen kaum rauskommen.

Gruß und Hoffen auf noch eisfreie Zeiten

Klingon77
13.06.2008, 01:49
hi Murdoc_mm,

gibt es was neues ?

Wie ist der Sachstand?

liebe Grüße,

Klingon77

Murdoc_mm
13.06.2008, 09:51
Hi,

ich warte mal wieder auf Teile.

Leider habe ich das Angebot von oben nicht bekommen (is schon doof wenn man bei Auktionsende in der Arbeit ist und so nicht weiter bieten kann) und musste wieder anfangen zu suchen wer den zu nem akzeptablen preis was anbietet. Hab dann auch was gefunden und bestellt und warte nun auf den Postmann.

Am Di hatte ich dann noch was anderes probiert was ich zufällig gelesen hatte. Die ckopt-Fuse aktivieren. Damit soll der Quarz störunanfälliger werden. Leider hab ich noch Probleme die Fuse mit Bascom zu aktivieren und werde mich morgen mal in PonyProg einarbeiten, da dort die Fuses leichter zu schalten sind.

Gruß

oberallgeier
13.06.2008, 10:46
Hi, Murdoc_mm,

... werde mich morgen mal in PonyProg einarbeiten, da dort die Fuses leichter zu schalten sind ...

.................................http://oberallgeier.ob.funpic.de/ckopt.jpg

Vielleicht hilft Dir das?
1) Controller auswählen
1a) Evtl. Fuses lesen (um den aktuellen Stand zu sehen)
2) Fuse anhaken
2a) evtl. sonstige Fuses setzen (Häkchen dran)
3) Write

Viel Erfolg

Murdoc_mm
14.06.2008, 19:03
Hi,

@ Oberallgeier: Vielen Dank für die Anleitung.

Leider hab ich mitbekommen das PonyProg keine USB-Programmer unterstützt aber ich für meinen Laptop nur ein USB-Progger nutzten kann (keine anderen Schnittstellen vorhanden).

Dann muss ich auf die Oszillatoren warten und hoffen das die das Problem beheben.

(Wenigstens ist das Wetter einigermaßen gut \:D/ )

Gruß

Murdoc_mm
16.06.2008, 16:15
Hi,

so, die Oszillatoren sind heute angekommen und ich konnte mich nicht zurück halten und hab gleich mal einen eingebaut.

Ich bin mir zwar nicht sicher ob ich ihn richtig eingebaut habe (damit miene ich das ich mir unsicher bin ob der Oszillator noch irgendwelche Außenbeschaltung bekommt --> momentan hab ich nichts weiter angebaut (1-unbeschalten, 4-direkt GND, 5-XTAL1, 8-direkt 5V)) aber ich konnte mich nicht halten.

Alles Verdrahtet, Spg. angelegt, Bascom angeschmissen, erstmal LED-Blinkprogramm ausgewählt, aufgespielt und dann wollte ich die Fuses ändern. Da dann wieder das Problem das Bascom irgendwie die Fuses nie so umschalten kann wie ich das möchte (langsam verlier ich meine gute Meinung über Bascom :-& ). Ext. Osc. gabts zwar aber nur bis 12 MHz. Alles drei mal angeschaut, Datenblätter gewälzt aber keine Antwort gefunden. Also hab ich 12 MHz bei den Fuses eingestellt aber im Programm "$crystal = 16000000" geschrieben und Hardware-mäßig ja auch 16 MHz dran. Gespannt geguckt --> Blinkprogramm funzte richtig.

Also Motoren-Test-Prog aufgespielt --> wieder gespannt geguckt und, wie soll ich es sagen:

ES FUNKTIONIERT!!!!!!!!!!!!!!!!!!!!!!!! :cheesy: :cheesy: :cheesy: :cheesy: :cheesy:

Zumindest in der halben Stunde die ich es hab laufen lassen (aber damit bin ich mir 99%tig sicher das funzt).

Damit kanns jetzt endlich weiter gehen \:D/ . Mal sehen ob ich die Kommunikation demnächst fertig bekomm, dann gibts ein erstes Video von nem Fahrtest aufm Parkplatz.

Danke an alle die geholfen haben.

Gruß

P.S.: Fast vergessen: Der Oszillator sitzt genau an der Stelle an der vorher der Quarz wahr. Leider hab ich den Platz auch nur für einen Quarz ausgelegt aber der Oszillator ist um einiges größer (obwohl ich schon die kleinere Variante genommen hab). Darum steht der auch etwas über die Platinen-Kante drüber. Bild gibts im Anhang.

Klingon77
16.06.2008, 16:25
hi,

lass mich der erste sein, der gratulieren darf :idea: \:D/


Erfinden ist 10% Inspiration und 90% Transpiration.


zuversichtliche Grüße,

Klingon77

uwegw
16.06.2008, 16:39
Ui, da lag ich ja tatsächlich richtig... echt klasse, dass es jetzt endlich klappt! Nun will ich das Teil aber auch bald mal fahren sehen! ;)

Bammel
16.06.2008, 17:09
ja glückwunsch. dnan bin ich ja mal gespannt wies weitergeht. nun machts bestimtm auch wieder mehr spass ^^^

Klingon77
26.06.2008, 12:18
hi Murdoc_mm,

gibt´s was neues?

Lass uns nicht so lange warten. Wir sind alle ungeduldig O:) :mrgreen:

liebe Grüße,

Klingon77

radbruch
26.06.2008, 13:28
@Klingon77:

Glückwunsch zum "Einstein"

Murdoc_mm
26.06.2008, 14:52
gibt´s was neues?

Lass uns nicht so lange warten. Wir sind alle ungeduldig O:) :mrgreen:

Bin dran, bin dran.

Ich ärgere mich grad mit der Kommunikation rum, hatte am Anfang ein paar Startschwierigkeiten aber jetzt bin ich, glaube ich, auf dem richtigen Weg. Das es so lang dauert liegt an meiner Unwissenheit und dauernden Unterbrechungen (F1, EM, "gelegentlich" Arbeit, privates, geschäftliches, Weltpolitisches, unvorhergesehenes, ... #-o :cheesy: ).

Gruß

Klingon77
26.06.2008, 15:08
hi radbruch,

mal Dank für die Glückwünsche.

Persönlich lege ich keinerlei Wert auf "Orden und Ehrenzeichen"...

...und ehrlich gesagt, habe ich es auch nicht verdient, da ich noch keinen funktionierenden Robby gebaut habe.

Außerdem schreibe ich auch manchmal einiges an "Mist" zusammen, wie z.B: dieser Beitrag hier... :oops:


Spaß beiseite:
Wenn mich einer der MOD´s wieder runtersetzen könnte, wäre ich sicherlich nicht böse darum.

liebe Grüße,

Klingon77

oberallgeier
26.06.2008, 16:09
... Wenn mich einer der MOD´s wieder runtersetzen könnte, wäre ich sicherlich nicht böse darum ...Das ist eben der Fluch des Denkmal-Sockels. Manchmal drückt der wie ein Mühlstein-um-den-Hals. Aber weißt Du - manche reden blos statt viel zu sagen. Also sei froh um Deine Würde :).


... Das es so lang dauert liegt an ... dauernden Unterbrechungen ...Tja, da ist eben statt Interrupts Parallel-Prozessing angesagt. Wer sonst sonst sollte denn ein Fachmann dafür sein . . . .

(Nicht zum Lesen gedacht: Was bin ich so froh, dass Dein Anfang-des-Jahres-Termin sich etwas geschoben hat. Mein Februartermin ist auch schon vorbei und ich bin noch tief im Software-Dschungel und hab keine Landkarte: Bitschiebereien die nicht funktionieren und so Zeugs - ich fürchte ICH muss durch JEDEN Fehler durch).

Klingon77
26.06.2008, 16:41
...
ich fürchte ICH muss durch JEDEN Fehler durch).




"Fehler sind die Stufen einer Treppe, auf denen der Kluge emporsteigt" O:)



Bin mal gespannt, wann ich diesen altklugen Spruch von jemandem "um die Ohren gehauen bekomme" O:) :-b ](*,)


Bin aber zuversichtlich, daß Du die "Hürden" meistern wirst!!!

liebe Grüße,

Klingon77

Murdoc_mm
29.06.2008, 17:32
Hi,

ich hab mal ne Frage und die Erklärung was ich die ganze Zeit hier mache.

Der Plan ist das der Joystick alle 0,25 Sek. (vlt ändert sich die Zeit auch noch --> je nach dem welche Zeiten sich als günstig rausstellen) dem MW ein Telegramm sendet in dem steht wie schnell gefahren, ob und wie stark ne Kurve gefahren oder was anderes gemacht werden soll. Wenn das MW nach 0,5 Sek noch kein Tele bekommen hat soll es stehen bleiben <-- Sicherheitsmechanismus.

Momentan möchte ich einfach PWM-Stufe und Servoposition senden und das MW soll das stur ausführen --> zum Testen.

Also hab ich mich dran gemacht und das Sende- und Empfangsprogramm geschrieben. Da aber das MW kein LCD und mein Laptop auch keine Serielle Schnittstelle hat konnte ich das Empfangsprog nicht beim MW selbst ausprobieren (da keine Ausgabemöglichkeit). Da aber der Joystick ein LCD besitzt hab ich gedacht da programmier ich das einfach verkehrt herum und tausche die Programme dann am Ende um. Das hat auch super geklappt. Hab das Sendeprog einfach stur bestimmte Zeichenfolgen ausgeben lassen und mit dem Empfangsprog aufm Joystick bekommen.

Dann hatte ich das erste kleine Problemchen. Wenn ich mir alle Zeichen die empfangen wurden auf dem LCD ausgeben lies hab ich festgestellt das nach jedem Zeichen eine 13 und ne 10 gesendet wurde. Nach ein bischen stöbern im RN hab ich einige Codes gefunden (ich find die aber nicht wieder #-o ) die auch mit diesen 13 und 10 gearbeitet haben --> da hab ich mir gedacht das die 13-10-Kombi wahrscheinlich ne Art "Zeichen-Ende" oder "Zeichen-empfangen" ist. Also mein Prog auf die 13-10 angepasst und auch gleich genutzt --> wenn die 13-10 nicht richtig empfangen wurde wurde das Datenbyte als nicht gültig gekennzeichnet.

Dann die Programme getauscht --> nix geht. Zuerst Hardware gesucht aber da ging alles. Dann die Software hin- und herkopiert. (Das hat so ewig gedauert.) Vom MW zum Joystick gings aber nicht vom Joystick zum MW.

Heute hab ich dann festgestellt was das Problem ist. Der Joystick sendet die 13-10-Kombo nicht. Wenn ich die 13-10 aus dem Prog gelöscht habe gings auf einmal.

Nun meine Frage: Was ist diese 13-10-Kombo? Wie kann ich die An- oder Abstellen? Und warum kommt die vom MW aber nicht vom Joystick?

Joystick-Sende-Code:

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

'LCD Anschluss über 20pol Stecker'
Config Lcd = 20 * 4a , Chipset = Ks077

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portb.1 , Rs = Portb.0
Config Lcdbus = 4

'LCD Config'
Config Portc.4 = Output
Config Portc.5 = Output
Config Portc.6 = Output
Config Portc.7 = Output

Config Portb.0 = Output
Config Portb.1 = Output

Do
Wait 1
Print 2
Waitms 25
Print 4
Waitms 25
Print 5

Wait 1
Print 2
Waitms 25
Print 5
Waitms 25
Print 4
Loop


MW-Empfangsprog (ohne 13-10, aber noch mit Resten von 13-10-Auswertung):

$regfile = "m32def.dat"
$framesize = 64
$swstack = 64
$hwstack = 64
$crystal = 16000000
$baud = 9600

'LEDs konfigurieren:
Config Portb.0 = Output
Led_gruen Alias Portb.0 'grüne LED
Config Portb.1 = Output
Led_rot Alias Portb.1 'rote LED

'Motoren-Ansteuerung konfigurieren:
Config Portc.2 = Output
Mo1_1 Alias Portc.2
Config Portc.3 = Output
Mo1_2 Alias Portc.3
Config Portc.4 = Output
Mo2_1 Alias Portc.4
Config Portc.5 = Output
Mo2_2 Alias Portc.5

Config Pind.4 = Output 'OC1B, PWM-Ausgang
Config Pind.5 = Output 'OC1A, PWM-Ausgang

Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8

Pwm1a = 0
Pwm1b = 0

Mo1_1 = 0
Mo1_2 = 0
Mo2_1 = 0
Mo2_2 = 0

Dim Pwm_stufe As Integer
Pwm_stufe = 0

'Servos konfigurieren:
Config Portc.6 = Output 'Servo1
Config Portc.7 = Output 'Servo2

Config Servos = 2 , Servo1 = Portc.6 , Servo2 = Portc.7 , Reload = 10 'benutzt timer0

Dim Servo_pos As Byte
Dim Servo1 As Byte
Servo1 = 150
Dim Servo2 As Byte
Servo2 = 150

'ADC konfigurieren
Config Pina.0 = Input
Config Pina.1 = Input
Config Pina.2 = Input
Config Pina.3 = Input
Config Pina.4 = Input
Config Pina.5 = Input

Dim Acc_x As Integer
Dim Acc_y As Integer
Dim Acc_z As Integer
Dim Gyro_x As Integer
Dim Gyro_y As Integer
Dim Gyro_z As Integer

Config Adc = Single , Prescaler = Auto

'Timer Konfigurieren
Config Timer2 = Timer , Prescale = 8 'alle 0,000128 Sek. wird in die ISR gesprungen
Enable Timer2

On Timer2 Zaehlstand

Dim Zeit As Word 'zählt von 0 bis 65535, 65535 entspricht 8,38848 Sek.

'Globales:
Disable Interrupts

Start Adc

Dim Puffer(10) As Byte

Dim Puffer_index As Byte
Puffer_index = 1

Dim Aktion As Byte
Dim Aktion_wert_1 As Byte
Dim Aktion_wert_2 As Byte

Dim Aktion_wert As Integer

'Notizen:
'Servo: Braun-Masse, Rot-6V, Orange-Signal
'Timer0 für Servos
'Timer1 für Motoren
'Timer2

'###Hauptprogramm################################# #############################
Do

If Ischarwaiting() <> 0 Then
Gosub Empfangen
End If

If Puffer_index = 2 Then
If Puffer(1) <> 0 Then 'And Puffer(2) <> 0 And Puffer(3) <> 0 Then
Aktion = Puffer(1)
Else
If Puffer(1) <> 0 Then
Aktion = 0
End If
End If
Puffer(1) = 0
'Puffer(2) = 0
'Puffer(3) = 0
End If

If Puffer_index = 3 Then
If Puffer(2) <> 0 Then 'And Puffer(5) <> 0 And Puffer(6) <> 0 Then
Aktion_wert_1 = Puffer(2)
Else
If Puffer(2) <> 0 Then
Aktion_wert_1 = 0
End If
End If
Puffer(2) = 0
'Puffer(5) = 0
'Puffer(6) = 0
End If

If Puffer_index = 4 Then
If Puffer(3) <> 0 Then 'And Puffer(8) <> 0 And Puffer(9) <> 0 Then
Aktion_wert_2 = Puffer(3)
Else
If Puffer(3) <> 0 Then
Aktion_wert_2 = 0
End If
End If
Puffer(7) = 0
'Puffer(8) = 0
'Puffer(9) = 0
End If

If Puffer_index >= 4 Then
Puffer_index = 1
End If

Select Case Aktion
Case 49
'Geschwindigkeit setzen, aus wert_1 und wert_2 bilden
Case 50
Servo_pos = Aktion_wert_1
Case 51
'noch nicht belegt, könnte für batteriespg genutzt werden
End Select

If Servo_pos = 52 Then 'für Test
Led_gruen = 1
Led_rot = 0
End If

If Servo_pos = 53 Then 'für Test
Led_gruen = 0
Led_rot = 1
End If

'Servo1 = Servo_pos + 59
'Servo2 = 150 - Servo_pos

'Servo(1) = Servo1
'Servo(2) = Servo2

'Pwm1b = Pwm_stufe

Loop
'###Hauptprogramm Ende############################################## ###########

'###Sub´s######################################### #############################
Zaehlstand:

Incr Zeit

Return

Empfangen:

Puffer(puffer_index) = Inkey()
Incr Puffer_index

Return

MW-Empfangsprog (mit 13-10):

$regfile = "m32def.dat"
$framesize = 64
$swstack = 64
$hwstack = 64
$crystal = 16000000
$baud = 9600

'LEDs konfigurieren:
Config Portb.0 = Output
Led_gruen Alias Portb.0 'grüne LED
Config Portb.1 = Output
Led_rot Alias Portb.1 'rote LED

'Motoren-Ansteuerung konfigurieren:
Config Portc.2 = Output
Mo1_1 Alias Portc.2
Config Portc.3 = Output
Mo1_2 Alias Portc.3
Config Portc.4 = Output
Mo2_1 Alias Portc.4
Config Portc.5 = Output
Mo2_2 Alias Portc.5

Config Pind.4 = Output 'OC1B, PWM-Ausgang
Config Pind.5 = Output 'OC1A, PWM-Ausgang

Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8

Pwm1a = 0
Pwm1b = 0

Mo1_1 = 0
Mo1_2 = 0
Mo2_1 = 0
Mo2_2 = 0

Dim Pwm_stufe As Integer
Pwm_stufe = 0

'Servos konfigurieren:
Config Portc.6 = Output 'Servo1
Config Portc.7 = Output 'Servo2

Config Servos = 2 , Servo1 = Portc.6 , Servo2 = Portc.7 , Reload = 10 'benutzt timer0

Dim Servo_pos As Byte
Dim Servo1 As Byte
Servo1 = 150
Dim Servo2 As Byte
Servo2 = 150

'ADC konfigurieren
Config Pina.0 = Input
Config Pina.1 = Input
Config Pina.2 = Input
Config Pina.3 = Input
Config Pina.4 = Input
Config Pina.5 = Input

Dim Acc_x As Integer
Dim Acc_y As Integer
Dim Acc_z As Integer
Dim Gyro_x As Integer
Dim Gyro_y As Integer
Dim Gyro_z As Integer

Config Adc = Single , Prescaler = Auto

'Timer Konfigurieren
Config Timer2 = Timer , Prescale = 8 'alle 0,000128 Sek. wird in die ISR gesprungen
Enable Timer2

On Timer2 Zaehlstand

Dim Zeit As Word 'zählt von 0 bis 65535, 65535 entspricht 8,38848 Sek.

'Globales:
Disable Interrupts

Start Adc

Dim Puffer(10) As Byte

Dim Puffer_index As Byte
Puffer_index = 1

Dim Aktion As Byte
Dim Aktion_wert_1 As Byte
Dim Aktion_wert_2 As Byte

Dim Aktion_wert As Integer

'Notizen:
'Servo: Braun-Masse, Rot-6V, Orange-Signal
'Timer0 für Servos
'Timer1 für Motoren
'Timer2

Led_gruen = 0
Led_rot = 1
Wait 1
Led_gruen = 1
Led_rot = 0
Wait 1
'###Hauptprogramm################################# #############################
Do

If Ischarwaiting() <> 0 Then
Gosub Empfangen
End If

If Puffer_index = 4 Then
If Puffer(1) <> 0 And Puffer(2) = 13 And Puffer(3) = 10 Then
Aktion = Puffer(1)
Else
If Puffer(3) <> 0 Then
Aktion = 0
End If
End If
Puffer(1) = 0
Puffer(2) = 0
Puffer(3) = 0
End If

If Puffer_index = 7 Then
If Puffer(4) <> 0 And Puffer(5) = 13 And Puffer(6) = 10 Then
Aktion_wert_1 = Puffer(4)
Else
If Puffer(6) <> 0 Then
Aktion_wert_1 = 0
End If
End If
Puffer(2) = 0
Puffer(5) = 0
Puffer(6) = 0
End If

If Puffer_index = 10 Then
If Puffer(7) <> 0 And Puffer(8) = 13 And Puffer(9) = 10 Then
Aktion_wert_2 = Puffer(7)
Else
If Puffer(9) <> 0 Then
Aktion_wert_2 = 0
End If
End If
Puffer(7) = 0
Puffer(8) = 0
Puffer(9) = 0
End If

If Puffer_index >= 10 Then
Puffer_index = 1
End If

Select Case Aktion
Case 49
'Geschwindigkeit setzen, aus wert_1 und wert_2 bilden
Case 50
Servo_pos = Aktion_wert_1
Case 51
'noch nicht belegt, könnte für batteriespg genutzt werden
End Select

If Servo_pos = 52 Then
Led_gruen = 1
Led_rot = 0
End If

If Servo_pos = 53 Then
Led_gruen = 0
Led_rot = 1
End If

'Servo1 = Servo_pos + 59
'Servo2 = 150 - Servo_pos

'Servo(1) = Servo1
'Servo(2) = Servo2

'Pwm1b = Pwm_stufe

Loop
'###Hauptprogramm Ende############################################## ###########

'###Sub´s######################################### #############################
Zaehlstand:

Incr Zeit

Return

Empfangen:

Puffer(puffer_index) = Inkey()
Incr Puffer_index

Return

Gruß

radbruch
29.06.2008, 17:52
Oje, es outet sind ein DAU (http://de.wikipedia.org/wiki/Dau) *lol* Zeichen 13 bedeutet "Wagenrücklauf" und Zeichen 10 bedeutet "Neue Zeile". Das sind die Steuerzeichen die eine Zeichenausgabe steuern. Neudeutsch auch carriage return (http://de.wikipedia.org/wiki/Wagenr%C3%BCcklauf) und newline (http://de.wikipedia.org/wiki/Line_feed) genannt legen sie die Schreibposition fest.

Frohes Schaffen

mic

Murdoc_mm
29.06.2008, 18:11
Oje, es outet sind ein DAU (http://de.wikipedia.org/wiki/Dau)

Du meinst nicht zufällig diesen Dau (http://de.wikipedia.org/wiki/D%C3%BCmmster_anzunehmender_User). Das würde ich aber persönlich nehmen.

Das die Zeichen irgendwas bedeuten weiß ich auch aber warum kommen die nach jedem Zeichen und warum nur von einem Controller und nicht von beiden?

radbruch
29.06.2008, 18:40
Den meinte ich, war aber nicht nicht wirklich ernst gemeint. Ich war nur verwundert. Warum die Steuerzeichen mitgesendet werden weiß ich auch nicht. Ich kann mich aber daran erinnern, dass Basic bei Print immer ein LFCR mitsendet. QBasic z.B. sendet bei einem , im Print-Befehl ein TAB und bei einem ; nichts. Vielleicht ist es bei Bascom ähnlich.

Murdoc_mm
29.06.2008, 22:02
Warum die Steuerzeichen mitgesendet werden weiß ich auch nicht. Ich kann mich aber daran erinnern, dass Basic bei Print immer ein LFCR mitsendet. QBasic z.B. sendet bei einem , im Print-Befehl ein TAB und bei einem ; nichts. Vielleicht ist es bei Bascom ähnlich.

Hast recht. In der Bascom-Hilfe stehts drin:


You can use a semicolon to print more than one variable at one line.
When you end a line with a semicolon, no linefeed and carriage return will be added.

radbruch
29.06.2008, 22:23
Hast recht.
Das bedeutet es funzt jetzt?

Die Abkürzungen in dem DAU (http://de.wikipedia.org/wiki/D%C3%BCmmster_anzunehmender_User)-Artikel sind ja nett. Beim NTU (Never Trained User) könnte man ja noch was retten, aber beim KpnzG (Kunde passt nicht zum Gerät) kommt wohl jede Hilfe zu spät. Meine persönliche Standartantwort bei unangenehmen Kundenfragen: "Bedienungsfehler" ;)

Glückwunsch an alle für Platz 2 *gg*

mic

Murdoc_mm
29.06.2008, 22:33
Hast recht.
Das bedeutet es funzt jetzt?

Die Abkürzungen in dem DAU (http://de.wikipedia.org/wiki/D%C3%BCmmster_anzunehmender_User)-Artikel sind ja nett. Beim NTU (Never Trained User) könnte man ja noch was retten, aber beim KpnzG (Kunde passt nicht zum Gerät) kommt wohl jede Hilfe zu spät. Meine persönliche Standartantwort bei unangenehmen Kundenfragen: "Bedienungsfehler" ;)

Glückwunsch an alle für Platz 2 *gg*

mic

Nein, funzen tuts noch nicht aber jetzt weiß ich wo der Fehler liegt und kann weiter machen (hab jetzt noch 1,5 Stunden bis ich pennen geh und werd mich mal etwas ran halten).

Mir gefällt "Problem ist die Stuhl-Tastatur-Schnittstelle".

Gruß

(Der 2te ist der erste Verlierer. Aber die habens verdient.)

Murdoc_mm
06.07.2008, 12:47
Hi,

von mir auch mal wieder was neues.

Leider hab ich noch keine Erfolgsmeldung zu verkunden aber bin wie gesagt aufm richtigen Weg. Momentan bin ich auf Kriegsfuß mit dem Datenempfang beim Bot selbst. Ich versuch seit 2 Tagen dem Bot seine Servopositionen zu übermitteln aber der weigert sich wehement das zu machen was ich möchte. Leider scheitere ich mal wieder an dem Problem das ich keine Ausgabemöglichkeiten beim Bot habe und so nicht weiß was ankommt und wie zusammengesetzt oder nicht ankommt oder verstückelt oder was weiß ich gemacht wird.

Außerdem hats mir glaube einen Servo zerlegt. Wenn dem wirklich so ist, ist das aber schon ner gnazen Weile passiert. Mal sehen obs nur ne durchgebrannte leitung ist oder was anderes.

Gruß

Christian H
06.07.2008, 16:33
Hi Murdoc_mm

Ich schreibe mal kurz wie ich eine Serie von Daten aus bytes, word und string übermittle



Dim Volt As Word
Dim Kurs As Byte, Mr As Byte , Ml As Byte , C1 As Byte , C2 As Byte
Dim Servo As Byte
Dim Entf As Word
Dim Message As String * 5

$baud = 19200

Do

Print "x";
Print Hex(Kurs);
Print Hex(volt);
Print Hex(c1);
Print Hex(c2);
Print Hex(servo);
Print Hex(mr);
Print Hex(ml);
Print Hex(entf);
Print Message;
Print Chr(13);

anderer Code

loop


; bewirkt dass der Printbefehl ohne Carriage return ausgeführt wird. (Läßt man ; wird automtisch carriage return angefügt)
"x" gibt bei mir immer den Anfang des Strings an

der übermittelte String ist 1+2+4+2+2+2+2+2+4+5+1 = 27 Byte lang. Das letzte Byte ist Chr(13) und kennzeichnet das Ende und ist wie das "x" in dem übermittelten String einzigartig.


Empfang:



Dim Volt As Word
Dim Kurs As Byte, Mr As Byte , Ml As Byte , C1 As Byte , C2 As Byte
Dim Servo As Byte
Dim Entf As Word
Dim Message As String * 5
Dim Empf As String * 27
Dim Empf1 As String * 2
Dim Empf2 As String * 4
Dim I as Byte

$baud = 19200

do
Input Empf : I = Instr(1 , Empf , "x") 'Input wartet bis Chr(13)
If I = 1 Then
Empf1 = Mid(empf , 2 , 2) : kurs = Hexval(empf1)
Empf2 = Mid(empf , 4 , 4) : volt = Hexval(empf2)
Empf1 = Mid(empf , 8 , 2) : c1 = Hexval(empf1)
Empf1 = Mid(empf , 10 , 2) : c2 = Hexval(emp1)
Empf1 = Mid(empf , 12 , 2) : servo = Hexval(empf1)
Empf1 = Mid(empf , 14 , 2) : mr = Hexval(empf1)
Empf1 = Mid(empf , 16 , 2) : ml = Hexval(empf1)
Empf2 = Mid(empf , 18 , 4) : entf = Hexval(empf2)
message = Mid(empf , 22 , 5)
I = 0
End If

anderer Code

loop


Vielleicht hilft Dir dieses Beispiel weiter. Die Werte sollten möglichst oft übermittelt werden, da auf Empfängerseite die Schleife durch Input solange stoppt bis CHR(13) kommt.

Grüsse

Christian

Murdoc_mm
06.07.2008, 18:40
Hi,

vielleicht könnt ihr mir helfen. Es ist bestimmt nur ein winziges Detail das ich vergessen habe zu beachten oder drei Buchstaben die nicht in meinem Code stehen #-o .

Gehen wir mal davon aus das ich im Sender wie im Empfänger ne Byte-Variablen Servo_pos habe. Im Sender wird eine Zahl von 0 bis 200 in Servo_pos geschrieben und soll nun an den Empänger gesendet werden. Bis jetzt mache ich das (in Kurzfassung) etwa so:

Sender:
Print Servo_pos;

Empfänger:
if ischarwaiting <> 0 then
Servo_pos = inkey()
end if

Das funzt aber nich. Meine Vermutung ist ja das Print oder inkey() den Inhalt von Servo_pos in irgend ein anderes Format umwandelt und so verändert das eben nicht mehr ne Zahl 0 bis 200 drin steht sondern sonstwelcher Unsinn. Aber sicher bin ich damit gar nicht und überprüfen kann ichs halt auch nicht.

Muss ich vielleicht noch hex() oder bin() oder was anderes bei Print oder Inkey() dranhängen damit es funzt? (Obwohl ich da auch schon ettliche Varianten durchprobiert hab --> ohne Erfolg natürlich.)

Danke für eure Hilfe.

Gruß

Klingon77
06.07.2008, 18:57
hi Murdoc_mm,

macht der Servo gar nichts mehr?
Mechanik; Elektronik?

liebe Grüße,

Klingon77

Murdoc_mm
06.07.2008, 19:20
hi Murdoc_mm,

macht der Servo gar nichts mehr?
Mechanik; Elektronik?

liebe Grüße,

Klingon77

Ach genau, hab ich glatt vergessen. Der Servo ist völlig Kraftlos und lässt die Spannung so lang einbrechen bis ich ihn per Hand auf Position gedreht habe --> scheint ein Kurzer im Motor zu sein.

Ich werd mal durchmessen welchen Motor-Widerstand der funktionierende und welchen der kaputte hat aber am Ende wird es wohl auf Wicklungsschluss und einen neuen Servo hinaus laufen. Zum Glück flieg ich in ein paar Wochen nach Deutschland, da kann ich auch gleich nen neuen kaufen.

Gruß

Christian H
06.07.2008, 19:22
hi Murdoc__mm

wenn Du keine Ausgabemöglichkeit auf dem Bot hast, sende halt die Daten für Tests wieder zurück

Empfänger:
if ischarwaiting = 1 then
Servo_pos = inkey()
print servo_pos
end if

und beim Sender

if ischarwaiting = 1 then
Servo_posempf = inkey()
end if
anhängen.

Später willst Du aber doch mehrere Daten übertragen. Hierfür finde ich die Methode, wie im vorletzten Beitrag beschrieben, einfacher.
Mit Input bekommt man immer einen ganzen String (bis zum return). Mit inkey und ischarwait muss man byte für byte zusammenbasteln und quasi ein Protokoll wie es Input verwendet selbst schreiben. Wäre mir zu kompliziert.

Christian

Klingon77
06.07.2008, 22:16
hi,

nimm den defekten mit auf den Flug.

Hast ja noch Garantie.

liebe Grüße,

Klingon77

uwegw
07.07.2008, 08:08
Im Sender wird eine Zahl von 0 bis 200 in Servo_pos geschrieben und soll nun an den Empänger gesendet werden. Bis jetzt mache ich das (in Kurzfassung) etwa so:

Sender:
Print Servo_pos;

Das funzt aber nich. Meine Vermutung ist ja das Print oder inkey() den Inhalt von Servo_pos in irgend ein anderes Format umwandelt und so verändert das eben nicht mehr ne Zahl 0 bis 200 drin steht sondern sonstwelcher Unsinn.
Wenn ich das Handbuch richtig verstehe (hab jahrelang kein Bascom benutzt), dann wandelt der Print-Befehl sämliche Daten in einen ASCII-String um, der dann auf nem LCD ober Terminalprogramm am PC angezeigt werden kann. Du sendest statt 123 als Zahl also die Zeichen 1, 2 und 3 im ASCII-Code hintereinander.

Du willst nun aber ein einzelnes 8bi9t-Zeichen ausgeben. Also brauchts du den Befehl Print Chr():

Print Chr(Servo_pos);

Murdoc_mm
07.07.2008, 20:26
Bastel-GAU- das Mono Wheel qualmt.

(Ums mit MeckPommErs Worten zu sagen :-s .)

Aber keine Angst, es ist kein Totalschaden. Grade ist mir der zweite Servo mit dünnem Rauchfähnchen abgeschmiert --> die komplette Servo-Elektronik ist schwarz und der Servo gibt keinen Mucks mehr von sich.

Dabei hatte ich grade ein Erfolgserlebnis--> der Servo hatte sich zum ersten mal bewegt wenn ich den Joystick bewegt habe (völlig falsche Richtung, Geschwindigkeit und überhaupt nicht so wie es sollte aber er hat sich bewegt). Danach hab ich das Ganze noch mal neu gestartet um das noch mal zu beobachten (und weil sich das Sendeprog aufgehangen hatte) und schon fuhr der Servo fröhlig an den Anschlag, ich sitz daneben und guck zu, fing an zu qualmen, ich spring auf und mach die Spg-versorgung aus, un put isser.

Aber man soll ja positiv denken: er hat sich endlich bewegt (übrigens, Chr() war der entscheidene Tip) und mit etwas Glück ist jetzt bei dem einen nur der Motor und bei dem anderen nur die Elektronik hinüber, sodass ich Aus-zwei-mach-eins probieren kann.

Gruß

uwegw
07.07.2008, 20:50
Tja, für solche Test sollte man wohl besser die Gewichte abnehmen und nun nen leeren Servohebel aufstecken, der nirgendwo hängenbleiben kann...

oberallgeier
07.07.2008, 22:31
... und schon fuhr der Servo fröhlig an den Anschlag ...
... für solche Test sollte man wohl besser die Gewichte abnehmen und nun nen leeren Servohebel aufstecken, der nirgendwo hängenbleiben kann... Hmmmm, *grübelgrübelnachdenküberleg* - ein abnehmbarer Anschlag? Bei meinen Servos sind die immer innendrinnen.

Klingon77
07.07.2008, 23:54
hi,

gehen denn die Dinger so leicht über den Jordan, wenn sie mal am Anschlag stehen?

Als ich die Teile zum Bau hatte habe ich natürlich ebenfalls damit getestet (nicht bis an den Anschlag, um diesen nicht zu beschädigen).

Dabei machten sie auf mich einen wirklich stabilen Eindruck.
Auch von einer übermäßigen Wärmeentwicklung war nichts zu spüren.

Nun bin ich etwas überrascht, daß sie sich so rasch verabschieden.

liebe Grüße,

Klingon77

Willa
08.07.2008, 06:46
]
Nun bin ich etwas überrascht, daß sie sich so rasch verabschieden.
Das ist meist ein gutes Kriterium um "billig"-Servos von wirklich guten Servos zu unterscheiden... Die billigen haben einen unglaublichen Blockierstrom, bei den guten ist der deutlich niedriger. Die kosten dann aber auch ab 60 Euro aufwärts, da bietet es sich an lieber 10 Stück er billigen zu verheizen..... (wenn dadurch kein Helikopter abstürzt :-D)

MeckPommER
08.07.2008, 09:31
Es bietet sich auch eine Software-Sicherung an, die darin besteht, das extreme Servopositionen, die den Servo an den "Rand des Wahnsinns" (Endanschlag) bringen, nicht durchgereicht werden.

Hat nur bei mir neulich auch nicht funktioniert, da diese Werte in einem gelöschten EEPROM waren, ist aber ansonsten schon ganz sinnvoll und mit wenig Aufwand verbunden.

@murdoc_mm:
was für ein Servo bei welcher Stromversorgung ist den abgeraucht?

Gruß MeckPommER

Klingon77
08.07.2008, 11:41
hi,

das mit der Software-Sicherung ist gut.

Das muß ich mir merken.

liebe Grüße,

Klingon77

uwegw
08.07.2008, 11:57
Ja, Servo-Routinen sollten generell eine Wegbegrenzung drin haben. Und wenn man dann noch den Wert eines gelöschten EEPROMs erkennt und dann den Servo gar nicht erst startet, kann eigentlich nichts mehr schiefgehen...

oberallgeier
08.07.2008, 12:46
... wenn man dann noch den Wert eines gelöschten EEPROMs erkennt und dann den Servo gar nicht erst startet, kann eigentlich nichts mehr schiefgehen...
Das ist (für mich) einer der besten Aspekte dieser Diskussionen - Denkanstösse zu bekommen. BTW - würde eine simple Prüfsumme des Flash´s genügen um nach einem Reset erstmal garnicht ins eigentliche Programm einzusteigen ? ? ? Das ist ein Thema, das ich (nach sechs Monaten "im Forum") bisher eigentlich nicht wahrgenommen hatte.

Murdoc_mm
08.07.2008, 19:16
Es bietet sich auch eine Software-Sicherung an, die darin besteht, das extreme Servopositionen, die den Servo an den "Rand des Wahnsinns" (Endanschlag) bringen, nicht durchgereicht werden.

@murdoc_mm:
was für ein Servo bei welcher Stromversorgung ist den abgeraucht?

Zu meiner Schande muss ich ja gestehen das ich schon lange bevor ich mit den Tests begann und beim Testen (als ich gemerkt hatte das die Spg-versorgung und die Servos ja gut warm (nicht heiß, eher "ohh, die sind aber warm") wurden) schon an ne Softwarebegrenzung gedacht habe aber aus Faulheit und dem Gedanken "ich will jetzt erst mal testen, Sicherheit kommt danach" nicht geprogt habe.

Aber jeder muss Lehrgeld bezahlen.

Die Servos sind Blue Bird BMS-621 MG High Speed Servo. Spg-versorgung ist 6V über 3A-Schaltregler (LM 2576 Adj) aus nem 12V Bleiakku. Leider hab ich den Strom in dem Moment nicht gemessen aber vor ein paar Tagen hab ich mal grob geschaut und 2A bei starker Belastung gehabt. Ob der Schaltregler gut arbeitet hab ich noch nicht überprüft. (Also ob und wie stark die Spg einbricht. Die 6V sollten stimmen.)

Weggestorben wie die Fliegen sind die aber nicht. Ich hatte an dem Tag schon ne Weile probiert und darum dürften die schon gut vorgewärmt abgenippelt sein.

Gruß

Hessibaby
09.07.2008, 07:59
Keine Panik, tausch die beiden BC327 auf der Platine, der Servoelektronik, aus und das Servo tut´s wieder :-)
Der 51660 raucht ganz selten mal ab.

Gruß, und mach weiter so.

Murdoc_mm
09.07.2008, 18:12
Gruß, und mach weiter so.

:-s :-s :-s :cheesy:

Murdoc_mm
12.07.2008, 23:34
Hi,

nur als kleine Info: hab heute versucht einen der beiden Servos mit den Teilen des anderen wieder zum laufen zu bringen. Hat an sich gut geklappt. Der Servo bewegt sich gut aber recht kraftlos und langsam --> ich werd um neue Servos nicht rum kommen.

Bis ich neue hab werd ich aber weiter an der Komunikation feilen und dann gehts auch wieder voran. \:D/

Gruß

Klingon77
15.08.2008, 22:14
hi Murdoc_mm,

gibt es was neues bezüglich des Mono-Wheel´s?

Wir sind auch mit kleinen Fortschritten oder einem kurzen Statement zufrieden.

liebe Grüße,

Klingon77

Murdoc_mm
16.08.2008, 10:34
Hi,

ja bei mir ist grade das Sommerloch zu ende gegangen. War im Urlaub (in Deutschland --> ihr habt keine Vorstellung was für ein super Wetter ihr habt), hab nen neuen Mitbewohner bekommen und bei mir auf Arbeit gehts drunter und drüber (in 2 Wochen wird sich das bessern).

Aber ich hab auch schon wieder am Bot gewerkelt. Letztes WE ein paar Kleinigkeiten und für dieses ist ein größerer Umbau geplant (wenn nichts dazwischen kommt). Das werd ich aber erst schreiben wenns fertig ist also etwas Geduld noch.

Gruß

Klingon77
16.08.2008, 11:28
hi,

Sommerloch und Urlaub ist voll in Ordnung \:D/ :mrgreen:

Ich hoffe, Du hast Dich gut erholt.



Bei mir ist es momentan auch nicht anders. Zwar kein Sommerloch und auch keinen Urlaub (Töchterlein will zur UNI und das kostet) aber einige Arbeiten rund um´s Haus.
Ich freue mich schon auf den regnerischen Herbst und den hoffentlich kalten Winter.

Dann werde ich auch wieder etwas Zeit finden.

liebe Grüße,

Klingon77

oberallgeier
16.08.2008, 16:57
... Sommerloch zu ende ... Urlaub ...
Jetzt fällt mir ein Stein vom Herzen - wollte dieses Wochenende auch schon mal sehen, ob es Deine Aktivitäten am MW noch gibt :).


... auf Arbeit gehts drunter und drüber ...
Ohhhhh - hoffentlich bleibt dann noch Zeit für Deine Freizeitaktivitäten. Ich - und vermutlich alle andern auch - sind total gespannt, egal ob Sommerloch oder nicht.

Viel Glück, viel Erfolg, bis bald wieder.

Murdoc_mm
18.08.2008, 22:49
Hi,

so, jetzt gehts auch bei mir wieder ein wenig weiter.

Die Servos sind beide gegen neue ausgetauscht. Das war ne Fummelei. Ich hab mich schon manchmal gewundert was Klingon77 damit meinte als er sagte das es ewig dauern würde den Bot auseinander zu nehmen und nun weiß ich genau was er damit sagen wollte. Ich hab geschlagene 1,5 Stunden damit verbracht die beiden Servos zu tauschen!

Außerdem hab ich wieder etwas an der Platine rumgelötet. Diesmal aber nicht an dem Motortreibern \:D/ . Ich hab den 2ten Controller mit draufgesetzt (heißt die gesamte Grundschaltung mit auf die Platine gebracht und an die einzelnen Bauteile angeschlossen) sodass ich jetzt einen M32 für die Lageerkennung (Beschleunigungssensoren und Gyros auswerten) und einen M32 für die Komunikation, die Servoansteuerung, die Motorsteuerung und (neu) zur Ansteuerung eines LCDs habe (vor einiger Zeit hab ich günstig ein kleines 16x2 ergattern können). Die beiden Controller sind über die jeweiligen Hardware-UART verbunden und die Funkstrecke wird dann per Software-UART vom neuen Controller angesprochen.

Im Anhang gibts auch Bilder von der Platine. Der Kabelsalat ist aber noch nicht so schlimm wie es aussieht. Es ist tatsächlich etwas besser geworden nachdem ich den 2ten Controller draufgepackt habe. Aber viel sollte ich nicht mehr anbauen (ist auch gar kein Platz mehr auf der Platinenoberseite übrig).

Gruß

Klingon77
19.08.2008, 07:11
hi,

freut mich, daß es nun weitergeht.

Da hast Du mit 1,5 Stunden zum wechseln beider Servos gut in der Zeit gelegen :mrgreen:
Es sind ja auch einige Teile, die "zusammengefrickelt" werden wollen.

Sind diese nun stärker als die ursprünglich verbauten?
Hoffentlich halten sie; sind ja immerhin nicht ganz 500 Gramm, welche am Hebel in Schwingung versetzt werden wollen.

Der "Drahtverhau" sieht erschreckend aus :-b
Da ich aber ansonsten auch nur mit Streifenraster arbeite kenne ich das Problem und weis, daß es nur "halb so schlimm ist".
Von oben ist die Platine TOP!
wirklich sehr dicht gepackt.

Reicht den der Platz zwischen Platinenunterseite und Akku/Streben noch für die Kabel?
Den hatte ich ja nicht soooo üppig bemessen, weil ich immer von einer geätzten Platine ausging.

Wenn es eng werden sollte kann ich Dir auch einen neuen Satz Abstandshülsen drehen, welche etwas länger sind.
Evtl. könnte man mit einem zweiten Satz Hülsen und langen Schrauben ein zweites Platinen-Stockwerk einziehen?
Sag mir einfach Bescheid, wenn Du was benötigst.


zuversichtliche Grüße,

Klingon77

mausi_mick
20.08.2008, 06:56
hi Murdoc_mm,

sieht doch - zumindest von der Oberseite - super aus. Über die Verdrahtung unten kann man streiten, aber wenn's funktioniert - was soll's.

Hab nur ein wenig Bedenken wegen der Lage der Sensoren/Analogschaltung (OP's) in relativer Nähe zu den H-Brücken bezüglich irgenwelcher Einstreungen, wenn die Motoren mal richtig Saft ziehen.
Dann müsste man den Analogteil incl. Sensoren vielleicht räumlich etwas entfernen und / oder kapseln.

Viel Erfolg beim Test

mausi_mick

Murdoc_mm
20.08.2008, 10:21
Dann müsste man den Analogteil incl. Sensoren vielleicht räumlich etwas entfernen und / oder kapseln.

Würde mir ja auch besser gefallen aber ist eben leichter gesagt als getan.

Die momentane Position hat auch den Vorteil das die Beschleunigungssensoren und die Gyros (ungefähr) genau in der Mitte von der Platine sind.

Gruß

uwegw
20.08.2008, 12:21
Die Motortreiber wären am besten als kleine Zusatzplatine direkt in der Nähe der Motoren aufgehoben... wenn man es geschickt macht, ist das doch bestimmt direkt unter dem Motor
https://www.roboternetz.de/phpBB2/files/dscf7661.jpg
machbar. Platine waagerecht auf der Querstrebe, Treiberchip an die senkrechte Strebe montiert, die gleichzeitig Kühlkörper ist...
So hat man die Störquellen weit weg von der Elektronik, und mehr Platz auf der Hauptplatine. Und da die Drehzahlmessung ebenfalls dort unten sitzt, könnte man gleich nen Zweitcontroller mit einbauen, der die komplette Geschwindigkeitsregelung übernimmt und vom Master nur noch die Sollgeschwindigkeit übergeben bekommt. So habe ich das bei meinem Roboter gelöst. Ich bevorzuge bei dieser Bot-Größe eine modular aufgebaute Elektronik. Das ist vor allem sehr praktisch, wenn man -wie du beim MW- noch keinen endgültigen Plan hat und immer wieder erweitert und umbaut. Wenn irgendwas groß verändert werden soll, macht man einfach ne neue Teilplatine, statt erst lange auszulöten, um Platz zu machen.

oberallgeier
02.10.2008, 13:16
Hallo Murdoc_mm,

hechel, lechz, schnief - - - ganz hungrig bin ich auf Neuigkeiten zum Fortgang Deiner Arbeiten. Gibt es Fortschritte? . . . Ärger ? Pannen ? Ich bin sicher, nicht nur ich alleine bin neugierig. Bitte gib dem neuheitshungrigen Volk Futter.

Danke ! . . . und viel Erfolg für Dich (und alle Anderen und mich).

Klingon77
02.10.2008, 15:39
hi,

bin auch schon fast verhungert... :cry:

möchte Dich aber auch nicht unter "Druck" setzen :oops:

liebe Grüße,

Klingon77

Murdoc_mm
02.10.2008, 17:08
Bitte gib dem neuheitshungrigen Volk Futter.

Leider müsst ihr euch noch gedulden was Fortschritte angeht. Aber ich bin dran und es geht vorwärts (wenn auch gaaaaaaanz langsam).

Gruß

oberallgeier
02.10.2008, 17:15
Ach, das Tempo ist nicht kritisch. Wenn nur die Richtung stimmt. Und Du sagst ja, dass die stimmt.

Ich bin mit meinem kleinen Roboterprojekt fast ein Jahr zugange gewesen (einschliesslich Elektronik und C lernen - und Regelungstechnik und so wieder auffrischen) - aber nun läufts :).

Viel Erfolg

Klingon77
02.10.2008, 17:43
Leider müsst ihr euch noch gedulden was Fortschritte angeht. Aber ich bin dran und es geht vorwärts (wenn auch gaaaaaaanz langsam).

Gruß

hi,

es geht voran und die Richtung stimmt auch \:D/

Was will man also mehr?

Freue mich mit Dir, daß das Projekt noch Spass macht O:)

Das es keine leichte Aufgabe ist, welche in Rekordzeit gelöst werden kann ist selbstverständlich.

Zwischenzeitlich hatte ich schon die Befürchtung, daß Du "aufgesteckt" hast.

liebe Grüße,

Klingon77

ähM_Key
02.10.2008, 18:16
http://www.crunchgear.com/2008/09/30/ceatec-2008-murata-girl-unicycle-robot-in-action-video/ kennt ihr schon?

radbruch
02.10.2008, 19:08
Das ist nicht wirklich neu:

http://i2.ytimg.com/vi/IlMMWFwHti4/default.jpg (http://www.youtube.com/user/jvpommeren)

Ein echtes MW ist es auch nicht...

(Hier (https://www.roboternetz.de/phpBB2/printview.php?t=34392&start=0) nach "unibot" suchen...)

ähM_Key
02.10.2008, 19:25
Deshalb hab ich gefragt.

1Rad->Monowheel ist meine Logik und ich d8te es passt hier rein, aber kann mir schon vorstellen, was du mit 'echtem' MV meinst.

Murdoc_mm
02.10.2008, 22:38
1Rad->Monowheel ist meine Logik und ich d8te es passt hier rein, aber kann mir schon vorstellen, was du mit 'echtem' MV meinst.

Ich denke eine ganz gute Def. kann man über den Schwerpunkt machen (jeweils von der Seite aus gesehen): Ist der Schwerpunkt (also Antriebe, Akkus, Elektronik,...) innerhalb des Rades ist es ein Mono-Wheel wie ich es (versuche zu) bauen und ist der Schwerpunkt außerhalb des Rades ist es eher ein Einrad. Beide gehören aber unter die gleiche Kategorie: "Ein Rad" (Roboter-Typen (https://www.roboternetz.de/wissen/index.php/Roboter-Typen#Weniger_als_drei_R.C3.A4der))

Der Ballbot (http://www.wissenschaft-online.de/artikel/897965) (ist das der Unibot?) würde dann z.B. zu Einrad zählen.

Gruß

goara
04.10.2008, 15:41
is vielleicht auch ganz interessant der link:
nen monowheel von murata (http://www.murata.com/new/news_release/2008/0923.html)
und heir noch ein video (http://www.youtube.com/watch?v=nUxKftxg5oE)
wie weit is das projekt eigentlich?? fährts schon ?

Murdoc_mm
05.12.2008, 10:49
Hi,

so, endlich gings bei mir mal wieder etwas weiter. Hab die letzten paar Wochen ein wenig Zeit freischaufeln können und die Software vorran gebracht. Leider flieg ich bald nach Hause \:D/ in meinen langersehnten Urlaub und bin somit 1000Km vom Bot entfernt aber nächstes Jahr gehts dann mit neuer Kraft weiter. (Nur falls ihr euch wundert :-s : Ja, ich hab ziemlich lange frei (einen ganzen Monat um genau zu sein) aber das kommt weil ich in der Autoindustrie arbeite --> den Urlaub muss man mit einen fröhlichen und einem sehr besorgten Auge sehen.)

Nun aber zur Software: ich hab den Software-UART zum laufen gebracht und durchgetestet --> funzt wunderbar. Allerdings gefiel mir die Auswertung nicht besonders, da der USART nicht mit IsCharWaiting() arbeiten kann und so immer Zeichen verloren gehen wenn man nicht die ganze Zeit mit Inkey() abfragt oder mit Waitkey() wartet. Beides ist aber totaler Mist ](*,) da der Controller dann nichts anderes mehr machen kann. Also nach ner Lösung gesucht und gefunden: den USART auf ein Interrupt legen. Dazu muss Hardwaremäßig der USART-Input-Pin auf Int0 oder Int1 gelegt werden. Im Programm wird dann jedes mal wenn ein neues Zeichen ankommt in den Interrupt gesprungen und dieses kann dann dort weiter verarbeitet oder erstmal zwichengespeichert werden. Beachten muss man nur das das erste Zeichen schrott ist.

Damit hab ich mich die letzten Tage rumgeärgert. Die ganze Sache hat sich nämlich etwas gewehrt und mir viel viel Sucherei im Netz beschert. Am Ende wars nur das ich die Close #-Anweisungen (müssen für den USART gesetzt werden) vor der Interrupt-Routine stehen hatte und das Bascom nicht so richtig gefiel #-o . Aber jetzt funzt es wunderbar.

Nächstes Jahr gehts dann direkt mit den ersten trockenen Fahrtests los (Daumen gedrückt halten \:D/ ) und wenn die gut laufen wird der Bot seinen ersten richtigen Auslauf haben.

So, das wars erstmal; entschuldigt die langen Wartezeiten aber es kann nur besser werden.

Gruß

radbruch
10.12.2008, 16:25
Hallo

Kennen wir eigentlich schon dieses Video:

http://i4.ytimg.com/vi/ktD-SN3C4h4/default.jpg (http://de.youtube.com/watch?v=ktD-SN3C4h4)
http://de.youtube.com/watch?v=ktD-SN3C4h4

Vermutlich nicht weil ich bisher bei "Seekrank" nicht an Monowheels dachte. :)

Gruß

mic

Klingon77
12.12.2008, 13:31
...
Nächstes Jahr gehts dann direkt mit den ersten trockenen Fahrtests los (Daumen gedrückt halten \:D/ ) und wenn die gut laufen wird der Bot seinen ersten richtigen Auslauf haben.
...
Gruß



hi Murdoc_mm,

ich hatte schon befürchtet das Projekt hätte sich "totgelaufen" und Du hättest das Interesse daran verloren :cry:
Ich wollte Dich auch nicht mit ständigen "Anfragen" nerven oder drängen :oops:

Um so mehr freue ich mich nun, daß es vorangeht und warte gespannt auf die ersten Test´s \:D/



@radbruch:
Ein ähnliches Projekt mit einem überbreiten "Reifen" und "selbstzentrierender" Konstruktion lief hier schon mal im Forum.
Kann auch sein, daß ich lediglich eine Anfrage bezüglich einiger Teile hatte; ist schon etwas her.

Diese Konstruktion hat auf jeden Fall schon was. Die große Diskussion bezüglich des Gleichgewichts und der Lenkung hätte sich damit fast vermeiden lassen.

Interessanter finde ich aber Murdoc_mm´s Variante.
Die Herausforderung ist größer und dem heutigen Stand der Technik eher entsprechend.


liebe Grüße und ein frohes Fest allen "Mono-Wheel´ern" wünscht,


Klingon77

Murdoc_mm
01.02.2009, 17:04
Hallo alle miteinander,

zuerst die Enttäuschung: nein, es fährt noch nicht.

Ich bin zwar ganz gut vorangekommen aber ich hänge mal wieder. Und zwar bei der Interrupt-UART-Lösung. Da hat sich folgendes Problem ergeben: Es wird in die ISR von Int0 gesprungen, alles wunderbar abgearbeitet, wieder rausgesprungen und weils so schön wahr gleich wieder reingesprungen. Dabei kommt dann das Hauptprogramm "etwas" kurz.

Der Grund für dieses fröhliche Springen ist glaube ich Hardware-bedingt. Drum mal eine Frage an euch: das RN-Funkmodul hängt ja direkt am Int0 und zieht den Pin dauerhaft auf 2,5V (<-- mit Multimeter gemessen) --> kann es sein das diese 2,5V ständig als Auslöser angesehen werden und somit immer in die ISR gesprungen wird? Und wenn ja, was kann ich dagegen tun?

Der Rest der Kommunikation steht übrigens --> und wenn ich dann auch mal wieder ins Hauptprogramm zurück komm kann ich die Daten auch nutzen. \:D/

Danke für die Hilfe,

Gruß

Bammel
01.02.2009, 19:14
kenn mich da net so aus aber würde nen widerstand helfen?

hacker
02.02.2009, 18:44
2,5V ist wohl das Ergebnis der Messträgheit des Multimeters. Ich tipp auf ein schnellen Wechsel zwischen 0 und +5V mit ordenlicher Frequenz. Deswegen hüpft der auch so oft in deine INT Routine. Da kommt eben auch so viel an ;-)

Murdoc_mm
19.04.2009, 22:29
Hallo alle miteinander,

ja mich gibts auch noch \:D/ und ich hab endlich mal wieder was zu berichten.

Leider hab ich immer noch nicht rausbekommen warum mein Programm so beharrlich den Dienst verweigert aber auch da bin ich noch dran. (Bin grad dabei mir auch so ein Selbstbau-Oszi zu basteln, hab aber dummerweise das vermaledeite gLCD kaputt gemacht und muss jetzt 3-4 Wochen auf ein neues aus Fernost warten.) Also bei der Großbaustelle gehts nicht voran, darum hab ich mal an nem anderen Ende angefangen (mehrere Baustellen mag ich zwar nicht so gerne (Multitasking ist nix für mich) aber ich möchte auch mal weiter kommen), drum gibts jetzt ein paar Ergebnisse von der Lageerkennung:

ACC's und Gyros funzen. Die Werte werden wunderbar eingelesen und warten jetzt darauf verarbeitet zu werden. Bei den Acc-werten hab ich schon ne kleine Vorregelung programmiert, da die Werte ziemlich schwanken (+- 25 von 255). Hab das ganze bis jetzt auf etwa +- 2 drücken können allerdings bin ich mir nicht sicher ob schnelle Änderungen davon betroffen sind. Ich hab mal ein kleines Video von den Werten gemacht aber leider ist die Quali nicht überragend: http://www.youtube.com/watch?v=48d_R0ncIbA (Man sieht (wenn man was sieht ](*,) ) wie die Werte alle schön mitgehen.)

Die Acc-Regelung nimmt momentan 32 Werte und errechnet den Mittelwert. Allerdings werden nur Werte verarbeitet die im Bereich von +- 3 zum vorhergehenden Wert liegen (also Spitzen werden nicht verarbeitet). Nun könnte es zwar auch passieren das sehr schnelle Änderungen erst als Spitzen erkannt werden und es somit eine kleine Zeitverzögerung gibt bis die schnelle Änderung erkannt wird aber darum mach ich mir jetzt keine Gedanken.

Ich hab auch schon mal ein bissel gespielt und geschaut ob ich den mit den Acc-werten den Bot in Balance halten kann aber das hat noch nicht wirklich geklappt. Ein Video gibts hier: http://www.youtube.com/watch?v=2b4sTebS06s
Die Regelung war da nur fix zusammengeschustert und viel zu grob aber man kann schon erkennen das es in die richtige Richtung geht.

Als nächstes werde ich dann versuchen die acc- und gyro-werte zu einem zu verrechnen und die Servos genauer zu steuern. (Und hoffentlich noch vor Weihnachten damit fertig zu werden 8-[ \:D/ )

Gruß

Klingon77
20.04.2009, 06:55
hi Murdoc_mm,

freut mich wirklich, daß es weitergeht \:D/
ich hatte schon befürchte, daß es vorbei ist, mit dem Mono-Wheel :cry:


Das Video mit den Gewichten zeigt deutlich, wie der Sensor arbeitet.
Wie machen sich die neuen Servo´s; halten die Lager?

Die Ausschläge sind, wie Du auch schreibst, noch etwas heftig.

Was sind ACC´s? Den Begriff kenne ich nicht.

liebe Grüße,

Klingon77

Murdoc_mm
20.04.2009, 17:34
ich hatte schon befürchte, daß es vorbei ist, mit dem Mono-Wheel :cry:
Na, aufgegeben wird erst bei Totalschaden und den werde ich natürlich tunlichst vermeiden. Aber viel schneller werd ich wohl nicht vorankommen (zu wenig Zeit, zu viel Arbeit).


Das Video mit den Gewichten zeigt deutlich, wie der Sensor arbeitet.
Wie machen sich die neuen Servo´s; halten die Lager?
Naja, die alten sind ja nur kaputt gegangen weil ich sie ständig an den Anschlag hab fahren lassen. Das muss ich auch noch ordentlich vermeiden da momentan nur ein Provisorium programmiert ist.


Was sind ACC´s? Den Begriff kenne ich nicht.
ACC ist glaube der englische Begriff für Beschleunigungssensoren. Ist auf jeden Fall viel kürzer.

Gruß

hacker
20.04.2009, 21:46
ACC = acceleration

Willa
20.04.2009, 21:54
hi Murdoc_mm,
keine Ahnung wie viel Ahnung du schon von dem ganzen Regelkram hast, ich habe mittlerweile etwas Erfahrung mit ACCs und Gyros angesammelt. Du musst auf jeden Fall das Integral der Gyrowerte (=Absolutwinkel) für deine Regelung verwenden. Accs taugen eigentlich nur etwas um den Drift der Gyros heraus zu bekommen.
Also: Integral des Gyros nutzen um den aktuellen Winkel zu erhalten, dann immer das Gyrointegral langsam in Richtung des ACC-Signals ziehen. Dadurch driftet das Gyro nicht mehr, trotzdem ist deine Regelung sehr schnell.
Ans Gyro muss ein Highpassfilter, an den ACC ein Lowpassfilter (beides am besten als Elektronikschaltung). Deine Regelung sollte dann mindestens mit 150 Hz laufen. Das kann man leicht testen indem man alle 1000 Cycles eine LED an- und ausschaltet und mit ner Stoppuhr die Zeit dazwischen misst.
Falls du noch mehr Hilfe brauchst kann ich dir ein paar mehr Infos geben. Meine Programme sind aber alle in BASCOM.

Murdoc_mm
20.04.2009, 22:24
keine Ahnung wie viel Ahnung du schon von dem ganzen Regelkram hast ... Falls du noch mehr Hilfe brauchst kann ich dir ein paar mehr Infos geben. Meine Programme sind aber alle in BASCOM.

Ich kann Mathe zwar gut leiden aber mit Regeltechnik kannst du mich jagen. Liegt mir irgendwie nicht.
Es fängt schon an das ich nicht mal weiß was nen Integral ist.

Meine momentane "Auswertung" liefert mir etwa 10 Werte pro Sek. \:D/ (Ist aber kein bissel optimiert sondern erstmal Grundlagen(er)forschung und learning-by-doing)

--> also für Hilfe währe ich sehr dankbar, besonders in Bascom, da ich auch damit programmier.

Gruß

Willa
20.04.2009, 22:46
Ich gucke mal ob ich meine Regel-Beschreibung noch in meinen gesendeten emails finde, dann poste ich hier eine etwas ausführlichere Variante.
Auf jeden Fall wirst du etwas mit den ACCs und Gyros spielen müssen bis du gute Messwerte bekommst.

Willa
20.04.2009, 22:57
hier, gefunden:
Meine Filter sind Hardware und Software. Aber evtl. reicht es den Hoch- und den Tiefpass nur als Hardware auszuführen (Kondensator + Widerstand). Die Cutoff Frequenz könnte z.B. beim ACC 1-5Hz sein, beim Gyro 0,04 - 0,08 Hz oder etwas in der Größenordnung.

Die Mathematik ist im prinzip ziemlich einfach:

Als erstes mal misst du was dein Gyro in Ruhe als Pegel ausgibt. Diesen Wert nennen wir mal "Gyro_init". Den Wert ziehst du jetzt immer von deinem Gyro ab, so dass es null ausgibt wenn es in Ruhe ist, positive Werte bei linksdrehung und negative bei rechtsdrehung (oder andersrum). Dieser Wert geht als P-Anteil in deine Regelung ein.
Nun bildest du von dem Wert das Integral. Das heisst einfach dass du bei jedem Programmdurchlauf den Gyrowert addierst. Wenn sich nix bewegt, dann bleibt das null, wenn du es nach links drehst wird der Wert immer größer (summiert sich eben auf). Stoppst du nun die Drehung bleibt der Wert hoch. Erst wenn du es wieder zurück drehst geht es wieder auf null. Leider sind Gyros driftbehaftet, d.h. das Integral wird dir auch wenn du das Gyro nicht bewegst irgendwann (meist ziemlich schnell) abhauen, dein Integral rast ins "unendliche". Daran kannst du es hindern mit folgender einfachen Gleichung:

x_gyro_i ist das gyrointegral
Xacc ist der Wert direkt aus deinem Acc (wahrscheinlich musst du den hochskalieren damit er ungefähr zum gyrointegral passt, d.h. wenn der ACC 90° gekippt ist sollte er ungefähr einen Wert ausgeben der so groß ist wie das integral vom 90° gekippten gyro.) Das Ergebnis nennt sich dann "Komplementärfilter" (ein fieses Wort für eine einfache Sache), das funktioniert angeblich ähnlich gut wie ein Kalmanfilter (auch bei diesem Wort erstarrt man vor Ehrfurcht). Nur die richtigen Parameter zu finden ist bei ersterem wohl schwieriger.

'Driftkorrektur mit Hilfe des ACCs:
do
blablabla
If X_gyro_i > Xacc Then
X_gyro_i = X_gyro_i - 3
End If
If X_gyro_i < Xacc Then
X_gyro_i = X_gyro_i + 3
End If
blablabla
loop

So wird der integral-wert ständig dem acc nachgeführt. Man erhält die Absolutgenauigkeit eines ACCs gepaart mit der schnellen Reaktion eines Gyros. Die Werte richtig einzustellen ist ein bisschen Fummelei.

mausi_mick
21.04.2009, 05:00
Hi Murdoc_mm,

schön, dass es bei Dir mit dem MW weiter geht,
das Video hat mir gut gefallen, gerade auch die sehr schnelle Reaktion der
Servos. Ich denke, dass der Ansatz von Willa gut ist.
Mir scheint nur - bei Deinem "statischen" Versuch - der Kippwinkel noch zu
gross zu sein. Du müsstest vielleicht mal überprüfen, welcher Neigungswinkel im Stand bei den Massenverhältnissen Gesamtmasse(13kg?) zu Pendelmasse( <=1kg ?) und
den Schwerpunkten (maximale Auslenkung Pendelschwerpunkt von Radlängsachse < 6cm) überhaupt beherrschbar ist.
In Fahrt ist das unkritischer, da dann ja mehr Stabilität durch die rotierenden Massen generiert wird.

Gruß

mausi_mick

oberallgeier
21.04.2009, 07:16
Hallo Murdoc_mm,

schön, daß Du Dir zwischen aller Arbeit auch Zeit für dieses Projekt nimmst - und uns daran teilhaben läßt. Ich selbst war ja früher von den MonoWheels überhaupt nicht angetan - und jetzt würde ich am liebsten auch eines anfangen. Dagegen spricht nur das eine oder andere, wartende Vorhaben und das fehlende Konzept - bei mir müsste es ein Technologieträger für Experimente werden, ähnlich wie das von mausi_mick. Vorerst bleibt es also bei mir beim Zuschauen und Daumendrücken.

Murdoc_mm
21.04.2009, 18:35
Hi,

@Willa: danke, danke, danke. Endlich mal ne verständliche Erklärung wie man so ne Regelung aufbaut und programmiert. Mir gehts da wahrscheinlich wie vielen, dass ich mit den Formeln, die man überall findet, nix anfangen kann.


Xacc ist der Wert direkt aus deinem Acc ... Das Ergebnis nennt sich dann "Komplementärfilter" (ein fieses Wort für eine einfache Sache)

Du schreibst zwar nicht wie das Ergebnis zustande kommt aber ich habs glaube trotzdem verstanden:
Nachdem man das gyrointegral hat schaut man ob der Acc-wert (wenn man ihn richtig angepasst hat) das gleiche sagt und wenn nicht dann geht man in kleinen Schritten auf den Acc-wert zu (vom errechneten gyrointegral weg).

Dat wird am WE gleich mal ausprobiert (hoffentlich).

@mausi_mick: Erstmal großes Lob an dein BMW. Ich lese immer gespannt mit und hoffe auch bald mal so weit zu sein. \:D/


auch die sehr schnelle Reaktion der
Servos. Ich denke, dass der Ansatz von Willa gut ist.
Mir scheint nur - bei Deinem "statischen" Versuch - der Kippwinkel noch zu
gross zu sein. Du müsstest vielleicht mal überprüfen, welcher Neigungswinkel im Stand bei den Massenverhältnissen Gesamtmasse(13kg?) zu Pendelmasse( <=1kg ?) und
den Schwerpunkten (maximale Auslenkung Pendelschwerpunkt von Radlängsachse < 6cm) überhaupt beherrschbar ist.

Also wenn man nur mit den "Gewichten" ausgleicht ist der max. Winkel bei dem noch gegengesteuert werden kann relativ klein. Nur wenige Grad, geschätzt 2, 3 oder vielleicht 4. Zumindest im Stand. Allerdings gibt es noch eine möglichkeit aus größeren Winkeln gegen zu steuern: per Impuls. Meine Randbeobachtungen haben bis jetzt immer angedeutet das wenn man einen Impuls mit den Gewichten erzeugt das MW stärker auslenkt als mit den reinen Gewichten möglich währe. Allerdings ist es nicht ganz einfach die Impulse zu erzeugen. Schnelle Fahrt und ruckartiges Stoppen der Servos benötigen genaue Steuerung, ansonsten gibts keinen Impuls oder er geht in die falsche Richtung oder das MW liegt schon auf der Seite bevor der Impuls erzeugt wird.

Im Video wurde übrigens nicht das volle Gewicht an die Servos gehangen (um selbige etwas zu schonen). Nur etwa 2/3 des max. Gewichts werden bewegt. Hat aber trotzdem recht gut angesprochen.

Gruß

Willa
21.04.2009, 21:43
Du schreibst zwar nicht wie das Ergebnis zustande kommt aber ich habs glaube trotzdem verstanden:
Nachdem man das gyrointegral hat schaut man ob der Acc-wert (wenn man ihn richtig angepasst hat) das gleiche sagt und wenn nicht dann geht man in kleinen Schritten auf den Acc-wert zu (vom errechneten gyrointegral weg).
genau richtig. Und da der ACC stark tiefpassgefiltert wird ist es sinnvoll relativ langsam an den ACC-Wert heranzukriechen. Was du auch noch brauchst ist eine Art "Anti-Windup" (ich glaube so heisst das...) Du musst verhindern dass das Integral vom Gyro zu groß werden kann.
Einfach so:
If gyro_i > 1000 then
gyro_i=1000
end if
If gyro_i < -1000 then
gyro_i=-1000
end if
Hoffe es ist verständlich was ich meine. Genau dieses Antiwindup verwende ich jetzt um meine Regelung auszutricksen und mit meinem Tricopter Loopings zu fliegen.

mausi_mick
22.04.2009, 04:47
Hi murdoc_mm,

ich glaub, mit den Winkeln hast Du recht, es sind nur wenige Grad, die
man durch "langsames" Verschieben bei den Masse-/Hebelverhältnissen
hinkriegt. Und mit den Impulsen ist das so eine Sache ...

Aber ich glaube, Du hast mit den Sensoren da eine recht gute Wahl getroffen.
Bei meinem Neigungssensor - SCA61T - sieht es leider so aus, dass er (die Gasblase) wohl recht langsam ist: 8-28 Hz, ist leider nicht weiter spezifiziert. D.h. , ich geh von einer Zeitkonstante von ca 100ms aus. D.h. nach 'ner knappen halben Sekunde hab ich den Winkel, da ist das Rad aber fast eine Umdrehung weiter. Auch kommt - bei Regelung im Stand -
die Information über den Winkel (zu) spät und die Reaktion (beim Servo ca 0,2 s , beim (Getriebe-Motor/Zahnstange) eher > 0,5 s) noch später, d.h. es führt die direkte Reaktion eher zum Aufschaukeln als zur Beruhigung der Sache.
Daher versuche ich eher, die Neigungstendenz (über mehrere Messungen)
zu erfassen und darauf zu reagieren.

Zum Oszi:
Ich bin mir sicher, das wird Dir sehr helfen, gerade bei den
empfindlichen Sensoren in elektrisch rauher Umgebung, z.B. was Entstörmassnahmen angeht.
Bei meinem MW - ich versuchte , die Position des Pendelgewichts bezüglich der Ruhelage über die Hell/Dunkelwechsel der Gabellichtschranke zu erfassen - wäre ich ohne Oszi wohl noch immer auf Fehlersuche: Durch "Ölnebel" war die Gabellichtschranke so stark verschmutzt, das da kein TTL-Signal mehr herauskam und die Zählung bei Null blieb..
aber man sollte ja auch nicht unbedingt eine Lichtschranke in einer Ölwanne unterbringen ...

Gruß und
viel Erfolg

mausi_mick

Murdoc_mm
25.04.2009, 21:59
Hi allerseits,

Hab heute die Elektrik angefangen umzubauen. Ich werd wie Willa geschrieben hat nen Hoch- und nen Tiefpass einlöten. Dazu hab ich erstmal alles von den ACCs und Gyros abgelötet (Daumen drücken das die nicht den Hitzetod gestorben sind :-) und bei der Gelegenheit auch gleich nen Gyro (X-Achse) umgedreht (die Werte von dem Ding gingen immer entgegen denen der ACCs). Vielleicht muss ich das auch noch beim Z-Gyro machen, da dort auch nur Grütze beim Controller rausgekommen ist aber da möchte ich vorher noch mal ins Datenblatt schauen.

Wollte dann jetzt die Werte für die beiden Pässe ausrechnen --> altes Tabellenbuch rausgekrammt, gerechnet und mit meinen Bauteilelager abgeglichen --> keine passenden Werte da. Bin aber etwas stutzig über die hohen Werte (R größer 100K <-- hatte ich noch nie) geworden und hab mal Google befragt was den so Standardwerte für Pässe sind und bin auf nem Topic hier im RN gestoßen. Zufällig oder nicht genau die Frage die ich brauchte und auch noch von Willa selbst gestellt --> Volltreffer. https://www.roboternetz.de/phpBB2/viewtopic.php?t=46174

Da steht dann irgendwo das im Datenblatt auch Vorschläge für die Bauteildimensionierungen sind. Daran hab ich noch gar nicht gedacht und gleich mal nachgeschaut. Beim Gyro sind Werte vorgegeben (4,7yF und 100K). Leider hab ich beides nicht da aber die zu besorgen wird ja nicht schwer. Bei den ACCs sieht es da schon schlechter aus. Da werde ich aus dem DB nicht wirklich schlau. Die schreiben:


Output filtering and noise
A pair of 10nF capacitors limit the noise figure of the DE-ACCM3D, without overly sacrificing bandwidth.
RMS noise is typically 7.3mg, and output bandwidth is 500Hz - making it suitable for high frequency sampling of acceleration.

Wie ein Paar? Meinen die 2? Warum nicht ein 20nF? Und wie sollen die verschaltet werden?

Vielleicht könnt ihr mir weiter helfen.

Gruß

Willa
25.04.2009, 22:07
Steht im Datenblatt auch nichts über den Innenwiderstand des ACCs?

Beim Gyro sind Werte vorgegeben (4,7yF und 100K)
Was ergibt das denn für ne Grenzfrequenz? "Vorgegeben" würde ich nicht sagen, für deine spezielle Anwendung brauchst du halt nicht unbedingt die Art Highpass die der Gyrohersteller für irgendeine andere Art von Anwendung empfiehlt...

Murdoc_mm
25.04.2009, 22:28
Steht im Datenblatt auch nichts über den Innenwiderstand des ACCs?


Output buffers
A bare accelerometer chip has an output impedance of 32kOhm, which is unsuitable for obtaining reliable
measurements when connected to an analog to digital converter. On the DE-ACCM3D, a quad rail to rail
operational amplifier buffers the outputs from the ADXL330, greatly reducing output impedance. The
absolute maximum load beyond which accuracy begins to seriously suffer is 3.3mA, or 500Ohm.

Hier hab ich den ACC her: http://www.lipoly.de/index.php?main_page=product_info&products_id=5542



Beim Gyro sind Werte vorgegeben (4,7yF und 100K)
Was ergibt das denn für ne Grenzfrequenz? "Vorgegeben" würde ich nicht sagen, für deine spezielle Anwendung brauchst du halt nicht unbedingt die Art Highpass die der Gyrohersteller für irgendeine andere Art von Anwendung empfiehlt...

Frequenz währe 0,33863Hz.

Sollte eigentlich passen.

Murdoc_mm
26.04.2009, 21:51
Keiner ne Idee wie der ACC beschaltet werden möchte? LiebäugelzuWilla :-)

Gruß

Willa
26.04.2009, 21:57
Also ich hab prinzipiell nicht so viel Ahnung von Elektronik... Nur das nötigste um das zu machen was ich brauche. Aber wenn der ACC quasi schon verstärkt oder sonstwie impedanzgewandelt aus dem Board rauskommt, dann kannst du dessen Widerstand wohl vernachlässigen. Einfach ein passendes R und C einlöten, dann sollte das doch gehen...? Probiers doch einfach mal auf nem Steckbrett aus (wenn du keins hast: hab mir neulich eins besorgt, das lohnt sich!) Dann kannst du testen wie dein Lowpass funktioniert...

Murdoc_mm
26.04.2009, 22:05
Probiers doch einfach mal auf nem Steckbrett aus (wenn du keins hast: hab mir neulich eins besorgt, das lohnt sich!) Dann kannst du testen wie dein Lowpass funktioniert...

Ich hab tatsächlich keins. Aber es ist vielleicht wirklich an der Zeit mir mal eins zu besorgen... :-k

Gruß

Klingon77
26.04.2009, 22:11
...
Ich hab tatsächlich keins. Aber es ist vielleicht wirklich an der Zeit mir mal eins zu besorgen... :-k
...


hi Murdoc_mm,

wird Zeit; auf jeden Fall \:D/
Ein Elektroniker ohne Steckbrett scheint mir wie ein Metaller ohne Feile...
Halt nur ein halber Mensch... :-k #-o

Meines ist schon bald 20 Jahre alt und hat mir immer gute Dienste geleistet.
Lediglich im HF-Bereich kann es mitunter Probleme machen; ist aber auch nicht meine Sache.

liebe Grüße,

Klingon77

oberallgeier
03.06.2009, 09:52
Bei der Betreuung meiner youtube-Aktivitäten bin ich über MonoWheels gestolpert. Ein Schweizer, der sich keinen Motor leisten wollte:
http://www.youtube.com/watch?v=Ui4kI-RHS1Q&NR=1
und ein Computerspiel, das aber deutlich an den uns bekannten physikalischen Gegebenheiten vorbeigeht:
http://www.youtube.com/watch?v=0FF1bj_nECo&feature=related

Murdoc_mm
03.06.2009, 12:00
Bei der Betreuung meiner youtube-Aktivitäten bin ich über MonoWheels gestolpert. Ein Schweizer, der sich keinen Motor leisten wollte:
http://www.youtube.com/watch?v=Ui4kI-RHS1Q&NR=1

Sehr schön ist die Kameraposition im Gebüsch oder Wald. Wenn das MW noch mit seltsamen Aufklebern unkenntlich gemacht würde, hätte ich glatt auf Erlkönig getippt.

Bei mir ist grade wieder mal Zeitmangel aber meine 1,5 Tage WE sind ja nur noch 33 Arbeitsstunden entfernt. :-(

Gruß

Klingon77
03.06.2009, 16:30
hi,

wenn ich mir auf dem Video die Gewichte und ihre Verteilung betrachte; insbesondere das "Steuergewicht" sollten unsere MW´s auch laufen lernen.

Bin immer noch voll der Hoffnung.


liebe Grüße,

Klingon77

oberallgeier
03.06.2009, 17:17
... die Gewichte und ihre Verteilung ... insbesondere das "Steuergewicht" ...Aber er trägt doch keine Bleischuhe ? ! ? ! Eines beruhigt mich (erstmal) ungemein: ich kann keinen Kreisel sehen - außer dem Rad selber.

mausi_mick
04.06.2009, 03:53
hi,

aber ich kann nicht richtig erkennen, wie er (Interlaken) die 180° Kurve einleitet, durch Abbremsen mit dem rechten Fuß ?
Durch Gewichtsverlagerung ? Sieht eigentlich nicht so aus, zumindest hat das Rad, wenn ich das richtig sehe, kaum Schräglage .

Gruß

mausi_mick

Kenny5020
04.06.2009, 13:34
Für mich siehts so aus als würde er mit dem Kurvenäußeren Pedal stärker treten, als mit dem Inneren

Klingon77
05.06.2009, 06:52
...
Eines beruhigt mich (erstmal) ungemein: ich kann keinen Kreisel sehen - außer dem Rad selber.





hi,

und das läuft recht langsam; also geringe Stabilisierungskräfte \:D/


liebe Grüße,

Klingon77