Vm 140 (k8061), analog input/output

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 054 fois - Téléchargée 15 fois

Contenu du snippet

Source pour la carte VM140 (K8061 interface PC) de Velleman , permet d'exploiter les entrées sorties analogiques de la carte, cette source est un petit exemple destiné à aider les débutants.
Ne pas oublier de copier les fichiers : mpusbapi.dll et K8061.dll (fournis avec la carte)
dans le répertoire de votre source vb : "nom de la source" / bin / debug

Source / Exemple :


Option Strict Off
Option Explicit On
Friend Class K8061
    Inherits System.Windows.Forms.Form
    Dim bDoNothing As Boolean
    Dim shtCount As Short
    Dim intCardNumber As Integer

    Private Declare Function OpenDevice Lib "k8061.dll" () As Integer
    Private Declare Sub CloseDevices Lib "k8061.dll" ()
    Private Declare Function ReadAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer) As Integer
    Private Declare Function PowerGood Lib "k8061.dll" (ByVal intCardNumber As Integer) As Boolean
    Private Declare Function Connected Lib "k8061.dll" (ByVal intCardNumber As Integer) As Boolean
    Private Declare Sub ReadVersion Lib "k8061.dll" (ByVal intCardNumber As Integer, ByRef Buffer As Integer)
    Private Declare Sub ReadAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer, ByRef Buffer As Integer)
    Private Declare Sub OutputAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer, ByVal Data As Integer)
    Private Declare Sub OutputAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer, ByRef Buffer As Integer)
    Private Declare Sub ClearAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub SetAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Sub ClearAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Sub SetAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub OutputAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Data As Integer)
    Private Declare Sub ClearDigitalChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub ClearAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Sub SetDigitalChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub SetAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Function ReadDigitalChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer) As Boolean
    Private Declare Function ReadAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer) As Integer
    Private Declare Sub OutputPWM Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Data As Integer)
    Private Declare Sub Version Lib "k8061.dll" ()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'on connect les deux cartes
        Dim intCard As Integer
        intCard = 0
        intCard = OpenDevice

        Dim intCard1 As Integer
        intCard = 1
        intCard1 = OpenDevice

        'demare le timer qui lit l'entrée analogique
        Timer1.Interval = 500
        Timer1.Start()

        
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        'ENTREE ANALOGIQUE:

        'lit l'entrée analogique et affiche la tension en volt
        Dim v As Integer

        ReadAnalogChannel(0, 1)

        v = ReadAnalogChannel(0, 1)

        TrackBar1.Value = v
        Label2.Text = v / 100

        'pour avoir la valeur de l'entrée analogique en volt on divise par 100 :
        'les entrées analogiques on des résolutions de 10 bit donc 1024 pas,
        'sur la carte les jumpers de tolerance sont réglés sur 10 V max,
        '10/1024 = 0,01 (à peu prés!), donc 1 pas de l'entrée analogique = 0,01 V
        'multiplier par 0,01 et egale a diviser par 100

        'SORTIE ANALOGIQUE:

        'on fait varier la tension de la sortie analogique en agissant 
        'sur le trackbar dont la valeur max doit etre 256
        'car les sortie analogiques font 8 bit donc 256 pas

        Dim v2 As Integer

        v2 = TrackBar2.Value

        OutputAnalogChannel(0, 1, (v2))

        'affiche la tension en volt

        Label5.Text = v2 / 50

        'pour avoir la valeur de la sortie analogique en volt on divise par 50 :
        'les sorties analogiques on des résolutions de 8 bit donc 256 pas,
        'sur la carte les jumpers de tolerance sont réglés sur 5 V max,
        '5/256 = 0,02 (à peu prés!), donc 1 pas de l'entrée analogique = 0,02 V
        'multiplier par 0,02 et egale à diviser par 50

    End Sub
End Class

Conclusion :


Pour les débutants qui bataillent avec leurs carte interface PC , je travail sur un petit site qui regroupe des exemples d'applications, des schémas et des sources pour K8000 et K8061:

http://sites.google.com/site/brikop/

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
merci,
en faites pour les 6008 de chez NI je ne sais pas trop si les dll sont accessibles sous vb.net aussi facilement que celle de chez velleman !
sinon elle sont plus performante ! 12bit contre 10bit pour la vm140, et surtout la fréquence d'aquisition est plus élevé (note que j'en ai pas besoin ici)
je continu mes recherches pour voir, mais je connais tellement bien la vm110 que mon choix est presque fait (je tel lundi à NI pour voir ...)
@++ pour du 9
Messages postés
44
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2011
1
Bonjour, j'ai regardé un peu ces cartes d'acquisitions "NI USB-6008", ça a l'air pas mal, un peu plus chère mais tu as un boitier de protection... ce qui n'est pas négligeable sinon tu dois intégrer ta carte vm140 dans un coffret.
Les caractéristiques techniques sont presque semblables...
Ne mets pas plus chere que la 6008 sinon ça vaut plus le coup.
Pour ce qui est de la fiabilité de la vm140 j'ai pas grand chose à lui reprocher, si les softs sont bien faits elle tourne très bien, pas de déconnections intempestives, la durée de vie doit être bonne avec une utilisation optimale ( alim stabilisée, ventilation, ...) mais ça ne fait pas assez longtemps que les miennes tournent pour pouvoir vraiment juger.
Donc fies toi à ton instinct et à ton porte monnaie...

http://sites.google.com/site/brikop/
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
Salut, je vais installer une VM140 pour faire une acquisition de 8 sondes analogique 0/10V.
(je maitrise la VM110) mais j'aimerais connaitre ton avis sur sa fiabilitée.
(déconnexion, bug, durée de vie)
C'est une application industrielle, donc j'ésite encore avec les modules USB de chez NI.
@ lire tes retours d'expériences

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.