begin process at 2008 07 25 21:38:48
1 216 496 membres
448 nouveaux aujourd'hui
14 182 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PORT PARALLÈLE : PILOTEZ JUSQU'A 8 SERVOMOTEURS.


Information sur la source

Catégorie :Périphériques Classé sous : servomoteur, portparallèle, robot, webcam, inpout32 Niveau : Débutant Date de création : 23/06/2005 Date de mise à jour : 02/03/2006 19:14:51 Vu / téléchargé: 10 921 / 2 741

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Port parallèle : pilotez jusqu'a 8 servomoteurs.

Pour commander un bras de robot, table traçante, orientation webcam ou tout autres engins robotique...
Pour le cablage voir le fichier "LPTx_Servo.BMP".

Utilisation de « INPOUT32.DLL » -> dans zip.
Pour + d'infos sur cette DLL http://www.logix4u.net/
  
Bon pilotage !  

ryl...
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

23 juin 2005 21:59:58 :
pb zip
24 août 2005 23:56:47 :
suppression de "Variants,Graph...." (inutile)
02 mars 2006 19:14:51 :
Manque "end." merci jlen100 !
  • signaler à un administrateur
    Commentaire de DJ Ox le 03/08/2005 23:52:25

    Je suis un newbee, c surement pour ca que j'ai un pb, mais il me maque: Variants.dcu, quelqu'un pourrai m'aider?

  • signaler à un administrateur
    Commentaire de rylryl le 25/08/2005 00:04:31

    Bonjour DJ Ox,
    J'ai oublié d'enlever "Variants" et autre...(inutile pour ce code).
    Le ZIP est mis a jour.
    Désolé pour le pb!

    A+
    ryl...

  • signaler à un administrateur
    Commentaire de jlen100 le 02/03/2006 17:05:09

    salutRylRyl,
    j'avais mis ta source en lien et il avait des PB de compilation.
    Après l'avoir rechargée je me suis apperçue qu'il manquait le end. final
    il à curieusement disparu depuis que je l'avais testée!!

    @+
    jlen

  • signaler à un administrateur
    Commentaire de jlen100 le 02/03/2006 17:10:10

    excusez moi pour le double post

  • signaler à un administrateur
    Commentaire de rylryl le 02/03/2006 19:17:57

    Bonjour jlen100,

    Merci beaucoup c'est corrigé !

    A+
    ryl...

  • signaler à un administrateur
    Commentaire de bryant823 le 12/10/2006 11:42:33

    Salut rylryl.

    Je tiens deja à te felliciter pour ton code. Et j'ai un petit problème, je sais pas si tu pourras m'aidé où pas. A la sortir de mon port parallele, sur la pin qui sert aux données du servo, j'ai des problèmes de parasites. Mon servo gresille... J'ai utilisé un oscilloscope pour voir la forme des signaux... J'ai triggé sur le flanc montant du signal. Et j'ai vu au flanc descendant des variations de temps de presque 1 ms...et j'arrive pas à les supprimer. Si tu connais où tu vois le problème sa serai aimable de m'aidé.

    Merci beaucoup

  • signaler à un administrateur
    Commentaire de smdwd le 19/10/2006 17:51:33

    Bonsoir Rylryl,

    Je ne suis pas très doué en programmation et quand j'execute votre programme, avec Delphi 5,
    j'ai ce message d'erreur :

    Le projet Lpt_servo_8.exe a provoqué une classe d'exception EAbstractError avec le message
    'Erreur abstraite'. Processus stoppé. Utilisé pas à pas pour continuer ou executer...

    Le projet est bien compilé : est ce grave ? que dois je faire ???

    Merci pour votre réponse !

  • signaler à un administrateur
    Commentaire de rylryl le 19/10/2006 18:32:46

    Bonjour,

    Bryant823 => Merci, Les PC un peu lent ou les PC surchargés(CPU) auront quelques probs...
    Il est peut être mieux d'arreter d'envoyer le signal sur le port parallèle quand les servos doivent être au repos...
    Le pb vient de l'exclusivitée de la boucle de tempo (il faut bien qu'a moment donné windows gére ses processus...

    SWDWD => Désolé je ne sais pas !

    ryl...

  • signaler à un administrateur
    Commentaire de smdwd le 19/10/2006 18:51:34

    SWDWD => Désolé je ne sais pas !

    Re soir,

    Merci quand même pour votre réponse sincère et rapide...
    Apparament votre source : PORT PARALLÈLE : LIRE/ÉCRIRE DANS LES REGISTRES DATA/CONTROL/STATUS DU PORT //  semble fonctionner,,, donc je vais adapter !

    Merci encore !

  • signaler à un administrateur
    Commentaire de smdwd le 20/10/2006 23:26:46

    Bonsoir Rylryl,

    J'ai donc simplifié votre programme, il se compile bien, mais mon servo tourne de 30° à chaque
    appuis sur le bouton envoyer (quelque sois la position du curseur), et ne tourne que dans un seul sens !
    Je vous joint le code, si vous pouvez m'aider....   Merci !

    ============================================================================

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;

    type
      TForm1 = class(TForm)
        ButtonEnvoyer: TButton;
        position1: TScrollBar;
        procedure ButtonEnvoyerClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;

    procedure Out32(PortAddress:word;Value:byte);stdcall;export;
    external 'inpout32.DLL';

    var
      Form1: TForm1;
      Valeur,LPTx:integer;

    implementation

    {$R *.DFM}

    // Attendre N microSeconde
    procedure DelayUS(MicroS: int64);
    var  Limite,Time_memo,Frq_Base,Time_now : Int64;
    begin
      if QueryPerformanceFrequency(Frq_Base) then
      begin
        QueryPerformanceCounter(Time_memo); // Repère temps
        Limite := Time_Memo + round(MicroS * Frq_Base / 1000000); // calcul fait une seule fois
        repeat
          QueryPerformanceCounter(Time_now);    // Comparer le Repère temps au temps actuel
        until Time_now >= Limite;      // Si pause pas suffisante recommencer
      end;
    end;



    procedure TForm1.FormCreate(Sender: TObject);
    begin
    LPTx:=888;      //LPT1 par defaut
    end;


    procedure TForm1.ButtonEnvoyerClick(Sender: TObject);
    begin
    out32(LPTx,1); // Servo sur Voie 1
    DelayUS(position1.position);     // Durée de l'impulsion pour cette voie
    out32(LPTx,$00); // Forcer niveau bas
    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    out32(LPTx,0); // Le Registre DATA est mis à zero
    end;

    end.

  • signaler à un administrateur
    Commentaire de rylryl le 21/10/2006 12:40:09

    Bonjour SMDWD,

    Cette simplification ne donnera rien de bon...
    Cherche plutôt pouquoi "EAbstractError" mais n'ayant pas ce pb je ne peux pas t'aider (peut être un problème de "thread")...

    A+
    ryl...

Ajouter un commentaire

Pub



Appels d'offres

Serveur et client mess...
Budget : 2 000€
Animation Flash alimen...
Budget : 6 000€
Intranet client pour t...
Budget : 5 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS