Partitore di resistenze o partitore di tensione

Il partitore di resistenze è un tipo di circuito semplice da realizzare e mnolto utile, sopratutto con Arduino, quando il sensore che vuoi utilizzare funziona a 12v ed eroga anche in OUTPUT una tensione di 12v.

partitore di resistenze

Come già sai i pin di Arduino non sono adatti a ricevere segnali con una tensione superiore a 5v, anche se come picco può capitare di raggiungere tensioni maggiori è sempre bene evitare che questo accada.

Io per primo ho avuto l’esigenza di adatatre un segnale in 12v all’ingresso digitale ( pin 2 ) di arduino, per farlo avevo individuato come soluzione quella dell’optoisolatore, a cui avrei collegato in input i 12v ed all’output i 5v.
Questa soluzione è risultata alquanto inadeguata sia per i tempi di risposta del segnale sia per l’uso solo con i pin digitali, su intervalli piccoli è sufficiente ma se hai segnali che variano con una elevata frequenza il ritardo di risposta introdotto dall’oproisolatore si ripercuote sul buon funzionamento; inoltre è in grado di trasferire solo segnalli di tipo 0-1 e non segnali analogici 0-255.

Ho chiesto all’amico ed appassionato Luca di aiutarmi a risolvere il problema e la soluzione suggeritami è quella che ti racconto oggi: il partitore di resistenze o di tensione.

Cosa sia e come funzioni puoi leggerlo in modo approfondito su wikipedia, in questo articolo vogllio illustrarti come è fatto e per quali utilizzi puoi impiegarlo oltre che come calcolarne uno adatto ai tuoi scopi.

Come è fatto un partitore di resistenze

Puoi trovare in giro numerose foto e schemi del partitore di rersistenze, quella all’inizio dell’articolo è un esempio di schema come lo è questo:

partitore di resistenze

in entrambi i casi avrai notato che si tratta di due resistenxe di valore R1 ed R2 collegate in serie, semplice no?

Si è semplicissimo, la differenza tra le due resistenze ti permette di variare il rapporto tra  Vi ( Volt input ) e Vo (Volt Output ).

La formula per trovare questi valori è quella espressa nella prima figura, tuttavia puoi utilizzare uncalcolatore on-line, io utilizzo questo: calcolare un partitore di resistenze

Partitore di resistenze in pratica

La teoria su come funziona e come calcolarlo puoi approforndirla nei numerosi link presenti sul web, quello che vorrei chiarirti oggi è praticamente come funziona:

Se R1=R2 qualsiasi sia il loro valore quello che ottiene è un partitore di tensione simmetrico ossia applicando a Vi 12v su Vo avrai 6v, variando il rapporto tra R1 ed R2 a favore di R1 ( R1 > R2 ) il tuo partitore di tensione ti offre una tensione Vo inferiore a Vi/2; variando il rapporto a favore di R2 ( R1 < R2 ) ottieni Vo > Vi/2;

Un rapporto tra R1 ed R2 che io utilizzo con arduino è R1= 1470ohm ed R2 = 1000ohm ottenendo una tensione di Vo = 4,8v dai 12v di Vi per ottenere i 5v esatti dovresti utilizzare R1= 1400ohm e R2=1000ohm, tuttavia non è facile trovare resistenze con tali valori per il tuo partitore di resistenze, la possibilità che tu possieda già una resistenza da 470ohm e due da 1000ohm è maggiore.

Uso alternativo del partitore di resistenze

Il principio è valido sia per adattare il segnale a 12v ad un segnale a 5v sia come conftonto in caso di resistenze variabili ( fotoresistenze, termistori, ecc… ) un uso del partitore di resistenze con le fotoresistenze lo hai visto in questo articolo in cui il circuito è composto da R1 fisso ed R2 la fotoresistenza o più in generale la resistenza variabile.

Con arduino misurando la variazione di tensione su un pin analogico ( es.: A0 ) e conoscendo il rapporto massimo tra R1 ed R2 puoi verificare l’intensità luminosa o la variazione di temperatura ( termistore o termo resistenza ).

Sketch di esempio

Il partitore di resistenze può essere utilizzato in molti modi e per molte applicazioni in cui il segnale uscente dal sensore è 12v e il segnale che devi inviare ad Arduino è 5v, ti posto un semplice sketch che trovi tra gli esempi dell’IDE Arduino 1.0: AnalogRaedSerial

/*
  AnalogReadSerial
 Reads an analog input on pin 0, prints the result to the serial monitor 

 This example code is in the public domain.
 */

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
}

il suo scopo è semplicemente leggere il segnale analogico presente su A0 e scriverlo a video:

monitor seriale

Il calcolo del valore in tensione puoi eseguirlo con la formula Vout =  (5 x valore) / 255 se sto leggendo, come nell’esempio in figura, 111 il valore in Vout è ( 5 x 111 ) / 255 = 555 / 255 = circa 2,18v.

Buon divertimento !!!

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/partitore-di-resistenze.html

34 commenti

1 ping

Vai al modulo dei commenti

    • Michele il 19 Marzo 2013 alle 22:50
    • Rispondi

    Ciao Mauro, ti anticipo che non so nulla di elettronica mi ci sono imbattuto per caso , sto cercando di realizzare un piccolo progettino sfruttando arduino.Vorrei realizzare una centralina per il mio camper che tenga sottocontrollo alcuni sensori , gallegianti e la batteria. Volevo chiederti se posso sfruttare il partitore di tensione , adeguando il codice, per controllare la carica della batteria dei servizi? altrimenti cosa mi consigli? avevo anche pensato ad un regolatore di tensione , ma mi è venuto il dubbio che sia che la tensione in Vin fosse di 10,5V o 12,5 troverei in Vout 5V è vero?
    Grazie per l’attenzione .

    1. Ciao Michele,
      il tuo progetto é interessante e simile ad altri proposti da camperisti.
      Avrei voglia di creare un gruppo che possa cambiari consigli su progetti come i vostri e poter lavorare insieme.

      Per la tensione é un problema in quanto un regolatore farebbe esattamente quello che dici, mentre un partitore devi calcolarlo bene in quanto non gestisce i picchi, sopratutto quando il camper é in movimento, e rischi di bruciare Arduino.

      Sarebbe opportuno trovare qualche circuito che faccia da adattatore 12v-5v con tensioni di picco tipo a 24/30/48v

      Mauro

    • Michele il 20 Marzo 2013 alle 13:51
    • Rispondi

    Ciao Mauro, ti ringrazio nuovamente per l’attenzione. Moltoprobabilmente i camperisti a cui ti riferisci hanno dei camper vecchietti come il mio, stufi di avere solo dei led come indicatori. Ritornando al mio dilemma , non c’è nessun componente da anteporre ad arduino che impedisca di far passare piu tensione di quella che si vuole? logicamente che non interferisc a con la misurazione.
    Grazie
    Michele

    1. Ciao Michele,
      tra i componenti di cui ho conoscenza non c’è un adattatore di tensione per arduino.
      Non escludo esista, prova a cercare con Google.

      Mauro

    • Daniele Bruno il 8 Maggio 2013 alle 17:43
    • Rispondi

    Ciao Mauro, mi sono imbattuto per caso nel tuo sito alla ricerca di applicazioni alternative del partitore di tensione, in particolare i suoi range di applicabilità.
    Ho la necessità di adattare un segnale in tensione proveniente da un motore elettrico a 320V ad un input funzionante fino 10V, ovvero una DAC con modulo di acquisizione delle tensioni.
    In tal modo il rapporto delle resistenze, considerando il range 1kOhm – 10kOhm, mi porterebbe ad avere per esempio R1=10kOhm ed R2= 0.3 kOhm.
    Ti risulta una buona modalità di acquisizione oppure mi consigli altre metodologie? In alternativa avevo anche pensato ad un potenziometro per arrivare a rapporti fra le resistenze più spinti.
    Grazie
    Daniele

    1. Ciao Daniele,
      non sono così esperto come a volte sembra.
      Date le tensioni in gioco io cercherei un circuito adattatore o addirittura un trasduttore optoisolato se riesci.

      Evita di usare un semplice partitore per il tuo progetto.

      Pronto ad essere smentito da chi ne sa più di me sull’argomento.

      Mauro

    • Alberto il 8 Giugno 2013 alle 14:36
    • Rispondi

    Mi permetto di dare il mio contributo……

    Con un partitore di tensione possiamo ridurre di un fattore K la tensione in uscita rispetto a quella in ingresso.
    Ci sono peró alcune cose da tenere in considerazione:
    La massa del circuito ricevente sará in comune con quella da cui é stata presa la tensione da ridurre quindi scordatevi di misurare la 220VAC perché il neutro finirebbe sulla massa del nostro circuito.
    Il partitore va bene per ridurre le tensioni continue e generalmente, va solo bene per ridurre una tensione da misurare o da utilizzare come riferimento (dalla quale non assorbiamo nessuna corrente)
    Le resistenze utilizzate realizzano un circuito con un’impedenza che va valutata in base alla tipologia dell’applicazione e di cosa c’é sia prima che dopo il partitore stesso.
    Non dovrá essere né troppo alta né troppo bassa.
    Se si vuole limitare la tensione al nostro circuito, si puó montare un diodo zener con una resistenza che provvederá a livellare la tensione se questa sará superiore al proprio valore di riferimento.

    Alberto

    1. Ciao Alberto,
      sei preziosissimo !!! Sto imparando anch’io cose nuove ed interessanti, se ti va di scrivere qualche articolo a tuo nome di approfondimento o correzione mi farebbe piacere.

      Mauro

    • Davide il 12 Gennaio 2014 alle 16:27
    • Rispondi

    Ciao Mauro,
    intanto complimenti per il blog. Ho letto e testato quasi tutte le parti dedicate ad arduino.
    Ti anticipo che io di elettronica so poco, sono un informatico.
    Sto realizzando un sistema di apertura e chiusura degli scuri di una finestra con telecomando tramite arduino.
    Utilizzo due servomotori funzionanti tra i 4,8V e 6V con consumo di 150mA l’uno. testando il programma da pc con collegamento alla porta USB funziona. Ho deciso di collegare un alimentatore x arduino e uno più potente ai servomotori. Ho un alimentatore di recupero che fa 32V e 1560mA. Seguendo le tue indicazioni con 3 resistenze che ho disponibili riesco ad avere 5,2V, sarebbe perfetto se non fosse che la corrente è praticamente meno di 1mA … C’è un modo di alzare questa corrente? O mi conviene acquistare un alimentatore?

    1. Ciao Davide,
      la tua idea é molto bella e quando avrai ultimato il progetto mi piacerebbe pubblicarlo e magari riprodurlo a casa.

      Venendo al problema di alimentazione io ti consiglio di usare un alimentatore differente che eroghi 6v stabilizzati e corrente sufficiente, il partitore di resistenze non é adeguato allo scopo, la corrente, come hai appurato, é limitatissima.

      Se vuoi comunque utilizzare il tuo alimentatore da 32v ti consiglio di acquistare il convertitore Dc-Dc di cui ho scritto un articolo tempo addietro, é un circuito in grado di erogare 6A con tensione regolata dalle resistenze che decidi e con un guadagno maggiore del 95% che significa bassissima perdita di potenza.

      Mauro

  1. Molto interessante. Io dovrei realizzare un circuito collegato poi ad Arduino, che mi permetta di misurare e registrare la tensione ai capi di una resistenza collegata a una batteria della macchina. In pratica alla sua accensione la macchina eroga 12V (in teoria dovrebbe essere inferiore) a questa resistenza per x secondi dopo di che la centralina abbassa la tensione erogata (a una tensione y) e continua ad alimentare la resistenza. A me serve misurare la tensione erogata in modo da capire anche per quanto tempi viene erogata la 1° tensione e la seconda. Secondo te è possibile fare una cosa del genere con Arduino?

    Grazie per una tua eventuale risposta.

    Salvatore

    1. Ciao Salvatore,
      io per evitare di davveggiare arduino cercherei una shield che funzioni come multimetro o tester per la tensione.

    • Gian il 10 Ottobre 2014 alle 01:30
    • Rispondi

    Ciao Mauro,
    molto interessante il tuo articolo, volevo sapere come fare ad alimentare il mio Arduino Yun con una batteria tipo cellulare 3.7V è possibile tramite un partitore di tensione resistivo?
    Grazie

    1. Ciao Gian,
      l’arduino yun va alimentato a 5v, se vuoi utilizzare una LiPo 3,7v ( tipica dei cellulari ) devi procurarti un circuito in grado di elevare la tensione. Il partitore di resistenze fa il lavoro inverso come hai letto nell’articolo.

    • Giovanni il 16 Giugno 2015 alle 15:43
    • Rispondi

    Ciao Mauro;
    io vorrei realizzare un progetto forse semplice per chi ha esperienza, ma io ci lavoro da due annetti. Vorrei leggere il valore di una tensione che, quando arriva a 13,8 volt spegne il relè, se non legge questa tensione , si accende.
    Grazie

    1. Ciao Giovanni,
      hai provato a cercare tra i circuiti di regolazione di carica con soglia regolabile?
      Non saprei indirizzarti verso un progetto in particolare ma sono certo che su internet ce ne siano tanti.

    • Giovanni il 18 Giugno 2015 alle 15:25
    • Rispondi

    Ciao Mauro;
    sono riuscito a farmi una specie di partitore di tensione e sono riuscito a far funzionare il mio progetto. Grazie mille!

    1. Bravo Giovanni !!!

    • Riccardo il 9 Luglio 2015 alle 18:34
    • Rispondi

    Ciao Mauro,
    innanzitutto ottima guida e complimenti.
    Mi chiedevo se l’arduino, quando si applica una tensione sugli ingressi analogici, assorbe una piccola corrente da essi e se tale corrente circolando nelle resistenze del partitore può sfalsare le cadute di tensione, considerando anche che le resistenze non si troverebbero più in serie.
    Grazie.

    1. Ciao Riccardo,
      penso di non aver capito la domanda.

    • Lorenzo il 10 Novembre 2015 alle 15:38
    • Rispondi

    Ciao Mauro, complimenti, interessantissimo sito.
    Sto sviluppando un progetto amatoriale di elettronica applicata alla moto per uso sportivo tramite arduino (pit limiter e quick shift per quelli che hanno dimestichezza con l’ambiente).
    Il mio problema è portare un segnale in frequenza dei giri motore di 12-13v in un ingresso 5v dell’arduino.
    Guardando un po’ in giro (non sono forte in elettronica) ho immaginato di farlo con un partitore di tensione che riduca intorno ai 5v ed un diodo Zener che livelli eventuali picchi, ma mi areno nel calcolo delle resistenze.
    Puoi aiutarmi o eventualmente suggerirmi soluzioni alternative?

    1. Ciao Lorenzo,
      per il calcolo puoi usare le formule e i link presenti nell’articolo.
      Direi che in generale il partitore di resistenze funziona ma è un po’ lento in risposta, dipende dalle frequenza in gioco e da che misurazioni devi fare.
      L’alternativa sono circuiti appositi chiamati shift-level se non ricordo male il loro nome.

    • Dario Cdj il 15 Gennaio 2016 alle 09:37
    • Rispondi

    Ciao,
    devo leggere un pacco batterie da 48v… allora per sicurezza ho fatto un partitore di tensione 60v con una res da 100k e una da 9k circa (8.2k + 820ohm in serie)

    Il tutto funziona, ma i valori che mi vengono letti non sono mai uguali (e la corrente è stabile, il tester è fermo su 11,89 al momento, sto usando un alim da banco al posto delle batterie)

    Questo è il codice che sto usando :
    int lettura = analogRead(A0);
    float volts = lettura * (5.0 / 1023.0);

    // partitore di tensione è 60v (per evitare che le sovratensioni danneggino il circuito) 1 res 100k – 1 res 9k (8,2+820ohm in serie) il rapporto è 60/5 = 12
    float voltaggioreale = ( volts * 12 ) ;

    Ecco cosa esce la seriale :
    Lettura da A0: 1.03 volts
    voltaggio reale entrata: 12.32 volts
    Lettura da A0: 1.05 volts
    voltaggio reale entrata: 12.55 volts
    Lettura da A0: 1.02 volts
    voltaggio reale entrata: 12.20 volts
    Lettura da A0: 1.02 volts
    voltaggio reale entrata: 12.20 volts
    Lettura da A0: 1.04 volts
    voltaggio reale entrata: 12.43 volts
    Lettura da A0: 1.01 volts
    voltaggio reale entrata: 12.14 volts
    Lettura da A0: 1.02 volts
    voltaggio reale entrata: 12.20 volts

    E’ normale che non sia preciso ?
    grazie
    Dario

    1. Ciao Dario,
      hai provato farti scrivere a video anche i valori della variabile lettura ?

    • Dario Cdj il 20 Gennaio 2016 alle 16:31
    • Rispondi

    Lettura da A0: 1.01 volts … è questa la variabile lettura… ho ovviato facendo una media di 100 letture… ma non è bello…

    1. Ciao Dario,
      nelle rilevazioni di sensori analogici è normale fare dei campionamenti.

  2. Ciao Mauro volevo chiederti un favore ? Sto cercando di far funzionare un led a pasticca 3/4v 3w con un tra SD formatore 0 220 0 380 out 12v/24v con un stabilizzatore a ponte ora volevo chiederti che tipo di resistenza devo metterci? Io ne ho provata una da 560 ma il risultato è che il led nn si accende sufficientemente ,ho misurato con il tester ai capi del LED e avevo un voltaggio di 2.37volt. Però misurando ai capi de polo positivo e al pin della resistenza avevo 24v pensavo di bruciare il led invece no perché? Cosa devo fare che resistenza devo mettere? Grazie .

    1. Ciao Stefano,
      non mi è chiaro quello che desideri fare.
      Il led a pasticca è per caso un led controllato in corrente e non in tensione ?

    • Marco il 26 Marzo 2016 alle 15:19
    • Rispondi

    Ciao, premetto che non sono pratico di elettronica, ma sto disperatamente cercando lo schema di un circuito che partendo da un’unica tensione in entrata a 9V sia capace di generarne due in uscita una a 3 e l’altra a 6v, mi domandavo se i partitori sono adatti e se si come si può realizzare?

    1. Ciao Marco,
      i partitori sono una soluzione buona per adattare segnali ma inadatta ad essere usati per alimentare altri circuiti a causa delle correnti in gioco. Tu di quali correnti hai bisogno ?

    • Paolo il 11 Agosto 2016 alle 16:08
    • Rispondi

    Buondì Mauro
    Vorrei utilizzare questo schemino per cercare di interfacciare dei sensori di un antifurto con dei XOR.
    Cerco di spiegarmi, anche se non sarà facile.
    L’ingresso della centrale antifurto deve essere messo a massa con una resistenza da 10k per fare stare l’antifurto zitto. Se viene a mancare la massa, l’antifurto suona.
    A questo ingresso io vorrei attaccare una serie di 5 sensori che hanno un contatto che si apre quando il sensore rileva un movimento. Data la configurazione della casa, non posso fare diversamente.
    Vorrei però sapere, in caso di allarme, quale di questi sensori è entrato in funzione. Ho quindi pensato di mettere in parallelo ad ogni sensore degli XOR, così, se un piedino dello XOR resta a massa e l’altro si alza (sull’ingresso della centrale, quando non è a massa son presenti 12,5 v), in uscita avrò la condizione logica 1, mentre se il contatto è chiuso saranno entrambi a 0 (o a 1, se un altro contatto è aperto) e quindi l’uscita sarà a 0.
    L’uscita degli XOR andrebbero a dei FLIP FLOP che manterrebbero lo stato acquisito al momento in cui il sensore rileva il movimento e quindi a dei LED che si accenderebbero per identificare il sensore.
    Questa è la teoria (e potrebbe essere anche sbagliata), la pratica però mi sfugge completamente.
    Per arrivare dai 12,5 v ai 5 dello XOR vorrei usare dei partitori come quelli che hai indicato tu, ma credo di non capire bene cosa cambi se uso delle resistenze da 1500 e 1000 (in uscita avrei 5v netti) o 15000 e 10000 e ancora 150000 e 100000. Il rapporto è sempre lo stesso e il risultato teorico identico.
    Mi potresti spiegare cosa usare e perchè?
    Grazie

    1. Si Paolo il rapporto determina il flusso di elettroni e la resistenza che incontrano nell’attraversare l’una e l’altra.
      Il partitore di tensione con resistenze paga lo scotto di una risposta in velocità non eccellente, per il tuo scopo dovrebbe essere sufficiente. In alternativa puoi usare dei circuiti chiamati shift-level che sono progettati per essere più reattivi.

    • Matteo Monti il 27 Marzo 2019 alle 21:02
    • Rispondi

    Ciao Mauro complimenti per l’ottimo sito, spesso spunto di partenza per colmare la mia grande ignoranza in materia di elettronica. Mi chiedevo se fosse possibile creare un partitore di tensione senza usare resistenze. Vorrei creare un sensore di livello per far accendere un led qualora il livello scendesse sotto una determinata quota. Il “sensore” è banalmente un circuito che si apre quanto l’acqua non bagna più i capi di due fili. La Vin sarebbero i 5v o i 3.3v, per cui non dovrei aver bisogno di ridurre la tensione che poi mi va a un pin analogico. Il mio ragionamento è completamente sbagliato o può filare liscio?

    1. Ciao Matteo,
      ti suggerirei di utilizzare un sensore di rilevazione del livello dell’acqua come quello descritto in alcuni miei articoli, costano davvero poco e sono di solito costituiti da una basetta con due tracce dorate che evita parte dei problemi di elettrolisi a cui saresti sottoposto con altri materiali.
      Spero in ogni caso tu non stia parlando si acqua che devi poi bere, in tal caso è meglio oprate per sistemi TOF, ultrasuoni o laser che non necessitano del contatto con il liquido.

  1. […] Per misure fino a 10 volt è sufficiente un partitore con 2 resistenze da 1000 ohm. La formula per calcolare le due resistenze è molto semplice ed è stata spiegata nel blog. […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.