IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Port série synchrone


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Port série synchrone
    Bonjour!
    J'ai déjà posté ce message sur le forum C#, qui est mon langage "de prédilection" on va dire :p
    Mais vu que j'ai eu très peu de retours, et qu'apparemment, .NET n'est pas la plateforme idéale pour ce genre de programme, je me permets de reposter ici, étant donné que j'ai une maigre connaissance de C++ :


    Dans le cadre d'un projet d'interface d'un capteur, j'ai fabriqué un circuit délivrant une tension créneau +/-5 ou 12V. J'ai besoin d'interpréter le signal sur un ordinateur.
    Je souhaiterais utiliser une liaison série pour transmettre ces données sous forme de bits (le signal sous sa forme actuelle correspond, si j'ai bien compris, à la norme RS232), ne disposant pas de port parallèle.
    Le seul problème est que je n'ai de loin pas le niveau pour intercaler les fameux bits de start et de stop nécessaires à une communication asynchrone.
    D'après ce que j'ai pu lire, se priver de ces bits de régulation revient à créer une communication synchrone.
    Cependant, je n'ai pu trouver nulle part de librairie, et à fortiori d'exemple de code c#/c++, pour ce type d'applications.
    Ma question serait donc de savoir si cela est possible, et si oui, comment?

    Merci d'avance,
    Immerczeck

  2. #2
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Petites questions ...
    Salut Immerczeck.

    Tu précises que tu as fait un circuit qui délivre une tension créneau de +/-5 ou 12V, est ce que c'est ton circuit qui génère les signaux ou alors il sert juste à alimenter ton capteur ?

    Tu as écris que ce serait la norme RS232 pour la communication, celà veut dire que tu ne doit pas te tracasser pour les "start" et "stop" bit car le capteur envoie déjà les trames dans le format RS232, tu dois juste regarder dans la data sheet de ton capteur quel est le format par défaut (c'est souvent "9600, N, 8, 1", ce qui signifie 9600 bauds, pas de parité, 8 bit de données, 1 start/stop bit).

    Si tu veux créer une communication synchrone entre ton ordinateur et ton capteur, tu vas demander beaucoup de ressources système à ton ordinateur.
    Et puis je ne pense pas qu'il est possible de configurer ton capteur pour qu'il envoie en synchrone en RS232.
    Si tel est le cas alors ce n'est pas du RS232, ce serait plutôt du RS485, de l'I2C, du SPI, ... quelque chose dans ce goût là, car un signal synchrone signifie qu'on doit transmettre un signal d'horloge entre le capteur et l'ordinateur et à ma connaisance ce n'est pas possible en RS232.

    Pour lire les données sur le port série tu dois utiliser un thread qui va lire périodiquement le port et entre chaque lecture tu le mets en pause pendant environ 100ms pour ne pas surcharger ton ordinateur.

    Voilà j'espère t'avoir éclairé, si t'as d'autres questions ...

    Johan

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour ta réponse.

    Lorsque j'ai parlé de RS232 j'ai simplement voulu dire que les tensions correspondaient à ce que j'avais lu concernant ceux en vigueur pour le port série, j'ai un peu poussé en parlant de norme, ça doit être l'élan lyrique

    Le capteur quant à lui est un capteur électrochimique délivrant un signal créneau d'amplitude 700-800mV, de composante continue avoisinant les 500mV. Donc aucune norme en ce qui concerne le capteur. D'où mon montage, qui redresse et transforme le signal en quelque chose de censément exploitable pour l'ordinateur (le fameux +-5 ou +-12V).

    Ce que je cherche à faire est d'envoyer par quelque moyen que ce soit ce créneau transformé sur le pc pour pouvoir exploiter les résultats. J'ai un adaptateur série/usb et parallele/usb mais je n'arrive pas à adresser le port parallele pour l'utiliser, bien que son utilisation me soit environ mille fois plus accessible apparemment
    D'où l'affaire du port série ^^

    Je commence à me demander si tout cela n'est pas au dessus de mes moyens en tant qu'apprenti électronicien/programmeur....

    Immerczeck

  4. #4
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    Tout dépend également e que tu veux faire de ton signal : est-ce que tu veux détecter des créneaux ? (passage > 5V et inversement) ou bien obtenir la trace de ton signal (montée, plateau, redescente)

    si c'est obtenir ton signal complet :
    Je pense que le plus "simple" (vu que tu à l'air d'avoir quelques connaissance en électronique ^^) serait de rajouter sur ta carte un mincrocontroleur possédant un convertisseur A/N (perso j'ai bossé sur des atmel, mais je ne suis plus trop à la page...), couplé à un composant de communication série (de mémoire MAX232 par exemple), ou alors carrément une communication série intégrée au microcontrolleur (je pense que ca existe vu que la plupart sont programmable in-situ).
    Ton microcontroleur peut alors lire et stocker la valeur de ton signal, que ton PC lui demande via la liaison série. Ces petites betes travaillent vite, et la plupart du temps tu peux travailler par interruption (quand un conversion A/N est finie apr exemple), ce qui te garanti un échantillonnage de ton signal correct...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Capter tout le signal dans ses moindres détails n'est pas nécessaire, j'ai effectivement juste besoin des sauts de tension (c'est pour cela qu'un simple signal "binaire" me suffisait)
    Mais si les solutions le permettant s'avèrent aussi compliquées que le convertisseur A/N (j'avais déjà lu quelques documents là dessus), autant passer par celui-ci, mais alors tout mon montage perdrait de son intérêt...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Et autre question, que fait exactement le MAX232? Ne se contente-t-il pas d'adapter les tensions?

  7. #7
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    Oui, le RS232 permet l'adaptation de tensions entre le montage et le PC. La gestion de la communication série reste à ta charge (je ne suis plus très sûr, mais je crois qu'il gère uen partie et que tu peux avoir le résultat d'une communication en consultant les registres, comme pour un PC).
    Si tu bases ta carte sur un microcontroleur, cela aura l'avantage de pouvoir fonctionner en détecteur de niveaux (c'est ton microntroleur qui positionne une variable a 1 si c'est vrai par exemple, et le PC ne fait que lui demander cette valeur), ou alors en enregistrement du signal...
    Maintenant, sans composant, la liaison série c'est pas gagné, la liaison parallèle serait mieux :avec un ampli op en détecteur de seuil (http://pagesperso-orange.fr/michel.h...tm#comparateur) tu positionne direcement un 5V sur une broche du connecteur parallèle quand ton seuil est dépassé...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    C'est à peu près ce que j'ai fait, sauf que j'ai ajouté une hystérésis dans un montage trigger de Schmitt pour les perturbations....
    Bon il va falloir que je vole un portable avec port parallèle je pense

  9. #9
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    Je pense que c'est le plus simple ^^ (enfin si tu peux l'avoir légalement, c'est encore mieux )
    Si tu veux faire une communication série, tu n'auras de toute façon pas le choix, il va falloir un composant qui gère cette communication du côté de ta carte capteur...

  10. #10
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Salut,

    Apparemment te voilà parti pour devoir changer ta carte, alors ce que je ferais je prend un µC (chez Atmel ils sont pas mal et en plus il y a beaucoup de forums disponibles), je connecte le capteur à une broche du convertisseur analogique/digital en passant par une résistance pour protéger le port contre les pics de courant et un Max232 (ou un FT232) pour les datas vers le pc.

    Ta plage de tension variant de 500 à 800mV max, l'ADC pourra lire sans problème la tension.
    Par soft dans le µc du définis le seuil de tension à partir duquel tu génères un "1" et hop on place ça en mémoire.
    Comme ça si en cours de dévloppement tu te rends compte que au lieu de 650mV t'as besoin de 730mV tu modifie juste dans ton soft du µC et le tour est joué ; et comme ça t'as pas besoin de modifier ton hardware.
    Enfin avec le pc tu demandes quand tu veux les données au µC.

    A plus

Discussions similaires

  1. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  2. Lire sur un port série de manière synchrone ?
    Par Hokagge dans le forum MFC
    Réponses: 26
    Dernier message: 09/06/2005, 12h16
  3. probleme de communication port série
    Par ben23 dans le forum MFC
    Réponses: 8
    Dernier message: 06/02/2004, 15h12
  4. Recherche de l'adresse du port série
    Par StephCal dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2004, 11h23
  5. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo