-
-
VB 6.0 und USB Ineterface K8055
Hallo allezusammen!
Vielleicht befindet sich hier ein Visual Basic Profi, denn ich hab folgendes Problem:
Ich hab das USB Interface Board K8055 über eine H-Brücke L239D mit 5 DC-Motoren laufen. Das ganze funktioniert ohne Probleme. Ich hab auch schon mit der k8055.dll in Visual Basic ein Programm geschrieben mit dem ich den Motor bestens nach links und rechts laufen lassen kann.
Und jetzt zum Problem:
Am Motor hab ich einen Schrittzähler den ich über den Digital Eingang vom USB-Board einlesen kann.
Port 1 und Port 2 (am USB-Board) haben über die k8055.dll einen integrierten Zähler -> VB Deklaration ReadCounter (1)
Ich will diese Deklaration nicht verwenden, da ich für Port 3-5 keine Zähler hab.
Wie schreibe ich in VB selber einen Zähler? Ich hab zwar schon selber einen Zähler geschrieben, doch leider funktioniert der nicht allzu gut bzw. richtig:
If t = True Then (true = Motor nach rechts drehen)
Do
i = i - 1
Text1.text = i
Loop While (i = 35000)
Else
If t = False then (false = Motor nach rechts drehen)
Do
I = i + 1
Text1.text = i
Loop While (i = -35000)
End If
End If
Wenn der Motor sich nach rechts dreht zählt der Zähler hinauf, wenn er sich nach links dreht zählt er hinunter.
Ich hab dabei folgendes Problem:
Solange der Schrittzähler auf HIGH ist zählt er hinauf bzw. hinunter.
Ich bräuchte eigentlich immer nur einen Impuls (z.B.: Taktflankengesteuert). Doch wie programmiert man dies?
Ich hoffe ich hab alles ausfürlich beschrieben! Danke für eure hilfe!
-
Hallo
Ich habe auch dieses Board. Ich kann mir nicht vorstellen, dass das funktionieren kann, denn die Zugriffszeit ist nicht besonders gut. (Wie hoch ist die Frequenzen der Impulse?
Zu diesem Board habe ich auch eine Frage: Ist es schon jemandem gelungen mit dem Bord in Visual C++ 6.0 zu kommunizieren.
Mit freundlichen Grüßen Lukas
-
Hallo a3000!
Bei mir funktioniert das Board ohne Probleme! Mit C++ hab ich nicht allzu viel erfahrung, aber mit Visual Basic funktioniert das ganz einwandfrei! Das einzige Problem das mir zu schaffen macht, ist meine geringe Erfahrung im Programmieren, doch die minimalsten Grundlagen hab ich mir schon angelernt! mfg
-
Hallo,
Mit VB funktioniert es bei mir auch aber der C++ Compiler meldet immer Fehler.
-
Hi,
hat schon mal jemand daran gedacht das Board über Funk zu betreiben?
Virtueles Kabel z.B über die Funkmodule von Roboterteil.de ???
Wär doch ein super ding das ganze per Funk zu betreiben, oder ?
MfG.
Sommer Ulli
-
Hi!
Schau mal auf diesen Link http://www.heise.de/newsticker/meldung/50794
hier gibz eine Info über einen Wireless USB, der soll irgendwann den Bluetooth Standard ablösen.
mfg
-
RN-Premium User
Begeisterter Techniker
Hallo,
prinzipell kenne ich mit VB gut aus, allerdings kann ich dir nicht ganz folgen, was du eigentlich tun willst. Willst du die Zeit "zählen"? Willst du die Motoren nur ein Stück drehen lassen?
Versuchs nochmal anders zu beschreiben, vielleicht kann ich dir dann folgen.
Sonst empfehle ich Dir mal ins blaue hinein, schau dir das Timer Control an. Da kannst du eine Zeit in Millisekunden angeben, nach der ein Event ausgelöst wird. Vielleicht hilft dir das ja weiter. Aussehen tuts wie eine Stopuhr.
lg
Alex
-
Vielleicht hab ich mich zu kompliziert ausgedrückt:
Ich habe auf meinem DC-Motor einen Schrittzähler, also wenn sich der Motor dreht bekomme ich einen Takt (0 1 0 1 0 1 0 1 0 1 0 1 0).
Ich habe das USB Interface K8055, (diese hat 5 Digitale Eingänge), mit diesem kann ich diese Signale ins Visual Basic einlesen. Dafür benötige ich eine .dll, die ich erfolgreich in mein Form inkludiert hab.
Mit dieser .dll kann ich folgendes machen:
ReadDigitalInput 1 (den ersten digital Eingang einlesen)
ReadDigitalInput ist entweder True oder False (Boolean), je nachdem ob der Motor sich dreht oder nicht.
Jetzt benötige ich einen Zähler der mir immer, wenn vom Motor ein True (high) kommt, 1 dazuzählt:
Also:
i=i+1
So wie ich es prog. habe, gibz folgendes Problem:
Solange wie der Eingang High ist zählt der Zähler 1 dazu, bzw, wenn der Schrittzähler vom Motor bei High stehen bleibt, zählt der Zähler immer etwas dazu, also bräuchte ich so etwas ähnliches wie eine Flankensteuerung, dass er nur wenn er 1 wird (oder umgekehrt) etwas dazuzählt.
Ich hoffe ich hab das jetzt etwas besser formuliert. Ich hoffe du kannst mir weiterhelfen, falls es fragen gibt kannst du mit auch eine Mail schreiben: martin.toth@utanet.at
Leider gibz dabei noch ein zweites Problem:
Wenn ich diese programmierte Programm öffne soll er sofort anfangen zum einlesen und zu Zählen und nicht wenn ich erst einen Button anklicke oder so ähnlich. Natürlich kann ich das mit einem Timer realisieren. Doch dieser würde die Eingänge nur alle 50ms abfragen, ich müsste die Eingänge jedoch alle 5ms abfragen können, ich denke das funktioniert mit einem API Timer. Aber wie?
DANKE!
-
RN-Premium User
Begeisterter Techniker
ok, das ist dann einfach. Du wirst halt a bisserl rechenleistung verbraten, weil du den Eingang pollen mußt.
Also mal ein Muster, frei aus dem Kopf geschrieben, mußt als eventuell a bisserl korrigieren.
Alles was du brauchst, ist ein Flag, das du setzt, sobald der eingang auf 1 geht. das löscht du wieder, wenn er wieder auf 0 ist.
Dim liCounter, liCounterflag
liCounterflag = 0
liCounter = 0
While 1 = 1 ' Hier mußt du halt eine geeignete Abbruchbedingung einsetzen ( Ein button etc)
liInput = readdigitalinput 1
If liInput = 1 And liCounterflag = 0 Then
liCounter = liCounter + 1
liCounterflag = 1
End If
If liInput = 0 Then liCounterflag = 0
Text1.Text = liCounter
DoEvents
Wend
lg
Alex
-
RN-Premium User
Begeisterter Techniker
Achso, und das Zweite Problem:
mach aus dem Oben genannten eine eigene Sub (Prozedur)
die Rufst du dann im Form.Load auf (dazu einfach das Form doppelklicken)
lg
Alex
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen