PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Servo deaktivieren (freilauf) *Gelöst*



AVRMagician
29.11.2007, 13:12
Guten Tag liebe AVR leute, zuerst mal hallo ich bin AVRMagician alias Mario und neu hier. Bin nun seit einenm guten Monat am Lernen und liebe dieses Forum, dass mir bis jezt fast alle meine Fragen duch Suchen beantwortete. Einfach spitze! Ich bin voll angefressen. *SMILE*

Nun zu meinem Problem, ich habe eine Bauchrednerpuppe die ich mit Servos steuere. Die Puppe soll wenn sie nicht spricht frei an den servos beweglich sein, ich habe verschiedenes probiert, komme aber auf keine funktionierende Lösung. Das eifachste wäre es natürlich den steuerdraht duch ein Relais zu unterbrechen, das muss aber doch auch per Software möglich sein denke ich, aber verflixt wie?.

Ich bin für jede Anregung und Hilfe dankbar. Die beiden Servos lauffen an PortB.2 + PortB.3

Grüsse MARIO


In Gebrauch:
MEGA 32 16mhz, Steuerung der servos mit Bascom Servo befehl.

thewulf00
29.11.2007, 13:30
Stell doch einfach die PWM aus, damit bekommt er kein Signal mehr und hält keine Position mehr.

PicNick
29.11.2007, 15:55
Wenn du den Timer0 deaktivierst, sollte Ruhe sein in der Hütte.

STOP TIMER0

Du mußt ihn dann halt wieder starten, wenn die Puppe wieder was zu reden hat. :-)

START TIMER0

AVRMagician
29.11.2007, 17:22
Hallo, Danke Robert und Thewulf00 für eure Inputs.

Das mit dem Stoppen klappt mit dem Befehl STOP TIMER0 prima, aber einschlten lässt er sich nicht mehr ... Grübel. Sollte eigendlich gehen, aber vielleicht geht das nicht weil ich den Servo(1) = xx Befehl in Bascom nutze.
Hab diverse Variannten probiert, einmal Timer aus, keine Servoaktivität mehr bis zum Reset. Hmmm .... also doch die Relais version?

Gruss Mario

uwegw
29.11.2007, 17:25
Vielleicht nach der Pause nochmal Config Servo... ?

AVRMagician
29.11.2007, 17:29
Schon probiert, Bascom ärgert sich dann über schon verwendete Variable "Variable alredy Dimensioned" ... Grübel ...

thewulf00
29.11.2007, 17:42
Ich denke, Bascom verliert die Zuordnung, bzw. der Atmel verliert sie dann. Es muss also nochmal eine PWM zugeordnet, sprich aktiviert und eingestellt werden. Probier doch einfach mal, die PWM auf einen niedrigen Wert zu setzen, bspw. 0. Oder mach Servo(0) oder so. Das wird aber nicht gehen, schätze ich.

AVRMagician
29.11.2007, 18:18
Wenn ich servo(0) mache dann dreht der servo über den anschlag aber geht nicht aus. Wenn ich anstatt Start timer "Config Servos = 2 , Servo1 = Portb.2 , Servo2 = Portb.3 , Reload = 10" (Bacom motzt beim Kompilieren aber geht) lade, geht es auch nicht, ignoriert es einfach. Ich nehme an das wie Du sagst die Zuordnung vorloren geht und erst bei einem Neustart neu wieder zugeordnet werden kann.

Gibt es noch eine Möglichkeit PWM auf null zu setzen? Ausser Stop Timer0

Dann doch das gute alte Relais?, nein ich habs, ich nehme einen zweiten mega32, der kontrolliert dann das ein und ausschalten des steuerpfades *SCHIEFLACH*

Mario

PicNick
29.11.2007, 19:00
Nun wart' mal.

Folgendes macht Bascom, um die Servo-Kontrolle zu Starten:


Bascom definiert eine ISR-Routine und setzt den Timer auf (TIMER0)
IN r24,TCCR0
ORI r24,0x01 'no prescale (/1)
OUT TCCR0,r24

IN r24,TIMSK
ORI r24,0x01 'enable
OUT TIMSK,r24

LDI r24,0xB1 'preload = 177
OUT TCNT0,r24

(Der Rest ist nurmehr in der ISR-ROutinen)

Die "177" sind, um 10µS Interrupts zu haben
Jetzt müßt ich mal schauen, was Bascom genau bei "STOP TIMER0" eigentlich macht.

Sei mal brutal und versuche
TIMSK = TIMSK AND 254 ---->Für "STOP TIMER0"
und
TIMSK = TIMSK OR 1 ---->Für "START TIMER0"


Weiters:
Was tut denn der µC sonst noch ? THeoretisch ginge ja auch

DISABLE INTERRUPTS (stop)

ENABLE INTERRUPTS (start)

Bluesmash
29.11.2007, 20:17
was mir spontan dazu einfällt aber keine ahnung ob das funktioniert...
könnte man nicht einfach den port an dem das servo hängt auf eingang schalten? und später wenn das servo wider laufen soll auf ausgang?

gruss bluesmash

jeffrey
29.11.2007, 22:02
hi,
du kannst einfach die spannungsversorgung der servo abschalten.
mfg jeffrey

AVRMagician
29.11.2007, 22:39
Hallo Robert

Hohoo, Jubel, Jubel! Du hast ins Schwarze getroffen! Es geht, mit TIMSK = TIMSK AND 254 ---->Für "STOP TIMER0" und TIMSK = TIMSK OR 1 ---->Für "START TIMER0". Hardcore! Ich verstehe nicht ganz was da abgeht, aber genau so leuft es! Klasse. Robert Du hast den Ehren Transistorenkranz verdient *MEGASMILE*, Danke dir sehr und allen andern die mitgebastelt haben.

Das Problem ist also gelöst.

Grüsse Mario

Robin1508
30.11.2007, 22:16
hm aber stört dich das nicht dass die Servos schwer zu drehen sind wenn sie ausgeschalten sind?

Was mir dazu einfallen würde ist, dass du z.B. den Mund und die anderen, servogesteuerten Teile über kleine Federn mit den Servos verbindest, die stark genug sind die Teile zu bewegen. Und wenn du die Teile manuell, also nicht servogesteuert bewegen willst, stellst du den Servo in die Mittelstellung und die Federn werden durch die Bewegungen einfach gedehnt. Ich glaube das geht leichter als wenn die Servos sich mitbewegen würden.


Gruß Robin

AVRMagician
01.12.2007, 12:10
Hallo Robin
Danke für deinen Tipp, leider wird das technisch recht schwierig umzusetzen sein bei meiner Puppe, da der Kopf aus Latex ist benötigen die Servos recht kraft um die Gesichtsanimation zu machen, das müssten derart starke Federn sein, die sich kaum noch von Hand dehnen lassen. Der Hals ist direkt angetrieben. Bei mir ist die Puppe im sleep zustand in der Kiste, wenn ich den Deckel schliesse entsteht manchmal Druck auf die Puppe, die Servos brummen schon bei leichter kraftwirkung und werden irgendwann heisss. Die Puppe ist vollautomatisiert und kommt auch selber aus der Kiste raus wenn sie soll.
Vor Jahren hätte ich noch tausende Dollars invesieren müssen um sowas bauen zu lassen, dank Atmel und Bascom geht das jezt alles selber, der Fantasie sind keine grenzen gesezt. Einfach genial! Hier ein Bild (attachment) von der Puppe (Seehund Sandy total ca 1 Meter gross). Grüsse Mario

Bluesmash
01.12.2007, 14:11
könntest du mal ein video der puppe hochladen? würde mich echt intressieren wie das so aussieht...

gruss bluesmash

AVRMagician
01.12.2007, 14:35
Hallo Bluemash
Ja kann ich machen, musst aber noch ca. 1-2 Woche warten da momentan nur das fertige innenleben der Puppe auf meinem Tisch steht und am RN-Experimentier Board betrieben wird. Nächster Woche werde ich versuchen alles fertig zu stellen, wenn aber ungeahnte Probleme auftauchen dann kann sich das ganze wieder verzögern, aber es sieht jezt so sehr gut aus, auch dank eurer Hilfe.
Die Echte Puppe wird natürlich in der Show von hand betrieben, dann kommt diese in die Kiste und entwickelt (Dank AVR, Servos und Getriebemotoren) so ihr eigenleben, kommt selber raus, sieht umher und redet zwischendurch, natürlich alles frei steuerbar. Dies ist ein Teil meines Kindershowprogramms *SMILE*
Ich habs schon einmal getestet, ohne Kopfanimation und die Kids flippten so schon völlig aus wenn Sandy selber aus der Kiste schaut. Jezt mit den neuen Animatronics, werden die scharenweise von den hockern fallen *LACH*

PicNick
01.12.2007, 17:46
Der kleine Sch...r ist ja wirklich herzig.

Du mußt auf jeden Fall weiter berichten, und wenn's irgendwas zu behirnen gibt, laß hören, da machen wir doch gerne mit.

AVRMagician
02.12.2007, 01:14
Hallo Robert, find ich toll das sich viele für as Projekt interessieen. *SMILE* Versuche euch auf dem laufenden zu halten und bin natürlich für tolle ideen dankbar.

MArio

goara
09.12.2008, 15:53
um den servo auszuschalten kannst du doch einfach den Port an dem der servo ist auf 0 schalten und hinterher wenn du weiterfahren willst wieder den Servo Befehl nutzen, das habe ich soweit ich mich erinnern kann schon mal so geamcht.

oberallgeier
09.12.2008, 16:12
Hi, AVRMagician

ich bin nicht sicher, dass das Abschalten des Servos Deinen Wunsch erfüllt (auch wenn der Thread als "gelöst" markiert ist).

... soll wenn sie nicht spricht frei an den servos beweglich sein ...Meine Servos haben so hohe Getriebeübersetzungen, dass sie ohne Energieversorgung eigentlich starr sind.

AVRMagician
09.12.2008, 18:39
Hallo Joeam
Meine modellbauservos lassen sich so problemlos drehen und alles leuft bestens im hardcoreinsatz wöchentlich. Hast du ne andere Möglichkei die auch geht? Mechanisch entkoppeln dürfte ja sehr aufwändig sein.
Gruss Mario

goara
09.12.2008, 23:54
gerade nochmal getestet...

mit "disable interrupts" kann man das auch ausschalten.. dann sind aber alle aus..