Calcolo di componenti


L'antefatto

Ma come, un altro programma per calcolare componenti elettronici?
Mettiamola cosi', ultimamente mi sono imbattuto in un circuito nel quale occorreva usare una resistenza da 240 ohm, valore standard della serie Exx ma assente dai cassetti dei recuperi.
Sembrava un valore critico in quanto inserito in un filtro audio piuttosto stretto.
Allora mi sono messo, bloc notes penna e calcolatrice, a calcolare due valori standard che, combinati in serie o parallelo, dessero il risultato sperato.
Una discreta scocciatura.
Giorni dopo ho fatto una ricerca per un programmino che facesse il lavoro sopra descritto..
due ore perse, pubblicita' programmi shareware o da installare con tanto di setup.exe, data.cab...

La genesi

Scatta la ribellione: ma perche' per una operazione banale abbiamo bisogno di programmi da installare, registrazioni varie, oboli agli autori...
Ho deciso di scrivere qualche riga di codice partendo dalla mia "autodidattica" conoscenza del visual basic 3, vecchio ma sufficiente allo scopo.
Evito di descrivere nei dettagli il sorgente, sia perche' un po' mi vergogno sia per invitare chi si avvicina alla programmazione a interpretare il funzionamento dello stesso. In sostanza si provano tutte le possibili combinazioni dei valori standard della serie E12, dei loro multipli e sottomultipli, sia in serie che in parallelo, fino a trovare il compromesso migliore. Un lavoro immane da appioppare al nostro computer !
Aggiungo comunque che ho badato esclusivamente al sodo: nessuna ottimizzazione degli algoritmi di scelta dei valori, tanta forza bruta e matematica quanto basta.
Il calcolo impegna il mio pc per circa 3 secondi, uno spreco di potenza imbarazzante.

Il risultato

Il risultato di cotanta brutalità e' un eseguibile da 17 k che, in coppia con la libreria di runtime VBrun300.dll, fa quello che serve.
Il programma cerca di raggiungere il valore desiderato calcolando le possibile coppie di componenti serie/parallelo e mostra i dieci migliori risultati.
Il simbolo / / indica che i componenti vanno messi in parallelo, mentre --+-- indica che vanno messi in serie; il dato percentuale indica lo scostamento tra il valore ottenuto e quello desiderato.
Come e' possibile notare non vengono eliminati i doppioni, cioe' ad esempio 10 // 6 e 6 // 10, ho pensato ad una soluzione ma sarebbe un po' troppo complicata viste le premesse.
Allego libreria, sorgente ed eseguibile.
Non me ne vogliano i programmatori piu "esteti", so che su grix esiste gia' qualcosa di simile ma manco a dirlo necessita di installazione, dell'ultimo service pack, del dot.net del pinc.pal ... insomma mi avete capito.

       

Ecco il file scaricabile:   serpar.zip

Buon calcolo a tutti....

Aggiornamento

A seguito dei suggerimenti ricevuti ho apportato qualche piccola modifica:al programma.

In particolare ho aggiunto un controllo sull'input (vengono accettati solo valori numerici) e ho eliminato i risultati doppi. Per quanto riguarda la tolleranza dei componenti... Non sono esattamente un matematico -anzi- comunque direi che la precisione che si ottiene e', nel caso piu' sfavorevole, pari a quella del componente con tolleranza maggiore. Vale a dire che usando componenti al 5% il risultato avra' tolleranza pari o migliore al 5%. Se, come avviene in pratica, lo scostamento del valore reale del componente rispetto a quello nominale e' casuale, potrebbe anche verificarsi una sorta di compensazione grazie alla quale gli errori si eliminano.


praz2004 chiocciola libero punto it