Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Page 1 sur 3 12 DernièreDernière
Affichage des résultats 1 à 15 sur 33

Vitesse liaison série

  1. quentennis

    Date d'inscription
    mai 2008
    Âge
    28
    Messages
    18

    Vitesse liaison série

    Salut à tous.

    Pour mon projet, je dois utiliser une liaison série afin de transmettre des données d'un PIC vers un PC.
    Cependant, pour mon cas, je dois utiliser une vitesse de transmission très grande. Après plusieurs calculs, la vitesse qui semble me convenir est de 230400 bauds.
    Je souhaitais savoir quelles sont les conséquences (s'il y en a) d'utiliser une vitesse aussi rapide, car j'ai lu sur différents forums que les vitesses usuelles utilisées sont aux alentours de 9200 bauds.

    Merci pour vos réponses !!
     


    • Publicité



  2. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    70
    Messages
    38 065

    Re : Vitesse liaison série

    1/ comment tu as déterminé cette vitesse ?
    2/ Le RS232 n'est pas fait pour cette vitesse et la distance doit être courte

    Si tu as un gros besoin de débit il y a l'USB
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  3. quentennis

    Date d'inscription
    mai 2008
    Âge
    28
    Messages
    18

    Re : Vitesse liaison série

    Salut

    J'ai déterminé cette vitesse car je dois me servir des pin RX et TX d'un microcontrolleur pic16f876. Il existe des formules pouir calculer le débit que l'on souhaite mettre en place, en fonctions de certains paramètres du circuit.
    Dans mon cas, la formule est la suivante (pour une transmission asynchrone):
    Débit = Fosc / (64*(SPBRG + 1))
    Fosc est la fréquence d'oscillation du quartz, et SPBRG est un octet qui peut prendre des valeurs entre 0 et 255.

    La distance entre le PC et la carte électronique sera courte pas de problème.
    Cette vitesse de transmission est disponible lorsqu'on ouvre l'hyperterminal pour réaliser une liaison série avec le port COM 1, donc ça doit être jouable non ?

    Je me pose alors une question : à quoi ça sert de permettre des débits aussi importants si on ne peut pas les utiliser avec une liaison série ? Celà sert-il pour d'autres protocoles, comme l'USB par ex ?


    Est-il possible d'interfacer un PIC avec un port USB ? ou alors, on peut aussi utiliser un adaptateur série/USB ! Ca pourrait marcher ?
     

  4. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    70
    Messages
    38 065

    Re : Vitesse liaison série

    Citation Envoyé par quentennis Voir le message
    Débit = Fosc / (64*(SPBRG + 1))
    La question que je t'ai posée, c'est :
    pourquoi avoir choisit
    Débit=230400
    Tu as besoin de transférer 21000 octets par seconde ?
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  5. MaMMoN

    Date d'inscription
    octobre 2005
    Messages
    56

    Re : Vitesse liaison série

    La liaison Rs-232 n'est pas faite pour des transfert et debit important , tout comme sa distance qui est limité .
    Si tu veux des vitesse plus importante utilise du RS-485 ou autres.

    Rq: Le port USB est aussi un port serie.
     


    • Publicité



  6. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 138

    Re : Vitesse liaison série

    Une liaison courte avec le PC à 115200 bits/s (vitesse maxi d'un port CM standard) ne doit pas poser de problème. Tout dépend de l'endroit où est installé le système.

    J'avais fait des essais avec un câble de 100m. Ca commençait à décrocher au delà de 38400 bits/s.

    A+
     

  7. quentennis

    Date d'inscription
    mai 2008
    Âge
    28
    Messages
    18

    Re : Vitesse liaison série

    Citation Envoyé par DAUDET78 Voir le message
    La question que je t'ai posée, c'est :
    pourquoi avoir choisit
    Débit=230400
    Tu as besoin de transférer 21000 octets par seconde ?
    Alors je t'explique pourquoi j'ai choisi cette vitesse :

    J'ai 4 signaux à convertir numériquement, chacun son tour. Avec les paramètres que j'ai choisis pour mon montage, j'obtiens un temps d'acquisition du signal de 19.7µs (temps qu'il faut pour que le condensateur se charge). Par la suite, j'ai besoin d'un temps de conversion de cette valeur, et il est de 19.2µs. Puis, pour pouvoir effectuer une autre conversion, un temps d'attente de 3.2µs.
    Donc le temps pour convertir un signal est de 19.7 + 19.2 + 3.2 = 42.1µs.

    J'ai 4 signaux à échantilloner, donc je multiplie ce nombre par 4 : 42.1*4 = 168.4µs. Pour chaque nombre, j'obtiens une conversion sur 10 bits. Je stocke tout ca dans deux octets pour chaque conversion, donc j'ai 16 bits de données, et je rajoute 2 bits de start et 2 bits de stop pour chaque emission, donc j'ai 20 bits à envoyer pour chaque nombre converti, ce qui fait 80 bits car on a 4 signaux.

    Par la suite, j'envoie les 4 premières données que je viens de convertir à un PC via une liaison série. Et c'est là qu'intervient mon débit.

    En fait, vu que j'échantillone mon signal, j'ai besoin d'une fréquence d'échantillonage fe>=2fs. Mon signal a une fréquence de 336Hz. Je dois donc avoir au moins une fréquence d'échantillonage de 672Hz. C'est une fréquence minimale, et j'aimerais qu'elle soit plus importante.

    Il faut donc que la conversion des données des 4 signaux et l'envoi via protocole série respecte cette contrainte.
    On a donc :
    fe >= 2fs
    1/Te >= 2/Ts
    Te <= Ts/2
    Te <= (T(echantillonage) + T(emission série))/2
    Te <= (T(echantillonage) + 80*(Temission1bit))/2
    2Te - T(echantillonage) <= 80*(1/Débit)

    Du coup, j'ai
    (1/Débit) >= (2Te - T(echantillonage))/80

    Avec les calculs que j'ai fait au dessus, on trouve : Débit >= 27065.

    Ce débit correspond au débit minimal pour pouvoir récupérer le signal analogique à partir du signal numérique. Personnellement, j'aimerais qu'il soit plus important, d'ou le choix de la valeur de 230400.

    Voilà, j'espère avoir été clair dans mon explication !!

    Maintenant, je voudrais savoir s'il est possible d'utiliser un port USB avec mon microcontrôleur, dans le cas ou le port série ne serait pas possible.
    J'avais envisagé cette option auparavant, mais les liaisons USB nécessitent des drivers pour fonctionner, et je ne sais pas trop comment gérer ça avec un PIC. Est ce que l'un d'entre vous l'aurait déjà fait ?
     

  8. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    70
    Messages
    38 065

    Re : Vitesse liaison série

    Si c'est pas loin du PC, tu peux essayer en RS232 sinon, c'est du RS422

    PS: si tu es avec un MAX232 .....c'est très près du PC
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  9. jiherve

    Date d'inscription
    juin 2006
    Localisation
    gironde
    Âge
    61
    Messages
    8 547

    Re : Vitesse liaison série

    Bonsoir
    moi je trouve : 20*4*672 = 53760 bds => 115200 avec > 100% de marge.
    Donc pas de problème pour échantillonner à 4Fs.
    JR
     

  10. MaMMoN

    Date d'inscription
    octobre 2005
    Messages
    56

    Re : Vitesse liaison série

    Citation Envoyé par Jack Voir le message
    Une liaison courte avec le PC à 115200 bits/s (vitesse maxi d'un port CM standard) ne doit pas poser de problème. Tout dépend de l'endroit où est installé le système.

    J'avais fait des essais avec un câble de 100m. Ca commençait à décrocher au delà de 38400 bits/s.

    A+
    100 mètres ? avec du Rs232 ?b
     

  11. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 138

    Re : Vitesse liaison série

    Citation Envoyé par MaMMoN Voir le message
    100 mètres ? avec du Rs232 ?b
    oui, justement, pour tester ce qu'on peut tirer d'une liaison série.

    Je ne pensais même pas atteindre 9600 bits/s avant ce test. Comme quoi ...

    A+
     

  12. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    70
    Messages
    38 065

    Re : Vitesse liaison série

    Citation Envoyé par Jack Voir le message
    oui, justement, pour tester ce qu'on peut tirer d'une liaison série.
    Tout dépend du type de câble et du driver (c'était certainement pas un MAX232 !)
    Si il est conseillé de ne pas dépasser 15 mètres à 9600 Bds, c'est qu'on est sûr que ça marche dans tous les cas
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  13. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 138

    Re : Vitesse liaison série

    C'était une liaison PC à PC.
     

  14. Seb.26

    Date d'inscription
    juin 2005
    Âge
    36
    Messages
    1 741

    Re : Vitesse liaison série

    Tu veux envoyer 4 résultats 10bits du CAN, tu as donc besoin de 40 bits, soit 6 octets ... donc 60bits ...

    Pourquoi "gaspiller" 6bits pour chaque mesure en la mettant dans un 16b? ...

    Code:
    ...
    uShort MesureCAN_(uChar channel);
    void UART_Tx_uShort(uShort value);
    ...
    {
      uChar buffer[6];
      uShort us1;
      //
      buffer[0] = 0xF0;
      //
      us1 = MesureCAN(0);
      //
      buffer[0] |= ((uChar)(us1>>10));
      buffer[1] = ((uChar)(us1&0x00FF));
      //
      us1 = MesureCAN(1);
      //
      buffer[0] |= ((uChar)(us1>>8))&0x0A;
      buffer[2] = ((uChar)(us1&0x00FF));
      //
      buffer[3] = 0x00;
      //
      us1 = MesureCAN(2);
      //
      buffer[3] |= ((uChar)(us1>>10));
      buffer[4] = ((uChar)(us1&0x00FF));
      //
      us1 = MesureCAN(3);
      //
      buffer[3] |= ((uChar)(us1>>8))&0x0A;
      buffer[5] = ((uChar)(us1&0x00FF));
      //
      UART_Tx(buffer,6);
    }
    ...
    NB: si tu retourve ma structure uShort_bytes sur le forum, ce sera plus simple et remplacera les décalages par un jeu de pointeurs ... je ne suis pas sûr que le compilo sache le faire tout seul ...

    Pour t'éviter d'avoir à ajouter un octet de début de trame, j'ai mis un pattern sur le 1er octet (le quartet de poid fort est à F, tu pourra essayer de retomber sur tes pieds en cas de problème sur l'UART, surtout si tu mets les 8bits de poids fort seul, et les 2 de poids faible ensemble ... si ton entrée ne dépasse pas 0xF0 sur ces poids forts.)

    C'est déjà ça de gagner ... ensuite, tu veux obtenir tes 4 mesures "tout les combien" ?

    Une RS232 doit normalement aller à 115Kbps max ... soit 11520 B/s ... soit >1900 mesure/s ... c'est pas assez pour ton application ? ...

    Alors il faut soit en effet passer sur de l'USB ... soit utiliser 4 PIC en parallèle qui utiliseront 4 ports COM sur le PC ... de cette façon, tu pourra obtenir environ 5.7 K sample/s ... le double si tu te contente de 8bits de données ...

    Quelle est la fréquence de ton signal en gros ?
    Dernière modification par Seb.26 ; 07/06/2008 à 20h39.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>
     

  15. quentennis

    Date d'inscription
    mai 2008
    Âge
    28
    Messages
    18

    Re : Vitesse liaison série

    Citation Envoyé par Seb.26 Voir le message
    Tu veux envoyer 4 résultats 10bits du CAN, tu as donc besoin de 40 bits, soit 6 octets ... donc 60bits ...

    Pourquoi "gaspiller" 6bits pour chaque mesure en la mettant dans un 16b? ...
    C'est vrai qu'en utilisant 16 bits, 6 bits sont inutilisés. Mais je ne vois pas comment envoyer une trame de 10 bits à une liaison série, sachant que l'orsque l'on choisit la longueur de sa trame, elle est de 7 ou de 8 bits !

    Merci pour ton code, mais j'avoue ne pas avoir tout compris à son fonctionnement... je ne suis que débutant en langage C ! Et j'ai l'intention de coder mon microcontroleur en assembleur, donc je ne sais pas trop comment faire pour traduire tout ça dans ce langange !


    Citation Envoyé par Seb.26 Voir le message
    Quelle est la fréquence de ton signal en gros ?
    Mon signal est aux alentours de 330 Hz.

    Merci pour ton aide Seb.26
     


    • Publicité




Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. Liaison Serie
    Par ibrakanet dans le forum Électronique
    Réponses: 0
    Dernier message: 03/06/2007, 09h53
  2. Liaison série pic18 <> PC
    Par Florentg84 dans le forum Électronique
    Réponses: 2
    Dernier message: 06/03/2007, 23h13
  3. PYTHON: liaison série
    Par perchman dans le forum Logiciel - Software - Open Source
    Réponses: 13
    Dernier message: 05/12/2006, 12h44
  4. Multiplexeur de liaison serie ...
    Par Seb.26 dans le forum Électronique
    Réponses: 59
    Dernier message: 24/09/2006, 00h48
  5. programmation liaison série labview
    Par rom206 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 31/05/2005, 10h52