Forum: Mikrocontroller und Digitale Elektronik Probleme Bascom Servo Steuerung / Kanalauswertung


von Tazman (Gast)


Angehängte Dateien:

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

von STK500-Besitzer (Gast)


Lesenswert?

Super kommentiertes Programm.

von Hannes L. (hannes)


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.

...

von Paul Baumann (Gast)


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

von Michael H. (tazman)


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

von Michael H. (tazman)


Lesenswert?

Da war jemand schneller :)

Da hau ich doch mal ein >= 140 rein, danke!

von STK500-Besitzer (Gast)


Lesenswert?

Michael H. schrieb:
> Meinst du ich sollte ganz auf GOTO verzichten? Das Return kann ich ja
> nicht einfach weglassen sonst hänge ich

Gosub und Return gehören zueinander (treten i.d.R. paarweise bzw. zu 
jedem Return gehört mindestens ein Gosub).

Goto und Return nicht.

von Hannes L. (hannes)


Angehängte Dateien:

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...

...

von STK500-Besitzer (Gast)


Lesenswert?

Hannes Lux schrieb:
> Nagut, wenn Ihr ihm schon alles mundgerecht vorkaut, anstatt ihn das
> selbst in der Hilfe finden zu lasen,

Gosub und Return sind ja eigentlich Basic-Basics...
Das hat noch nicht wirklich was mit Bascom zu tun.

von Hannes L. (hannes)


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...

...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.