Hallo Leute,
habe folgendes Problem.
Ich möchte ein wenig mit einer Servosteuerung mit einem Microcontroller
spielen. Dafür habe ich das STK500 und einen modellbauservo.
ich habe schon diversere (bascom) programme geschrieben / gefunden und
auf den controller geschrieben, allerdings tut sich am servo rein gar
nichts... muss man noch irgendetwas beim stk500 beachten? die
stromversorgung für den servo läuft über ein externe netzteil (kabel
alle garantiert richt). wenn ich eine led an den eigentlichlichten
servopin stecke, flackert diese led in sehr kurzen abständen, also
scheint schon ein signal da zu sein... och weioß absolut nicht weiter...
auch ein programm, bei dem ich die leds per taster an und ausschalten
kann funktioniert... nur halt der servo macht gar nicht (funktioniert
aber!)
mfg gk
Bringen wirs auf den Punkt:
Die Masse des Servos muss zusätzlich noch mit der Masse des
Mikrocontrollers verbunden sein.
Der Mikrocontroller-Portpin der den Servo steuern soll, muss
selbstverständlich auch mit dem Signaleingang des Servos verbunden sein,
(das sieht man ja vielleicht nicht immer gleich bei den ganzen
Anschlüssen, Käbelchen und Jumpern, auf dem STK500).
Nur weil irgendwelche LEDs auf dem STK500 im Takt blinken, heißt das
noch lange nicht, dass der Mikrocontroller auch mit der richtigen
Taktfrequenz läuft und an den richtigen Takterzeuger, (intern, extern
Quarz, extern Oszillator?), angeschlossen ist. Und nur weil der
Mikrocontroller richtig an den externen Quarz auf dem STK500
angeschlossen ist, heißt das noch lange nicht, dass der Mikrocontroller
nicht doch einfach mit dem internen Oszillator läuft,
(Fuses-Einstellungen überprüfen!). Und selbstverständlich muss der
tatsächliche Mikrocontrollertakt dann auch noch im Compiler bzw.
Programm eingestellt werden.
ersteinmal danke für die antworten...
also die masse des servos muss an dem netzteil UND dem stk500
angeschlossen werden? habe ich das so richtig verstanden? wieso läuft
das denn so?
und wie funktioniert das mit diesen fuses? was muss man dort denn
einstellen?
so sieht mein programm aus:
$crystal = 4000000
$regfile = "m163def.dat"
Config Portc.0 = Output
Config Portb = Input
Portb = &H03
Config Servos = 1 , Servo1 = Portc.0 , Reload = 10
Enable Interrupts
Dim Winkel As Byte
Winkel = 70
Servo(1) = Winkel
Do
If Pinb.1 = 0 Then
If Winkel > 30 Then Decr Winkel
Elseif Pinb.0 = 0 Then
If Winkel < 110 Then Incr Winkel
End If
Servo(1) = Winkel
Waitms 10
Loop
End
Deine beiden Schaltnetzteile, die du wahrscheinlich verwendest, sind
beide galvanisch getrennt. Um aber Signale zu übertragen, müssen die
Bezugspotentiale gleich sein. Du verbindest also die Masse des Servos
mit der vom STK und den Signal-Pin des Servos mit dem Pin, den du
benutzen willst.
Zu den Fuses findest du massig Informationen im Netz. Wenn du einen ganz
neuen Controller hat, läuft der intern mit 1MHz. Wenn du das in deinem
Code änderst, brauchst du an die Fuses erstmal nicht ran.
>also die masse des servos muss an dem netzteil UND dem stk500>angeschlossen werden? habe ich das so richtig verstanden? wieso läuft>das denn so?
Alles, was einen Masseanschluss hat (Netzteil, STK500, Sensoren mit
Eigenelektronik, Zusatzbausteine, aber auch Messgeräte wie ein
Multimeter oder ein Oszilloskop), muss elektrisch mit der Masse des
Gesamtsystems ("Ground", abgekürzt "GND") verbunden sein, um
ordnungsgemäß funktionieren zu können.
>und wie funktioniert das mit diesen fuses? was muss man dort denn>einstellen?
Das findest Du im Datenblatt Deines Controllers ausführlich beschrieben.
Hallo,
>also die masse des servos muss an dem netzteil UND dem stk500>angeschlossen werden? habe ich das so richtig verstanden? wieso läuft>das denn so?
Seit "Erfindung" des Stromkreises muß dieser geschlossen sein, damit was
passiert.
Das Steuersignal ist auch hier nur die Spannungsquelle eines
Stromkreises, dessen "Verbraucher" der Signaleingang des Servos ist. Die
Rückleitung um diesen zu schließen ist Masse oder GND.
Oder auch anders: gesteuert wird das Sevro durch Spannungsimpulse an
seinem Eingang. Eine Spannung ist die Potenzialdifferenz zwischen 2
Punkten. Ein Punkt ist der Steuereingang, der andere ist Masse oder GND.
Gruß aus Berlin
Michael
so, werde diese tage wieder dazu kommen, an meinem stk500
weiterzubasteln.
danke für die tipps, werd die stromversorgung mal überabrbeiten ;)
hat jemand zufällig eine nette beschreibung was es mit diesen fuses auf
sich hat?
wie stellt man diese ein, was machen diese?
mfg gk
Gerrit wrote:
> hat jemand zufällig eine nette beschreibung was es mit diesen fuses auf> sich hat?
Ja, das Datenblatt des verwendeten Controllers.
>> wie stellt man diese ein, was machen diese?
Man liest das Datenblatt (die Absätze zu den Fusebits und zu den
Features, die per Fusebits in ihrer Funktionsweise verändert werden
können) und versucht es zu verstehen. Man öffnet den Programmier-Dialog
des (zum STK500 gehörenden) AVR-Studios, geht auf den Tab "Fuses",
versucht, die dort aufgelisteten Kombinationen zu verstehen und schlägt
deren Wirkung im Datenblatt nach.
Man kann aber auch dieses Forum (und das zugehörige Wiki) mit den
entsprechenden Stichworten durchsuchen. Denn verstellte Fusebits sind
hier Dauerbrenner, da wurde schon hunderte mal erschöpfend drüber
diskutiert. Ist fast so ergiebig wie "LCD geht nicht"...
...