Welche Frequenz muss der Oszillator haben ?
Dan schau ich mal in meinen Kisten nach.
Gruß
Druckbare Version
Welche Frequenz muss der Oszillator haben ?
Dan schau ich mal in meinen Kisten nach.
Gruß
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.Zitat:
Zitat von Hessibaby
(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ß
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...)Zitat:
Ich bin immer wieder erstaunt wie viele Leute mir helfen wollen obwohl sie mich ja nicht kennen.
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
hi Murdoc_mm,
gibt es was neues ?
Wie ist der Sachstand?
liebe Grüße,
Klingon77
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ß
Hi, Murdoc_mm,
.................................Bild hierZitat:
Zitat von Murdoc_mm
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
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ß
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.
hi,
lass mich der erste sein, der gratulieren darf :idea: \:D/
Erfinden ist 10% Inspiration und 90% Transpiration.
zuversichtliche Grüße,
Klingon77
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! ;)
ja glückwunsch. dnan bin ich ja mal gespannt wies weitergeht. nun machts bestimtm auch wieder mehr spass ^^^
hi Murdoc_mm,
gibt´s was neues?
Lass uns nicht so lange warten. Wir sind alle ungeduldig O:) :mrgreen:
liebe Grüße,
Klingon77
@Klingon77:
Glückwunsch zum "Einstein"
Bin dran, bin dran.Zitat:
Zitat von Klingon77
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ß
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
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 :).Zitat:
Zitat von Klingon77
Tja, da ist eben statt Interrupts Parallel-Prozessing angesagt. Wer sonst sonst sollte denn ein Fachmann dafür sein . . . .Zitat:
Zitat von Murdoc_mm
(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).
Zitat:
Zitat von oberallgeier
"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
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:
MW-Empfangsprog (ohne 13-10, aber noch mit Resten von 13-10-Auswertung):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 (mit 13-10):Code:$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
GrußCode:$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
Oje, es outet sind ein 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 und newline genannt legen sie die Schreibposition fest.
Frohes Schaffen
mic
Du meinst nicht zufällig diesen Dau. Das würde ich aber persönlich nehmen.Zitat:
Zitat von radbruch
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?
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.
Hast recht. In der Bascom-Hilfe stehts drin:Zitat:
Zitat von radbruch
Zitat:
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.
Das bedeutet es funzt jetzt?Zitat:
Hast recht.
Die Abkürzungen in dem DAU-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).Zitat:
Zitat von radbruch
Mir gefällt "Problem ist die Stuhl-Tastatur-Schnittstelle".
Gruß
(Der 2te ist der erste Verlierer. Aber die habens verdient.)
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ß
Hi Murdoc_mm
Ich schreibe mal kurz wie ich eine Serie von Daten aus bytes, word und string übermittle
; bewirkt dass der Printbefehl ohne Carriage return ausgeführt wird. (Läßt man ; wird automtisch carriage return angefügt)Code: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
"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:
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.Code: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
Grüsse
Christian
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ß
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.Zitat:
Zitat von Klingon77
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ß
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
hi,
nimm den defekten mit auf den Flug.
Hast ja noch Garantie.
liebe Grüße,
Klingon77
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.Zitat:
Zitat von Murdoc_mm
Du willst nun aber ein einzelnes 8bi9t-Zeichen ausgeben. Also brauchts du den Befehl Print Chr():
Print Chr(Servo_pos);
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ß
Tja, für solche Test sollte man wohl besser die Gewichte abnehmen und nun nen leeren Servohebel aufstecken, der nirgendwo hängenbleiben kann...
Zitat:
Zitat von Murdoc_mm
Hmmmm, *grübelgrübelnachdenküberleg* - ein abnehmbarer Anschlag? Bei meinen Servos sind die immer innendrinnen.Zitat:
Zitat von uwegw
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
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)Zitat:
]
Nun bin ich etwas überrascht, daß sie sich so rasch verabschieden.
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
hi,
das mit der Software-Sicherung ist gut.
Das muß ich mir merken.
liebe Grüße,
Klingon77