Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Copie signal d'entrée DC sur pin de sortie avec STM32F429II



  1. #1
    fab1985

    Copie signal d'entrée DC sur pin de sortie avec STM32F429II


    ------

    Bonjour a toutes et tous,
    Mon but: controler le start/stop d'une machine déjà existante par la carte (STM32F429II). La machine externe s'enclenche lorsque l'on court-circuite deux fils prévu sur cette machine. Si on coupe le cicruit, la machine s'arrête. Le signal de commande est du DC 12V.
    Je dois donc faire passer ce câble via ma carte . Celle-ci doit relier directement l'entrée à la sortie pour enclencher cette machine. Lorsque la sortie est coupée sur la carte, la machine s'arrête. Il s'agit donc d'un simple switch.
    Question: comment m'y prendre avec les instructions disponible?
    Voila ce que je fais actuellement:

    1) Initialisation Pin 0 pour entrée, Pin 1 pour sortie (utilisation de la libraire STM32F4xx_GPIO.c)

    Code:
    uint16_t test = 0;
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;            //Pin d'entrée
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_Init(GPIOG, &GPIO_InitStructure);
    
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;          // Pin sortie
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_Init(GPIOG, &GPIO_InitStructure);
    
    if(mode == SILICONAGE_ON)      //cas où la machine est activée
    {
        test = GPIO_ReadInputData(GPIOA);
        GPIO_Write(GPIOA, test);
      }
      else                                          // cas où la machine est stoppée
     {
        GPIO_ResetBits(GPIOA, GPIO_Pin_1);   
      }
    J'imagine que ce code simpliste n'est pas suffisant, mais je ne vois pas bien ce qui manque. La méthode est-elle correcte ou bien suis je a coté de la plaque?
    Vraiment merci d'avance aux éventuels motivés capable de me répondre.

    -----
    Dernière modification par gienas ; 15/10/2014 à 17h36. Motif: Ajouté les balises code, obligatoires pour les programmes

  2. Publicité
  3. #2
    spown

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Bonjour/bonsoir est bienvenue sur FUTURA,

    Je m'excuse mais c'est pas clair ce que tu demande. Il manque beaucoup d'information , Environnement ? Visual studio ? CooCox ? Keil ?( j’imagine que c'est IAR ?? ) . Un datasheet ? schéma du circuit ? Pour information, les sorties logiques pour ton M4 c'est +5 V, donc je te laisse réfléchir ce que tu dois faire pour commander 12 Vdc. ( composant du 20 eme siècle )

    Finalement c'est quoi l'ERREUR ? qu'est ce qui marche pas ? (il manque des lignes de code )

  4. #3
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Bonjour,
    Quel réactivité! Mieux que la help line de l'IAR ! Merci Spown.

    Désolé, j'ai été un peu rapide en effet: je programme sur l'IAR. Le signal de commande doit être testé pour 5V, peut-être que ça marche quand même à ce niveau là (si tension continue, alors machine externe fonctionne). La vrai question, en fait, c'est concernant la méthode du code. Suis-je parti dans la bonne direction? Est-ce qu'un Ohmmètre entre les bornes correspondantes sur la carte affiche environ 0 Ohm pour le cas ou la machine marche et X Ohm (x : grand nombre) pour le cas ou la machine est stoppée? Ou bien dois-je impérativement avoir un signal d'entrée pour vérifier la sortie? (Autrement dit: dois-je tester mon code avec la machine en question à côté ou bien un multimètre suffit?)
    Voici le schéma du circuit (le cercle correspond au switch que la carte doit faire)

    Schéma circuit.jpg


    Excellente continuation

  5. #4
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Je confirme que la tension du signal de commande est libre. Le but est donc de simplement programmer une sorte d'interrupteur sur 2 pins. Quant à mon code, c'est vrai que je n'incorpore pas le code complet du quand j'active ou stop la machine mais ça n'a pas d'importance (parce que ça fonctionne et que c'est plutôt long ). Mon problème, c'est donc simplement de réaliser cet interrupteur. J'avais oublié de mentionner une ligne apparamment importante: la deuxième ci-dessous qui active l'horloge pour les GPIO (enfin je crois...!)


    Code:
    uint16_t test = 0;
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  // active l'horloge pour les GPIO ?
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //Pin d'entrée
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; // Pin sortie
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    if(mode == SILICONAGE_ON) //cas où la machine est activée       instruction du if plus complexe en réalité
    {
    test = GPIO_ReadInputData(GPIOA);
    GPIO_Write(GPIOA, test);
    }
    else // cas où la machine est stoppée
    {
    GPIO_ResetBits(GPIOA, GPIO_Pin_1);        
    }
    
    
    
    De plus, les fichiers inclus sont :
    #include <assert.h>
    #include <math.h>
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <string.h>
    #include <intrinsics.h>
    
    #include "arm_comm.h"
    #include "stm32f4xx_conf.h"
    
    #include "iar_stm32f429ii_sk.h"
    
    #include "sdram_32M_16bit_drv.h"
    #include "lodepng.h"
    #include "bmp.h"
    #include "bmp32.h"
    #include "drv_glcd.h"
    #include "drv_glcd_lodepng.h"
    
    #include "usbd_hid_core.h"  // USB pour commander un moteur via carte de commande relié par USB
    #include "usbd_usr.h"
    #include "usbd_desc.h"
    Tout mon code concernant les GPIO est donc ci-dessus. Si dans la méthode il manque encore des lignes, c'est que je les ai oublié / pas compris l'utilité. Alors merci mille fois de me signaler quel type d'instructions j'ai oublié ou bien si ma méthode est correcte. J'ai la désagréable sensation d'avoir oublié quelque chose, mais ne sait pas quoi...
    De plus, comment vérifier mon code: le Ohmètre suffit ou bien faut-il se connecter à la fameuse machine (galère pour coder à côté...)?

    Respect et robustesse à tout gick capable de me répondre.
    Dernière modification par gienas ; 15/10/2014 à 17h38. Motif: balises code

  6. #5
    DAUDET78

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Ce qui me fait peur dans ton schéma #3 , c'est la liaison électrique entre le µC et la machine !
    Moi, je passerai par un optocoupleur pour isoler galvaniquement les équipements .
    Synchro_Secteur.jpg
    C’était prévu pour du 230V AC . Pour du 0/5V, remplace la 50K par une 330 ohms
    J'aime pas le Grec

  7. A voir en vidéo sur Futura
  8. #6
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Yes, merci! Je savais même pas que ça existait! (vive l'électronique...) Cool comme élément! Je découvre le cite et suis ravi de voir comme ça marche, certainement beaucoup grâce à des gens comme toi DAUDET78 44500 messages!

  9. Publicité
  10. #7
    spown

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Re-bonjour/bonsoir,

    Le code est mal structuré ( #include devrait être en haut ) et il manque déclaration pour la variable : SILICONAGE_ON

    Manque déclaration pour clock système : RCC_APB2PeriphClockCmd(RCC_APB 2Periph_SYSCFG, ENABLE);

    Aussi , il maque main(void), ainsi le while(1).

    Essaye de télécharger le package STM32CubeF4 ==> : http://www.st.com/web/en/catalog/tools/PF259243 tu trouveras des exemples pour IAR , Atollic.

    Si t'as pas de problème en anglais, tu auras des réponses ici : https://my.st.com/public/STe2ecommun.../AllItems.aspx

    Finalement, pour tester ton code t'as besoin juste d'une LED ( n'oublia une résistance ) sur ta PIN_1, pour voir le résultat. ( Sinon rapidement , View --> register ou Locals.. et cherche ta variable )

  11. #8
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Bonjour,
    Merci spown. En effet, je n'ai pas copier tout le code: le main est trop long, la boucle while n'existe pas car dans le code, on sait quand on veut activer la machine externe ou non: du coup, j'ai prévu de checker/modifier le signal de cette machine que lorsque l'on en a besoin -> du coup pas de boucle while(1). Les includes sont évidemment au début!
    Le site my.st.com à l'air terrible, merci pour l'info!
    La ligne de code " RCC_APB2PeriphClockCmd(RCC_APB 2Periph_SYSCFG, ENABLE); " est mal placée? (cf #4 : je l'avais oublié dans le #1. Dans le #4, elle est tout au début (après les includes) mais peut-être doit elle être après les initialisations des GPIO?).

    Excellente journée / soirée / semaine / mois / années / etc !

  12. #9
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Pardon, j'ai confondu RCC_APB2PeriphClockCmd(RCC_APB 2Periph_SYSCFG, ENABLE);
    avec
    RCC_AHB1PeriphClockCmd(RCC_AHB 1Periph_GPIOA, ENABLE);

    Mais je n'arrive pas a compiler cette ligne, le compilateur me dit qu'il connait pas "RCC_APB" et du coup il n'aime pas.
    Quel librairie faut-il inclure?
    Merci pour tes réponses, elles m'ont déjà bien aidé

  13. #10
    spown

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Il devrait pas y avoir d'espace entre 'B' et '2'.

    Désolé pour la faute de frappage.

  14. #11
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Bien vu, c'était ps un pb de librairie, mais l'espace entre b et 2: merci spown!

    Bonne journée

  15. #12
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Bonjour,

    Encore merci pour ton idée d'optocoupleur Daudet78. Je suis en train de tester le circuit. Vu que je l'utilise comme interrupteur, j'ai pas de 5V VCC sur la sortie ni la résistance de 10 KOhms. Mon circuit est donc le même, en supprimant ce qui est au dessus de la pin OUT sur le schéma. Mais c'est bien juste, si je met 5V en entrée (à la place du 230), le "OUT" et "0V" du schéma sont reliés comme s'ils étaient liés par un fil? Donc résistance nulle.... ce qui n'est pas ce que je mesure avec mon multimètre. Tandis que si il y a 0 v en entrée, la résistance est "infinie". Est-ce que le système est très dépendant de la tension d'entrée (pour mes tests j'utilise des piles mais après, via le microcontroleur, ce sera bien 5V assez précis)?

    Vive le savoir, mais surtout ceux qui l'ont!

    Fab

  16. Publicité
  17. #13
    DAUDET78

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Citation Envoyé par fab1985 Voir le message
    Je suis en train de tester le circuit. Vu que je l'utilise comme interrupteur, j'ai pas de 5V VCC sur la sortie ni la résistance de 10 KOhms. Mon circuit est donc le même, en supprimant ce qui est au dessus de la pin OUT sur le schéma.
    Commence par valider mon schéma en mettant du 5V et la 10K
    Mais c'est bien juste, si je met 5V en entrée (à la place du 230), le "OUT" et "0V" du schéma sont reliés comme s'ils étaient liés par un fil?
    Oui
    Donc résistance nulle....
    Non ...
    Tu as un transistor saturé
    ce qui n'est pas ce que je mesure avec mon multimètre.
    en voltmètre ? normal ! c'est , grosso modo, un contact sec
    Tandis que si il y a 0 v en entrée, la résistance est "infinie".
    Oui
    Est-ce que le système est très dépendant de la tension d'entrée (pour mes tests j'utilise des piles mais après, via le microcontroleur, ce sera bien 5V assez précis)
    Ce n'est pas , sauf erreur de ma part, un µC qui pilote le photocoupleur ? mais une machine ? qui donne du 5V ?

    Bref, commence par tester mon schéma complet et ensuite , on en recause
    J'aime pas le Grec

  18. #14
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    J'ai testé le circuit original:
    Circuit.jpg

    Les numéros encadré correspondent aux pins reliés sur l'optocoupleur. Les alimentations sont en fait 3x2 piles de 1.5V (pour ces tests uniquement): total mesuré: entre 4.5 et 4.8V. (Est-ce grave si c'est pas 5V pile poil docteur?) (L'alim avec la résistance de 10 KOhms se branche sur la pin 5 ou 6?)

    "ce qui n'est pas ce que je mesure avec mon multimètre.
    en voltmètre ? normal ! c'est , grosso modo, un contact sec"

    Mon multimètre peut faire ohmmètre... Et mesure minimum 25 MOhms tout le temps. Y compris lorsque j'enclenche ou annule l'alimentation de 5V sur la pin 1.

    "Ce n'est pas , sauf erreur de ma part, un µC qui pilote le photocoupleur ? mais une machine ? qui donne du 5V ?"
    Le microcontrôleur génère ou non 5V sur un pin relié à la résistance de 330 Ohms, ce qui active ou non une machine externe (Pour activer cette machine externe, il faut relier 2 fils sur cette même machine, d'ou l'utilisation de l'optocoupleur comme bête interrupteur géré par mon microcontrôleur)

    Verdict: je suis toujours aussi nul en électronique! -> La résistance de sortie ne varie pas, alors qu'idéalement, le but final est de faire en sorte qu'elle soit infinie (circuit ouvert, machine externe à l'arrêt), ou nulle (machine externe en marche) entre les pins 4 et 5.

    Et je me pose une question supplémentaire: si j'utilisais un transistor, en alimentant la base ou non avec mon microcontrôleur, le collecteur et l’émetteur sont en "court-circuit". Ne serait-ce pas plus simple pour faire mon bidule plutôt que d'utiliser l'optocoupleur?
    Images attachées Images attachées

  19. #15
    DAUDET78

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Procédure de test :
    Circuit_Opto.jpg
    J'aime pas le Grec

  20. #16
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    ça marche!

    Merci Daudet78. Il me reste plus qu'à me brancher sur ma machine externe pour le vrai test. Comme il s'agit de relier 2 fils de cette machine pour la mettre en route, ces deux fils iront se placer sur les pins 5 et 6 je présume?

  21. #17
    DAUDET78

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Citation Envoyé par fab1985 Voir le message
    Il me reste plus qu'à me brancher sur ma machine externe pour le vrai test.
    Euh ... non !
    Je viens de regarder ta question . J'ai raisonné en pensant que ta machine fournissait le 5V pour piloter le µC . Et c'est le contraire !

    Pas grave, mais il faut savoir quel est le courant qui passe dans l'interrupteur quand on met en marche la machine .

    Donc il faut mesurer le courant qui passe quand tu court-circuites les deux fils par un interrupteur (à moins que ce soit marqué dans la doc de la machine)
    J'aime pas le Grec

  22. #18
    fab1985

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Je viens de mesurer le courant / tension traversant le court circuit permettant d'activer la machine externe:
    4 mA / 22V.

    Quelle modification apporter au schéma pour commander ce court-circuit par l'alimentation (ou non) de 5V sur l'entrée de l'optocoupleur?

    Remarque: ce sujet est "le hardware" du sujet de base (copie signal d'entrée DC sur pin sortie) que j'ai fais sous-traiter par des pros. je mettrai sur ce forum le code qu'ils me fourniront lorsque je l'aurai.

  23. Publicité
  24. #19
    DAUDET78

    Re : Copie signal d'entrée DC sur pin de sortie avec STM32F429II

    Modif à faire :
    CircuitOpto.jpg

    NPN = n'importe quel transistor NPN

    PS : ne pas tenir compte du 0V marqué près du carré 6 ... c'est une scorie !
    Dernière modification par DAUDET78 ; 05/11/2014 à 10h39.
    J'aime pas le Grec

Sur le même thème :

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/10/2013, 09h00
  2. modulation d'un signal d'entrée avec un ne555
    Par kill00man dans le forum Électronique
    Réponses: 14
    Dernier message: 16/10/2012, 22h32
  3. recherche modem 56k (RS-232 ou USB) avec entree sortie son
    Par ti7bo7 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 04/01/2010, 21h04
  4. Gestion entrée/sortie sur port parallèle avec VBA
    Par lisette45170 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 21/03/2009, 17h06
  5. émuler un signal sur une entrée PIC avec MPLAB
    Par arzew dans le forum Électronique
    Réponses: 3
    Dernier message: 24/02/2008, 07h15
Découvrez nos comparatifs produits sur l'informatique et les technologies.