Probleme Bascom Servo Steuerung / Kanalauswertung

Gast #2443957
Lesenswert?

Hallo.

Ich baue und experimentiere an eine Steuerung für die Beleuchtung und 
das Einziehfahrwerks eines Airwolf Helikopters. Habe relativ erfolgreich 
ein kleines Program geschrieben welches auch "fast" super läuft. Ich 
werte mit Pulsein den Kanal aus was bei anderen Projekten von mir auch 
schon bestens geklappt hat. Vom Sender schicke ich über einen einfachen 
Schalter entweder 1ms oder 2ms PWM Signale, da reichte der Pulsein 
befehl bisher immer aus. Timer 1 benutze ich für die Wiederholfrequenz 
des Servopulses.

Das Servo hat die ganze Zeit Kraft und brummt schön wenn ich es belaste, 
allerdings wenn das Fahrwert ausgefahren ist dann zuckt das Servo leicht 
so ca. im Sekundentakt. Die Frequenz des zuckens bleibt absolut konstant 
und im eingefahrenen Zustand bleibt es ruhig. Ich kann mir dieses Zucken 
nicht erklären und wollte mal hier fragen ob jemand die Erklärung in 
meinem Programm finden kann. Die Pulseout Werte wurden durch 
ausprobieren ermittelt, allerdings verstehe ich nicht ganz wie das mit 
den 1700 zustande kommt, da die Bascom Hilfe schreibt das bei 4Mhz die 
Pulsout zeit µs bedeutet, und ich dann nach Adam Riese bei 8Mhz 0,5µs 
haben sollte. Somit liegt der impuls theoretisch unter 1ms was dem Servo 
nicht gefallen würde. Leider besitze ich kein oszi um das zu prüfen

Solange ich das nicht absolut sicher im Griff habe kann ich den Heli 
nicht fliegen, denn ich möchte das 3,5Kg Teil nicht ohne Fahrwert landen 
:-)

MfG Michael
Angehängte Dateien:
#2444061
Lesenswert?

Tazman schrieb:
> nicht fliegen, denn ich möchte das 3,5Kg Teil nicht ohne Fahrwert landen

Wie hoch ist denn der Fahrwert?

Spaß beiseite, aber so wird das nix...

Goto und Return passt nicht zueinander da gibte es Mecker vom 
Stackpointer. Frag' mal die Bascom-Hilfe, die weiß dazu sicher etwas.

Und mit Waitms zum Blinken wirst Du auch nicht glücklich werden. 
Informiere Dich mal über Multitasking.

...
Gast #2444077
Lesenswert?

Du wertest in der Hauptschleife aus, ob der Wert >140 oder <140 ist, 
aber
was wird, wenn er =140 ist?

Wenn Du in Unterprogramme springen willst, mußt Du mit GOSUB und RETURN
drangehen.

MfG Paul
#2444078
Lesenswert?

Also das mit den Wartezeiten ist wirklich Käse, da hast du recht. Wenn 
ich am Sender umschalte passiert est was wenn die Sequenz durchgelaufen 
ist. Kann schon mal 3 sec. dauern :) Danke für den Tip Multitasking. Das 
werde ich mal in Angriff nehmen und in Bascom ausprobieren.

Meinst du ich sollte ganz auf GOTO verzichten? Das Return kann ich ja 
nicht einfach weglassen sonst hänge ich
#2444103
Lesenswert?

Nagut, wenn Ihr ihm schon alles mundgerecht vorkaut, anstatt ihn das 
selbst in der Hilfe finden zu lasen, dann kann ich ja auch ein Beispiel 
zum Einlesen von Servoimpulsen und Blinken beisteuern. Wenn das auf 
einen AVR mit mehr als einem Timer portiert wird, dann kann man z.B. mit 
einem zweiten Timer die auszugebenden Servoimpulse in Hardware 
generieren lassen (PWM-Mode).

Viel Erfolg...

...
Angehängte Dateien:
#2444172
Lesenswert?

STK500-Besitzer schrieb:
> Gosub und Return sind ja eigentlich Basic-Basics...

Richtig! Genau das sollte er durch Lesen der Hilfe selbst herausfinden, 
ich wollte sozusagen Hilfe zur Selbsthilfe geben, und als Zugabe noch 
ein (wenn auch kleines) Erfolgserlebnis.

> Das hat noch nicht wirklich was mit Bascom zu tun.

Nein, blockierendes Programmieren aber auch nicht. Auch in Bascom kann 
man Programme so strukturieren, das sich die einzelnen Jobs nicht 
gegenseitig blockieren. Mit Waitms 200 und Waitms 800 wird das aber nix 
Gescheites, es sei denn, der rest lööpt im Interrupt.

Gruß 45m tiefer...

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren