Adaptateur Tension : Donne les Résistances d'un Pont

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Adaptateur Tension : Donne les Résistances d'un Pont

Message par MSG » ven. 31 janv. 2020 20:37

Bonsoir ,

J'ai codé en Python une fonction pour trouver les couplages de résistances permettant d'avoir une adaptation de tension avec les entrées RPi .

Le code source : A mettre dans un fichier (Le mien s'appelle Pont_R.py)

Code final (sauf bugs éventuels) .
Version avec valeurs prédéfinis et modifiables si besoin .

Merci à Bud pour ces conseils .

Code : Tout sélectionner

#!/usr/bin/python3


def VinVout ( Vin=5, Vout=3.3, Vout_plage=-.1, E=24, M=2 ):
    """
        Convertisseur de tension - MSG - V01 (c) 2020-02
        
    Liste de ponts diviseurs à résistances fixe standard dans
    les séries 'E' et multiples 'M' .
    Usage initial : Adapter une tension de signal TTL 5V vers 3.3V GPIO_in
    
    Vin   : tension d'entrée (V) et (<= 25V)
    Vout  : Tension de sortie (V) et (< Vin)
    plage : Vout + ou - valeur décimale (Vout_mini >= 0 et Vout_maxi < Vin)
    E     : Résistances série E = 12, 24, 48 ou 96
    M     : Muktiplicateur -2 (R * 1e-2) à 7 (R * 1e+7)
    
    Pensez à toujours contrôler les tensions avant de brancher !
    """
    
    if Vout > Vin :     # Vout ne peut en aucun cas être suppérieur
        print ("Tu te fous de moi ?")
        return
    
    if Vin > 25 :       # à vos risques et périls !
        print ("Hors limite Vin= %s > 25V " % str( Vin ))
        return

    Vout_mini = Vout
    Vout_maxi = Vout + Vout_plage
    
    if Vout_mini > Vout_maxi :  # permute les valeurs
        Vout_mini, Vout_maxi = Vout_maxi, Vout_mini
        
    if Vout_mini < 0 :      # on va finir par trouver du pétrôle 
        print ("Erreur Plage Vout_mini : %f" % Vout_mini)
        return
    
    if Vout_maxi >= Vin :    # y en a qu'on essayé , ils ont eu des problèmes ...
        print ("Erreur Plage Vout_maxi : %f" % Vout_maxi)
        return 
        
    if  E != 12 and\
        E != 24 and\
        E != 28 and\
        E != 96 :           # des E à la douzaine
        print ("E = 12, 24, 48 ou 96")
        return

    if (M < -2) or (M > 7): # code couleur multiplicateur
        print ("M = -2 à 7")
        return
    

    # Résistances Serie E
    E12 = (100,120,150,180,220,270,330,390,470,560,680,820)
    E24 = (100,110,120,130,150,160,180,200,\
           220,240,270,300,330,360,390,430,\
           470,510,560,620,680,750,820,910)
    E48 = (100,105,110,115,121,127,133,140,\
           147,154,162,169,178,187,196,205,\
           215,226,237,249,261,274,287,301,\
           316,332,348,365,383,402,422,442,\
           464,487,511,536,562,590,619,649,\
           681,715,750,787,825,866,909,953)
    E96 = (100,102,105,107,110,113,115,118,\
           121,124,127,130,133,137,140,143,\
           147,150,154,158,162,165,169,174,\
           178,182,187,191,196,200,205,210,\
           215,221,226,232,237,243,249,255,\
           261,267,274,280,287,294,301,309,\
           316,324,332,340,348,357,365,374,\
           383,392,402,412,422,432,442,453,\
           464,475,487,499,511,523,536,549,\
           562,576,590,604,619,634,649,665,\
           681,698,715,732,750,768,787,806,\
           825,845,866,887,909,931,953,976)
    
    # E prend la valeur de la série choisie 
    if E == 12 : E = E12
    if E == 24 : E = E24
    if E == 48 : E = E48
    if E == 96 : E = E96
    

    # convertiseur d'unité
    Unite = lambda n : \
        n//1e6      and str( n/1e6)   [:5].rjust(5," ") + " M"   or\
        n//1e3      and str( n/1e3)   [:5].rjust(5," ") + " K"   or\
        n//1e0      and str( n/1e0)   [:5].ljust(5,"0") + " "    or\
        n//1e-3     and str( n/1e-3)  [:5].ljust(5,"0") + " m"   or\
        n//1e-6     and str( n/1e-6)  [:5].ljust(5,"0") + " µ"   or\
        n//1e-9     and str( n/1e-9)  [:5].ljust(5,"0") + " n"   or\
        n//1e-12    and str( n/1e-12) [:5].ljust(5,"0") + " p"
    
    # code couleur multiplicateur 'M'
    Multiplicateur =   ('Noir',\
                        'Marron',\
                        'Rouge',\
                        'Orange',\
                        'Jaune',\
                        'Vert',\
                        'Bleu',\
                        'Violet',\
                        'Gris',\
                        'Blanc',\
                        'Argent',\
                        'Or')
    
    # Multiple couleur à appliquer à chaque résitance 
    Mc2d = 10** M       # pour valeur E à 2 digits (y en pas)
    Mc3d = Mc2d / 10    # pour valeur E à 3 digits 
    
    # affichage des paramètres
    print ("")
    print ("Vin= %0.1f V" % Vin)
    print ("Vout= %0.1f V" % Vout)
    print ("plage= %0.1f " % Vout_plage)
    print ("Vout de %0.1f V à  %0.1f V" % (Vout_mini, Vout_maxi))
    print ("E=%i Serie E (12/24/48/96)" %len(E))
    print ("\nRésistances :")
    print ("M=%i Multiplicateur : %.1g , %s\n" %(M , Mc2d, Multiplicateur[M] ))
    

    # Un dessin c'est parfois plus simple qu'un long discours
    # Symboles : Ω┌─┐┤│├└─┘┬
    print (\
        "            P1 (W)             P2 (W)                \n"+\
        "          ┌────────┐         ┌────────┐       │      \n"+\
        "Vin ──────┤ R1 (Ω) ├────┬────┤ R2 (Ω) ├───>───┤ Masse\n"+\
        "          └────────┘    │    └────────┘ I (A) │      \n"+\
        "            U1 (V)      │      U2 (V)         │      \n"+\
        "                        │<────── Vout ────────│      \n")


    for R1 in E:
        R1 = R1 * Mc3d
        for R2 in E:
            R2 = R2 * Mc3d
            
            '''
            # # calcul méthode traditionnelle (calculatrice)
            # I  = Vin / (R1 + R2)
            # U1 = R1 * I
            # U2 = R2 * I
            # P1 = U1 * I
            # P2 = U2 * I
            '''
            
            # pourquoi faire simple quand on peut faire compliqué ;)
            # le rapport des tensions = rapport des résistances (règle de 3)
            # (Entrée / Sortie) => Vin / Vout = (R1 + R2) / R2
            # (Sortie / Entrée) => Vout / Vin = R2 / (R1 + R2)
            #     soit               U2 / Vin = R2 / (R1 + R2) et donc ...
            U2 = Vin * R2 / (R1 + R2)
            # simplement : U1 = Vin - U2            
            U1 = Vin * R1 / (R1 + R2)   # on reste compliqué !
            P1 = U1 * U1 / R1   # P = U² / R
            P2 = U2 * U2 / R2
            I  = P2 / U2        # I = P / U
            # Comprenne qui voudra !
            
            # affiche que les valeur comprises dans la plage
            if (U2 >= Vout_mini) and (U2 <= Vout_maxi) :
                aff =  ("R1= %sΩ , " % Unite( R1 ))
                aff += ("R2= %sΩ , " % Unite( R2 ))
                aff += ("U1= %sV , " % Unite( U1 ))
                aff += ("U2= %sV , " % Unite( U2 ))
                aff += ( "I= %sA , " % Unite( I  ))
                aff += ("P1= %sW , " % Unite( P1 ))
                aff += ("P2= %sW"    % Unite( P2 ))
                print (aff)
            elif U2 > Vout_maxi : 
                break   # sortie de boucle R2 , passe à la R1 suivante
    return


#-------------
#
#   Main
#
#-----------

# Exemple d'appel fonction VinVout
VinVout ()                   # basic avec les valeurs par défaut 5V , 3.3V ...etc 

# Autres ...
# VinVout (12, 3.3)          # seul Vin et Vout sont renseignés
# VinVout (Vout=3.3, Vin=12) # ordre de renseignement inversé 
# VinVout (E=12)             # changer la série E
# Vinvout (5, 3.3, -0.2, 48) # Vout_plage modifiée et serie E aussi 
# Vinvout (5, 3.3, M=1)      # Multiplicateur modifié 
# VinVout (Vout=3.2, Vout_plage=0.2)    # Recherche valeurs sur plage 3,2V à 3,4V
Image




Ancienne version :
-----------------------------

Code : Tout sélectionner

#!/usr/bin/python3

def VinVout (Vin, Vout, marge=.2 , E=24 , M=3):
    
    if Vout > Vin :
        print ("Tu te fous de moi ?")
        return
    
    E12 = (100,120,150,180,220,270,330,390,470,560,680,820)
    E24 = (100,110,120,130,150,160,180,200,\
           220,240,270,300,330,360,390,430,\
           470,510,560,620,680,750,820,910)
    E48 = (100,105,110,115,121,127,133,140,\
           147,154,162,169,178,187,196,205,\
           215,226,237,249,261,274,287,301,\
           316,332,348,365,383,402,422,442,\
           464,487,511,536,562,590,619,649,\
           681,715,750,787,825,866,909,953)
    E96 = (100,102,105,107,110,113,115,118,\
           121,124,127,130,133,137,140,143,\
           147,150,154,158,162,165,169,174,\
           178,182,187,191,196,200,205,210,\
           215,221,226,232,237,243,249,255,\
           261,267,274,280,287,294,301,309,\
           316,324,332,340,348,357,365,374,\
           383,392,402,412,422,432,442,453,\
           464,475,487,499,511,523,536,549,\
           562,576,590,604,619,634,649,665,\
           681,698,715,732,750,768,787,806,\
           825,845,866,887,909,931,953,976)
   
    if E == 12 : E = E12
    if E == 24 : E = E24
    if E == 48 : E = E48
    if E == 96 : E = E96
    
    Er = list(E)
    Er.reverse()    # Serie E inversée 
    tuple(Er)

    # n = nombre entier ou décimal
    Unite = lambda n : \
        (int (n/10**6) >0 )     and str( n/10**6)   [:5] + " M"   or\
        (int (n/10**3) >0 )     and str( n/10**3)   [:5] + " K"   or\
        (int (n/10**0) >0 )     and str( n/10**0)   [:5] + " "    or\
        (int (n/10**-3) >0 )    and str( n/10**-3)  [:5] + " m"   or\
        (int (n/10**-6) >0 )    and str( n/10**-6)  [:5] + " µ"   or\
        (int (n/10**-9) >0 )    and str( n/10**-9)  [:5] + " n"   or\
        (int (n/10**-12) >0 )   and str( n/10**-12) [:5] + " p"
    
    
    Multiplicateur =   ('Noir',\
                        'Marron',\
                        'Rouge',\
                        'Orange',\
                        'Jaune',\
                        'Vert',\
                        'Bleu',\
                        'Violet',\
                        'Gris',\
                        'Blanc')
    
    Mc = 10**M
    
    print ("\nVin= %0.1f V\
           \nVout= %0.1f V\
           \nmarge= %0.1f de %0.1f V  à  %0.1f V\
           \nE=%i Serie E (12/24/48/96)\
           \nRésistances :\
           \nM=%i Multiplicateur : %i , %s\n"\
            %(Vin, Vout, marge, Vout-marge, Vout, len(E), M, Mc, Multiplicateur[M]))
    

# Symboles : Ω┌─┐┤│├└─┘┬
    
    print (10*" "+        "┌────────┐"+ 9*" "+             "┌────────┐"+ 6*" "+ "│\n"+\
           "Vin "+ 6*"─"+ "┤   R1   ├"+ 4*"─"+ "┬"+ 4*"─"+ "┤   R2   ├───>──┤ Masse\n"+\
           10*" "+        "└────────┘"+ 4*" "+ "│"+ 4*" "+ "└────────┘   I  │\n"+\
           14*" "+ "U1"+ 8*" "+                "│"+ 8*" "+ "U2"+ 10*" "+        "│\n"+\
           24*" "+                             "│<────── Vout ───────│\n")
    
    for R2 in Er:
        R2 = R2 * Mc / 100
        for R1 in E:
            R1 = R1 * Mc / 100
            U2 = Vin * R2 / (R1 + R2)
            if (U2 >= (Vout - marge)) and (U2 <= Vout):
                print ("R1= %sΩ , R2= %sΩ , U1= %sV , U2= %sV , I= %sA"\
                %(Unite(R1), Unite(R2), Unite(Vin-U2), Unite(U2), Unite(U2/R2) ))
                break


#-------------
#
#   Main
#
#-----------
VinVout (5, 3.3)
#VinVout (5, 3.3, E=12)
Image

Il est possible de paramétrer la tension entrée , sortir , marge (plutôt la plage) , le série E des résistances et le coef multiplicateur .

Attention , contrôlez au multimètre pour éviter toute erreur .
L'usage fait avec une tension d'entrée Vin supérieure à 25V courant continue est à vos risques et périls .
N'est pas prévu , en l'état , pour convertir des tensions alternatives .


Ci-joint une version du convertisseur d'unité qui formate l'affichage à 4 digits significatifs pour des valeurs inférieures à 1Giga et Supérieures ou égales à 1pico .
Les valeur hors cadre restent non formatés .

Code : Tout sélectionner

# formaté
Unite = lambda n : \
    n >1e9      and str( n )                                    or\
    n//1e6      and str( n/1e6)  [:5].rjust( 5, " " )   + " M"  or\
    n//1e3      and str( n/1e3)  [:5].rjust( 5, " " )   + " K"  or\
    n//1e0      and str( n/1e0)  [:5].rjust( 5, " " )   + " "   or\
    n//1e-3     and str( n*1e3)  [:5].rjust( 5, " " )   + " m"  or\
    n//1e-6     and str( n*1e6)  [:5].rjust( 5, " " )   + " µ"  or\
    n//1e-9     and str( n*1e9)  [:5].rjust( 5, " " )   + " n"  or\
    n//1e-12    and str( n*1e12) [:5].rjust( 5, " " )   + " p"  or\
    n <1e-12    and str( n )


Ancienne version :
-----------------------------

Code : Tout sélectionner

#!/usr/bin/python3

def VinVout (Vin, Vout, marge=.2 , E=24 , M=3):
    
    if Vout > Vin :
        print ("Tu te fous de moi ?")
        return
    
    E12 = (100,120,150,180,220,270,330,390,470,560,680,820)
    E24 = (100,110,120,130,150,160,180,200,\
           220,240,270,300,330,360,390,430,\
           470,510,560,620,680,750,820,910)
    E48 = (100,105,110,115,121,127,133,140,\
           147,154,162,169,178,187,196,205,\
           215,226,237,249,261,274,287,301,\
           316,332,348,365,383,402,422,442,\
           464,487,511,536,562,590,619,649,\
           681,715,750,787,825,866,909,953)
    E96 = (100,102,105,107,110,113,115,118,\
           121,124,127,130,133,137,140,143,\
           147,150,154,158,162,165,169,174,\
           178,182,187,191,196,200,205,210,\
           215,221,226,232,237,243,249,255,\
           261,267,274,280,287,294,301,309,\
           316,324,332,340,348,357,365,374,\
           383,392,402,412,422,432,442,453,\
           464,475,487,499,511,523,536,549,\
           562,576,590,604,619,634,649,665,\
           681,698,715,732,750,768,787,806,\
           825,845,866,887,909,931,953,976)
   
    if E == 12 : E = E12
    if E == 24 : E = E24
    if E == 48 : E = E48
    if E == 96 : E = E96
    
    Er = list(E)
    Er.reverse()
    tuple(Er)

    Unite = {'M':10**6,\
             'K':10**3,\
             '':10**0,\
             'm':10**-3,\
             'µ':10**-6,\
             'n':10**-9,\
             'p':10**-12}
    
    Multiplicateur =   ('Noir',\
                        'Marron',\
                        'Rouge',\
                        'Orange',\
                        'Jaune',\
                        'Vert',\
                        'Bleu',\
                        'Violet',\
                        'Gris',\
                        'Blanc')
    
    Mc = 10**M
    
    print ("\nVin= %0.1f V\
           \nVout= %0.1f V\
           \nmarge= %0.1f de %0.1f V  à  %0.1f V\
           \nE=%i Serie E (12/24/48/96)\
           \nRésistances :\
           \nM=%i Multiplicateur : %i , %s\n"\
            %(Vin, Vout, marge, Vout-marge, Vout, len(E), M, Mc, Multiplicateur[M]))
    

# Symboles : Ω┌─┐┤│├└─┘┬
    
    print (10*" "+        "┌────────┐"+ 9*" "+             "┌────────┐"+ 6*" "+ "│\n"+\
           "Vin "+ 6*"─"+ "┤   R1   ├"+ 4*"─"+ "┬"+ 4*"─"+ "┤   R2   ├───>──┤ Masse\n"+\
           10*" "+        "└────────┘"+ 4*" "+ "│"+ 4*" "+ "└────────┘   I  │\n"+\
           14*" "+ "U1"+ 8*" "+                "│"+ 8*" "+ "U2"+ 10*" "+        "│\n"+\
           24*" "+                             "│<────── Vout ───────│\n")
    
    for R2 in Er:
        R2 *= 10**-2
        for R1 in E:
            R1 *= 10**-2
            U2 = Vin * R2*Mc / (R1*Mc + R2*Mc)
            if (U2 >= (Vout - marge)) and (U2 <= Vout):
                print ("R1= %0.2f Ω , R2= %0.2f Ω , U1= %0.3f V , U2= %0.3f V , I= %0.6f mA"\
                %(R1*Mc, R2*Mc, Vin-U2, U2, U2/(R2*Mc* Unite ['m'])))
                break



Le résultat de l'appel fonction depuis la console :

Code : Tout sélectionner

[manu@localhost Prog_python]$ python3
Python 3.5.7 (default, Apr  4 2019, 11:58:21) 
[GCC 5.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from Pont_R import VinVout
>>> VinVout (5,3.3)

Vin= 5.0 V           
Vout= 3.3 V           
marge= 0.2 de 3.1 V  à  3.3 V           
E=24 Serie E (12/24/48/96)           
Résistances :           
M=3 Multiplicateur : 1000 , Orange

          ┌────────┐         ┌────────┐      │
Vin ──────┤   R1   ├────┬────┤   R2   ├───>──┤ Masse
          └────────┘    │    └────────┘   I  │
              U1        │        U2          │
                        │<────── Vout ───────│

R1= 4700.00 Ω , R2= 9100.00 Ω , U1= 1.703 V , U2= 3.297 V , I= 0.362319 mA
R1= 4300.00 Ω , R2= 8200.00 Ω , U1= 1.720 V , U2= 3.280 V , I= 0.400000 mA
R1= 3900.00 Ω , R2= 7500.00 Ω , U1= 1.711 V , U2= 3.289 V , I= 0.438596 mA
R1= 3600.00 Ω , R2= 6800.00 Ω , U1= 1.731 V , U2= 3.269 V , I= 0.480769 mA
R1= 3300.00 Ω , R2= 6200.00 Ω , U1= 1.737 V , U2= 3.263 V , I= 0.526316 mA
R1= 3000.00 Ω , R2= 5600.00 Ω , U1= 1.744 V , U2= 3.256 V , I= 0.581395 mA
R1= 2700.00 Ω , R2= 5100.00 Ω , U1= 1.731 V , U2= 3.269 V , I= 0.641026 mA
R1= 2700.00 Ω , R2= 4700.00 Ω , U1= 1.824 V , U2= 3.176 V , I= 0.675676 mA
R1= 2400.00 Ω , R2= 4300.00 Ω , U1= 1.791 V , U2= 3.209 V , I= 0.746269 mA
R1= 2200.00 Ω , R2= 3900.00 Ω , U1= 1.803 V , U2= 3.197 V , I= 0.819672 mA
R1= 2000.00 Ω , R2= 3600.00 Ω , U1= 1.786 V , U2= 3.214 V , I= 0.892857 mA
R1= 1800.00 Ω , R2= 3300.00 Ω , U1= 1.765 V , U2= 3.235 V , I= 0.980392 mA
R1= 1600.00 Ω , R2= 3000.00 Ω , U1= 1.739 V , U2= 3.261 V , I= 1.086957 mA
R1= 1500.00 Ω , R2= 2700.00 Ω , U1= 1.786 V , U2= 3.214 V , I= 1.190476 mA
R1= 1300.00 Ω , R2= 2400.00 Ω , U1= 1.757 V , U2= 3.243 V , I= 1.351351 mA
R1= 1200.00 Ω , R2= 2200.00 Ω , U1= 1.765 V , U2= 3.235 V , I= 1.470588 mA
R1= 1100.00 Ω , R2= 2000.00 Ω , U1= 1.774 V , U2= 3.226 V , I= 1.612903 mA
R1= 1000.00 Ω , R2= 1800.00 Ω , U1= 1.786 V , U2= 3.214 V , I= 1.785714 mA
>>> VinVout (5 , 10.3)
Tu te fous de moi ?
>>> 
Il est possible de paramétrer la tension entrée , sortir , marge (plutôt la plage) , le série E des résistances et le coef multiplicateur .

Attention , contrôlez au multimètre pour éviter toute erreur .
L'usage fait avec une tension d'entrée Vin supérieure à 25V courant continue est à vos risques et périls .
N'est pas prévu , en l'état , pour convertir des tensions alternatives .
Modifié en dernier par MSG le lun. 24 févr. 2020 13:26, modifié 4 fois.

jelopo
Raspinaute
Messages : 307
Enregistré le : mer. 11 oct. 2017 10:23

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par jelopo » dim. 16 févr. 2020 09:08

Bonjour,

Intéressant.
Quelques remarques toutefois:
- Pourquoi dans le programme les unités kilo et méga sont pas affichées alors qu'elle sont définies dans le programme. Par exemple afficher plutôt
10k plutôt que 10000.
- Vu que le code couleur est déjà en défini, une option pour l'afficher serait intéressant.

- Je verrais bien une évolution, ou un programme similaire qui calculerait la valeur de la résistance de protection d'un circuit.
Par exemple pour alimenter une led dont on connait les caractéristiques: Alimentation5V Vled=2.1V, I=20mA, donnerait la valeur de la résistance et son code couleur.

A+

MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par MSG » dim. 16 févr. 2020 13:05

Bonjour ,

Je devais me pencher sur la conversion des unités , mais sur le moment je n'avais pas eu l'inspiration .

C'est chose réparée , mais ça ma pris un peu de temps , car j'ai dû corrigé un bug d'affichage lors de cette conversion , sur certaines résistances et pas d'autres , pas facile à trouver .

Je mets le listing en tête de message , l'ancien sera juste dessous .

A+

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par Artemus24 » dim. 16 févr. 2020 14:10

Salut à tous.

C'est bien ce que tu as fait, MSG, sauf en ce qui concerne le calibrage de tes résistances.
Elles doivent respecter la progression suivante : 1,0 - 1,2 - 1,5 - 1,8 - 2,2 - 2,7 - 3,3 - 3,9 - 4,7 - 5,6 - 6,8 - 8,2.
Une résistance 3,6 ohms n'existe pas.
Si ton calcul donne 3,6 ohms, tu devras prendre celle qui est la plus proche, soit 3,3 ohms ou 3,9 ohms.

Je te conseille de calculer l'écart le plus petit afin d'avoir le résultat le plus proche au niveau du voltage recherché.

D'autre part, M. François Mocq m'a dit que :
François Mocq a écrit :oui c'est bien ça mais si ce qu'on branche en sortie sur R1 consomme peu (disons au moins 10 fois le courant dans le pont) on considère que ça fonctionne
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par MSG » dim. 16 févr. 2020 23:12

Bonsoir ,
Artemus24 a écrit :
dim. 16 févr. 2020 14:10
C'est bien ce que tu as fait, MSG, sauf en ce qui concerne le calibrage de tes résistances.
Elles doivent respecter la progression suivante : 1,0 - 1,2 - 1,5 - 1,8 - 2,2 - 2,7 - 3,3 - 3,9 - 4,7 - 5,6 - 6,8 - 8,2.
Une résistance 3,6 ohms n'existe pas.
Si ton calcul donne 3,6 ohms, tu devras prendre celle qui est la plus proche, soit 3,3 ohms ou 3,9 ohms.
Tout est question de série E .
https://www.positron-libre.com/electron ... stance.php

Dans la série E12 , la résistance 360 (ou 3,6) n'existe pas , mais dans la E24 , si .
Le programme tourne sur cette série E24 (24 valeurs) , qu'on peut changer selon ses besoins (E12/ E24/ E48/ E96) .
Suffit de basculer le symbole de commentaire des deux dernière lignes et de modifier la valeur de E si besoin : ;)
On peut changer la valeur du multiplicateur M qui est par défaut à 3 , soit 10**3 .

Code : Tout sélectionner

#-------------
#
#   Main
#
#-----------

#VinVout (5, 3.3)
VinVout (5, 3.3, E=12)

Image

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par Bud Spencer » lun. 17 févr. 2020 10:25

Artemus24 a écrit :
dim. 16 févr. 2020 14:10
D'autre part, M. François Mocq m'a dit que :
François Mocq a écrit :oui c'est bien ça mais si ce qu'on branche en sortie sur R1 consomme peu (disons au moins 10 fois le courant dans le pont) on considère que ça fonctionne
La tournure de la phrase est ambiguë, mais si elle sous entend qu'il est acceptable (ou fonctionnel) de tirer jusqu'à 10 fois le courant du pont en sortie, c'est totalement faux
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par Artemus24 » lun. 17 févr. 2020 12:32

Salut à tous.

@ MSG : je ne savais pas que le calibrage des résistances dépendait des séries. Vous l'avez appris quelque chose. :)

@ Bud Spencer : J'ai écrit à M. François Mocq, au sujet du pont diviseur de tension qu'il a indiqué dans un de ses montages.
Je me demandais comment combiner le pont diviseur de tension, avec le pont diviseur de courant, histoire de contrôler la tension (l voltage) et le courant (l'intensité).
Il m'a répondu que cette approche ne se faisait pas ainsi en électronique, à cause des variations du courant que le montage subit quand il est en fonction.
Il m'a aussi répondu cette phrase que je n'ai pas compris et a stoppé nos échanges. J'ai eu l'impression que cela l'énervait. J'ai pas insisté.

A bien comprendre cette phrase, il est dit que le pont diviseur de tension fonctionne que si ça consommation est faible et de surcroît doit correspondre à au moins 10 fois ce qui est fournit en entrée.
Je ne comprends pas cette contrainte et pourquoi on ne peut pas combiner un pont diviseur de tension avec un pont diviseur de courant.

Si j'ai en entré disons du 12Vcc avec du 4A (au maximum), pourquoi je ne peux pas obtenir :
--> du 5Vcc avec du 3A (au maximum).
--> du 3,3Vcc avec du 1A (au maximum).

D'après le calcul sur les résistances, ce n'est pas impossible alors pourquoi dire le contraire ?

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par MSG » lun. 17 févr. 2020 15:57

Bonjour ,

Un pont diviseur de tension , comme son nom l'indique , sert à diviser la tension .
Ce n'est pas un limiteur de tension car si la tension varie en entrée Vin , elle variera proportionnellement en sortie Vout .
Il ne doit pas servir d'alimentation (fort courant) sur la sortie Vout , sans quoi le pont se déséquilibre et toute la tension Vin va progressivement basculer aux bornes de R1 , R2 finira court-circuité (ne servira plus à rien) .

L'usage du pont diviseur de tension c'est pour détecter le niveau logique (0 ou 1) d'un signal plus fort en tension ou pour faire un voltmètre analogique / numérique .
Ici , on veut pouvoir lire l'état d'un signal 5V (maximum) sur les entrés limitées à 3,3V du Raspberry .

Pour faire du limiteur de courant , il faut passer par des composants spécifiques , qui eux vont lire une tension aux bornes d'une résistance SHUNT et couper si la valeur attient une valeur limite .
Un diviseur de courant avec des résistances serait fait avec des résistances en parallèle et non en série , mais bonjour le dégagement de chaleur si vous compter diviser autant d'ampères avec ces seules résistances .

Si vous voulez un exemple , regarder le datasheet du LM317 , qui peut être configuré en régulateur de tension ou en limiteur de courant .

Il est à noter une valeur non inscrite sur les résistance et dont il faut tenir compte lors de l'achat , c'est la puissance !!!
Par exemple , une résistance de 1/4W , est construite pour résister au maximum à 250mW , mais à ce niveau de puissance maximum , je vous met au défit de la tenir entre vos doigts .
Il faut se limiter à l'utiliser à moitié puissance ou tout au plus aux 3/4 , au delà c'est très chaud .

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par Artemus24 » lun. 17 févr. 2020 17:05

Salut à tous.
MSG a écrit :Ce n'est pas un limiteur de tension car si la tension varie en entrée Vin , elle variera proportionnellement en sortie Vout .
Ce n'est pas la tension (le voltage) qui varie mais le courant (les ampères) durant les différents phases du fonctionnement d'un périphérique.
MSG a écrit :Il ne doit pas servir d'alimentation (fort courant) sur la sortie Vout ...
De quoi parles-tu là, du pont diviseur de tension ou du pont diviseur de courant ?

Le pont diviseur de tension a une tension (le voltage) stable en entré, disons 12Vcc.
On désire la réduire (la tension) afin de pouvoir l'exploiter, comme l'a fait M. François Mocq entre le 5Vcc et le 3,3Vcc.
Dans mon exemple, j'ai besoin de deux ponts diviseur de tension, puisque l'un fournira du 5Vcc et l'autre du 3,3Vcc.

Le pont diviseur de courant a un courant (les ampères) stable en entré disons 4A.
On désire le réduire (le courant) afin de pouvoir l'exploiter, entre d'un coté du 3A et de l'autre du 1A.
Dans mon exemple, j'ai besoin de deux ponts diviseur de courant, puisque l'un fournira du 3A et l'autre du 1A.

Si je ne dois pas me servir des ponts en tant qu'alimentation (ce que je ne comprends pas), comment doit-je procéder ?
MSG a écrit :... sans quoi le pont se déséquilibre et toute la tension Vin va progressivement basculer aux bornes de R1 , R2 finira court-circuité (ne servira plus à rien) .
Pourquoi la tension serait déséquilibré ? Je ne comprends pas.
A quoi sert le pont diviseur de tension, ainsi que le pont diviseur de courant si je ne peux pas l'utiliser, ce pour quoi ils ont été faits ???
MSG a écrit :Ici , on veut pouvoir lire l'état d'un signal 5V (maximum) sur les entrés limitées à 3,3V du Raspberry .
Oui, je suis d'accord. Mais dans ton pont diviseur de tension, il y a bien un courant (les ampères) stable qui passe, non ?

Si au lieu d'avoir une seule sortie, j'en ai deux, je suppose qu'il suffit de mettre deux ponts diviseur de tension en parallèle.
Et en quoi cela pose problème si sur l'un, il y a au maximum du 3A et sur l'autre du 1A ?

Après tout, le maximum que j'ai comme courant (les ampères) en entré est de 4A.
En quoi la subdivision du courant par le pont diviseur de courant enfreint les lois de l'électronique ?
MSG a écrit :Un diviseur de courant avec des résistances serait fait avec des résistances en parallèle et non en série , ...
Oui, je le sais, j'ai vu les schémas. Et pour le pont diviseur de tension, les résistances sont en séries.
Tu prends deux résistances que tu mets en série (pont diviseur de tension) puis deux autres qui sont aussi en série (un autre pont diviseur de tension).
Mais les deux blocs de résistances peuvent à leur tour être en parallèle (pont diviseur de courant).
MSG a écrit :... mais bonjour le dégagement de chaleur si vous compter diviser autant d'ampères avec ces seules résistances .
Je ne vois pas pourquoi, il y aurait un dégagement de chaleur.
Les résistances sont calculés en fonction de ce que l'on désire obtenir comme courant.
Plus la résistante est grande, moins le courant passe, plus elle est faible, plus le courant passe. Ou est le problème ?
MSG a écrit :Il est à noter une valeur non inscrite sur les résistance et dont il faut tenir compte lors de l'achat , c'est la puissance !!!
Si 4A vous semble trop important, on peut faire le même raisonnement avec du 40 milliampères.

Ce n'est pas un limiteur de courant que je cherche à faire, mais bien un diviseur de courant.
Les périphériques qui sont derrières ont un maximum d'utilisation.
Mon raisonnement est de fournir de la manière la plus adéquate la tension et le courant que chaque périphérique demande.

Je répète mon problème.
J'ai en entrée du 12Vcc et du 40 milliampères (puisque 4A vous dérange).
J'ai un périphérique qui fonctionne en 5vcc avec un courant au maximum de 30 milliampères.
J'ai un Autre périphérique qui fonctionne en 3,3vcc avec un courant au maximum de 10 milliampères.

Est-ce que juste deux ponts diviseurs de tension feront l'affaire ?
Si c'est non, alors je suppose qu'il faut adjoindre deux ponts diviseur de courant.
Si c'est non aussi, je ne comprends plus.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Re: Adaptateur Tension : Donne les Résistances d'un Pont

Message par MSG » lun. 17 févr. 2020 20:50

Artemus24 a écrit :
lun. 17 févr. 2020 17:05
Je répète mon problème.
J'ai en entrée du 12Vcc et du 40 milliampères (puisque 4A vous dérange).
J'ai un périphérique qui fonctionne en 5vcc avec un courant au maximum de 30 milliampères.
J'ai un Autre périphérique qui fonctionne en 3,3vcc avec un courant au maximum de 10 milliampères.

Est-ce que juste deux ponts diviseurs de tension feront l'affaire ?
Si c'est non, alors je suppose qu'il faut adjoindre deux ponts diviseur de courant.
Si c'est non aussi, je ne comprends plus.

@+
A aucun moment , il n'a été question de faire un diviseur de courant avec des résistances .

Dans un pont diviseur de tension , le courant "I" qui traverse celui-ci est identique en tout point du montage tant que la consommation Vout reste négligeable .

On va dire que tu branches un récepteur sur Vout dont la résistance interne est identique à R2 , tu vas bien créer une division de courant puisque une partie vas passer dans R2 et l'autre dans ton récepteur .

Le soucis c'est que la nouvelle valeur R2 de ton montage est divisée par 2 (deux résistance identiques en parallèle provoquent une division par 2 de sa valeur) .
Si tu divises R2 par 2 , la tension que R2 ne prend plus , va être déplacer sur R1 car son courant va être automatiquement augmenté .

Fait le test avec des résistances :
Mets sur ton alim 12V deux résistances de 1K en série , au point milieu tu as 6V car les résistance sont identiques .
Maintenant ajoute une troisième résistance de 1K en parallèle sur l'une des deux , tu vas voir que la tension se déporte sur celle qui reste seule .
Ton pont se dérègle et passe de 6V + 6V en équilibre à un état de déséquilibre 8V +4V ou 4V + 8V .

Garde tes deux résistances 1K en série et là , place en parallèle une résistance beaucoup plus grosse un 100K .
La nouvelle valeur de R2 équivalente sera de l'ordre de 990 ohms .
La tension reste à peu près en équilibre 6,03V + 5,969V ou 5,969V + 6,03V .

Tu comprends bien qu'il n'est pas possible de consommer beaucoup de courent en sortie de Vout sinon le pont se déséquilibre vite .

Un appareil qui consomme beaucoup est un appareil à faible résistance interne , un appareil qui consomme peu à une forte résistance interne .
Dans un pont de résistance , la tension la plus forte se situe toujours du côté de la résistance ayant la plus forte valeur .
Si tu comprends cela , tu auras fait un grand pas , sinon je ne peux rien pour toi .


Ton problème est d'avoir 3 alimentations totalement indépendantes , car si tu les mets en cascade , il va te falloir tenir compte de ce que consomme les autres alimentations de valeur inférieure , c'est pas simple .
Régulateur 12V qui alimente un Régulateur 5V qui alimente un Régulateur 3,3 .
Les puissances consommés se cumulent en remontant vers le 5V puis vers le 12V ..

Répondre

Retourner vers « Python »