Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata
16
voti

Un ausilio informatico per l'elettronico che ha poco tempo

Indice

INTRODUZIONE

La situazione la conosciamo tutti: hai davanti un circuito da risolvere, ti armi di buona volontà, scrivi le equazioni ai nodi... e ti rendi conto di avere davanti un sistema di ben 20 equazioni! Altro che buona volontà, qui si parla di voto al martirio! È in casi come questi (ed anche in altri molto meno banali ma altrettanto fastidiosi) che il progettista deve farsi furbo: davanti a lui, vicino a lui... insomma, da qualche parte entro il suo raggio visivo ci sarà sicuramente un computer. E cosa è progettato per fare un computer, se non i calcoli (nei quali, tra l'altro, dicono sia piuttosto bravo)? Ovviamente, però, occorre che il progettista sappia parlarci, con il suo computer: sappiamo tutti che dire al computer "senti, coso, ora mi calcoli 'sto sistema" tendenzialmente non funziona... come fare? Una soluzione molto semplice è parlargli in MATLAB: lui di solito quel linguaggio lo capisce (o se non altro sa tradurlo in qualcosa che capisce)! E proprio di questo parleremo oggi: come dire al computer di risolvere alcuni calcoli per noi. Prenderemo in esame tre diverse situazioni a basso livello di complessità, e vedremo come ottenere il nostro risultato in maniera rapida ed efficace.


IL LINGUAGGIO MATLAB

DISCLAIMER: quanto segue non vuole essere una guida esaustiva sulla programmazione in MATLAB, nè intende proporre uno stile di programmazione professionale o in alcun modo raffinato: unico obiettivo della trattazione è fornire al "progettista al lavoro" alcune idee per scrivere velocemente script che possano aiutarlo nello svolgimento delle sue mansioni.

Prima di cominciare, una breve spiegazione: MATLAB è un ambiente di calcolo supportato da un suo proprio ed omonimo linguaggio, il quale permette la scrittura di comandi che svolgano opportune operazioni matematiche (generazione di matrici, risoluzione di equazioni differenziali, fattorizzazione di polinomi, trasformate...). Precisamente, MATLAB è orientato al calcolo numerico (per il quale prevede un'estesa libreria di funzioni), ma permette il calcolo simbolico ed incorpora moltissime funzioni di vario genere (di solito racchiuse in toolboxes). La suite MATLAB è a pagamento, per cui è possibile che non tutti siano in condizioni di usarla; in tal caso, si può provvedere dotandosi di alternative gratuite come GNU Octave, che supportano gran parte delle funzioni di MATLAB. Si noti, comunque, che quello che analizzeremo in questo articolo è tutto codice scritto e testato su MATLAB R2016a, e non si garantisce la compatibilità totale con altri software. Detto questo, procediamo con una veloce panoramica sulla sintassi di MATLAB; informazioni più approfondite in merito si possono trovare nel primo capitolo di [1] e soprattutto in [3].


DATI IN MATLAB

Diciamo subito che il tipo di dato elementare è la matrice: MATLAB ragiona ed opera su matrici (sapete da cosa deriva, a proposito, il nome MATLAB?), ovvero considera anche i dati scalari come matrici (di dimensione 1x1, ovviamente). La dichiarazione di un dato è effettuata nella forma

A = [a11  a12 ... a1m; ... ; an1 an2 ... anm] 


Che permette di ottenere la matrice A = \begin{bmatrix}
a_{11} & a_{12} & ... & a_{1m} \\ 
... & ... & ... & ... \\ 
a_{n1} & a_{n2} & ... & a_{nm} 
\end{bmatrix}


Ovviamente, per dati scalari si può anche usare la definizione classica x = n. Gli elementi di una matrice sono raggiungibili con la scrittura

matrice(i, j, k, ...)

Dove gli indici partono da 1.
In MATLAB, è possibile definire delle espressioni simboliche nella forma f = f(x), avendo però cura di dichiarare prima la variabile indipendente con l'apposito comando

syms var;

Quindi, per definire ad esempio la funzione di Runge f(x) = \frac{1}{1 + 25x^2} possiamo usare la scrittura:

syms x;
f = 1/(1 + 25*x^2);

FUNZIONI IN MATLAB

In MATLAB, ogni funzione è definita nella forma [...] = func(...), con tra parentesi quadre i nomi dei dati che ritorna e tra parentesi tonde i parametri che riceve. Di solito, la scrittura di funzioni proprie avviene su file con lo stesso nome della funzione. Ciascuna funzione ha la struttura

[a, b, c, ...] = func (...)
     ...
     return
end

Alcune funzioni notevoli di interesse generale sono:

FUNZIONE SPIEGAZIONE
abs(x) Modulo
rem(x, y) Resto di x/y
conj(x) Complesso coniugato
cos(x), acos(x), ... Funzioni goniometriche
det(x) Determinante
size(a) Dimensioni della matrice
inv(a) Matrice inversa

Ed è possibile avere informazioni su ciascuna funzione (che di solito esiste in più forme: MATLAB sfrutta pesantemente l'overloading) utilizzando il comando

help funzione

CONDIZIONI E CONTROLLO IN MATLAB

MATLAB supporta i principali costrutti:

if condizione
     ...
else if condizione
     ...
else
     ...
end


while condizione
     ...
end


for var = valori
     ...
end

Per la definizione delle condizioni, sono disponibili i classici operatori

OPERATORE SIGNIFICATO
== Uguaglianza
~= Disuguaglianza
>, <, >=, <= Relazioni d'ordine
&, and(a, b) AND logico
or(a, b) OR logico
~, not(a) NOT logico


ESEMPI DI UTILIZZO


PRIMO ESEMPIO: RISOLUZIONE DI UN CIRCUITO

Bene, cominciamo con il primo esempio: dobbiamo risolvere il semplice circuito rappresentato, tratto da un esercizio di [2]:

Dove
R1 = 3Ω
R2 = R3 = R4 = 2Ω
E1 = 30V
E2 = 60V
A = 10A

Come ben sappiamo, possiamo scrivere le equazioni ai nodi così:

\left\{\begin{matrix}
\frac{E_1 - V_1}{R_1} = \frac{V_1 - V_2}{R_2} + A\\ 
\\
\frac{V_1 - V_2}{R_2} = \frac{V_2 - E_2}{R_4} + \frac{V_2}{R_3}\\
\end{matrix}\right.

Esse, riscritte in forma più consona, permettono di definire la forma matriciale del sistema:

\begin{bmatrix}
-\frac{1}{R_1} - \frac{1}{R_2} & \frac{1}{R_2} \\ 
\\
\frac{1}{R_2} & -\frac{1}{R_2}-\frac{1}{R_3}-\frac{1}{R_4}
\end{bmatrix} 
\begin{bmatrix}
V_1\\
\\
V_2 
\end{bmatrix} = 
\begin{bmatrix}
A - \frac{E_1}{R_1}\\ 
\\
-\frac{E_2}{R_4}
\end{bmatrix}

Ora, facciamo intervenire MATLAB, dandogli in pasto il codice:

e1 = 30;
e2 = 60;
r1 = 3;
r2 = 2;
r3 = 2;
r4 = 2;
a = 10;

mat = [-1/r1-1/r2 1/r2; 1/r2 -1/r2-1/r3-1/r4];
tn = [a-e1/r1; -e2/r4];

v = inv(mat) * tn
i1 = (e1 - v(1)) / r1
i2 = (v(1) - v(2)) / r2
i3 = v(2) / r3
i4 = (v(2) - e2) / r4

Sul quale c'è poco da dire: abbiamo semplicemente utilizzato le scritture viste nella sezione precedente. Da notare solo la risoluzione del sistema nella forma x = A − 1B, nonchè l'assenza del punto e virgola nelle ultime righe: questa scrittura fa stampare il risultato dei comandi, permettendoci di vedere immediatamente i valori che volevamo.


SECONDO ESEMPIO: VISUALIZZAZIONE DI UN TRANSITORIO

Andiamo al secondo esempio: la visualizzazione di un transitorio. Per questo esempio, dovremo imparare un paio di funzioni, quindi per non complicarci la vita utilizzeremo un circuito molto semplice:

Ora, sappiamo che per un condensatore  i(t) = C\frac{\partial V_c(t)}{\partial t}, ed inoltre sappiamo che nel nostro circuito E = Ri(t) + Vc(t); questo ci permette di scrivere:

\frac{\partial V_c(t)}{\partial t} + \frac{V_c(t)}{RC} = \frac{E}{RC}

Per valutare l'andamento di Vc(t), dobbiamo essere in grado di fornire l'equazione differenziale a MATLAB. Come fare?

Intanto, vediamo alcune funzioni utili:

FUNZIONE DESCRIZIONE
diff(f, x, n) Derivata n-esima di f rispetto alla variabile x
dsolve(eq, cond, ...) Risolve l'equazione differenziale eq con le condizioni iniziali indicate
linspace(a, b, n) Crea un vettore riga con n valori equispaziati in [a,b]
plot(vx, vy) Rappresenta la funzione che passa per i punti indicati
subs(f) Calcola il valore di una funzione simbolica nel punto indicato dalla sua variabile indipendente

Con queste funzioni (e ponendo Vc(0) = 0V, R = 10Ω, E = 10V e C = 20mF), possiamo definire la nostra equazione differenziale e rappresentarla con questo codice:

syms vc(t);
r = 10;
c = 2e-02;
e = 10;

f = dsolve(diff(vc, t, 1) + vc/(r*c) == e/(r*c), vc(0) == 0);

x = linspace(0, 2, 100);

for i = 1:100
    t = x(i);
    v(i) = subs(f);
end

plot(x, v);

Si notino:

  • La forma dell'intervallo nella condizione del ciclo: è una forma di scrittura molto importante in MATLAB, usata in svariate situazioni
  • La formulazione delle espressioni simboliche nella funzione di risoluzione
  • La definizione della capacità con la notazione esponenziale
  • La dichiarazione di una variabile simbolica identificante una funzione, invece che un parametro: la scrittura usata denomina la funzione, ed inoltre ne identifica la variabile
Cosa dobbiamo aspettarci dal nostro script

Cosa dobbiamo aspettarci dal nostro script


TERZO ESEMPIO: POLARIZZAZIONE DI UN TRANSISTOR

Questo terzo esempio ci porterà all'analisi dell'ipotetico comportamento di un transistor bipolare NPN polarizzato dal circuito (tratto da un esempio proposto in [4]):

Per ottenere ciò che vogliamo, daremo a MATLAB le equazioni di Ebers-Moll come riportate sempre in [4]:

I_c = I_s \left [ e^{\frac{V_{be}}{V_T}} - e^{\frac{V_{bc}}{V_T}} \right ] - \frac{I_s}{\beta_r} \left [ e^{\frac{V_{bc}}{V_T}} - 1 \right ]
I_e = I_s \left [ e^{\frac{V_{be}}{V_T}} - e^{\frac{V_{bc}}{V_T}} \right ] + \frac{I_s}{\beta_f} \left [ e^{\frac{V_{be}}{V_T}} - 1 \right ]
I_b = \frac{I_s}{\beta_r} \left [ e^{\frac{V_{bc}}{V_T}} - 1 \right ] + \frac{I_s}{\beta_f} \left [ e^{\frac{V_{be}}{V_T}} - 1 \right ]

Con queste equazioni, analizzeremo l'evoluzione delle tre correnti al variare di Vbb = Vbe, ponendo
Vcc = Vce = 5V
Is = 10 − 16A
βf = 50
βr = 1


Il codice che utilizzeremo non presenta alcunchè che non abbiamo già visto (a parte una funzione per il disegno di più grafici in una sola finestra finestra ed una per la creazione della finestra stessa, delle quali facciamo un uso talmente intuitivo da rendere ogni approfondimento pura pedanteria), ed è precisamente il seguente:

syms vbe;
vcc = 5;
is = 1e-16;
bf = 50;
br = 1;
vt = 25e-03;
vce = vcc;
vbc = vbe - vce;

ic = is * (exp(vbe/vt) - exp(vbc/vt)) - is/br * (exp(vbc/vt) - 1);
ie = is * (exp(vbe/vt) - exp(vbc/vt)) + is/bf * (exp(vbe/vt) - 1);
ib = is/bf * (exp(vbe/vt) - 1) + is/br * (exp(vbc/vt) - 1);

vbb = linspace(0, 1, 100);

for i = 1:100
    vbe = vbb(i);
    vic(i) = subs(ic);
    vie(i) = subs(ie);
    vib(i) = subs(ib);
end

figure();
subplot(3, 1, 1);
plot(vbb, vic);
subplot(3, 1, 2);
plot(vbb, vie);
subplot(3, 1, 3);
plot(vbb, vib);


QUARTO ESEMPIO: PUNTO DI LAVORO DI UN DIODO

Poteva mancare un esempio di calcolo numerico? Ovviamente no! Quindi, andiamo subito al punto: abbiamo un diodo, e ci interessa determinare il suo punto di lavoro in continua... per farlo con carta e penna, dovremmo accettare l'inevitabile somma di incertezze non di rado importanti:

  • Non siamo in grado di disegnare con precisione la caratteristica del diodo
  • Non siamo in grado di calcolare il punto di intersezione della caratteristica con la retta di carico
  • Non siamo in grado di determinare visivamente un'approssimazione molto precisa di tale punto

In casi del genere, ci possono venire in aiuto gli algoritmi di risoluzione approssimata delle equazioni. Per una trattazione opportuna di tali metodi, si rimanda a [5] (che include anche interessanti implementazioni dei relativi algoritmi in MATLAB); noi useremo, per semplicità, il metodo di bisezione. Dato il circuito

Possiamo scrivere l'equazione:

I_s(e^{\frac{V_D}{V_T}} - 1) - \frac{E - V_D}{R} = 0

E assegnando i valori (che prendiamo da un esempio proposto in [6]) alle nostre grandezze:

E = 5V
R = 1kΩ
Is = 10 − 16A

Possiamo ottenere la soluzione che cerchiamo:

syms vd;
r = 1e3;
e = 5;
is = 1e-16;
vt = 25e-03;
n_passi = 100;

id = is * (exp(vd/vt) - 1);
ir = (e - vd)/r;
f = id - ir;

vdgraph = linspace(0, 6, 250);

vdlow = 0;
vdmid = e/2;
vdhigh = e;
for i = 1:n_passi
    vd = vdlow;
    flow = subs(f);
    vd = vdmid;
    fmid = subs(f);
    
    if((flow * fmid) < 0)
        vdhigh = vdmid;
    else
        vdlow = vdmid;
    end
    
     vdmid = (vdhigh + vdlow) / 2;   
end

for i = 1:250
    vd = vdgraph(i);
    idgraph(i) = subs(id);
    irgraph(i) = subs(ir);
end

vd = vdmid;
vdfinal = vpa(vd, 4);
idfinal = vpa(subs(id), 4);

plot(vdgraph, idgraph, vdgraph, irgraph, vdfinal, idfinal, '-ok');
axis([0 6 0 0.04]);
txt = ['Id = ', char(idfinal), ' A'];
txt2 = ['Vd = ', char(vdfinal), ' V'];
text(4.2, 0.03, txt);
text(4.2, 0.028, txt2);
Output dello script

Output dello script

Nel codice, abbiamo usato alcune funzioni "nuove", che vediamo qui elencate e spiegate:

FUNZIONE DESCRIZIONE
vpa(sym, d) Converte un valore simbolico in un floating point con d cifre significative
axis([xmin xmax ymin ymax]) Imposta gli estremi degli assi del grafico
text(x, y, txt) Scrive il testo alle coordinate indicate
char(val) Converte un valore numerico in una stringa

Si notino inoltre la creazione delle stringhe come veri e propri vettori di caratteri e l'utilizzo, per disegnare il grafico, di appositi caratteri (definiti LineSpecs) per specificare lo stile di rappresentazione del punto di lavoro.

A margine, una piccola nota per i più curiosi: ovviamente, nella sua estesa libreria MATLAB prevede una funzione in grado di risolvere da sè l'equazione, ed è la funzione

solve(eqn, var)

Tuttavia, si è scelto di procedere comunque alla scrittura dell'algoritmo, dato che presentare il banale utilizzo dell'apposita funzione non avrebbe avuto alcun valore didattico.


CONCLUSIONI

Abbiamo visto alcuni piccoli esempi di ciò che si può fare con MATLAB; ovviamente, avremmo potuto vedere tanto altro: analisi in frequenza, progetto di filtri e controllori, analisi da schema a blocchi... davvero, MATLAB può svolgere tantissimi compiti utili. Per vedere tutto questo, però, avremmo dovuto appesantire la trattazione con opportuni rimandi teorici ed un'opportuna analisi del linguaggio di programmazione (qui ridotta davvero al minimo necessario)... di fatto, l'articolo avrebbe dovuto assumere un tono molto meno leggero del voluto.
Naturalmente, gli esempi proposti sono tutti banali e facilmente risolvibili anche a mano... ma da un articolo introduttivo e propositivo, sarebbe stupido aspettarsi altrimenti: di solito, chi si avvicina per la prima volta ad un linguaggio di programmazione trova conforto nella possibilità di poter verificare con carta e penna la corrispondenza tra il codice scritto e gli algoritmi che voleva implementare.


BIBLIOGRAFIA

[1] R.V. Dukkipati: "MATLAB: an introduction with applications", New Age, 2010
[2] R. Perfetti: "Circuiti elettrici", Zanichelli, 2013
[3] Documentazione ufficiale di MATLAB
[4] R.C. Jaeger, T.N. Blalock: "Microelectronic circuit design", McGraw-Hill, 2016
[5] G. Monegato: "Metodi e algoritmi per il calcolo numerico", CLUT, 2008
[6] N. Storey: "Electronics: a systems approach", Pearson, 2013

22

Commenti e note

Inserisci un commento

di ,

Wow, l'articolo ha dato il via ad una discussione molto accesa :)
Deltax: come ho specificato a fine articolo, gli esempi che propongo sono volutamente semplici e risolvibili in cento altri modi con anche maggiore rapidità. L'idea è di proporre degli esempi estremamente banali che mostrino cosa MATLAB può fare e come dirgli di farlo, non proporre dei casi di studio realistici.
Tra l'altro, apro una parentesi: io (sempre per quel discorso legato alla semplicità) non l'ho mostrato esplicitamente, ma è ovvio che MATLAB, potendo maneggiare le espressioni simboliche, è tranquillamente in grado di svolgere per conto suo tutte le elaborazioni "manuali" che io ho trascritto.

Già che ci sono, chiarisco la mia posizione e ciò che mi ha spinto a scrivere l'articolo:
(1) Concordo con Theremino quando dice che a volte l'utilizzo di supporti informatici è bistrattato e sottovalutato, ma ovviamente non ritengo che il loro utilizzo possa prescindere da un'adeguata conoscenza teorica, ed è per questo che nel mio articolo ho inserito opportune citazioni e rimandi a tutto quanto sta dietro ciò che propongo.
(2) L'articolo, come chiarisco più volte nel testo stesso, intende mostrare agli elettronici (ovvero, tutti coloro che si occupano di elettronica, siano essi ingegneri o meno) un possibile metodo - ribadisco: UN POSSIBILE metodo, non IL metodo - per automatizzare alcune cose che altrimenti potrebbero portargli via un po' di tempo (siamo chiari: siano cinque o cinquanta equazioni, una volta scritto del codice decente lo script rimane quello, al massimo bisogna riscrivere la matrice iniziale ed un paio di indici), approcciare il suo lavoro da un altro punto di vista, magari farsi venire delle idee nuove, nel frattempo capire come davvero lavorino SPICE e analoghi software (di fatto, in molti casi usare MATLAB come ho proposto vuol dire semplicemente scrivere in modo esplicito gli algoritmi su cui si basano i simulatori... un esempio indiretto e banale l'ho fatto con il caso del transistor: in effetti, quello proposto nell'articolo è né più né meno che il codice di un banalissimo, impreciso, rudimentale simulatore di dispositivi).

Rispondi

di ,

Theremino, vedi solo ciò che vuoi vedere. Qui dentro c'è già da tempo chi fa ampio uso degli strumenti di calcolo attuali e li consiglia. Guarda ad esempio questo articolo di 8 anni fa di RenzoDF che definisce LTSpice Superconsigliatissimo, guarda il blog di g.schgor, guarda dentro gli articoli di IsidoroKZ.

Rispondi

di ,

Admin, gli attrezzi numerici, come tutti gli attrezzi, vanno usati bene altrimenti possono essere fuorvianti, pericolosi, anti-istruttivi, eccetera... Ma trovo eccessivo e noioso continuare a ripeterlo, sia esplicitamente, sia con frasi velatamente negative. Come mai qui nessuno ne parla con gli aggettivi che meritano, cioè definendoli "utilissimi, meravigliosi e incredibilmente precisi strumenti"? Se nessuno lo fa trovo giusto farlo notare.

Rispondi

di ,

Mah, Theremino, forse sei tu che hai voluto leggere nel titolo quello che volevi leggere per poter dire quello che volevi dire. Io non ho colto nel titolo quel suono che è giunto a te. Io ho solo visto un ragazzo che desiderava illustrare la potenza di calcolo di uno strumento informatico quale Matlab, e lo ha fatto prendendo in esame i circuiti elettrici ed i sistemi di equazioni che occorre risolvere per analizzarli. Non si è "abbassato" ad usare Matlab, ma ha trovato in Matlab uno strumento così potente da sentire il desiderio di condividerne la conoscenza con un suo articolo. Forse è più condivisibile la critica al titolo fatta da deltax, ma anche questa credo sia andata molto al di là delle reali intenzioni di wruggeri.

Rispondi

di ,

Fedhman: mi dispiace, ma la risposta non è pertinente. Nel senso, dici cose giuste ma che non vanno a rispondere alla mia "critica" mossa al topic. La mia critica era: se il tuo scopo è risparmiare tempo, non vai a modellare le eq. ai nodi/maglie con matlab, lo fai con spice. Il motivo della velocità è molto semplice: con SPICE disegni il circuito e lo risolvi con un click, invece con matlab che ti risolve solo un equazione matriciale devi metterti a mano a costruire la matrice. Finchè è una matrice 3x3 magari perdi 5 minuti, quanto perdi nel caso di un circuito che genera una matrice 100x100? Questo era l'unico e solo "contenzioso", che poi matlab possa fare altre cose fantastiche che tu hai linkato è indubbio, ma non c'azzecca niente in questo caso. Inoltre, i circuiti parametrizzati si possono fare con SPICE sia per via grafica sia con gli script SPICE, quest'ultima cosa credo equivalga più o meno a scrivere codice in MATLAB (credo perchè non l'ho mai fatto). @ TUTTI GLI ALTRI: è inutile che vi fate seghe mentali su ingegnere smanettone vs ingegnere matematico. In italia gli ingegneri che vengono assunti che escono dall'università imbottiti di teoria (che raramente, per mancanza di tempo, comprendono a pieno) vanno a lavorare in aziende con fondi R&D dificoli e si mettono a fare gli ingegneri smanettoni. Mestiere ai quali non sono, giustamente, abiutuati, e quindi prendono schiaffoni (professionamente parlando). Morale della favola: in questo paese essere l'ingegnere matematico non serve a una fava, anzi non serve essere ingegnere, un BUON perito è capace di ricoprire la quasi totalità dei lavori da elettronico che vengono rifilati nelle aziende italiane agli ingegneri elettronici. Poi potete filosofeggiare quanto volete sull'esperienza dell'ingegnere smanettone VS l'analiticità dell'ingegnere matematico, ma se volevo discutere dei massimi sistemi mi iscrivevo appunto a filosofia, non andavo a rompermi il c*lo 5 anni su rotori e spazi di Hilbert per riempire excel

Rispondi

di ,

Ci provo ancora con altre parole: Il titolo di questo articolo "per l'elettronico che ha poco tempo", suona come un abbassarsi a usare qualcosa di inferiore ed è per questo che ho cercato di compensare con quello che ho scritto. Io non trovo affatto "inferiore" utilizzare una macchina per risolvere sistemi di equazioni. Se neanche così si capisce ci rinuncio.

Rispondi

di ,

Admin, quello che volevo dire aveva, perlomeno nelle mie intenzioni, un significato molto diverso da quello che scrivi nel tuo ultimo commento. Evidentemente non riesco a esprimere bene quello che penso e non mi faccio capire. Pace, ci ho provato...

Rispondi

di ,

Theremino, ma ti pare che coloro che hanno dato e continuano a dare il loro contributo tecnico e scientifico ad Electroyou non sappiano usare o non usino computer, calcolatrici e simulatori? Forse secondo te non usano l'oscilloscopio ed altri strumenti di misura? E saper usare come si deve la matematica come ausilio per un progetto è segno di mancanza di intelligenza, o assenza di volontà di capire? Non credi sia sensato l'invito ad usare ogni strumento con senso critico, con la consapevolezza di ciò che lo strumento ci può dare, senza considerarlo una divinità di cui accettare ogni risposta? La sua risposta è indipendente da come lo si usa?

Rispondi

di ,

Saper maneggiare sistemi di equazioni complessi è un'arte ammirevole, non lo metto in dubbio. Sono capacità difficili da imparare, come giocare a scacchi da gran maestro. Ma per quanta bravura si possa acquistare sarà sempre insufficiente, i calcoli fatti a mano sono troppo lenti e troppo facilmente pieni di errori per avere utilità pratica. Abbiamo imparato come costruire macchine che fanno questi calcoli meglio di noi e anche se a qualcuno non piace bisognerà accettarlo.

Rispondi

di ,

La parola "saldatore" stava a indicare attrezzi in genere (oscilloscopio, mouse, strumenti di misura, spice, software, internet, intelligenza, saper dove trovare le informazioni, voglia di capire, etc...). Quello che invece, secondo me, non è necessario è la capacità di risolvere sistemi di venti equazioni. Anzi non solo non è necessario ma è del tutto inutile, esattamente come sono ormai inutili le tabelle dei logaritmi o dei seni e coseni.

Rispondi

di ,

Theremino, premesso che sono d'accordo sui toni e sono anche io convinto che se un ingegnere sa usare ANCHE il saldatore sarà più "completo", il paragone col pilota non è molto calzante. Un ingegnere progetta, non pilota. Se sa pilotare meglio...ma in elettronica il paragone col pilota è più attinente a chi collauderà o userà i circuiti progettati dall'ingegnere.

Rispondi

di ,

Mi scuso per i termini ma rimango della mia idea

Rispondi

di ,

Sarebbe sempre meglio evitare parole poco gentili, ma naturalmente ognuno ha diritto di avere le proprie idee. Io comunque resto della mia opinione, l'ho spiegata bene con l'esempio del pilota e non mi farò coinvolgere in una polemica.

Rispondi

di ,

Theremino ha scritto:
E gli ingegneri NON devono passare troppe ore a fare i matematici, altrimenti non passeranno abbastanza ore con il saldatore in mano e non saranno mai buoni ingegneri.
Beh, che dire: non ho proprio niente contro l'ingegnere con il saldatore in mano, anzi, ma giudico molto infelice il messaggio che per diventare un buon ingegnere elettronico bastino le ore passate con il saldatore in mano. Gli ingegneri non sono dei matematici, ma devono saper usare la matematica per eseguire correttamente i calcoli necessari ai loro progetti, o, se non eseguirli direttamente, saperli impostare correttamente per farli eseguire alle macchine di cui dispone. Il saldatore non è sufficiente per acquisire tale capacità, come non basta saper usare la cazzuola per essere in grado di progettare un ponte.

Rispondi

di ,

Theremino ha scritto:
Nessuna buona volontà e nemmeno secoli di studio della matematica possono rendere l'essere umano così abile da avere una simile "visione dall'alto", mancano proprio i neuroni e la velocità di calcolo. Concludo con il consiglio di non fermarsi a metà strada ma di risolvere questo tipo di circuiti direttamente con Spice.
Perdonami ma non diciamo fesserie
Theremino ha scritto:
mancano proprio i neuroni e la velocità di calcolo
parla per te
Theremino ha scritto:
E gli ingegneri NON devono passare troppe ore a fare i matematici
Non diciamo cazzate per favore

Rispondi

di ,

Fa sempre piacere leggere qualcosa su MATLAB. @deltax: poter manipolare sistemi parametrizzati su MATLAB è utile e può far risparmiare tempo in alcuni contesti. Si può far variare i valori anche su spice, però su MATLAB si sta comodi.
Mi faccio pubblicità:
Questo articolo per fare diagrammi di Bode:
Diagrammi di Bode e metodo dei nodi con matlab
Importare forme d'onda da LTspice:
LTSpice IV forme d'onda su Matlab
Plottare funzioni:
Matlab: disegnare funzioni ad una variabile
Grafici a doppia scala, che fanno da ossatura a Bode:
Disegnare grafici a doppia scala con Matlab
Eval, per sovietizzare un po' MATLAB:
Matlab eval e metodi sovietici

Rispondi

di ,

MATLAB è uno strumento potente ma pur sempre uno strumento. Le equazioni sono state sviluppate a mano e poi è stato delegato il calcolo ad un software ma il metodo risolutivo risiede nell'impostazione della soluzione che viene formulata sfruttando studio competenze e perchè no .... anche la fantasia. Ho trovato l'articolo interessante per gli esempi semplici ma vari. Si vede chiaramente l'impiego della parte di algebra lineare e di calcolo numerico indispensabili per la soluzione numerica del problema. Ci sono anche le parti relative alla programmazione procedurale che non guastano mai nella preparazione ingegneristica. Mi permetto solo un appunto che può essere utile quando si utilizza MATLAB per calcoli intensivi ; evitare i cicli "for" ed impiegare come alternativa la notazione vettoriale ed i prodotti scalari .... sono molto più efficienti e consigliati anche dalla Mathworks. A me l'articolo è piaciuto e ti ho dato un voto positivo.

Rispondi

di ,

Spero che il mio dubbio sia leggittimo e non venga letto come spocchia. Il titolo sottolinea che quello descritto è un metodo per "ingegneri con poco tempo". Ma allora qual'è lo scopo di far scrivere a questo malcapitato ingegnere le equazioni alle maglie e ai nodi, sistemarle in forma matriciale, metterle in MATLAB per ottenere infine il risultato? Non si guadagna un infinità di tempo mettendo il circuito in uno dei tanti simulatori SPICE gratis che con un solo click ti mostrano tutte le correnti e le tensioni del circuito? In fondo si sta parlando di risparmiare tempo, non di altro. Se poi si voleva mostrare didatticamente come usare MATLAB per risolvere circuiti ok, ma in tal caso il titolo mi sembra fuorviante, giacchè l'utilità del metodo non risiede nella velocità, non essendo il metodo più veloce per risolvere il circuito. Un meno sensazionalistico "come risolvere circuiti con MATLAB" avrebbe forse risolto l'ambiguità.

Rispondi

di ,

Giusto, sapere cosa aspettarsi è importante. Ma questo non vuol dire allenarsi fino a saper risolvere sistemi da venti equazioni. Mi spiego meglio con un esempio: Un pilota deve "sapere cosa aspettarsi" dal motore, ma se passa troppe ore a studiare i sistemi di equazioni della termodinamica, non passerà abbastanza ore al volante e non sarà mai un buon pilota. Anche nella elettronica oltre ai matematici ci vogliono i piloti (ingegneri). E gli ingegneri NON devono passare troppe ore a fare i matematici, altrimenti non passeranno abbastanza ore con il saldatore in mano e non saranno mai buoni ingegneri.

Rispondi

di ,

Ti ringrazio per l'apprezzamento e per il voto... e credo che la pensiamo più o meno nello stesso modo: fermo restando che bisogna avere ben presente cosa si sta facendo e soprattutto cosa il simulatore sta facendo (ma è ovvio: se non conosci la teoria che vuoi far applicare ad un programma, non potrai mai capire i suoi risultati!), non avvalersi dell'opportuno aiuto informatico in molti casi assume i tratti di una scelta di principio.

Rispondi

di ,

Comunque un ottimo articolo, come piacciono a me, concetti principali senza addentrarsi in troppi particolari (se servono c'è Internet). Merita sicuramente un voto.

Rispondi

di ,

Giusto! Vorrei solo sottolineare la frase "e ti rendi conto di avere davanti un sistema di ben 20 equazioni! Altro che buona volontà". Ed è proprio per questo che c'è gente che nei quaranta anni passati ha messo tutta la sua buona volontà, alcuni gran parte della loro vita, per sviluppare software per l'elettronica. Questi software possono maneggiare sistemi da centinaia di equazioni e ci danno un vera "vista" sui flussi di elettroni. Sono una specie di protesi per un senso che ci manca. Nessuna buona volontà e nemmeno secoli di studio della matematica possono rendere l'essere umano così abile da avere una simile "visione dall'alto", mancano proprio i neuroni e la velocità di calcolo. Concludo con il consiglio di non fermarsi a metà strada ma di risolvere questo tipo di circuiti direttamente con Spice.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.