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

Embarqué Discussion :

[WeMos D1 mini] Max471 l293d valeur de retour


Sujet :

Embarqué

  1. #1
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut [WeMos D1 mini] Max471 l293d valeur de retour
    Bonjour,
    La fonction analogRead() me retourne des valeurs qui me semble incohérent je ne comprends pas pourquoi !

    Nom : 20180821_150545.jpg
Affichages : 1246
Taille : 1,24 Mo

    Le code sur Wemos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
    
    const byte ENABLE = 13; 
    const byte DIRA = 12;
    const byte DIRB = 14; 
    
    const byte pinVA = 0;
    
    int max471 = 0;
    
    //ADC_MODE( ADC_VCC); //spécial wemos ?? EPS.getVCC();
    
    void setup() {
    
      pinMode( ENABLE, OUTPUT );
      pinMode( DIRA, OUTPUT );
      pinMode( DIRB, OUTPUT );
      pinMode( pinVA, INPUT );
      Serial.begin( 9600 );
    }
    
    void loop() {
    
        digitalWrite( DIRA,LOW ); 
        digitalWrite( DIRB,HIGH );
    
        Serial.println( "départ moteur" );
        Serial.println( "PWM -> 64" );
        
        analogWrite( ENABLE, map( 64, 0, 255, 0, 1023 ) );
        
        max471 = analogRead( pinVA );
        Serial.println( max471 );
        delay(4000);
    
        Serial.println("PWM -> 127");
        analogWrite( ENABLE, map( 127, 0, 255, 0, 1023 ) );
        
        max471 = analogRead( pinVA );
        Serial.println( max471 );
        delay(4000);
    
        Serial.println( "PWM -> 255" );
        analogWrite(ENABLE, map( 255, 0, 255, 0, 1023 ) );
    
        max471 = analogRead( pinVA );
        Serial.println( max471 );
        delay(4000);
        
        //désactive PWM
        analogWrite( ENABLE,0 );
        analogWrite( ENABLE,LOW );
        
        Serial.println( "Arret moteur" );
        delay(1000);
    
    }
    J'obtiens
    pwm -> 64
    166
    pwm -> 127
    59
    pwm -> 255
    167

    En tension de sortie sur le max 471 j'ai 1v, 2.15v, 4v

    Et la tension du pin Vt du max471
    0.19V, 0.43V, 0.79V

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    En quoi c'est incohérent ?

    Vout est une image de la tension.
    Vt est une image de l'intensité consommée.

    Les deux n'ont rien à voir...

    C'est une wemos d1 mini sur la photo ? Il y a un diviseur de tension par 3,2 à l'entrée de A0 d'après la doc dont il faut tenir compte.

  3. #3
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut Borne to be
    Re bonjour,
    Oui c'est une wemos "mimi". Plus sérieusement il y a donc 2 pins Vt, At. Le Vt étant relié en A0 je devrais avoir des valeurs croissantes en retour ? C'est ceci que j'ai du mal à cerner. Pour le diviseur de tension je vais pas cramé la seule entrée avec un capteur X ??

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    La tension maxi tolérée aux bornes de l'ADC de l'ESP8266 est de 1V d'après la doc. Comme il y a un diviseur de tension par 3,2 à l'entrée de l'ADC, tu peux aller théoriquement jusqu'à 3,2V sur A0. Cela veut dire aussi qu'il faut multiplier la tension obtenue par 3,2 pour avoir la tension réelle du capteur.

    Pour tes valeurs, il est possible que la première lecture soit faussée (c'est un problème connu sur Arduino en tout cas). Rajoute un analogRead "à blanc" avant la première mesure. Je rajouterais bien aussi un delay() entre chaque analogWrite() et analogRead(), le temps que le régime du moteur s'établisse.

  5. #5
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut Pff
    Re,
    Alors effectivement avec un delay() avant le analogRead() les données sont plus stables ! (Peut être la pointe d'intensité au demarage moteur). Si je code en dure au lieu d'utiliser map() dans la fonction analogWrite() j'ai moins de valeurs = 0 en retour. (Peut être mets elle trop de temps à retourner une valeur ? On peut pas faire de point d'arrêt avec cet IDE) enfin si je branche directement la pile au moteur j'ai une valeur stable et très précise de la tension grace au max471. Du coup je ne sais pas trop quoi faire peut etre une diode en sortie puissance du l293d ou utiliser un l298n...

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Salut,

    Avec une commande PWM, la tension et l'intensité de la charge comportent des ondulations, c'est normal.
    Pour un rapport cyclique donné, faire une série de mesure pour extraire le mini et le maxi.

  7. #7
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    En arrivant sur le sujet, on a un mal de chien a cerner le contexte sans schéma, sans description et sans données.

    - J'ai ouvert la datasheet du Max471 et je n'ai pas vu de broche qui s'appelait Vt ?

    - Je vois qu'il est question d'une pile qui alimente le moteur mais est ce aussi la pile qui alimente l'électronique ?

    - Je ne vois aucune info sur le moteur, son courant respecte t-il ce que le L293D peut encaisser ? Une chance que tu en ais parlé dans un message car il n'y avait pas d'informations sur le driver.

    C'est hyper important Laurent de donner l'ensemble du contexte, schéma, shield ou composants utilisés, caractéristiques des éléments, etc..., et c'est encore plus vrai lorsque tu fais du dév système embarqué car le problème peut être hard et/ou soft. Si c'est un problème hard et que tu ne donnes pas le hard, il n'y a quasiment aucune chance que quelqu'un puisse t'aider.

    D'après les échanges, f-leb a raison à propos du découpage PWM, il est bruyant (parasites + chute de tensions à cause des appels de courant), le moteur aussi peut être très bruyant surtout si c'est un moteur à courant continu avec balais.

    Si la pile alimente tout, donc moteur + électronique, alors il faut ajouter un condensateur de découplage tout près de l'électronique sensible, donc WeMos avec le Max471 que tu aura pris soin de rapprocher, pour qu'il gomme en quelque sorte les chutes de tensions liés aux appels de courants du moteurs (ex: condensateur électrochimique 10uF avec la bonne tension de service). Il faut aussi ajouter un petit condensateur 10nF ou 100nF en parallèle du 10uF pour qu'il s'occupe du filtrage des parasites hautes fréquences générés par le découpage PWM (ex: condensateur céramique X7R ou à défaut un MKT, ils sont souvent jaunes). Ce genre de condos se trouvent partout, tu peux démonter n'importe quelles bricoles chinoises ou low cost pour en trouver.

    Si la pile alimente le moteur et que c'est une autre alimentation qui se charge de l'électronique (avec les 0V en commun évidemment) alors il se peut que se soit le moteur qui créait un bruit, puisqu'il est découpé par le PWM, mais qui rayonne sur les fils aux alentours. Si c'est ça il faut soigner le câblage sachant que sur une plaque d'essai tu ne fera rien de bien magnifique. Tu peux raccourcir les fils au plus courts possibles et éloigner physiquement dans le mesure du possible le moteur. Par exemple, avoir le fil de l'entrée analogique A0 qui passe juste à côté du fil + du moteur et qui n'arrête pas d'être haché, c'est pas du tout une bonne idée.

    Moi je ferai même les deux (condos de filtrage/découplage + câblage court et cohérent, chacun de son côté pour éviter que les fils sensibles ne croisent le chemin des fils perturbateurs)
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #8
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Salut Vincent

    Pour le MAX471, j'ai reconnu sur la photo le genre de petits modules qu'on trouve sur Internet et que j'ai dû utiliser il y a quelques temps :
    Nom : CapturemoduleMAX471.PNG
Affichages : 1040
Taille : 250,3 Ko

    Nom : CaptureSchemaMax471.PNG
Affichages : 1390
Taille : 44,2 Ko
    Schéma du module
    http://labdegaragem.com/profiles/blogs/m-dulo-sensor-de-corrente-e-de-tens-o-max471

    Nom : CaptureMontageMax471Arduino.PNG
Affichages : 1307
Taille : 37,9 Ko
    Montage Arduino
    http://labdegaragem.com/profiles/blogs/m-dulo-sensor-de-corrente-e-de-tens-o-max471

    VT est l'image de la tension Vin (tension =Vin*5)
    AT est l'image de l'intensité (1V=1A)

    Voilà ce sur quoi je me suis basé jusqu'à présent

  9. #9
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut
    Bonjour,
    Merci pour les messages, oui je n'ai pas forcément concience des informations quil faut. Je vais essayer de les fournir comme suis.

    Nom : 20180828_093751.jpg
Affichages : 1030
Taille : 933,6 Ko
    Nom : 20180828_093723.jpg
Affichages : 1035
Taille : 914,8 Kot
    Nom : 20180828_093829.jpg
Affichages : 997
Taille : 924,8 Ko

    Nom : 20180828_093904.jpg
Affichages : 1021
Taille : 968,3 Ko

    /*-- Alim4.95v -> L293D -> max471 -> moteur --*/ (mesure V/A multimetre)

    /* PWM ->
    V-A */

    départ moteur
    PWM -> 64 -> 1.01v -> 28mA
    0-51
    PWM -> 127 -> 2.22v -> 52mA
    164-167
    PWM -> 255 -> 4v -> 98mA
    160-169
    Arret moteur
    départ moteur
    PWM -> 64
    0-42
    PWM -> 127
    171-172
    PWM -> 255
    162-181
    Arret moteur
    départ moteur
    PWM -> 64
    164-168
    PWM -> 127
    174-177
    PWM -> 255
    163-170
    Arret moteur
    départ moteur
    PWM -> 64
    165-169
    PWM -> 127
    57-178
    PWM -> 255
    162-171
    Arret moteur
    départ moteur
    PWM -> 64
    168-171
    PWM -> 127
    47-183
    PWM -> 255
    160-169
    Arret moteur

    /*-- Alim4.95v -> max471 -> L293D -> moteur --*/ analogWrite( Enable, 0 ) + digitalWrite(ENABLE, LOW)

    départ moteur
    PWM -> 64 -> 4.90v
    200-10
    PWM -> 127 -> 4.83v
    197-17
    PWM -> 255 -> 4.76v
    198-14
    Arret moteur
    départ moteur
    PWM -> 64
    207-24
    PWM -> 127
    198-9
    PWM -> 255
    197-18
    Arret moteur
    départ moteur
    PWM -> 64
    198-10
    PWM -> 127
    201-0
    PWM -> 255
    197-18
    Arret moteur
    départ moteur
    PWM -> 64
    201-0
    PWM -> 127
    199-10
    PWM -> 255
    193-19
    Arret moteur
    départ moteur
    PWM -> 64
    200-0
    PWM -> 127
    211-23
    PWM -> 255
    193-19
    Arret moteur

    digitalWrite(ENABLE, LOW) a chaque PWM

    départ moteur
    PWM -> 64
    202-3
    PWM -> 127
    198-18
    PWM -> 255
    199-15
    Arret moteur
    départ moteur
    PWM -> 64
    202-13
    PWM -> 127
    198-14
    PWM -> 255
    199-17
    Arret moteur
    départ moteur
    PWM -> 64
    196-29
    PWM -> 127
    200-7
    PWM -> 255
    199-18
    Arret moteur
    départ moteur
    PWM -> 64
    199-7
    PWM -> 127
    201-3
    PWM -> 255
    198-16
    Arret moteur
    départ moteur
    PWM -> 64
    201-0
    PWM -> 127
    200-12
    PWM -> 255
    198-16
    Arret moteur

    digitalWrite( HIGH ) arret digitalWrite( LOW )

    départ moteur -> 4.87V
    198-19
    Arret moteur
    départ moteur
    198-20
    Arret moteur
    départ moteur
    198-15
    Arret moteur
    départ moteur
    198-17
    Arret moteur
    départ moteur
    198-19
    Arret moteur
    départ moteur
    197-17
    Arret moteur
    départ moteur
    198-16
    Arret moteur
    départ moteur
    200-17
    Arret moteur
    départ moteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    
    const byte ENABLE = 6; //13
    const byte DIRA = 5; //12
    const byte DIRB = 4; //14
    
    const int pinVA = A0;
    const int pinAM = A2;
    
    int V = 0, A = 0;
    
    void setup() {
    
      pinMode( ENABLE, OUTPUT );
      pinMode( DIRA, OUTPUT );
      pinMode( DIRB, OUTPUT );
      pinMode( pinVA, INPUT );
      pinMode( pinAM, INPUT );
      
      Serial.begin( 9600 );
    
      digitalWrite( ENABLE,LOW );
      delay( 2 );
      analogRead( pinVA );
      delay(2);
      analogRead( pinAM );
      delay(2);
    }
    
    void loop() {
    
        digitalWrite( DIRA,LOW ); 
        digitalWrite( DIRB,HIGH );
        
        Serial.println( "départ moteur" );
    /*
        Serial.println( "PWM -> 64" );
    
        analogWrite( ENABLE, 64 );
        delay(2000);
        V = analogRead( pinVA );
        A = analogRead( pinAM );
        delay(2000);
        
        Serial.print( V );
        Serial.print( "-" );
        Serial.println( A );
     
        Serial.println("PWM -> 127");
        
        analogWrite( ENABLE, 127 );
        delay(2000);
        V = analogRead( pinVA );
        A = analogRead( pinAM );
        delay(2000);
        
        Serial.print( V );
        Serial.print( "-" );
        Serial.println( A );
        
        Serial.println( "PWM -> 255" );
        
        analogWrite( ENABLE, 255 );
        delay(2000);
        V = analogRead( pinVA );
        A = analogRead( pinAM );
        delay(2000);
    
    	analogWrite( ENABLE, 0 );
        Serial.print( V );
        Serial.print( "-" );
        Serial.println( A );
     */
    
        digitalWrite( ENABLE, HIGH );
        delay(2000);
        V = analogRead( pinVA );
        A = analogRead( pinAM );
        delay(2000);
    
        Serial.print( V );
        Serial.print( "-" );
        Serial.println( A );
        digitalWrite( ENABLE, LOW );
      
        Serial.println( "Arret moteur" );
        delay(2000);
    
    }

  10. #10
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut Nb
    Le seul moment ou jai des données stables et vrai a 0.03v cest dans le branchement alim->max471->l293d->moteur et arduino.
    J'ai aussi 0.95v qui disparesse entre la sorte de l alim et la sortie du l293d.

  11. #11
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut Composants
    Re bonjour,
    J'ai reçu les composants, ils faut les disposer entre le 5v et gnd c'est ça ?

  12. #12
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Salut,

    Je crois qu'on est arrivé au moment où le schéma électrique s'impose

  13. #13
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut Chez ma
    Slt,

    Alors le schéma n'est pas très catholique.

    Nom : max471_bb.jpg
Affichages : 1131
Taille : 890,1 Ko

  14. #14
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    Voici le schéma de principe cible :
    - la pile 9V alimente la partie commande moteur du L293D en passant au travers du capteur de courant
    - la partie commande logique du L293D est alimentée par le +5V présent sur ton Arduino
    - le Max471 voit passer le courant que consomme le moteur sur la pile 9V
    - tous les 0V sont communs avec le 0V de la pile 9V
    - le condensateur de 10µF et le 10nF doivent être placées en parallèle de la pile 9V. Le condensateur de 10µF viendra en aide à la pile 9V lors des appels de courants du moteur
    - SENS est le signal image du courant moteur à mesurer par une entrée analogique du Arduino

    Nom : Capture du 2018-09-07 22-13-58.png
Affichages : 1034
Taille : 11,4 Ko

    Comme je ne connais pas les caractéristiques du moteur, je suppose qu'il consomme un courant compatible avec le L293D et une pile 9V. D'après le schéma du shield, en supposant que c'est celui que tu as, tu vas mesurer une tension de 1V par 1A consommé.

    D'après cette image dans la datasheet du Max471
    Nom : Capture du 2018-09-07 22-34-39.png
Affichages : 937
Taille : 100,3 Ko
    Le MAX471 va te donner des mesures de courant instantané et non moyenné. Dit autrement, si tu envoies un PWM à 50%, comme sur l'image ci dessus, alors le moteur sera alimenté avec des tensions alternées de 9V - 0V - 9V - 0V - 9V - 0V etc (au rythme du PWM) mais le Max471 va mesurer des courants alternées, par exemple, de 1A - 0A - 1A - 0A - 1A - 0A etc... et la moyenne se sera à toi de la faire soit par soft (très compliqué car il faut lire les courants aux bons moments) soit par le hard.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  15. #15
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut
    Slt,
    Merci pour ta réponse, alors le contexte pose problème d'après ce que je comprends le capteur n'est pas adapté. Le but était de faire un banc d essay pour petit moteur afin de compter les tours selon la tension et intensité et d afficher le résultat.

    Nom : 20180909_185636.jpg
Affichages : 2115
Taille : 1,22 Mo

  16. #16
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Une solution simple en hard est possible mais ne connaissant pas la fréquence du PWM ni les spécs moteurs je ne peux rien calculer.

    Essaye de mettre un condensateur (qui jouera le rôle d'intégrateur donc "moyenneur") entre Vout du Max471 et le 0V. Au pif essaye de 1µF, 4.7µF puis 10µF dans un premier temps.
    Plus le condensateur sera gros et plus la tension moyennée sera lisse (donc tension mesurée par le Arduino, stable) mais plus il y aura d’inertie (dégradation du temps de réaction face à un courant qui varierait trop raidement).

    C'est donc un compromis à trouver entre stabilité de la mesure et rapidité face à une variation de courant.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  17. #17
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir à tous

    J'ai hésité à répondre, car je n'aurais pas le temps de tout développer, mes excuses d'avance.
    En alimentation PWM, le courant dans le moteur devrait être en triangle. Si il ne l'est pas c'est que le PWM n'est pas assez rapide et beaucoup de moteur n'aime pas. Dans mon hobby, les petits moteurs à rotor sans fer son connu pour cramer dans ce cas...

    Sur une alimentation PWM, la mesure de courant devrait être au milieu du créneau "enclenché", de cette manière on mesure théoriquement la valeur moyenne du courant (puisqu'on est à mi-chemin entre le min et le max). Si le PWM est généré par un timer en triangle (reprit comme mode True PWM dans la doc des AVR), la lecteur doit se faire au min ou au max du timer. Et c'est justement bien car il y a une interruption qui peut être déclenchée à ce moment là.
    Sans mettre le capteur de courant entre le pont et le moteur (ce qui est le cas ici), on ne peut pas faire la mesure quand le PWM est déclenché. Car le courant tourne entre le moteur et le pont en H. Il faut également faire attention de ne pas mettre un condo de lissage entre la mesure de courant et le pont en H. Le dernier condo doit être juste avant.

    Le problème dans l'implémentation, c'est que je ne sais pas si cette interruption reste disponible dans l’environnement Arduino avec la surcouche qui est ajoutée, et puis il faut re-concevoir le programme pour placer la mesure et ce qui en dépend dans l’interruption, mais il ne faut pas avoir trop de code pour éviter que le code d'une interruption ne soit pas terminé quand la suivante arrive.

    Ensuite on peut faire un petit filtre numérique, mais ce n'est pas toujours nécessaire, cela dépend de la précision qui souhaite être affichée.

    Je sais que cela ajoute une bonne couche de connaissance nécessaire par rapport à ce que tu as fais jusqu'à présent, donc un filtre sur le signal avant l'entrée sur l'Arduino tel que proposé par Vincent c'est peut-être plus dans tes cordes.

    Bonne suite

    Delias

  18. #18
    Membre actif

    Inscrit en
    Octobre 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 168
    Points : 241
    Points
    241
    Par défaut quamdiu est in via
    Messieurs bonjour,
    Alors j'ai donc cherché si je ne me trompe pas il me faut un condensateur de 4.6uF pour ce petit moteur (sans balai dont datasheetRf300.pdf et la fréquence pwm 294Hz pour 3v. Du coups j'ai appris que tous les pins n'étaient pas égaux.

    Je vais essayé d'aller vers la note de Delias mais cest plus difficile.

    Nb : vous utilisez quoi comme IDE ?

Discussions similaires

  1. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52
  2. fonction operator, valeur de retour
    Par butch dans le forum C++
    Réponses: 21
    Dernier message: 20/09/2004, 10h30
  3. [VB6] Valeur de retour pour une Form
    Par preverse dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/08/2004, 17h16
  4. Valeur de retour d'une procédure externe
    Par elekis dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 16/04/2004, 16h45
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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