Aide : VB -Carte d'interface

PhantomT1412
Messages postés
28
Date d'inscription
jeudi 18 octobre 2012
Statut
Membre
Dernière intervention
18 octobre 2012
- 3 mars 2010 à 14:00
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
- 25 mars 2010 à 07:57
Bonjour, on réalise actuellement une platine mobile de webcam pour notre PPE (Projet Personnel Encadré) en classe, et ça consiste à faire pivoter une platine (avec la webcam dessus) dans un sens ou un autre selon la touche qu'on appuie sur le clavier (ne nous en demandez pas l'intérêt, on a pas fixé le cahier des charges). Logiquement, on a pris les flèches pour ça.

On a essayé de faire un programme nous-même, et on a aussi demandé à un informaticien. Voilà ce que ça donne : http://www.megaupload.com/?d=GJ7FE2TZ
(le "simple" c'est celui qu'on a fait)

Et on aurait voulu avoir de l'aide pour savoir comment lier les commandes aux sorties logiques de la carte d'interface qui va commander le moteur. Voici le contenu du CD de la carte d'interface : http://www.megaupload.com/?d=2C8X1YXA

Je vous remercie d'avance

47 réponses

PhantomT1412
Messages postés
28
Date d'inscription
jeudi 18 octobre 2012
Statut
Membre
Dernière intervention
18 octobre 2012

24 mars 2010 à 12:03
J'ai "simplifié" le programme , voila ce que ca donne (je colle pas tout seulement ce qui concerne la carte) :

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        If connect = True Then
            Select Case e.KeyCode
                Case Keys.Left

                    SetAnalogChannel(1)

                    Label8.Text = "Rotation Gauche"

                Case Keys.Right

                    SetAnalogChannel(2)

                    Label8.Text = "Rotation Droite"

                Case Else

                    ClearAllAnalog()

                    Label8.Text = "Cette touche n'est pas correcte"
            End Select
        Else
            Label8.Text = "Carte non connectée"
        End If
    End Sub

    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        If connect = True Then
            Select Case e.KeyCode
                Case Else

                    ClearAllAnalog()

                    Label8.Text = "CamMove"
            End Select
        Else
            Label8.Text = "Carte non connectée"
        End If
    End Sub



Par contre pour le pas a pas , je rame vraiment beaucoup (pour pas dire totalement) ....
Je sais pas du tout par ou commencer et je voit pas trop ce que je doit faire
0
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
24 mars 2010 à 12:49
dans ton keyup vire le select case, il sert à rien :
if connect then clearallanalog()

pour le pas à pas il faut te documter pour comprendre comment il marche (notion de pas et ypas, driver, holding et running torque/current)
mais te casse pas trop la tête car pour moi avec la vm110 c'est pas trop faisable de toute façon.
Principe : regarde le nb de pas entier par tour du moteur, puis le nombre de ypas que le driver accept, puis la vitesse de déplacement angulaire que tu veux, et calcul la fréquence des impulsions, regarde si elle est compatible avec la carte usb.
++
0
PhantomT1412
Messages postés
28
Date d'inscription
jeudi 18 octobre 2012
Statut
Membre
Dernière intervention
18 octobre 2012

24 mars 2010 à 14:25
Oki donc ca me donne
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        If connect = True Then

            ClearAllAnalog()

            Label8.Text = "CamMove"

        Else
            Label8.Text = "Carte non connectée"
        End If
    End Sub


Et pour le pas a pas j'en parle avec mes profésseurs , parceque je le sens pas du tout : même avec le meilleur vonlonté du monde et le meilleur forumeur du monde ca va être relativement chaud du fait de mon niveau de connaisance dans ce domaine et la complixité du truc
0
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
24 mars 2010 à 18:31
Bon regarde :
Soit un moteur de 10pas plein (physique) et une carte de puissance (drivers) qui permet de piloter en dizaine de micropas (ystep) et un besoin en vitesse de 300tr/min.

F(hz) d'horloge du driver
1 tour complet 10pas(moteur) x 10(résolution en micro pas du driver) 100 pas / tour
donc pour faire 300 tour en 1 minute (300/60=5tour par seconde) il te faut une fréquence (ou pas/sec) de 500Hz.

tu piges le truc ?
seulement tu ne peut pas accélérer (le gamma est fonction de ton couple moteur) instantannément !
imagine avec une voiture, les pneus glissesnt sur la chaussé, ben là pareil ton moteur décroche, il ne suis plus les pas que tu donnes.
Il te faut donc accélérer doucement à 500hz, disons pendant 1/4 de seconde par exemple. Donc dans un timer tu passes par une incrémentation de 0 à 500hz, puis lorsque tu veux t'arréter tu fais pareil mais à l'envers.
de 500 à 0hz.vala
++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
24 mars 2010 à 20:06
Exemple basic, sans vérif et non exploitable en tant que tel :

Public Class Form1
    ' déclare la position final en top, l'acc et le dcc en top/sec et la vitesse en hz (ou top/sec).
    Dim position_a_atteindre, gamma, vitesse As Integer

    Private Sub Go()

    End Sub

    Private Function calcul_position_AccDcc() As Double
        'calcul le temps de l'acc et du dcc pour avoir le temps du gamma
        Dim T_gamma As Double = vitesse / gamma
        'si le temps du gamma est supérieur à un gamma infini (gamma=0) alors
        ' modifier la txtbox du gamma !

        ' calcul le nombre de top parcouru pendant le gamma
        Return gamma / T_gamma
    End Function

    Private Sub Bp_Go_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bp_Go.Click
        position_a_atteindre = CInt(Txt_distance.Text)
        gamma = CInt(Txt_gamma.Text)
        vitesse = CInt(Txt_vitesse.Text)

        ' calcul le nombre de top pendant l'acc
        Dim position_acc As Double = calcul_position_AccDcc()
        ' calcul le nombre de top avant la décélération
        Dim position_dcc As Double = position_acc - position_a_atteindre
        'affiche le résultat
        Lbl_calcul.Text = "Acc jusqu'à : " & position_acc.ToString _
        & " top puis Dcc à : " & position_dcc.ToString & " top"


    End Sub
End Class


nb : les Txt_xxx sont des champs à remplir
0
PhantomT1412
Messages postés
28
Date d'inscription
jeudi 18 octobre 2012
Statut
Membre
Dernière intervention
18 octobre 2012

24 mars 2010 à 20:50
j'avais deja fais les calculs (il me faut 30 Hz)
Merci pour le code
Je vais voir comment je peut modifier ca !
Allez au travail ^^
0
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
25 mars 2010 à 07:57
ça fait pas beaucoup 30hz, du coup tu devrais pouvoir le faire avec la vm110
++
0