Synchronisation RS232 avec le PIC16f84 et programmation du PIC
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

Synchronisation RS232 avec le PIC16f84 et programmation du PIC



  1. #1
    invite347d3672

    Synchronisation RS232 avec le PIC16f84 et programmation du PIC


    ------

    Bonjour,

    J'ai besoin d'aide pour synchroniser le Pc par une liaison RS232 avec un PIC16f84.

    De plus en aillant jamais programmé en C, serait il possible que quelqu'un me montre comment initialisé le PIC en C.

    En fait, je vais envoyer une trame sur le pic via le clavier du PC que je vais connecter sur le port A RA0 du PIC (je suppose qu'il faut initialiser le port et le configurer en E). Et je voudrait commander un moteur pas à pas par la RA1 par exemple et je suppose qu'il faut faire la même chose que RA0 mais le configurer en S). Je pense aussi qu'il faut initialiser des registres. Et comme mon moteur doit effectuer l'action du clavier et s'arreter, comment generer un arret du moteur au moment ou l'action est terminée.

    Serait il possible que quelqu'un m'aide.

    Je vous remercie d'avance de l'aide que vous pourrez m'apporter.

    -----

  2. #2
    invitea172592b

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut,

    Ton PC sera toujours branché au pic et ton pic au moteur?

  3. #3
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut,

    Pour quelqu'un qui n'a jamais programmé en C, je trouve que ce projet est un peu ambitieu.

    Quel est le format de la trame que doit recevoir le pic?

    Personnellement je ne tenterais pas de recevoir des données sérielles à travers un port d'entrées/sorties numériques classiques. Il te faudrait un pic avec une interface série intégrée, cela te faciliterais le travail.
    Si tu le peux, je te conseille de t'orienter vers un pic 16F873 ou 16F877. Ce pic se met en oeuvre exactement comme un 16F84 à la différence près d'un nombre de pins différents et de deux broches Tx/Rx de liaison série. Tes données sont stockées dans un buffer qu'il suffit simplement de lire dans ton programme, c'est beaucoup plus simple.

    De plus, je doute qu'un moteur pas à pas puisse se commander avec une seule broche, sauf si tu as prévu d'utiliser un contrôleur en aval du pic, ce dernier n'émetterais qu'un signal enable.

    Cordialement

  4. #4
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Bonjour,

    Le but du projet est de commander un moteur pas à pas avec le pavé numérique. On tape une valeur au clavier de la RS232 arrive la trame avec la valeur sur le PIC. Le pic envoye la commande à executer. Si c'est la valeur 15 le moteur devra tourner de 15°. (les moteurs pas à pas fond 1.8° par pas alors j'ai mis des réducteurs).

    On doit pas contre obligatoirement utiliser le PIC 16f84.

    Oui aussi le moteur est un moteur 6 fils, je me suis trompé on utilisera 6 broches en sortie.

    Merci.

  5. A voir en vidéo sur Futura
  6. #5
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Merci pour ces éclaircissements.

    Cependant, je ne vois vraiment pas comment tu comptes t'y prendre pour recueillir la valeur numérique issue du clavier sur une seule broche du 16f84. As tu déjà une idée?

  7. #6
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    en fait, je pensais que la trame arrivée sur RA0 par exemple configuré en entrée et qu'après que le pic géré.
    Mais je pense à une chose aussi et que le pic doit renvoyer des informations pour prévenir qu'il est près à recevoir une trame ??

  8. #7
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut,

    Je viens de lire tes précédents posts et je me suis aperçu que ce problème a déjà été traité.

    Je te propose qu'on remmette les choses à plat pour avoir une bonne vue d'ensemble du projet.

    D'après ce que j'ai compris, le projet a plusieurs composants. D'abord le PC avec son pavé numérique. La valeur de l'angle de rotation à donner au moteur pas à pas est tapée sur le pavé numérique. Dès que l'on appuie sur "entrer", la valeur décimale est envoyée via le port série sous forme de trame au protocole RS232.

    Cette trame RS232 va devoir être receptionnée par un MAX232 qui va s'occuper d'effectuer la conversion RS232 (+12V/-12V)-> TTL (0V/5V).

    Une fois la trame mise en forme, on veut l'envoyer au microcontrôleur PIC16F84. La solution que tu as en tête est donc d'envoyer cette trame sur une broche configurée en entrée. Cette option est TRES difficile à réaliser. EN effet, la trame de données sera envoyée à une certaine vitesse, disons 9600 bds.

    La broche du PIC ne peut pas décoder une trame. La seule manière théorique pour y arriver serait de receptionner les bits un à un avec une bonne synchronisation. Cette solution doit être exclue car trop aléatoire et donc très peu fiable, d'autant plus que ça va être difficile à coder en C.

    La solution la plus simple serait d'uiliser un PIC doté d'une interface série intégrée. Il me semble que l'on t'avais donné un exemple dans un post précédent. Cependant, tu me dit que tu dois absolument utiliser un PIC16F84.

    Alors il faut trouver une autre solution.

    La dernière solution que j'ai à te proposer est d'utiliser un circuit convertisseur série/parallèle. Le EDE 701 peut convertir une trame série à 9600 bds en parallèle. Là c'est faisable ! Ce circuit convertit la trame en un mot de 8 bits parallèles. On relie ces 8 bits sur l'intégralité du port B de ton PIC. Ensuite dans le code C, il ne restera plus qu'à faire une lecture du port B et ensuite c'est la partie gestion du moteur qui gère le reste.

    Cette partie de gestion du moteur doit aussi être codée en C. Mais je te conseille de t'attaquer à un seul problème à la fois.

    Je te conseille de commencer par la partie réception de trame. Etudie la faisabilité de cette solution. Attention, le EDE701 nécessite un quartz à 4MHz. Si le EDE701 ne convient pas, tu as aussi le EDE300. Je te laisse le soin de jeter un oeil aux datasheet.

    Autre chose,si ce n'est pas fait, je te conseille fortement de revoir la conversion décimale->hexadécimale, ça t'aidera beaucoup!

    Si tu as d'autres questions n'hésites pas.

  9. #8
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    En feuilletant le catalogue Sélectronic, je viens de tomber sur un circuit qui serait plus adapté à ton projet. Le MIC810 de chez MICTRONICS convertit une trame série en 8 bits parallèles. L'avantage est que tu peux le placer directement entre le PIC et et le PC car son entrée est directement compatible TTL, CMOS ou RS232.

  10. #9
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Je viens de regarder le circuit. C'est vrai que c'est une "bonne interface". Et apparament simple d'utilisation.

    Pas contre la synchronisation est faite justement avec l'oscillateur 4 Mhz et avec une liaison RS232 à 2400bit/s ?

    J'a trouvé un programme en C pour justement ouvrir le port série et envoyer une trame. Cette trame arrivera alors sur la broche 2 du mic810.Et sur les 8 sorties,on aura un bit par sortie. Et après, on applique ça sur le port B du pic. Et le pic faut il lui mettre aussi un quartz de 4 Mhz?? Et apres RA0 à RA4 que jutiliserai pour piloter mon moteur alors. Et pour piloter mon moteur je dois intercaler des transistors entre les broches du pic et les bobine du moteur ??

    Tu m'excuseras peut etre qu'il y a des chose ou je ne comprends rien.

  11. #10
    invite0ed50554

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    En restant dans l'hyper classique ce projet a été maintes fois résolu avec les ingrédients suivants
    Un max 232 ENTRE LE pc et le PIC
    l'entrée des caractères reçus
    Soit sur le RB0 du PIC par interruption
    Soit sur une autre pin par polling
    La sortie vers le moteur via un ULN2803 ou un L293D selon le type de moteur via 4 autres Pins du PIC au choix ( sauf celle choisie pour l'entrée)

  12. #11
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut Kaxman et FSE,

    FSE, il faudrait que tu m'expliques comment tu peux recueillir un octet recu sous forme de trame à 2400 bds. L'interruption sur RB0 se déclenchera, certes, mais ensuite, comment feras-tu pour recevoir et stocker la trame de données dans une variable?


    Kaxman, je vois que tu as saisis l'idée de l'interface. Le pic a lui aussi besoin de son horloge.

    Je voudrais que tu fasses attention quand tu emploies le terme de synchronisation.

    Une synchronisation suppose une mise en commun d'une horloge sur plusieurs composants. Un bus I²C relie des composants par une transmission synchrone via la ligne SCL (Serial Clock).

    La RS232 est asynchrone. Ton PC va envoyer ses données à n'importe quel moment et ton pic sera en mesure de la recevoir à tout moment.

    Pour ce qui est de la connection entre le pic et le moteur. Oui il te faudrait un circuit d'adaptation. Le port du pic peut délivre 20mA, de quoi piloter une ligne TTL ou allumer une led, certainement pas pour piloter un moteur pas à pas. Regarde les circuits que t'a suggéré FSE.

  13. #12
    invite0ed50554

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Les octets sont asynchrones les uns par rapport aux autres certes mais l'octet lui même est transmis à un rythme connu
    Par exemple un start bit, 8 bits de données, un stop bit
    A 2400 Bauds chaque bit dure 417 microsecondes
    Le logiciel qui gère RB0 analyse l'état de l'entrée , fait un "shift" à gauche puis place un 0 ou 1 dans le bit 0 selon la valeur du dernier bit reçu. Au bout de 8 bits reçus la variable de réception contient l'octet envoyé
    A ce stade l'octet reçu est analysé par le PIC qui l'accepte ou l'ignore selon
    sa valeur
    sa place dans le message
    le nombre d'octets reçus
    un checksum
    etc.....etc...

  14. #13
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Bonjour,

    Ce qu'il me faut c'est un circuit qui me permet de faire un programme simple vu que je suis une bille en C.

    Si ça ne te derrange pas, je vais faire le schéma à la main et je le mettrai dans un prochain message.

    merci.

  15. #14
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Bonjour

    Voici le schéma en eseperant n'avoir rien oublié.

    quand pensez vous ??

    Ah je pense que j'ai oublié les transistors en sortie du PIC

    De plus, le moteur que je vais utiliser consomme 160 mA.

    Suis je quand même obligé de mettre un circuit d'adatation entre le PIC et le moteur ??

    Merci
    Images attachées Images attachées  

  16. #15
    invite0ed50554

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Les textes du dessin ne sont pas lisibles (avec mon équipement (IBM ThinkPad))
    Il faut intercaler soit des transistors soit un ULN2803 entre le PIC et le moteur sous peine de destruction du PIC
    Les 2 transfos d'alim ne sont pas indispensables. Un seul suffit avec un seul pont pour alimenter les 2 régulateurs
    Si le transfo donne environ 12V en charge le régulateur 12V peut être oublié
    Je n'ai pas pu lire la référence du circuit associé au PIC
    Le schéma ne prévoit pas qq composants permettant la programmation In Situ ce qui oblige de déménager le PIC à chaque reprogrammation sauf si supports ZIF généralisés

  17. #16
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Bonjour,

    Je pense que maintenant, j'ai un schéma correcte, je vais revoir un peu les tranfo et je vais intercaler 4 transistors entre le pic et le moteur.

    Voilà merci pour tout ça déjà et maintenant, je vais m'attaquer à la reception de la trame comme me suggerer jetster précédement.

    Ah oui le composent que j'ai intercalé entre la rs232 et le pic est un MIC810. (merci jetster).

    Si quelqu'un pouvait m'aider pour la trame et de comment il faut configurer le PIC16f84 (registre qu'il faut utiliser et mémoire et tout le reste). J'en serais ravi.

    Merci.

  18. #17
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut Kaxman,

    Si tu veux je pourrais t'aider la configuration logicielle du PIC. Est-ce que tu as déjà esquissé un bout de code?

  19. #18
    invite0ed50554

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    OK MIC810
    qui coute 20 fois le prix d'un Max232
    Au diable l'avarice !!
    Si le projet doit vivre plusieurs années attention à la disponibilité de ce composant

  20. #19
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Bonjour,

    Je pars en cours pour 18h et je reviens ce soir vers 20h.

    Je t'exposerai ce que j'ai fais.

    Pour le MIC810, c'est vrai qu'il est plus chère je pense que ça me simplifiera le projet pour le programme du pic.

    Merci.

  21. #20
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Le temps est aussi de l'argent ! Un technicien qui passe beaucoup de temps sur la programmation est également coûteux. Si on peut reduire le temps de programmation en achetant un composant plus cher, je pense qu'on peut y gagner au change non?

  22. #21
    invite347d3672

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Bonjour, Alors

    Nous entrons une valeur de 0 à 360 par le pavé num., nous validons et
    envoyons cette valeur par l'appui sur la touche <Enter>.
    Cette valeur en entier (32bits) via un protocole RS 232 est envoyée vers un
    PIC16F84 qui pilote le moteur pas à pas et le fait avancer du nombre de pas
    correspondant...
    Notre trame RS232 sera d'une longueur de 8bits (pas de bit de parité).
    Est-ce que la RS232 envoie 4trames pour une valeur entrée ???

    Si je rentre 120, le moteur doit avancer de 120 pas pour atteindre 120°,
    Si je rentre une valeur inférieure à la précédente (ex:100),
    le moteur doit avancer de 240 pas (360-120) puis de 100 pour atteindre le nb
    de degrés désiré.
    Remarque le moteur ne tourne que dans le sens trigo, d'où une utilisation du
    'Modulo'.

    Ne doit-on se servir que du registre de travail ?
    Comment le PIC sait qu'il doit attendre 4 trames (euhh si c bien ça) pour
    pouvoir faire avancer le moteur?

    Merci.

  23. #22
    invite5aee2b41

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut Kaxman,

    Je préfèrerais que l'on passe en messages privés, cela évitera d'encombrer inutilement le forum étant donné que je vais te donner des détails beaucoup plus technique.

  24. #23
    invite0ed50554

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Temps/Argent
    S'il s'agit d'un exemplaire unique pour aller au moins cher donc au plus rapide on fait appel à un produit tout fait : temps passé :zéro
    S'il s'agit d'une série on investit du temps de technicien pour minimiser le cout de chaque exemplaire produit ce qui récupère le temps d'étude
    Quant au programme, tous les compilateurs C gratuits ou payants sont livrés avec un exemple de communication série , il n'y a donc rien à développer de ce coté donc pas d'argent en cause

  25. #24
    invite295f45cb

    Thumbs up Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Salut ! Est-ce résolu car moi de même je chercher la solution. Merci c'est urgent. Si quelqu'un pourrai me le faire part!

  26. #25
    invitee05a3fcc

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Déterrage d'il y a 8 ans ..... record à battre !

  27. #26
    invite295f45cb

    Re : Synchronisation RS232 avec le PIC16f84 et programmation du PIC

    Mdr! dac!

Discussions similaires

  1. programmation pic16f84
    Par invite522722ae dans le forum Électronique
    Réponses: 5
    Dernier message: 13/03/2007, 10h24
  2. Programmation RS232<>PIC
    Par invitee45b5732 dans le forum Électronique
    Réponses: 1
    Dernier message: 25/11/2006, 22h14
  3. programmation PIC16F84
    Par inviteb4585ab0 dans le forum Électronique
    Réponses: 1
    Dernier message: 24/06/2006, 00h19
  4. Programmation PIC 16F84 avec Flowcode
    Par invite10bd8950 dans le forum Électronique
    Réponses: 1
    Dernier message: 25/03/2006, 22h19
  5. programmation de PIC(16F84)avec ICPROG
    Par inviteeab0141b dans le forum Électronique
    Réponses: 2
    Dernier message: 24/10/2005, 23h04
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...