Commande de port série

Résolu
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009 - 14 avril 2008 à 11:22
cs_jeanpierre34 Messages postés 1 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 26 août 2010 - 26 août 2010 à 10:02
Bonjour, tout d'abord excusez-moi si ma question a déjà été traitée quelque part, j'ai vu qu'il existait quelques topics sur le port série mais je n'ai pas trouvé ce dont j'avais besoin. J'espère donc que ma question va être correcte, tant dans le fond que dans la forme.

Voila mon problème :

J'ai fait un petit programme de temporisation qui servirait à commander une électrovanne automatiquement, le programme est une fenêtre réalisée en MFC via Visual C++ 6.0.  Mon problème est le suivant : je ne sais pas comment envoyer quelque chose du port série jusqu'à mon électrovanne. J'ai mis un relais entre les 2 afin d'avoir une tension suffisante sur mon électrovanne (24 V en l'occurence). La tension minimale pour déclencher mon relais doit être aux alentours de 5V. Déjà, le PC est il capable d'envoyer ça sur le relais et ensuite, comment faire? 

Merci beaucoup pour vos futures réponses.

12 réponses

Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
23 avril 2008 à 14:52
Bon bah c'est bon j'ai fini toute la partie électronique et commande du port série, me reste plus qu'un (gros) problème de programmation et le projet sera terminé. J'explique vite fait ce que j'ai fait :

J'ai utilisé ce montage tout d'abord :
http://forums.futura-sciences.com/po...9.html#1389389  (montage 1 de la réponse #6) avec R=1k, le transistor un 2N2222 ou 2N2219, et la diode une 1N4004, à la place du relais une électrovanne. Les bornes A1 et A2 de l'électrovanne sur le transistor et sur le 24V (peu importe l'ordre) et la masse reliée à toutes les autres masses.

Pour la commande, c'est le port série : à la masse le fil de masse (5 pour DB9, 7 pour DB25) et l'autre fil sur le fil DTR du COM (4 pour DB9 et 20 pour DB25).

Voilà pour la partie électronique.

Maintenant, la partie code de mise à 0 ou mise à 1 de DTR :
C'était pas si compliqué en fait, il suffisait de savoir où chercher :

Mise à 1 DTR :
<hr size="2" width="100%" />PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
    EscapeCommFunction(g_hCOM, SETDTR);
<hr size="2" width="100%" />Mise à 0 DTR :
<hr size="2" width="100%" />EscapeCommFunction(g_hCOM, CLRDTR);
 PurgeComm(g_hCOM, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
<hr size="2" width="100%" />
Pour ma part, j'ai mis juste ces 2 lignes dans des fonctions appelées ouvrir et fermerelectrovanne ou un truc du genre que j'appelle quand j'en ai besoin. Voilà mon boitier serait surement fini si j'avais pas ce problème de thread ignoble pour ouvrir ma fenêtre et faire tourner ma boucle ne même temps.

Voila tout, j'espère que ça pourra servir à quelqu'un un jour....

++ et bonne continuation à tous.
3
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
14 avril 2008 à 12:30
salut,

Les signaux qui
circulent sur les deux fils de données du port série sont à
la norme V24 (liaison RS232, en simplifiant : en réalité, V24
est une norme électrique, RS232 un protocole).

En pratique, un des deux niveaux logiques sera traduit par une tension comprise
entre +3 et +25V par rapport à la masse, tandis que l'autre niveau logique
sera traduit par une tension comprise entre -3 et -25V par rapport à
la masse.

Sur un portable, on a des tensions positives proches des niveaux TTL (0V et
5V), avec une tension de l'ordre de 5 à 6 V (positive pour un niveau,
négative pour l'autre).

je crois me rappelé que depuis XP c'est devenu plus compliké d'écrire sur un port série, mais avant j'utilisait des fonction de type fport / rport ...

ciao
0
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
14 avril 2008 à 14:23
Ok merci beaucoup Omnia, donc si j'ai bien compris, en envoyant une tension positive sur un de mes fils, le relais va se déclencher, ouvrant par la même l'électrovanne. Je vais chercher à quoi correspondent les fonctions que tu m'a indiqué (fport, rport) et je vais chercher un peu de ce coté la. Si quelqu'un peut encore m'aider, n'hésitez pas .
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
14 avril 2008 à 14:42
0

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

Posez votre question
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
14 avril 2008 à 15:41
Merci bien, je vais regarder un peu ça, je dirais si j'y suis arrivé grâce à ce code. A bientôt à tous.
0
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
15 avril 2008 à 09:29
Salut, c'est encore moi. J'ai regardé du coté des fonctions dont tu m'avais parlé Omnia (fport), à vrai dire les quelques premières pages google sur ses fonctions sont un peu obscures pour moi. Par contre, le lien que tu m'a donné vers le code source marche plutôt bien mais j'ai quelques questions :

- Le pc sur lequel je travaille a plusieurs ports COM (celui du pc -COM1- et deux autres d'une PCI -COM3&4-), comment on fait pour savoir sur lequel je suis branché?

-Dans la console que j'ai récuperé (le .exe qu'on peut dl un peu plus bas sur la meme page), on me demande ce que je veux envoyer. Moi, je veux juste ouvrir mon électrovanne alors je dois envoyer juste "1" ou il y a quelque chose de précis à envoyer?

Si quelqu'un arrive à répondre à une de ces questions, je lui en serais (vraiment très) reconnaissant.

PS : je galère à ouvrir mon électrovanne avec une alim stab, c'en est une de chez Crouzet, si quelqu'un peut me dire ou il faut envoyer les 24V ce serait gentil
0
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
15 avril 2008 à 11:58
Euh désolé, je sais que ça fait un peu flood mais je préfère dire au fur et à mesure ce que je fais :

J'ai fait des tests avec un voltmètre pour voir ce qui sortait du port série, j'ai donc utilisé l'exe dont omnia m'avait parlé et j'ai envoyé un peu n'importe quoi à travers mon port série. Déjà, sans rien envoyer j'ai -11V entre les broches 3 et 5. Ensuite, dès que j'envoie une série de 1 (j'ai pas compté ni traduit en décimal), la tensio mesurée est de -6V environ. Avec d'autres données, j'ai encore des tensions différentes. Si quelqu'un pouvait m'expliquer en gros ce qui se passe, ca serait (vraiment très) gentil, parce que la je galère quelque peu...
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
16 avril 2008 à 12:49
si tu as des problèmes de tension en -x  tu n'as qu'a tester d'inverser les poles + et - ?
0
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
16 avril 2008 à 14:35
Merci Omnia d'avoir réagi à mon mp. Pour la tension, il n'y a pas que parce qu'elle est négative que ca me gêne, c'est surtout que je ne sais pas quoi envoyer : une série de 1 ou autre chose. En faisant plein de tests, j'ai vu que c'était quand j'envoyais 255 octets que j'avais la plus grosse réponse (variation de 5V) l'affichage du multimètre passe de -11 a -6V. Je sais pas non plus pourquoi...

Le problème est qu'il faudrait que j'envoie uniquement 5V sur le fil de mon port série : tension qui fera se déclencher l'électrovanne.

Un autre problème : quand j'envoie cette série de données (les 255 "1"), la variation de tension est assez ponctuelle, et moi il faudrait que j'arrive à garder constante cette tension pour garder ouverte mon électrovanne. En bref au secours, je vais continuer à tester le programme avec le pc pour voir si j'arrive pas à avoir mon 0-5V. Si je peux pas je ferais un réglage d'offset suivi d'un ampli. De toute façon à mon avis je peux tout essayer.

Ah et aussi, j'essaie de tester la réception de données, en fait j'envoie une tension sur mon fil de réception (broche n°2) et je regarde ce que le pc me dit, c'est parfois 0 octets reçus, parfois 1. Et je sais pas jusque combien je peux envoyer au pc. Pour l'instant j'ai pas osé aller au dessus de 5V. Quelqu'un pourrait me dire jusque combien on peut envoyer?

Encore un grand merci à ceux qui prendront la peine et le temps pour répondre.
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
16 avril 2008 à 15:17
essai de chercher de la documentation sur les ports série RS232

je n'ai pas plus d'informations , a l'époque il y a bien 10 ans j'avais fait d ela dev sur port série un lecteur de carte mais la partie é"criture/lecture était programmé en ASM sa venait des boukin borland je crois voila ++
0
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
16 avril 2008 à 16:33
Ok bah merci beaucoup Omnia pour le temps que t'as passé à m'aider.

Si quelqu'un d'autre peut répondre à mes dernières questions, qu'il n'hésite pas.
Merci beaucoup d'avance.
0
cs_jeanpierre34 Messages postés 1 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 26 août 2010
26 août 2010 à 10:02
Vous souhaitez prendre le controle de votre arrosage à distance depuis votre bureau, à la maison, dans la rue avec votre Iphone... Il y a une solution avec la Grenouille WG2009. C'est un cyber programmateur d'arrosage doté d'un serveur web intégré dédié à la gestion de l'arrosage. 8 zones, 4 cycles de démarrage, 32 séquences avec paramètres totalement indépendant pour chaque séquence (zone, durée, jours hebdo), économie d'eau réglable sur l'ensemble des séquences, entrée pluviomètre, commande de pompe par contact sec (relais), alarmes par email (smtp), mise à l'heure auto (sntp)....
0
Rejoignez-nous