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..
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:
...
#ifndef MfG
#define MfG
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 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..
Nam et ipsa scientia potestas est..
Ach ja..
https://www.roboternetz.de/wissen/index.php/Servo
Cheers,
Nam et ipsa scientia potestas est..
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.
Nam et ipsa scientia potestas est..
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
Lesezeichen