.. meta:: :language: it :description language=it: Embedded Systems Architecture: Misura del valore di una resistenza :description language=en: Embedded Systems Architecture: Resistance value measurement :keywords: Embedded Systems Architecture, Resistance value measurement :author: Luciano De Falco Alfano Sheet Arduino n.4 (Resistance value measurement) ================================================= .. contents:: :local: [*Lezione del xx yyy 2019*] ---------------- La `scheda della esercitazione n.4 `_ richiede la misurazione di una resistenza incognita, utilizzando un array di resistenze note. In questo caso, non avendo l'insieme delle resistenze elecate nella scheda del prof.Morresi, ne abbiamo usato un set con i seguenti valori: 100, 1000, 10000, 100000 e 1000000 di ohm. Come segue: .. raw:: html Il dettaglio dello sketch è il seguente: .. literalinclude:: ./exercises/sketch_sh04.ino :language: c :linenos: E la su logica è incerniata sul seguente schema: .. image:: ./exercises/sh04.svg dove :math:`R_2` è la resistenza da calcolare, :math:`R_1` la resistenza nota, :math:`V_{in}` la tensione in ingresso al circuito (i 5V di Arduino), e la :math:`V_{out}` è la tensione misurata presente tra resistenza incognita e nota. In questo circuito la corrente tra :math:`V_{in}` e *ground* è la stessa che scorre tra :math:`V_{out}` e *ground*. Di conseguenza il seguente sistema .. math:: \begin{equation} \begin{cases} (R_1+R_2) \cdot i = V_{in}\\ R_2 \cdot i= V_{out} \end{cases}\,. \end{equation} rapportando i termini diviene: .. math:: \begin{equation} \frac {(R_1+R_2) \cdot i} {R_2 \cdot i} = \frac{V_{in}}{V_{out}}\\ \frac {(R_1+R_2)} {R_2} = \frac{V_{in}}{V_{out}}\\ \cdots\\ R_1 \cdot \frac {1} {\frac{V_{in}}{V_{out}} - 1} = R_2 \end{equation} La funzione ``calc_r`` alla ln 35 calcola l'equazione predetta, conosciuti i valori :math:`R_1`, :math:`V_{out}` e la :math:`V_{in}`. Il resto è abbastanza immediato. Un vettore (``PORT``) in cui memorizzare i numeri di porta che usiamo per alimentare, una per volta, le resistenze. E un vettore (``R``) con i relativi valori delle resistenze. Dopo di che basta ciclare dando corrente alla resistenza *i-esima*, partendo dalla più piccola. Misurare la relativa :math:`V_{out}` e calcolare la relativa ``r2``. E verificare se il valore misurato è inferiore della :math:`R[i]` corrente. Se è così, ci possiamo fermare: stiamo utilizzando la prima resistenza con valore superiore alla corrente. Quindi è la migliore misura che possiamo effettuare.