PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VB 6.0 und USB Ineterface K8055



mani
07.10.2004, 13:02
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!

a3000
10.10.2004, 18:38
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

mani
10.10.2004, 19:03
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

a3000
10.10.2004, 21:07
Hallo,
Mit VB funktioniert es bei mir auch aber der C++ Compiler meldet immer Fehler.

10.10.2004, 22:22
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

mani
14.10.2004, 15:16
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

AlexAtRobo
14.10.2004, 20:32
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

mani
15.10.2004, 10:37
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!

AlexAtRobo
15.10.2004, 11:17
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

AlexAtRobo
15.10.2004, 11:18
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

mani
15.10.2004, 11:30
Danke! werde ich mal probieren!

Wie funktioniert das genau mit der While und Wend schleife? (bin ein VB newbie)

auf was reagiert der DoEvents befehl? danke!

AlexAtRobo
15.10.2004, 11:39
Auf Deutsch gesagt:
While (Bedingung)
Solange die Bedingung erfüllt ist,
mach alles was den kommt
Wend
Und spring wieder hinauf


Do
Mach alles

While (Bedingung)
Und wenn die Bedingung erfüllt ist, spring wieder hinauf

Der Unterschied ist ein kleiner, aber feiner.
While wend -> Der Inhalt wird nur ausgeführt, wenn am Anfang die Bedingung erfüllt ist.

Do While -> Wird mindesten 1x ausgeführt, da die Bedingung am Ende steht.

DoEvents ist bei solchen Schleifen ganz wichtig! Das Erlaubt Windows andere Ereignisse (Events) abzuarbeiten. Sonst Zieht die die Schleife die ganze rechenleistung weg.

lg

alex

mani
15.10.2004, 12:08
vorerst sga ich mal danke! ich werde das einmal probieren! falls ich noch eine Frage hab meld ich mich!

Willi
15.10.2004, 20:18
Hallo,
hat jemand zufällig neben diesem Kit auch einen PIC-Prommer
und könnte mir das Teil auslesen ?
Ich habe mir den PIC zerschossen und möchte diesen neu
programmieren und suche den HEX File dazu.

Wer kann helfen.......danke

16.10.2004, 13:19
Hi,

hab ich schon versucht :-)
Leider ist der PIC Code Protekt :-( und kann somit nicht ausgelesen werden!

MfG.

Sommer Ulli

20.01.2005, 19:18
Hallo!!!
Was habt ihr schon alles mit K8055 gebaut?
Des hab ich auch!!!

Ferdinand
20.01.2005, 21:33
HI

mani kanst du mal den quele text und die dll hir posten

danke
by Ferdinand

mani
21.01.2005, 07:10
Hallo Ferdinand!

Welchen Queltext benötigst du denn? Von meinem Programm? Die .dll findest du auch auf www.velleman.be

masterchiefsupervisor
04.11.2005, 11:08
hallo an alle die auch ein k8055 haben!
ich will mir ein (konsolen) programm mit dev-cpp in c schreiben (c++ kann ich nicht) wie wird die mitgelieferte dll eingebunden damit das ganze funktioniert?
siehe auch: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=14055&highlight=k8055

danke

mani
07.11.2005, 15:42
Mittlerweile hab ich meine Diplomarbeit mit dem K8055 erfolgreich fertiggestellt, es hat wirklich etliche Stunden gebraucht!
Mittlerweile hab ich aber viele bessere bzw. einfacher Lösungen. Das K8055 ist für einen elektronik Einsteiger eine tolle Sache aber für Profis kann man es wirklich vergessen!
Ich bin mit diesem absolut nicht zufrieden, es gibt wirklich einfachere Methoden um mit USB zu schalten!
Das Problem ist ja, dass der PIC16C745 im K8055 Code Protected ist und das Programm darfauf nicht antsatbar ist! Velleman rückt den Code nicht raus!! Ich hab alles Mögliche probiert, ich hab sogar einen beschädigten Pic nach Belgien eingeschickt, hab aber nur einen neue Programmierten zurückbekommen!

BadBoy240
15.03.2007, 19:16
Hallo, erstmal alle zusammen!

Also ich habe mir erst das USB Board K8055 bestellt, dass aber in einigen Tagen eintreffen sollte! Aber ich würde mir jetzt schon mal gerne den Programmcode ein wenig erlernen! Aber ich weiß nicht wie ich anfangen sollte! Es wäre mir sehr hilfreich wenn mir jemand von euch ein paar Programme schicken könnte das ich mir das mal ansehe wie das ca. Funktioniert!! Ich programmiere mit 'Borland C++'!

Würde mich sehr freuen wenn ich mir sowas posten könnet!!
DANKE IM VORAUS!

MFG Martin