dannn würd er aber doch gar nicht erst anfangen zu zucken (also der motor) , da der Pin ja nur aktiviert wird, wenn die richtige von bis Zahl erfüllt ist..
Druckbare Version
dannn würd er aber doch gar nicht erst anfangen zu zucken (also der motor) , da der Pin ja nur aktiviert wird, wenn die richtige von bis Zahl erfüllt ist..
Hm... stimmt, dann wäre ja ständig der erste Case-Zweig wahr.
Was jetzt noch interessant wäre: Ist die Pulslänge auch genau so lange, wie geplant? Also 20ms... Zufällig n'Oszi im Haus?
Nachtrag: Du kannst ja mal nen Slider einbauen und den Wert des Sliders als Grenze zwischen den Case-Zweigen verwenden. Dann könntest in Echtzeit mal den Wert verändern.
Case 0 to Slider1.value:
...
Case Slider1.value+1 to 20:
...
Oszi hab ich leider nicht -.-
Ich bin nervlich echt am Ende xD
Ich will kein Spielverderber sein, aber der gemeine Servo wartet auf einen Puls von 1ms (ein Anschlag) bis 2ms (Anschlag andere Seite), ergo 1,5 ms mittelstellung...und zwischen den Pulsen ~20 ms Pause.Zitat:
Zitat von Jaecko
Sprich, du kommst mit dem ms Timer nicht weit..ich weiß grad nicht ob VB auch uS kann, eher nicht..und selbst wenn ist es Unfug.
Die Timer sind vom System abhängig..du wirst nie ne uS genauiggeit haben..ich glaub sogar dass die Timer freezen wenn man Controls drückt oder das Fenster verschiebt?
An deiner stelle würde ich via RS232 nen uC die Sollwerte übergeben und ihm die Pulsgenerierung überlassen..
Ach ja..
https://www.roboternetz.de/wissen/index.php/Servo
Cheers,
unter windows kannst es ziemlich vergessen, ein gescheites servosignal zu generieren. die systemtimer arbeiten im mS-Takt, du kannst also höchstens die endanschläge anfahren... eine möglichkeit eine geringere auflösung zu erreichen wäre, wie zu anfängen der zeitrechnung im pc-bereich eine einfache for-next schleife mit ein paar tausend durchläufen. damit wirst du allerdings auch keine freude haben, weil windows ein multitasking betriebssystem ist und irgendein anderer task dazwischenkommen kann und auch wird.
möglich wäre es mit einem RTOS (gibts zb. auf Linux-Basis), wäre aber mit kanonen auf spatzen geschossen.
wie bereits erwähnt, die einfachste möglichkeit wäre einem mc die pulsbreite über rs-232 vorzugeben. dazu reicht ein kleiner attiny mit internem takt locker aus, also der bauteilaufwand hält sich dabei in überschaubaren grenzen: spannungsversorgung, schnittstellenwandler und tiny.
bin irgendwo mal über eine servo-steuerung direkt über den rs232 port gestolpert, der hat einfach div. ascii-zeichen mit einer bestimmten baudrate gesendet, wobei dann "zufällig" die richtigen pulsbreiten am tx rausgekommen sind. die auflösung ist dabei allerdings auch nicht die wucht.
Hallo WerWolf!
Vielleicht wäre das hier http://www.shop.robotikhardware.de/s...roducts_id=118 etwas für dich.
mfg
Gerold
:-)
schon interessant.
Allerdings halte ich es mit 30 euro für überteuert ?
Naja, wie gesagt wirst du ohne externe Hardware nicht auskommen.
Wenns dir ums Geld geht musst du auch beruecksichtigen was dich der Eigenbau/Zeitaufwand kostet.
okay...
bin bei nem Kollegen und versuchen nun das ganze mit einem
atmel 0801 - attiny 2313 20PU zu basteln.
Folgendes:
Der Attiny bekommt auf PinD.1 und PinD.2 Strom, darauf hin soll er ein langames PWM oder ein schnelles auf den Ausgang &B10000000 schicken.
leider funktioniert es nicht.
Weiß jemand wo in folgendem Quelltext der / die fehler liegen ?
Grüße
Code:
$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Portb = Output
Dim Wartenl As Byte
Dim Wartenr As Byte
Menu:
If Portb.1 = 1 Then
Gosub Links
End If
If Portb.2 = 1 Then
Gosub Rechts
End If
Links:
Wartenl = 0.4
Do
Portb = &B10000000
Waitms Wartenl
Portb = &B00000000
Waitms Wartenl
Loop Until Portb.1 = 0
Gosub Menu
Rechts:
Wartenr = 0.51
Do
Portb = &B10000000
Waitms Wartenr
Portb = &B00000000
Waitms Wartenr
Loop Until Portb.2 = 0
Gosub Menu