Você está na página 1de 46

TESI

Soluzioni progettuali preliminari per un banco di prova per


riduttori a vite senza fine
Matteo Ragni
# Version: 1.1

Aprile, 2012

Capitolo 1

Introduzione
1.1
1.1.1

La trasmissione a vite senza fine


Perch`
e le trasmissioni a vite senza fine?

I riduttori a vite senza fine hanno largo impiego in ambito meccanico, sia industriale che civile, per le caratteristiche di rigidezza e robustezza, difficilmente ottenibili da trasmissioni di
altro tipo. La forte diffusione di motori elettrici, sistemi elettromeccanici che forniscono coppia
massima ad alte velocit`
a angolari, spesso eccessive per la maggior parte delle applicazioni, favoriscono la diffusione di queste trasmissioni a vite, che abbassano drasticamente il numero di giri
in favore di una coppia maggiore allalbero lento, mantenendo il sistema motore-trasmissione
` pratica comune vedere aziende leader nel settore (Siedi dimensioni estremamente ridotte. E
mens, Bonfiglioli, etc.) presentare come voce dei cataloghi soluzioni pre-assemblate di motoretrasmissione. Il costo di questa trasmissione spesso risulta essere inferiore rispetto ad altri tipi,
a parit`
a di rapporto di trasmissione. Ma non `e tutto oro quello che luccica: si deve infatti
considerare che la geometria dei corpi evolventi a contatto con assi sghembi vede un incremento
di attrito, talvolta sufficiente ad azzerare la reversibilit`a del meccanismo (dove per reversibilit`a
si intende inversione di fusso di potenza, ovvero rendere lalbero veloce, che contiene la vite,
lalbero condotto). Questo porta ad un sistema vulnerabile a carichi impattivi e a picchi di
coppia, situazioni che devono essere intercettate e analizzate a livello di design ogniqualvolta si
faccia uso di questo tipo di trasmissione (per un esempio si veda 2.2.1, al punto 2).
La pratica industriale prevede limpiego di acciai bonificati per albero veloce e vite, e la
formatura di ruote condotte in bronzo. La scelta di questi materiali `e di natura puramente
pratica: essendo pi`
u facile la formatura di una ruota elicoidale, si tende ad utilizzare per questa
materiale sacrificabile al fine di massimizzare la vita della vite. Purtroppo, le regole di mercato
oggigiorno incidono su queste scelte: il costo del bronzo sale vertiginosamente di anno in anno
a causa della presenza di rame in lega con lo stagno, costringendo le aziende a cercare soluzioni
alternative. In questo contesto si pone la presente tesi: la ricerca di nuovi materiali richiede una
campagna di prove sperimentali per valutare il comportamento a fatica del materiale sostitutivo.

Figura 1.1: Un esempio di motore con trasmissione (fonte: K


ahlig Antriebstechnik GmbH)

1.1. LA TRASMISSIONE A VITE SENZA FINE

1.1.2

Analisi della trasmissione

Geometria e cinematica
Nella trasmissione si possono identificare diversi parametri geometrici, che incidono sulle forze
di contatto che trasmettono la potenza meccanica dallalbero veloce allalbero condotto. La
trasmissione `e formata da:

 una vite (worm), solitamente motrice, di geometria simile ad una vite di manovra, avente
denti formati da filetti elicoidali a profilo trapezoidale. I filetti che si avvolgono sul cilindro
di nocciolo possono essere pi`
u di uno; in questo caso si dice che la vite ha Z principi;

 una ruota elicoidale (wormgear), solitamente condotta. La linea di contatto si sviluppa


lungo una curva al fine di ottimizzare la distribuzione del carico per garantire resistenza
maggiore. Le dimensioni geometriche della ruota sono quelle tipiche delle normali ruote
dentate, e la loro formatura `e ottenuta per mezzo di un processo di taglio con un tool
chaimato hob, avente le stesse dimensioni geometriche della vite.

Al fine di ridurre le pressioni locali, si utilizzano due accorgimenti di disegno: lapice dei denti
della ruota inviluppa la vite perfettamente cilindrica oppure la vite assume la geometria detta
globulare al fine di inviluppare la ruota cilindrica. Come illustrato in figura 1.2, possono esserci
varie combinazioni di queste soluzioni:

Figura 1.2: A sinistra, vite cilindrica, in alto, e vite globulare, in basso (fonte: [1]). A destra uno
schema delle possibili configurazioni della trasmissione (tratto da: [3])

Nonostante questo, le primitive del moto possono essere schematizzate da una circonferenza
che rotola senza strisciare su una retta.

CAPITOLO 1. INTRODUZIONE

Figura 1.3: Configurazione geometrica della trasmissione (fonte: [2])

Identifichiamo alcune dimensioni geometriche fondamentali:


dpv diametro primitivo vite;
Z numero di principi;
angolo di inclinazione della vite;
n angolo delica;
c distanza tra gli interassi;
dpr diametro primitivo ruota elicoidale;
p passo assiale della vite, passo radiale della ruota;
m modulo della vite/ruota
A differenza degli altri rotismi, il rapporto di trasmissione non dipende dal rapporto tra i
diametri, ma dipende dal rapporto tra il numero dei principi della vite e il numero dei denti
della ruota:
Z
v
=
(1.1)
=
r
Zr
Tipicamente, langolo di inclinazione `e legato allangolo delica. Come vedremo pi`
u avanti
linsieme di questi due parametri ha influenza sul valore massimo di attrito della trasmissione:
n

20

25

25

35

30

45

Tabella 1.1: Esempio di alcuni valori n

Solitamente le viti presentano da uno a quattro principi, la scelta di questo parametro dipende dalla potenza meccanica che interessa il rotismo. Parametro fondamentale che caratterizza
la vite risulta essere langolo di inclinazione, definito dalla relazione:
tan() =

L
Zm
=
dpv
dpv

(1.2)

1.1. LA TRASMISSIONE A VITE SENZA FINE

Il dimensionamento del dente pu`o essere effettuato con le seguenti relazioni:


av

= m

bv

(1.3)

(2.2 cos() 1) m

mentre per quanto riguarda il diametro esterno e di nocciolo:


dev

dpv + 2 av

dnv

dpv 2 bv

(1.4)

La lunghezza complessiva della vite dipende dal numero di denti della ruota Zr e dal numero
di principi della vite stessa Z:
bvite > (1 + 2 Zr )m
(1.5)
Z

Zr min

1..2

11

0.06

17..18

12.5

0.09

26..28

Tabella 1.2: Coefficienti della equazione 1.5 (fonte: [4])

Il diametro primitivo della ruota `e definito a partire dal modulo, che i due componenti del
rotismo condividono. Mediande il diametro primitivo si ricavano anche diametro esterno ed
interno:
dpr

m Zr

der

dpr + 2av

dnr

dpr 2bv

(1.6)

Figura 1.4: Geometria dei diametri e dellarea di contatto (fonte: [4])

In drives con Z > 1, larco effettivo di ingranamento risulta essere inferiore rispetto a quelli
con Z = 1, pertanto `e possibile ridurre lo spessore effettivo della ruota:
Z

bruota

1..2

bruota < 0.75 dev

>3

bruota < 0.67 dev

Tabella 1.3: Equazioni di dimensionamento dello spessore della ruota (fonte: [4])

CAPITOLO 1. INTRODUZIONE

Langolo di esposizione 2, rappresentato nella figura 1.4, usato indirettamente nei calcoli a
fatica, pu`
o essere ottenuto trigonometricamente dal rapporto:
sin() =

bruota
dev 0.5 m

(1.7)

I parametri dei denti della ruota possono essere estratti dalla seguente tabella:
Dimensione

Formula (mm)

Addendum

ar = 0.3183 p

Profondit`
a massima

ht = 0.6866 p

Profondit`
a di lavoro

hk = 2ar

Dedendum

br = ht ar

Tabella 1.4: Coefficienti parametrici di dimensionamento del dente della ruota.

Noti i parametri geometrici `e facile identificare linterasse di trasmissione c:


c=

dpv + dpr
Z + Zr
=m
2
2

(1.8)

Queste sono solo alcune delle indicazioni utili al dimensionamento geometrico della vite.
La scelta dei materiali si basa su alcune considerazioni generali:
 la vite `e il componente del rotismo avente la velocit`a pi`
u elevata, quindi il materiale
costituente deve avere una ottima resistenza alla abrasione (materiale rigido);
 la ruota `e il componente a bassa velocit`a, soggetto quindi allincremento di calore dovuto
alla componente di strisciamento, per questo motivo deve essere costituita da un materiale
avente una alta conducibilit`
a termica;
 i componenti sono in strisciamento relativo, quindi la scelta deve considerare una coppia
di materiali che presentano basso coefficiente di frizione.
I materiali tipicamente utilizzati, con alcune caratteristiche meccaniche, sono elencati nella
tabella 1.5.
Per approfondire ulteriormente il design geometrico del rotismo si dovrebbe fare riferimento
a normative specifiche, come la DIN-3974, per quanto riguarda la normativa europea, e la
AGMA-6022 [3], della normativa statunitense.

Dinamica e rendimento
Sebbene lanalisi geometrica e cinematica sia applicabile per una trasmissione diretta che inversa del moto, lanalisi dinamica sar`
a effettuata considerando la vite motrice e la ruota condotta.
Questo tipo di trasmissione risulta essere in ambito pratico lo standard de facto, vista lelevata
dispersione di potenza per attrito nel meccanismo inverso. Lanalisi di un meccanismo invertito richiederebbe solo semplici considerazioni sulla direzione delle forze. Si ipotizza inoltre di
analizzare una vite ad avvolgimento destro.

1.1. LA TRASMISSIONE A VITE SENZA FINE

Figura 1.5: Equilibrio delle forze di contatto (fonte: [1])

Gli assi sono considerati sghembi perpendicolari, si ha quindi una reciprocit`a tra le forze (in
versori cilindrici: assiale, radiale, tangenziale) che si trasmettono dalla vite alla ruota:
FA,vite

= FT,ruota

FR,vite

= FR,ruota

FT,vite

= FA,ruota

(1.9)

la forza assiale della vite, FA,vite , tende ad assumere valori particolarmente elevati, e porta
alla generazione di una componete di attrito che non pu`o essere trascurata, soprattutto nel
comportamento a fatica.

Figura 1.6: Forze sul dente in presa della vite (fonte: [1])

CAPITOLO 1. INTRODUZIONE

Dalla figura 1.6 con semplici considerazioni geometriche si ricavano i moduli delle forze:
FA,vite

Fn (cos(n ) cos() f sin())

FT,vite

= Fn (cos(n ) sin() + f sin())

FR,vite

= Fn sin(n )

(1.10)

con f coefficiente di attrito.


Queste forze sono del tutto analoghe a quelle delle viti di manovra. Trascurando il rendimento dei cuscinetti su cui si poggia lalbero con la vite, si possono riscrivere le forze precedenti
in funzione della coppia fornita allalbero T :
FT,vite =



2T
2
Fn =
T = T
dpv
dpv (cos(n ) sin() + f sin())

(1.11)

dove = (n , , dpv , f )1 non pu`


o essere ritenuto un parametro geometrico: la variabile di
attrito f risulta, infatti, essere funzione della velocit`a di strisciamento2 vs della vite (f = f (vs )),
oltre che del tipo di materiale e delle condizioni di lubrificazione, come segue:

Figura 1.7: A sinistra vediamo la geometria della velocit`


a di strisciamento, a destra `e raffigurata la
variazione del coefficiente di attrito in funzione della velocit`
a (fonte: [1]).

Le equazioni 1.10 possono essere riscritte con lausilio della 1.11:


FA,vite

= T (cos(n ) cos() f sin())

FT,vite

= T (cos(n ) sin() + f sin())

FR,vite

= T sin(n )

(1.12)

e semplificate come segue:

1 []
2v

= m1
= 0.5v dpv / cos()

FA,vite

= A T

FT,vite

= T T

FR,vite

= R T

(1.13)

1.1. LA TRASMISSIONE A VITE SENZA FINE

con:
A

2
dpv

2
dpv

2
dpv

cos(n ) cos() f sin()


cos(n ) sin() + f sin()

(1.14)


sin(n )
cos(n ) sin() + f sin()

Esplicitare la funzione del coefficiente di attrito in un determinato range di velocit`a pu`o essere
importante, `e quindi necessario trovare una funzione analitica che esprima questo coefficiente.
La via pi`
u semplice potrebbe essere tramite lespressione del rendimento, che nella trasmissione
pu`
o essere facilmente misurato mediante lausilio di due torsiometri3 . Il rendimento della trasmissione risulta ovviamente essere dato dal rapporto tra le potenza meccanica in ingresso e le
potenza meccanica in uscita della trasmissione:
=

FT,ruota vr
FT,vite vv

(1.15)

Facendo riferimento alle equazioni 1.13 e 1.9, considerata la relazione tra velocit`a periferica e
angolo : vr /vv = tan(), si ottiene:

A
tan() =
T


cos(n ) cos() f sin()
tan()
cos(n ) sin() + f sin()

(1.16)

Il valore del coefficiente di attrito pu`o essere esplicitato invertendo la relazione precedente,
secondo le seguenti ipotesi:
 il rendimento del sistema di cuscinetti che sostiene lalbero veloce e lalbero condotto
possa essere ipotizzato unitario:
cuscinetti 1;
 il regime di lubrificazione della trasmissione possa essere mantenuto sufficientemente
costante a diverse velocit`
a angolari4 ;
 il rendimento sperimentale, misurato indirettamente sia:
= (Ttors,r tors,r )/(Ttors,v tors,v );
f =

( 1) cos(n )
+ tan()

(1.17)

Ottenuta una stima del coefficiente di attrito, `e possibile calcolare il valore delle componenti
cilindriche delle forze delle equazioni 1.13. A tale proposito, `e facile notare che se il valore di
f `e tale da azzerrare la componente assiale della forza sulla ruota, si assiste al bloccaggio (o al
grippaggio) della trasmissione:
FA,vite = 0 f cos(n ) tan()
3 Quasi tutti i torsiometri presenti in commercio montano, oltre al sistema di lettura della deformazione dal
quale valutare la torsione, un encoder ottico digitale, per misurare la velocit`
a angolare.
4 Questa ipotesi risulta essere debole, considerato che la viscosit`
a del lubrificante tende a variare nellarco di
contatto, aumentando in fase di accesso e diminuendo in fase di recesso, a causa del comportamento elastoidrodinamico del lubrificante. Per poter rafforzare tale ipotesi si deve mantenere costante la temperatura del getto
dellolio sulla trasmissione.

10

CAPITOLO 1. INTRODUZIONE

Il problema della potenza termica


La potenza meccanica persa `e dissipata sotto forma di calore; adimesionalmente risulta essere:
1 =

f + f tan()
f + cos()

che a livello di potenza risulta essere:


Q =

f + f tan()
FT,vite vv =
f + cos()
f + f tan()
T v
f cos() + cos(n ) cos()

(1.18)

In funzione delle caratteristiche geometriche della cassa, la temperatura della trasmissione pu`o
essere ottenuta utilizzando la relazione di scambio di calore:
Q = CA (to tamb )
dove i parametri C e A rappresentano rispettivamente il coefficiente di scambio termico5 , che
tiene conto sia di contributi di scambio convettivi che conduttivi, e la superfice di scambio
termico della cassa6 . Risolvendo la equazione si ottiene la temperatura dellolio:
to =

f + f tan()
1
T v + tamb
CA f cos() + cos(n ) cos()

(1.19)

a regime, le temperature dellolio non dovrebbero superare i 93C, sia per evitare un danneggiamento delle propriet`
a reologiche e tribologiche del fluido, sia per scongiurare eventuali
attacchi chimici sulla superficie dei denti. Soprattutto per la resistenza a fatica, questo parametro pu`
o essere considerato fondamentale. La stima della temperatura dellolio, grazie alla
equazione precedente, pu`
o essere ottenuta mediante una sonda di temperatura (termoresistenza
o termocoppia) applicata alla cassa della trasmissione.
Dimensionamento della trasmissione
Sono diverse le cause che possono portare a rottura la trasmissione:
 Cedimento del dente, dovuto principlamente a:
. sovraccarichi;
. cedimento per fatica alla base del dente;
. scorrimento plastico;
 Danno superficiale del dente:
. usura, che pu`
o portare a fenomeni di grippaggio;
. pitting o vaiolatura, fenomeno di fatica superficiale;
I fattori di influenza fondamentali sono, oltre la coppia e il materiale, la velocit`a di strisciamento
periferica relativa tra le superfici a contatto: a differenza delle altre tipologie di trasmissioni
a corpi volventi, la trasmissione a vite lavora principalmente a strisciamento, per questo deve
essere sempre prevista la lubrificazione delle superfici a contatto, al fine di poter massimizzare
il carico.
5 [C]
6 [A]

= W K 1 m2 , solitamente stimato mediante lausilio di grafici sperimentali.


= m2 , per normativa [3] larea della cassa deve essere A 14 c1.7 , escluse eventuali alettature e flange.

1.1. LA TRASMISSIONE A VITE SENZA FINE

11

Figura 1.8: Daneggiamento del dente in funzione di coppia e velocit`


a (fonte: [2])

Nel caso di trasmissioni a vite, la principale forma di danneggiamento risulta essere di natura
superficiale, con la formazione di una vaiolatura dalla quale potr`a generare e propagare una
cricca che porta alla generazione di schegge, alla esportazione del dente o anche di una porzione
di ruota, cause di possibili grippaggio.

Figura 1.9: Esempio di pitting superficiale. A fianco, delle fratture propagate nel dente hanno
generato delle scaglie (fonte: [5]).

Il grippaggio `e particolarmente dannoso se la ruota `e di materiale ad elevata durezza, come


bronzo duro o ghisa. In questo caso, infatti, lintensit`a del grippaggio pu`o abradere rapidamente
i denti e saldare per imprintamento particelle di materiale incrudito sui filetti della vite. Se
la ruota `e di materiale pi`
u debole, invece, si assiste ad uno spalmaggio delle particelle della
ruota sul filetto della vite e, di conseguenza, si osserva il fenomeno di pitting superficiale sui
denti della ruota. In entrambi i casi, il componente che raggiunge prima le condizioni limite
risulta essere la ruota, dato che la vite `e di materiale pi`
u resistente, di conseguenza le relazioni
di dimensionamento sono studiate sulla geometria della ruota elicoidale, ponendo enfasi sulla
resistenza a fatica superficiale.
La relazione di dimensionamento a rigidezza si basa su un adattamento empirico della relazione di Lewis. Utilizzando direttamente la relazione originale, si ottiene una trasmissione che
non presenta problemi a livello di resistenza del dente, ma a livello di deformazione del cilindro
della vite, che si comporta come una trave soggetta a flessione,a causa della geometria intricata
e delle condizioni di attrito di trasmissione e generazione di calore, che nella teoria originale di
Lewis sono ipotizzate trascurabili. La seguente correzione empirica fu formulata nel 1957 da
Thomas e Chatchut:
v
u
H
u
(1.20)
m 12.45 u
3
bruota
t
kn cmat
Z nv
p

12

CAPITOLO 1. INTRODUZIONE

nella quale si identificano le seguenti dimensioni: H `e la potenza della trasmissione7 (compresi


eventuali coefficienti di amplificazione del carico); cmat `e un coefficiente di resistenza del materiale8 , ricavabile dal diagramma di figura 1.10 in funzione della coppia di materiali della tabella
1.5, nv la velocit`
a di rotazione della vite in rpm. Il rapporto bruota /p `e solitamente compreso
tra 2 e 2.5. kn `e un fattore che dipende dal numero di denti della ruota:

Ruota Vite

kn = 0.6776 ln(Zr ) 1.3753

Ref.
A
B
1
2
3

Materiale
acciaio C15
acciaio C45
P-bronzo
ghisa
lega Al

Lavorazione
cementato
tratt. term.
colata in sabbia
colata in sabbia
colata in stampo

BHN
600
180..208
60..95
197..241
95 105

Accop.
1, 2, 3
1, 2
A, B
A, B
A

Note

vs < 0.3 ms1

Tabella 1.5: Materiali di trasmissione (fonte: [4])

Figura 1.10: Coefficiente di materiale cmat . La linea continua `e per trasmissioni in bagno dolio,
mentre la linea tratteggiata `e per trasmissioni lubrificate tramite getto dolio (fonte:
[4]).

Per il dimensionamento a resistenza a fatica superficiale del dente, solitamente si segue una
serie di equazioni progettuali definite allinterno della normativa [3]:
FT,ruota

0.8
13.2 103 Cs dpr
b2 C m C v

d1.8
pr

60 H
13.2 106 n2 Cs b2 Cm Cv

(1.21)

I fattori Cx possono essere calcolati analiticamente mediante le relazioni di tabella 1.6, dove il
modulo `e m = dpr /Zr , e il numero di denti della ruota `e Zr = Z. Solitamente, il modulo ottenuto dal processo di dimensionamento, dalle relazioni 1.20 e 1.21, `e arrotondato alle dimensioni
standard. A questo punto, il diametro della vite non pu`o essere ancora definito con precisione:
come parametro iniziale si tende a scegliere un rapporto tra i diametri dpr /dpv conpreso tra 3
e 6, in seguito si procede ad un dimensionamento secondo la relazione di Navier, considerando
un diametro di stress: ds = dpv 2.5 m. Se h `e la distanza tra i cuscinetti e il punto medio
7 [H]
8 [c]

=W
= MP a

1.1. LA TRASMISSIONE A VITE SENZA FINE

13

della vite, e la componente normale allasse della vite `e Fb =


la tensione dovuta a flessione della vite:
amm =

q
2
2
, si pu`o scrivere
+ Ft,vite
Fr,vite

M ds
(Fb h)(ds /2)
=
I 2
(d4s /64)

(1.22)

mediante la quale valutare il diametro di stress:


r

8Fb h
amm

(1.23)

dp = ds + 2.5 m

(1.24)

ds =

e quindi il diametro della vite `e:

Linsieme di queste relazioni permettono di dimensionare la trasmissione.

Lavorazione

Coefficiente di superficie Cs (bronzo)


dpr
Cs

Colato in sabbia

dpr < 200mm


dpr 200mm

Cs = 520.2 475.5 log10 (dpr )


Cs = 1000

Colato in forma

dpr < 200mm


dpr 200mm

Cs = 771.3 455.8 log10 (dpr )


Cs = 1000

Colata centrifuga

dpr < 200mm


dpr 200mm

Cs = 999.2 476.5 log10 (dpr )


Cs = 1000

Coefficiente di rapporto di trasmissione Cm


Cm

6 < < 20

Cm = 0.020( 2 + 40 76)0.5

6 < < 20

Cm = 0.0107( 2 + 56 + 5145)0.5

6 < < 20

Cm = 1.148 0.00658

vs

Coefficiente di velocit`a Cv
Cv

0ms1 < vs < 3.5ms1

Cv = 0.659 vs0.197

3.5ms1 < vs < 15ms1

Cv = 0.651 vs0.571

vs < 15ms1

Cv = 1.096 vs0.774

Tabella 1.6: Calcolo dei coefficienti di correzione (fonte: [4])

Forze sui cuscinetti


Conoscendo le forze di trasmissione, `e molto facile definire le forze sui cuscinetti, considerando
i due alberi isostatici, applicando gli equilibri a traslazione e rotazione.

14

CAPITOLO 1. INTRODUZIONE

Figura 1.11: Esempio di equilibrio sullalbero della ruota (tratto da: [4])

Le stesse equazioni e definizioni sono valide sia per i cuscinetti dellalbero della vite che per
i cuscinetti dellalbero della ruota:

RAx + FT + RBx

RAy FR + RBy

RAz + FA

FR h1 FA

FT h1 + RBx h2

FT

dp
+ RBy (h1 + h2 )
2

dp
2

la cui soluzione `e (in A il cuscinetto che agisce come vincolo assiale, oltre che radiale, allalbero;

1.1. LA TRASMISSIONE A VITE SENZA FINE

in B il cuscinetto che agisce solo da vincolo radiale):



h1

1
R
=
F

Ax
T

h2

dp
h1
A :=
RAy = FR
FA +
FR

2(h1 + h2 )
h1 + h2

RAz = FA

B :=

15

(1.25)

h1
FT
h2

Bx

RBy

h1
dp
FR
FA
h1 + h2
2(h1 + h2 )

Effettuando le dovute sostituzioni mediante le equazioni 1.9 e 1.13 si ottengono le relazioni


specifiche per i cuscinetti dellalbero della vite o della ruota.

16

1.2

CAPITOLO 1. INTRODUZIONE

Considerazioni iniziali

Le Considerazioni iniziali [6] `e il documento che `e stato fornito come specifica tecnica di design della macchina. Allinterno della documentazione si sollevano alcune delle problematiche
fondamentali, come la tipologia di loop da prendere in considerazione:
loop aperto questa tipologia di loop `e la pi`
u semplice, costruttivamente economica e garantisce interasse variabile. La potenza `e completamente fornita dal motore e dissipata su
un freno, che presenta il limite tecnologico dello smaltimento del calore. Lo svantaggio
principale `e dato dalla totale dispersione della energia;

Figura 1.12: Esempio di loop aperto (fonte: [6])

loop elettrico chiuso questa prima tipologia di loop chiuso risulta essere costruttivamente
semplice ma anche costosa, presentando sia motore che generatore. La variabilit`a dellinterasse `e legata alla sfida progettuale di spostare lasse di una delle componenti (motore o
generatore), ma fondamentalmente possibile. Questo tipo di sistema permette un recupero di energia attorno al 75..80%, stima legata principalmente al rendimento dei generatori
elettrici;

Figura 1.13: Esempio di loop elettrico chiuso (fonte: [6])

loop meccanico chiuso questo sistema risulta essere meno costoso rispetto al loop chiuso
elettrico, ma progettualmente molto complicato. Non `e possibile avere interasse variabile
senza sacrificare il recupero di energia. Potrebbe essere molto complicato anche ottenere
delle coppie variabili. Il motore, che fornisce potenza allimpianto, `e di dimensioni minori
rispetto alle altre soluzioni, in quanto deve fornire unicamente la potenza dispersa. Il
recupero di energia si pu`
o attestare attorno all85..90%, in funzione della dispersione di
potenziale elastico o del rendimento degli ingranaggi di ricircolo.

1.2. CONSIDERAZIONI INIZIALI

17

Figura 1.14: Esempio di loop meccanico chiuso (fonte: [6])

Sicuramente, la soluzione di loop aperto non `e accettabile, per leccessiva perdita di potenza non
giustificata. La scelta di un impianto a loop elettrico, rispetto ad un loop meccanico, `e legato
principalmente alla necessit`
a di poter testare trasmissioni con diverse geometrie ed interassi. Il
riduttore `e infatti fornito in diverse geometrie in funzione delle esigenze della azienda fornitrice,
la
:
 necessit`
a o meno di test con parametri geometrici differenti;
 limiti o esigenze legati ai fattori di produzione della azienda.
Altri parametri che possono essere ricavati da queste considerazioni iniziali sono:
 la necessit`
a di effettuare prove con resistenza e picchi di coppia variabile durante la prova,
al fine di generare dei cicli di carico;
 il banco di prova deve essere in grado di generare una pressione di contatto tra 150
2000M P a, al fine di poter studiare la resistenza al pitting;
 un eventuale sistema di controllo sulla temperatura del lubrificante, al fine di intercettare
eventuali fenomeni corrosivi di natura chimica.

Capitolo 2

Il banco di prova
2.1

Divide et impera

Nota la specifica di design della macchina, `e possibile compiere una analisi pi`
u precisa dei suoi
componenti. A partire dalloggetto completo, che ha come funzione la movimentazione della
trasmissione, che a sua volta scarica potenza su un sistema di recupero di energia elettrico,
si pu`
o operare una suddivisione della macchina in quattro elementi che devono cooperare per
ottenere il risultato.
I quattro sistemi fondamentali, dei quali `e fornita una disamina pi`
u approfondita nel documento, sono i seguenti:
 blocco motore: questo sistema converte la energia elettrica in energia meccanica e
la inserisce nel sistema della trasmissione. Per fornire una panoramica sufficientemente
chiara del sistema, si `e scelto di descriverlo seguendo lo stesso percorso che la potenza segue
attraversandolo. In seguito, si implementano eventuali correzioni a questo design iniziale,
secondo le richieste delle normative di riferimento, al fine di garantire la massima sicurezza
allutente. In ultimo, si fornisce una distinta di massima dei componenti necessari, al fine
di ottenere una stima dei costi del progetto.
 blocco generatore: Cos` come il blocco motore, il blocco generatore, destinato alla
conversione della energia meccanica, risulta essere una componente particolarmente complessa del sistema, avendo seri vincoli a livello di normativa per la reimmissione della
energia in rete. Anche qui, la descrizione proceder`a parallela al percorso della potenza
attraverso il sistema. Infine si fornisce la distinta approssimata dei componenti necessari.
 sistema di controllo: in questo sistema si racchiudono tutte le componenti elettroniche,
ad eccezioni di quelle sensoristiche, che concorrono al controllo della macchina e alla estrapolazione dei dati. Si cerca di fornire una ottica diversa dalla pratica industriale standard
dei PLC, in favore di tecnologie di recente sviluppo programmabili che permettano di
abbattere i costi, seppur al prezzo di un maggiore lavoro di programmazione. Lulteriore
vantaggio `e rappresentato dalla opportunit`a didattica di poter costruire da zero il sistema elettronico (che `e anche lunico blocco in bassa potenza), piuttosto che utilizzare
un sistema chiavi in mano.
 telaio: questa componente non `e stato analizzato nel dettaglio, ma `e facile prevedere che
il processo di design, oltre a garantire la rigidezza e la robustezza fondamentali, dovr`a
tenere conto che il sistema presenta diversi elementi a massa sbilanciata rotanti (fondamentalmente il rotore del motore e del generatore) che possono generare delle armoniche
di ampiezza notevole a frequenze variabili durante la prova. Il progetto di un eventuale telaio dovrebbe mantenere la frequenza prima superiore alla frequenza massima di rotazione
del sistema, o prevedere un sufficiente smorzamento di eventuali componenti di risonanza,
soprattutto nelle fasi transitorie di accensione e spegnimento. Per poter effettuare questa
18

2.1. DIVIDE ET IMPERA

19

analisi `e necessario conoscere con precisione le caratteristiche dei blocchi motore, generatore e di trasmissione montati sul telaio, al fine di conoscere la distribuzione delle masse
su di esso, argomento che non pu`o essere affrontato in questa sede preliminare.
Come gi`
a accennato nelle considerazioni preliminari, il blocco di trasmissione `e considerato un
sistema a se stante, e quindi preso in considerazione solo come black-box, di cui si conosce la
geometria, collegata al sistema mediante due flange. Nonostante ci`o, `e possibile effettuare tutte
le misure necessarie mantenendo i sensori allesterno della cassa.
Nominalmente, si prevede di fornire al riduttore 20kW di potenza meccanica.

Blocco Motore

RST

Trasmissione

Sistemi di
controllo
WAN

Blocco Generatore
Telaio
Potenza Meccanica
Potenza Elettrica
Sensoristica e attuazione. Interscambio dati.

Figura 2.1: Lo schema generale della macchina

20

CAPITOLO 2. IL BANCO DI PROVA

2.2

Blocco motore

Il blocco motore fornisce la potenza meccanica allimpianto necessaria a movimentare la trasmissione. Questo sistema deve essere in grado di convertire la energia elettrica in energia
meccanica ed essere in grado di valutare la potenza assorbita dalla rete elettrica.

2.2.1

Composizione del sistema

La analisi del sistema pu`


o essere effettuata seguendo il percorso effettuato dalla energia attraverso limpianto.
 La potenza, in uscita dalla linea trifasica, incontra un wattmetro (inserzione Aron). Questo elemento `e necessario a valutare la potenza complessiva assorbita da tutta la macchina.
Esistono in commercio molti modelli di questo tipo di elementi, che implementino anche
una uscita ModBUS (RS485), mediante la quale sarebbe possibile ottenere la lettura digitalmente da parte del sistema di controllo. Spesso, questo elemento `e incluso allinterno
del convertitore AC/AC;
 La potenza elettrica giunge al convertitore AC/AC. Questo elemento `e formato da una
serie di raddrizzatore di tensione e di inverter PWM. Mediante questi due elementi la
onda sinusoidale in ingresso `e raddrizzata e in seguito modulata in frequenza. La tensione
in uscita modulata permette di definire la velocit`a del motore sincrono che si trova a valle.
I convertitori possono presentare uninterfaccia ModBUS attraverso la quale definire la
frequenza della onda che dovr`
a essere modulata. Sono elementi molto costosi, ma hanno
al contempo un rendimento molto elevato.
 La potenza elettrica modulata `e convertita in potenza meccanica mediante un motore
sincrono. Questa tipologia di motori, in corrente alternata, devono il proprio nome al
fatto che la velocit`
a angolare dellasse meccanico `e uguale alla frequenza della tensione di
alimentazione. Il motore dovrebbe avere potenza nominale di ca. 23.5kW . Un elemento
elettro-meccanico rotante porta alcune problematiche secondarie in caso di malfunzionamento che devono essere approfondite. Un eventuale grippaggio della trasmissione, che
porta ad un blocco dellalbero, si riflette a livello elettrico con un dannoso picco di corrente sullavvolgimento dello statore, che pu`o portare al danneggiamento irreversibile del
motore. Per intercettare questa condizione dannosa si pu`o predisporre la presenza di
un giunto elastico che smorzi il carico impulsivo di grippaggio trasformandolo in energia
di deformazione elastica. La stessa situazione di picco di corrente si presenta nella fase
di transitorio allavvio del motore. Questa situzione solitamente `e intercettata a livello
di convertitore AC/AC, modulando, oltre che in frequenza, in ampiezza la tensione di
alimentazione.
 Lalbero del motore `e collegato al resto del sistema mediante un giunto elestico, per i
motivi segnalati sopra.
 La potenza meccanica passa allalbero dei sensori. Questo albero, isostatico, `e necessario
per determinare la coppia e la velocit`a di rotazione mediante lutilizzo di un torsiometro
e un encoder ottico.
 Un giunto flangiato collega direttamente lalbero dei sensori allalbero della trasmissione.
La scelta di un giunto di questo tipo `e necessario per garantire la rigidezza tra lalbero della
vite e lalbero dei sensori. Si deve considerare una eventuale rottura per tranciamento
del collegamento: in questo caso si osserva una improvvisa accelerazione che pu`o essere
pericoloso. Valutando, a livello elettronico, la derivata del segnale del torsiometro, se
questa risulta essere fortemente negativa, il sistema deve arrestare il motore.
Le normative di riferimento per la produzione di un oggetto di questo tipo sono:
1. CEI EN 98/37/EN: Direttiva macchine;
2. CEI EN 72-1: Direttive e potenze nominali per macchine elettriche rotanti;

2.2. BLOCCO MOTORE

21

3. IEC 60034: Rotating electrical machines;


4. IEC 60204: Safety of Machinery,
5. IEC 61508: Functional Safety of Electrical/Electronic/Programmable Electronic Safetyrelated Systems 1 ;
6. IEC 62061: Safety of machinery Functional safety of safety-related electrical, electronic
and programmable electronic control systems, pensando di garantire un SIL2 = 3, ovvero
una probabilit`
a di failure pericolosa (P HFd ) nellordine di probabilit`a: 107 < P HFd
8
10 , la pi`
u bassa possibile 3 ;
7. CEI EN 89/336/EEC: Electromagnetic compatibility (EMC).
Di seguito un diagramma funzionale del sistema:
RST

Interruttore
differenziale
magneto-termico

Wattmetro

Loopback e
configurazione
cicli di carico

Convertitore AC/AC

M 3~

Sistemi
di controllo

Motore

Giunto elastico

Torsiometro
Encoder

Giunto flangiato

Trasmissione
Potenza Meccanica
Potenza Elettrica
Sensoristica e attuazione. Interscambio dati.

Figura 2.2: Diagramma del blocco motore

1 In

Italia ne fa riferimento: CEI 64-8: Impiantistica elettrica di base.


Integrity Level
3 In Italia ne fa riferimento: CEI 44-16: Equipaggiamento elettrico delle macchine: Sicurezza funzionale dei
sistemi di comando e controllo elettrici, elettronici ed elettronici programmabili - Norma CEI EN 62061.
2 Safety

22

CAPITOLO 2. IL BANCO DI PROVA

2.2.2

Distinta del blocco motore

Nella seguente distinta `e presente la descrizione di alcune caratteristiche nominali e il prezzo di


alcuni degli elementi fondamentali del blocco motore:
Elemento - Marca - Modello
Wattmetro
Compreso nel convertitore

Convertitore AC/AC
Siemens
Micromaster 430
6SE6430-2AD32-2DA0

Motore
Siemens
Sinamics
1FT6134-6SC71

Torsiometro/Encoder
NCTE
Series4000-20001A

Caratteristiche nom.

Prezzo

Perogata = 22 kW
Pout = 29 kV A
Imax = 45 A
PLC progr., ModBUS
Inverter PWM

5140

Popt = 26.2 kW
nopt = 2000 rpm
M = 100 kg
Tmax = 316 N m
Imax = 182 A
Sincrono

3000

Tnom = 20000.1% N m
nmax = 5000 rmp
Magnetico con Encoder

3000

Tabella 2.1: Distinta del blocco motore (le immagini sono tratte dai rispettivi cataloghi)

2.2. BLOCCO MOTORE

23

Torsiometro/Encoder

Giunto Elastico

120

1205

Motore

360

350

Considerati tutti gli elementi costitutivi necessari oltre a quelli fondamentali elencati qui
sopra, e stimato che i componenti devono avere alberi per il trasferimento della potenza di
diametro nominale nel range di 45..60 mm al fine di garantire la condizione di limite di fatica,
si pu`
o definire un costo complessivo del blocco motore attorno i 15000 .
Di seguito `e presentato un diagramma di massima quotato dellingombro e un rendering del
blocco assemblato:

Figura 2.3: Disegno quotato approssimativo dellingombro del blocco motore assemblato

24

CAPITOLO 2. IL BANCO DI PROVA

Figura 2.4: Rendering del blocco motore assemblato, ottenuto dal modello Solidworks

2.3. BLOCCO GENERATORE

2.3

25

Blocco generatore

Il blocco generatore converte la potenza meccanica in potenza elettrica da reimmettere nella rete, regolando, contemporaneamente, il carico in coppia sulla trasmissione attraverso la
regolazione del carico assorbito dallinverter.

2.3.1

Composizione del sistema

Anche in questo caso, per la descrizione del sistema, si far`a riferimento al circuito della potenza
attraverso il blocco, anche se risulta essere leggermente pi`
u complesso del precedente.
 La potenza meccanica giunge ad un secondo albero di sensori, mediante un collegamento flangiato sullalbero lento. Anche in questo caso la scelta `e dettata dai requisiti di
rigidit`
a necessaria per poter effettuare una misurazione sufficientemente precisa. Il pretensionamento della bullonatura del giunto dovr`a essere valutato per garantire rigidit`a
allo scorrimento secondo le relazioni descritte nella normativa UNI-CNR 10011. Il valore di pretensionamento ricavato in questo caso potr`a essere applicato in sicurezza anche
alla flangia presente sullalbero veloce, in quanto il valore massimo di coppia si osserva
sullalbero lento.
 La potenza, applicata allalbero dei sensori, `e misurata mediante lausilio di un secondo
blocco sensoriale, formato da un torsiometro e un encoder ottico, gemello di quello presente
nel blocco motore. Per garantire la possibilit`a di misura su trasmissioni ad interasse
variabile, i cuscinetti dellalbero sensori possono essere montati su una struttura di guida
verticale, simile a quella della figura 2.6(Sistema variazione altezza) :
 Un doppio giunto cardanico riallinea lalbero dei sensori allalbero del generatore.
Traslare verticalmente lalbero dei sensori e si riallinearlo in seguito allalbero del generatore, mantenendo quindi omocineticit`a e rendimento unitario sul sensore, risulta essere
per chi scrive una soluzione migliore rispetto alle altre due soluzioni possibili, ovvero (a)
utilizzare un giunto cardanico tra trasmissione e torsiometro o (b) sollevare lintero blocco generatore. La soluzione (a) presenta un rendimento inferiore allunit`a dipendente dal
tempo, dovuto al doppio giunto cardanico, che aggiungerebbe un fattore di indeterminazione nella misura nellencoder/torsiometro, non garantendoci quindi dei buoni risultati
della prova. La (b), invece, risulta essere tecnicamente poco conveniente da realizzare
a causa dellelevato peso del generatore (per la potenza nominale che abbiamo preso in
considerazione, allincirca 150kg).
Sebbene il giunto cardanico possa essere un pessimo elemento meccanico in una macchina
che deve subire un carico affaticante, utilizzando un albero in acciaio con un altissimo
coefficiente di sicurezza, si pu`
o ipotizzare di lavorare oltre il limite di fatica dellalbero.
Anche senza effettuare i tediosi calcoli di dimensionamento su questo elemento, si pu`o
pensare di utilizzare un albero cardanico per rimorchi agricoli, dimensionati per potenze
molto superiori a quella della nostra macchina, e dal prezzo relativamente ridotto.
 La potenza passa dal giunto cardanico ad un moltiplicatore, che innalza il numero di
giri allabero del generatore. Questo elemento risulta essere critico, quindi deve essere
fortemente sovra-dimensionato, al fine di evitare un eventuale grippaggio
 La conversione da potenza meccanica a potenza elettrica `e affidata ad un generatore in
tensione continua. Questa macchina risulta essere del tutto simile ad un motore in tensione continua, essendo questultimo perfettamente reversibile. Il generatore agisce da
freno sulla intera macchina, e la coppia frenante, considerata una velocit`a angolare costante, `e direttamente proporzionale alla potenza elettrica che si vuole prelevare dai capi
dello statore . Si deve scegliere il motore ponendo particolare attenzione alla tensione e
alla corrente massima che lavvolgimento statorico pu`o sopportare. Nelle fasi di transitorio, infatti, questi due paramentri possono variare fino a valori molto alti, rischiando di
rovinare il generatore.

26

CAPITOLO 2. IL BANCO DI PROVA

 La potenza elettrica prelevata dallavvolgimento statorico `e assorbita da un inverter


DC/AC, che rifasa la portante in modo tale da poterla reinserire in rete senza generare
una interferenza distruttiva. Inverter di questo tipo sono molto complessi, e utilizzati
principalmente nel campo del fotovoltaico, dove la tensione continua prelevata dalla cella
`e rifasata secondo il segnale presente in rete. Lo sviluppo di impianti fotovoltaici e in
generale lauto-produzione e il reinserimento del surplus energetico in rete, ha reso necessaria la stesura di una normativa di riferimento per lallacciamento di generatori in
parallelo alla rete nazionale: DK5940 ed 2.2 4 . Sebbene limpianto sia studiato per una
rete elettrica privata5 sarebbe buona cosa seguire comunque le indicazioni pi`
u importanti
di questa normativa, al fine di garantire la sicurezza a livello di impianto locale. Fortunamente, gli inverter presenti in commercio seguono gi`a la maggior parte delle indicazioni
di normativa, e sono in grado di agire autonomamente su alcuni degli eventi fondamentali
che devono essere intercettati, secondo le indicazioni da normativa. Essenzialmente, per
essere conformi alla normativa, resta da installare un interruttore elettromeccanico tra
linea e inverter.
Le normative a cui si pu`
o fare riferimento sono le stesse del blocco motore.
Di seguito, uno schema funzionale del sistema:
Trasmissione
Sensore termico (PT100)
Giunto
flangiato

Sistema variazione altezza

Sistemi
di controllo

Torsiometro
Encoder
Potenziometro
interasse

Albero
cardanico

Moltiplicatore
di giri

Giunto
elastico

M 3~

Generatore DC

RST

Interruttore
differenziale
magneto-termico

Wattmetro

Inverter DC/IT PWM

Potenza Meccanica
Potenza Elettrica
Sensoristica e attuazione. Interscambio dati.

Figura 2.5: Schema funzionale del blocco generatore

4 Nello

specifico i documenti sono elencati in bibliografia: [7, 8].


rete della facolt`
a di Ingegneria di Trento `
e allacciata alla distribuzione nazionale MT: trasforma in BT
in locale e limpianto presenta uno stadio di batterie, per blackout brevi, e un generatore Rolls Royce Diesel,
che entra in funzione 4 minuti dopo linizio del blackout, collegati in parallelo alla linea.
5 La

2.3. BLOCCO GENERATORE

2.3.2

27

Distinta del blocco generatore

Nella seguente distinta sono presenti le caratteristiche nominali e il prezzo di alcuni degli
elementi fondamentali del blocco generatore:
Elemento - Marca - Modello

Torsiometro/Encoder
NCTE
Series4000-20001A

Caratteristiche nom.
Tnom = 20000.1% N m
nmax = 5000 rmp
Magnetico con Encoder

Prezzo

3000

Albero cardanico
A.M.A. (Acc. Macc. Agricole)
Albero Cardanico Agricolo

Tipo D

200

Moltiplicatore di giri
Non definito

= 1/12

300

Generatore DC
Leroy-Somer
LSK-1604S

Inverter
Siemens
Sinvert
PVM20

Popt = 20.4 kW
nopt = 600 rpm
Vmax = 600 V @ nmax
nmax = 1020 rpm
Magneti permanenti

4000

VIN DC max = 1000 V


IIN DC max = 41 A
IOU T AC max = 29 A
POU T AC = 19.2 kW

7800

Tabella 2.2: Distinta del blocco generatore (le immagini sono tratte dai relativi cataloghi)

28

CAPITOLO 2. IL BANCO DI PROVA

Giunto elastico
Albero Cardanico

Sistema di variazione altezza

Generatore DC
Moltiplicatore di giri
Torsiometro/Encoder

2853

820

580

Considerati tutti gli elementi necessari, per la produzione del blocco generatore si pu`o
stimare un costo di 20000 .
Di seguito `e presentato un diagramma di massima quotato dellingombro6 del blocco generatore e un rendering del blocco assemblato:

Figura 2.6: Disegno quotato approssimativo dellingombro del blocco generatore assemblato

6 Per il generatore si `
e usato lo stesso modello del motore della Siemens, in quanto `
e stato impossibile reperire
dei riferimenti quotati dal catalogo

2.3. BLOCCO GENERATORE

Figura 2.7: Rendering fotorealistico del blocco generatore, ottenuto dal modello Solidworks

29

Capitolo 3

Sensoristica, attuazione e
interscambio dati
3.1

Uno sguardo generale al comparto elettronico

Lanalisi del comparto elettronico verr`a affrontata a livelli successivi, dallottica generale di
quelle che sono le device utilizzate, e quali protocolli le interconnettono, fino ad analizzare in
maniera superficiale piccoli elementi del codice e di configurazioni che si rende necessario a far
funzionare il comparto elettronico in maniera sufficientemente autonoma. Ma prima di fare
questo `e necessario definire degli obbiettivi e dei limiti ben precisi per questo blocco:
 il comparto elettronico deve essere funzionale alla macchina e allutente, garantire una
condizione di minima configurazione ed alta autonomia, al contempo fornire sicurezza
intelligente;
 pilotare autonomamente inverter e convertitore al fine di ottenere il corretto carico dinamico e la corretta velocit`
a angolare;
 registrare i dati forniti dai sensori;
 garantire una interfaccia uomo-macchina remota sia per la presentazione dei dati registrati
che per la configurazione;
 trasformazione dei segnali dei sensori (principalmente voltaggi) in valori aventi significato
fisico (coppia, velocit`
a angolare, etc.). Principamente significa applicare un segnale di
taratura.
 identificare una eventuale situazione di grippaggio e procedere allo spegnimento della
macchina, abilitando al contempo un avvisatore acustico/luminoso del pericolo;
 essere basso costo.
Di seguito uno schema molto semplice del sistema elettronico:
Digital

MSP430

SENSORI
Analog

ATTUATORI

ARDUINO

USB

Raspberry PI

ModBUS

Figura 3.1: Schema del sistema elettronico

30

TCP/IP

3.1. UNO SGUARDO GENERALE AL COMPARTO ELETTRONICO

31

Dal diagramma si nota la presenza dei seguenti componenti fondamentali:


Scheda

Caratteristiche

Prezzo

Raspberry PI ModB

SoC
CPU
GPU
USB
Video Out
Audio Out
Onboard storage
Onboard Network
Power
Power source
OS

Broadcom BCM2835
ARM11 700 MHz
Broadcom VideoCore IV
2 2.0
Composite-RCA, HDMI, DSI
HDMI, 3.5mm jack
Card slot (SD, MMC)
10/100 M BEth (RJ45)
3, 5 W
5 V (microUSB)
Linux (ARM kernel)

Arduino Mega

Microcontroller
Operating Voltage
Input Voltage (nom.)
Input Voltage (limits)
Digital I/O pins
Analog Input pins
DC Current per I/O pins
DC Current per 3.3 V pins
Flash memory
SRAM
EEPROM
Clock

TI MSP430

EEPROM
SRAM
Interfacce seriali
GPIO
Time interrupt

ATMega1280
5V
7..12 V
6..20 V
54 (14 P W M )
16
40 mA
50 mA
128 KB
8 KB
4 KB
16 KHz

8 KB
256 B
UART/I2C/SPI
16
WDT

Tabella 3.1: I tre componenti circuitali fondamentali, con le caratteristiche

41.70

59.30

4.30 $

32

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

3.2

Analisi dei protocolli di comunicazione

Il blocco elettronico si basa su quattro protocolli di comunicazione:


 lettura analogico/digitale dei sensori;
 ModBUS, rete seriale RS485;
 tty USB;
 rete ethernet TCP/IP;
se nellultimo caso il protocollo `e completamente specificato e pronto alluso, nei primi tre si `e
costretti a sporcarsi le mani con un po di elettronica e con molta programmazione per ottenere
gli obbiettivi richiesti. Analizziamo i tre protocolli un po pi`
u nel dettaglio:

3.2.1

Lettura analogico/digitale dei sensori

Ch.A1
Ch.A2

P1.3
P1.4
P1.5
P1.6

P1.2 (UART)

Ch.B1

Torsiometro
Encoder 1

11..28V

Ch.A1

P1.1 (UART)

Digital Port
17 (RX2)
16 (TX2)
Analog Port
0
1
2
3

GND
Ch.A2

ARDUINO MEGA

Ch.B1
Ch.B2

MSP430

In ingresso dalle porte analogiche abbiamo un sensore di temperatura (resistenza variabile), un


sensore di posizione (resistenza variabile), e il torsiometro (tensione proporzionale alla coppia).
La lettura digitale degli encoder `e affidata agli MSP430. Di seguito vediamo lo schema elettrico:

Torsiometro
Encoder 2

11..28V
Ch.B2

PT100
Temperatura

+5V

PT100

R
100

R
100

R
100

Potenziometro
interasse

+5V

Potenz.
(100)

R
100

R
100

R
100

Figura 3.2: Schema elettrico del collegamento dei sensori; nota: anche se non rappresentato, il collegamento seriale tra MSP430 e Arduino deve essere crossed (RXM SP 430 T XArduino e
T XM SP 430 RXArduino )

In primo luogo `e necessario definire il programma della MSP430, che legge il segnale in
ingresso dai tre canali dellencoder ottico e lo trasmette alla scheda Arduino mediante una
connessione seriale. Questo sistema `e utilizzato per diminuire il carico computazionale della

3.2. ANALISI DEI PROTOCOLLI DI COMUNICAZIONE

33

Arduino, e fornire una soluzione integrata. La lettura analogica `e invece affidata ad Arduino,
che monta un convertitore A/D avente maggiore risoluzione. Limplementazione del codice
sorgente per la scheda MSP430 varia molto in funzione del modello specifico, quindi si fornisce
qui solo un codice molto superficiale e carente delle configurazioni delle porte, che deve operare
da traccia per un codice finale:
1
2
3

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* MSP430
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

4
5

# include " m s p 4 3 0 _ S P E C I F I C _ M O D E L _ H E A D E R . h "

6
7
8

# define P1 .1 /* Indirizzo Porta UART TX */


# define P1 .2 /* Indirizzo Porta UART RX */

9
10
11

# define P1 .3 /* Indirizzo Porta Ch B1 */


# define P1 .4 /* Indirizzo Porta Ch A1 */

12
13
14

# define P1 .5 /* Indirizzo Porta Ch B2 */


# define P1 .6 /* Indirizzo Porta Ch A2 */

15
16
17
18
19
20

unsigned
unsigned
unsigned
unsigned
int time

char C1_old = 0 x0 ;
char C2_old = 0 x0 ;
int counter_total = 0;
int counter = 0;
= 0;

21
22

float rpm = 0;

23
24

void main ( void ) {

25

/* Settare watchdog */
WDTCTL =
WDT_MDLY_32 ;

26
27

// Set WDT interrupt ogni 32 ms

28

/* Impostazioni porte digitali encoder */


P1REN =
( P1 .3+ P1 .4+ P1 .5+ P1 .6) ;
// Pull Up / Down R
P1OUT =
( P1 .4+ P1 .5+ P1 .6+ P1 .7+ P1 .8+ P1 .9) ; // R Pull - up

29
30
31
32

/* Impostazione UART ( comunicazione seriale ) */


P1SEL |= ( P1 .2+ P1 .1) ;
// P1 .2 P1 .1 come RX e TX
ME1
|= UTXEO + URXEO ;
// Abilitare UART RX / DX
UCTL0 |= CHAR ;
// Data 8 - bit char
UTCTL0 |= SSEL0 ;
// Clock 32.726 Hz
UBR00 =
/* ins */ ;
// Baud rate 9600
UBR01 =
/* ins */ ;
// " (16 - bit register )
UMCTL0 =
/* ins */ ;
// Tipologia di modulazione
UCTL0 &= ~ SWRST ;
// Inizializza USART
// trasmissione seriale 8 bit 0 parity 1 stop @ 9600

33
34
35
36
37
38
39
40
41
42
43

/* Interrupt delle periferiche */


IE1
|=
WDTIE + URXIE0 + UTXIE0 ; // Abilitare interrupt Watchdog e UART

44
45
46

__ b i s _ S R _ r e g i s t e r ( GIE ) ;

47
48

/* Ciclo di polling infinito , continua a leggere


* le porte in ingresso dei due encoder e mediante
* due XOR nidificati conta le variazioni di posizione */

49
50
51
52

while (1) {

53
54

char C1 = 0 x0 ;
char C2 = 0 x0 ;

55
56
57

C1 = ( P1OUT & P1 .4) ^ ( P1OUT & P1 .3) ;


C2 = ( P1OUT & P1 .6) ^ ( P1OUT & P1 .5) ;

58
59
60

if ( C1 ^ C1_old ) { ++ counter1 };
if ( C2 ^ C2_old ) { ++ counter2 };

61
62
63

C1_old = C1 ;
C2_old = C2 ;

64
65

66
67
68

};

69
70
71
72

// Watchdog Timer interrupt service routine


# pragma vector = WDT_VECTOR
__interrupt void watc hdog_ti mer ( void ) {

73
74
75
76

/* Ogni secondo aggiorna il numero di RPM e il conteggio totale */


if ( time > 1000 ) {
rpm1 = counter1 / ( time ) ;

34

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

coun ter_tot al1 = c ounter_t otal1 + counter1 ;


counter1 = 0;

77
78
79

rpm2 = counter2 / ( time ) ;


coun ter_tot al2 = c ounter_t otal2 + counter2 ;
counter2 = 0;

80
81
82
83

tempo = 0;
}
else {
++ time ;
};

84
85
86
87
88
89
90

};

91
92
93
94
95
96
97
98
99
100
101

char * int2string ( unsigned int ) {


/* Funzione da implementare : riceve in ingresso
* un intero e restituisce un puntatore ad un vettore
* di caratteri che rappresentano i singoli
* numeri che formano l intero :
* [1 ,3 ,5]* = int2string (135) ;
* Si ricorda che la funzione itoa () non fa parte delle
* librerie standard , ecco perch`
e si richiede una i mp l em en ta z io ne
* manuale della funzione */
};

102
103
104
105

void sendstring ( char * stringa ) {


/* Funzione che invia una serie di byte che
* compongono il vettore di caratteri stringa */

106

int i ;
for ( i = 0; i < strlen ( stringa ) ; i ++) {
while (!( IFG1 & UTXIFG0 ) ) ;
TXBUF0 = stringa [ i ];
}

107
108
109
110
111
112

};

113

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133

// UART RX interrupt
# pragma vector = U SA RT 0 RX _V EC T OR
__interrupt void usart0_rx ( void ) {
/* Questa funzione invia due paramentri di lettura : RPM e
* conteggio totale dei cicli . In ricezione richiede un
* carattere 1 per il primo encoder e il carattere 2 per
* l encoder 2 */
if ( RXBUF0 == 1 ) {
sendstring ( R ) ;
sendstring ( int2string (( int ) rpm1 ) ;
sendstring ( C ) ;
sendstring ( int2string ( c ounter_ total1 ) ;
};
esle if ( RXBUF0 == 2 ) {
sendstring ( R ) ;
sendstring ( int2string (( int ) rpm2 ) ;
sendstring ( C ) ;
sendstring ( int2string ( c ounter_ total2 ) ;
};
};

Per eventuali approfondimenti sulla programmazione di microcontrollori MSP430 si faccia


riferimento a: [10, 9]. A livello logico il codice lavora in questo modo:

Ch.A [V]

115

A
XOR
Time

A xor B [i]

XOR

Contatore

A xor B [i-1]
Ch.B [V]

114

Sfasamento /4

Time

Figura 3.3: Logica di lettura degli encoder, implementata nel ciclo while infinito (tratto: [13])

La implementazione nella scheda Arduino prevede la lettura dalla MSP430 tramite UART
e la lettura dei segnali analogici tramite il convertitore AD presente on-board. Anche in questo

3.2. ANALISI DEI PROTOCOLLI DI COMUNICAZIONE

35

caso il codice scritto fornisce unicamente una traccia al reale codice che dovr`a essere implementato allinterno della scheda. La facilit`a di programmazione della Arduino rispetto alla MSP430
risulta essere evidente.
1
2
3

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ARDUINO
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

4
5
6
7

/* Definizione delle porte analogiche


* a cui sono collegati i sensori . Per un
* riferimento si guardi lo schema elettrico */

8
9
10
11
12

# define
# define
# define
# define

TENS1_APORT 0
TENS2_APORT 1
PT100_APORT
2
VARRES_APORT 3

13
14

/* Dichiarazione e azzeramento delle variabili di lettura */

15
16
17
18
19

int
int
int
int

signal_TENS1 = 0;
signal_TENS2 = 0;
signal_PT100 = 0;
signal_VARRES = 0;

20
21
22

char * signal_ENC1 = null ;


char * signal_ENC1 = null ;

23
24
25
26
27
28
29

/* Funzione di setup : `
e eseguita 1 volta sola */
void setup () {
// impostare la porta seriale
serial2 . begin (9600) ;
// `
e sufficiente una sola lettura del potenziometro
signal_VARRES = analogRead ( VARRES_APORT ) ;

30
31

};

32
33
34

/* Ciclo infinito */
void loop () {

35

// Leggere segnali analogici


signal_TENS1 = analogRead ( TENS1_APORT ) ;
signal_TENS2 = analogRead ( TENS2_APORT ) ;
signal_PT100 = analogRead ( PT100_APORT ) ;

36
37
38
39
40

// Leggere segnali digitali


char * signal_ENC1 = null ;
char * signal_ENC1 = null ;
serial2 . write ( " 1 " ) ;
int i = 0;
while ( serial . avaiable () > 0) {
signal_ENC1 [ i ] = serial . read () // ATTENZIONE ! [ RPM ] = giri / ms
i ++
};

41
42
43
44
45
46
47
48
49
50

serial2 . write ( " 2 " ) ;


int i = 0;
while ( serial . avaiable () > 0) {
signal_ENC2 [ i ] = serial . read ()
i ++
};
/* Elaborare il segnale salvato per i due encoder */

51
52
53
54
55
56
57
58
59

};

Considerando la rappresentazione software e le caratteristiche della scheda Arduino, ogni valore


ha una risoluzione di 1024 bit, sufficienti sia per rappresentare lo sbilanciamento del ponte, che
il valore massimo di tensione in uscita dallencoder. La lettura dei sensori sul ponte pu`o essere
effettuata mediante una taratura lineare: dalla teoria del ponte `e noto che la variazione della
resistenza `e funzione della tensione di sbilanciamento:
R =

1 R
V
4 V0

essendo inoltre la variazione di resistenza lineare alla variazione della grandezza misurata, si ha
nel caso della PT100:


1 R
T = TR0 + BP T 100
V
4 V0

36

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

con [BP T 100 ] = C/. Alcuni modelli di termosonde forniscono un polinomio interpolatore in
funzione della sola variazione di resistenza, la scelta di quale metodo utilizzare `e assolutamente indifferente (questo secondo metodo sar`a implementato nel codice GNU.Octave/Matlab al
paragrafo 3.3.2). La stima della temperatura della trasmissione pu`o essere effettuata mediante
la relazione 1.19. La stessa teoria pu`
o essere applicata al potenziometro, variando unicamente
il valore della costante B e del fondoscala. Questa taratura pu`o essere effettuata a posteriori
dalla Raspberry PI, che si occupa della analisi dei dati. Il segnale del torsiometro risulta essere
molto pi`
u semplice da misurare, essendo un segnale di tensione 0..10 V proporzionale al valore
misurato1 :

C = BT orx V

3.2.2

Implementazione del protocollo modBUS

Per ottenere la comunicazione tra il protocollo ModBUS, che si poggia sullo standard seriale
RS485, e linterfaccia seriale UART presente sulla scheda Arduino `e necessario lausilio di un
supporto hardware (amplificazione operazionale half-duplex del segnale) mediante il seguente
circuito, che `e solo uno dei tanti circuiti di amplificazione compatibile con lo standard. Esistono
soluzioni preassemblate2 , ma il circuito `e talmente semplice che potrebbe essere autoprodotto:

+5V

+5V

+5V

100nF

SP485CN

UART
RX

2.2K
VCC

RE

DE

GND

1K

TX

VCC
R 100

R
BUS
SETUP

RS485

120K

4.7K

R 100

A
GND
+5V

IC1

R
2.2K

Figura 3.4: Circuito UART - RS485

Il collegamento di una rete RS485 pu`o essere effettuato secondo lo schema di loop chiuso a
tre nodi, con un master e due slave, come presentato di seguito:

1 Ad
2 Ad

esempio, per il torsiometro indicato: BT orx = (4.076 mV /N m)1


esempio: RS422/RS485 Mini Board presso Futurlec

3.2. ANALISI DEI PROTOCOLLI DI COMUNICAZIONE

37

+5V

R
560

ARDUINO

NODO 1 (master)

+5V

TX
BUS
SETUP

TX

TX

A
R
120

BUS
SETUP

TX

B
R

R
560

NODO 2 (slave)

Convert. AC/AC

NODO 3 (slave)

Inverter DC/AC

100

B
R
GND
100

B
R
GND
100

R
120

Figura 3.5: Loop chiuso a 3 nodi RS485: un master, Arduino, e 2 slave, inverter e convertitore (tratto
da: [11])

Limpostazione hardware non `e sufficiente a garantire il collegamento, ma si deve fornire


anche la implementazione software del protocollo ModBUS. Fortunatamente per Arduino sono
disponibili librerie open source (ad esempio, essendo il microcontrollore un AVR ATMega128,
ci si pu`
o appoggiare al progetto FreeModBUS) che ci permettano di focalizzare lattenzione
unicamente sulla implementazione dei soli messaggi che devono essere interscambiati tra controllore e slaves. Questa implementazione non `e approfondita nel presente documento, a causa
di una carenza di materiale informativo che riguarda inverter e convertitore scelti, ma si parla
principalmente della definizione di una serie di stringhe che devono essere inviate attraverso
linterfaccia seriale. Limpostazione della scheda Arduino per operare su ModBUS, basandosi
sulla documentazione del progetto FreeModBUS[12], potrebbe essere la seguente:
1
2
3

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ARDUINO
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

/* La seguente porzione di codice `


e una riscrittura del codice
* segnalato in bibliografia . Di seguito la licenza originale :
*
*
* FreeModbus Libary : AVR Demo Application
* Copyright ( C ) 2006 Christian Walter < wolti@sil . at >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERC HA NT AB I LI TY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/

22
23
24
25
26

/* Inclusione di librerie del m i c r o c o n t r o l l o r e AVR ATMega128 */


# include " avr / io . h "
# include " avr / interrupt . h "

27
28
29
30

/* Inclusione della libreria FreeModbus */


# include " mb . h "
# include " mbport . h "

31
32

/* Definizioni e variabili statiche */

38

33
34

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

# define RE G_ IN P UT _S TA R T 1000
# define RE G_ IN P UT _N RE G S 4

35
36
37

static USHORT u sR eg I np ut St a rt = RE G_ I NP UT _S T AR T ;
static USHORT usRegInputBuf [ R EG _ IN PU T_ N RE GS ];

38
39
40
41

/* DEFINIZIONE NODI DEL CIRCUITO */


# define N O D O _ C O N V E R T I T O R E 0 x31 // Nodo 1
# define NODO_INVERTER
0 x32 // Nodo 2

42
43
44

/* Impleme nt a zi on e di funzioni ModBUS */

45
46

eMBErrorCode eMBRegInputCB ( UCHAR * pucRegBuffer , USHORT usAddress , USHORT usNRegs ) {

47

eMBErrorCode
int

48
49

eStatus = MB_ENOERR ;
iRegIndex ;

50

if ( ( usAddress >= R EG _I N PU T_ S TA RT )
&& ( usAddress + usNRegs <= RE G_ I NP UT _S T AR T + R EG _ IN PU T_ N RE GS ) )
{
iRegIndex = ( int ) ( usAddress - u sR e gI np ut S ta rt ) ;
while ( usNRegs > 0 )
{
* pucRegBuffer ++ =
( unsigned char ) ( usRegInputBuf [ iRegIndex ] >> 8 ) ;
* pucRegBuffer ++ =
( unsigned char ) ( usRegInputBuf [ iRegIndex ] & 0 xFF ) ;
iRegIndex ++;
usNRegs - -;
}
}
else
{
eStatus = MB_ENOREG ;
}

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

return eStatus ;

70
71

};

72
73
74
75
76
77
78

eMBErrorCode
eMBRegHold in g CB ( UCHAR * pucRegBuffer , USHORT usAddress , USHORT usNRegs ,
e MB Re gi s te rM o de eMode )
{
return MB_ENOREG ;
}

79
80
81
82
83
84
85
86

eMBErrorCode
eMBRegCoilsCB ( UCHAR * pucRegBuffer , USHORT usAddress , USHORT usNCoils ,
e MB Re gi s te rM o de eMode )
{
return MB_ENOREG ;
}

87
88
89
90
91
92

eMBErrorCode
eMBRegDisc r e t e C B ( UCHAR * pucRegBuffer , USHORT usAddress , USHORT usNDiscrete )
{
return MB_ENOREG ;
}

93
94

/* ********* ARDUINO MAIN SETUP AND LOOP ********** */

95
96

void setup () {

97

/* Impostare i nodi slave . Riferimento al diagramma */


const UCHAR
ucSlaveID [] = { NODO_CONVERTITORE , NODO_INVERTER };
eMBErrorCode
eStatus ;

98
99
100
101

eStatus = eMBInit ( MB_RTU , 0 x0A , 0 , 38400 , MB_PAR_EVEN ) ;

102
103

eStatus = eMBSetSlaveID ( 0 x34 , TRUE , ucSlaveID , 3 ) ;


sei ( ) ;

104
105
106

/* Abilitare lo stack del protocollo Modbus */

107
108

/* NOTA : Ricordarsi di settare il pin Bus Setup a 1


* nel caso di trasmissione e 0 nel caso di ricezione */
eStatus = eMBEnable ( ) ;

109
110
111
112

};

113
114

void loop () {

115
116

/* La analisi del traffico e


` affidata al ciclo di polling

3.2. ANALISI DEI PROTOCOLLI DI COMUNICAZIONE

117

39

( loop ) della scheda */

118

( void ) eMBPoll (

119

);

120

/* Conteggio del numero di cicli */


usRegInputBuf [0]++;

121
122
123

};

Con le seguenti impostazioni il sistema dovrebbe essere in grado di instaurare la connessione e


linterscambio dati. I messaggi che devono essere implementati devono garantire:
 settaggio delle frequenze nel convertitore (definizione velocit`a di rotazione motore);
 lettura del wattmetro del convertitore;
 lettura della frequenza attuale del convertitore;
 settaggio del carico di assorbimento dellinverter (coppia torcente generatore);
 lettura del wattmetro dellinverter;
 lettura del carico di assorbimento attuale dellinverter.

3.2.3

Protocollo USB Arduino - Raspberry PI

Limplementazione del protocollo di comunicazione tra Raspberry PI e Arduino prevede, da un


lato la stesura di uno script che provvede al corretto settaggiio dellinterfaccia, dallaltro un
paio di righe di codice che aprono il bus seriale. Sulla scheda Arduino si apre la connessione e
si trasmette una stringa che contiene i dati e i byte di controllo che li identificano:
1
2
3

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ARDUINO
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

4
5

/* Variabili e definizioni */

6
7
8
9
10
11
12
13
14
15
16
17
18

typedef struct Se ns or _ Da ta _O U T {
unsigned int time ;
// s
unsigned int rpm1 ;
// ngiri / s
unsigned int torque1 ;
// V
unsigned int rpm2 ;
// ngiri / s
unsigned int torque2 ;
// V
unsigned int pt100 ;
// V
unsigned int wattmetro1 ; // W
unsigned int wattmetro2 ; // W
unsigned int real_freq1 ; // ?
unsigned int real_load2 ; // ?
} SENSOR _D AT A _O UT ;

19
20
21
22
23

typedef struct Sens or_Data _IN {


unsigned int f r e q _ c o n v e r t i t o r e ;
unsigned int freq_inverter :
} SENSOR _DATA_I N ;

24
25

char * s e r i a l _ c h a r _ v e c t o r _ o u t ( SE N SO R_ DA T A_ OU T DataOut ) {

26

/*
*
*
*

27
28
29
30
31

Funzione che trasforma i dati della struct in un vettore di


caratteri separati tra di loro mediante un carattere identi ficativ o ( , )
( CVS Format ) in modo tale che possano essere parsati dallo script che
legger`
a i dati . Il carattere che chiude la trasmissione `
e \ n */

};

32
33

SENSOR_DATA _IN * s e r i a l _ c h a r _ v e c t o r _ i n ( char * DataIn_char ) {

34

/*
*
*
*
*
*

35
36
37
38
39
40
41

Funzione che trasforma i caratteri del vettore DataIn_char in un vettore


di interi che rappresenta le impostazioni dell attuatore .
Il vettore presenta dei caratteri identi ficativi che separano
i due interi . Per l im p le me nt a zi on e di questa funzione si pu`
o
far uso della funzione presente nella estenzaione delle librerie
standard : atoi () */

};

42
43

/* ARDUINO SETUP AND LOOP */

44
45

void setup () {

46
47

Serial . begin (19200) ;

40

while ( Serial . avaiable () =0 ) {};


/* resta bloccato nel ciclo di setup fino
* a quando non e
` disponibile la Raspberry PI .
* In pratica e
` uno switch per attivare la
* macchina solo quando la Raspberry PI
* e
` disponibile */
/* Nella fase di setup si invia il valore della misura
* del potenziometro ( V ) */

48
49
50
51
52
53
54
55
56

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

};

57
58

void loop () {

59

/* Aprire la connessione : quando riceve il byte di lettura R trasmette


* il vettore della lettura , se riceve il byte di scrittura W allora
* riceve il vettore dei dati per l attuattore */

60
61
62
63

SENSOR_D AT A_ O UT _ _ L e t t u r a S e n s o r i = /* Implementare lettura sensori */ ;


SENSOR_DATA_ IN _ _ I m p o s t a z i o n e A t t u a t o r i ;

64
65
66

while ( Serial . avaiable () > 0 ) {


if ( Serial . read () == R ) { /* Invia lettura */
char * Lettur aSensor i = s e r i a l _ c h a r _ v e c t o r _ o u t ( _ _ L e t t u r a S e n s o r i ) ;
int i = 0;
for ( i =0; i < strlen ( Lettur aSensor i ) ; i ++ ) {
Serial . print ( Lettu raSenso ri [ i ] , HEX ) ;
};
};
if ( Serial . read () == W ) { /* Ricevi impostazioni */
char * I m p o s t a z i o n e A t t u a t o r i ;
int i = 0;
char c = Serial . read () ;
while ( !( c == \ n ) ) {
ImpostazioneAttuatori [i] = c;
i ++;
};
__ImpostazioneAttuatori = serial_char_vector_in ( ImpostazioneAttuatori );
};
};

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

/* Da qui in poi la funzione esegue le altre


* funzioni descritte nei precedenti
* blocchi di codice del documento */

87
88
89
90

};

La Raspberry PI opera mediante un sistema operativo Linux, quindi si pu`o fare ricorso allo
scripting bash e alle tty messe a disposizione dal sistema operativo per catturare i dati in
ingresso:
1

# !/ bin / bash

2
3

# Script che inizializza la interfaccia seriale ( tty )

4
5
6

# Check : il codice deve essere avviato come root


if (( $ UID - eq 0 ) ) then

# Config urazion e
ARDUINO_PORT = / dev / ttyUSB0
ARDUINO_SPEED = 19200

8
9
10
11

# Inizia l i z z a z i o n e della tty


stty -F $ ARDUINO_PORT cs8 $ ARDU INO_SPE ED ignbrk - brkint - icrnl - imaxbel - opost - onlcr isig - icanon - iexten - echo - echoe - echok - echoctl - echoke noflsh - ixon - crtscts

12
13
14

# Redirect to fd6 : I / O
exec 6 < $ ARDUINO_PORT

15
16
17
18

else

19

echo " [ EE ] WRONG USER ID , you must be root "

20
21
22

fi

Per ottenere una lettura o una scrittura:


1
2
3
4

# Esempio di lettura
echo -n " R " > / dev / ttyUSB0

# -n elimina la \ n
# al termine della stringa
tail -f / dev / ttyUSB0 >> F I L E _ L O G _ S E S S I O N E . log

5
6
7
8

# Esempio di scrittura
echo -n " W " > / dev / ttyUSB0
echo " C " $ SETTING1 " I " $ SETTING2 # esempio di co nfigura zione

3.2. ANALISI DEI PROTOCOLLI DI COMUNICAZIONE

9
10

41

# C : convertitore AC / AC
# I : inverter DC / AC

Come si `e gi`
a detto in precedenza, qui si presenta solo una implementazione estremamente
semplificata del sistema, si lascia ad uno sviluppo successivo la automatizzazione del processo
(ad esempio linserimento di uno script allinterno della crontab).

42

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

3.3
3.3.1

Fornire intelligenza alla macchina


Memorie a stato solido

Lanalisi dei protocolli di comunicazione garantisce il flusso dati dallhardware analizzato nel
capitolo precedente alla Raspberry PI. Questo flusso di dati `e memorizzato allinterno di un
file di log della sessione. Lordine dimensionale del file di log della sessione si attesta attorno i
1.54 M B 3 per una lettura ogni 5minuti . Sulla scheda `e presente una memoria allo stato solido
(SD Card) sulla quale risiedono sistema operativo e configurazione. Il grande numero di accessi
che vengono effettuati su questa memoria per la scrittura del log di sessione pu`o portare ad un
rapido deterioramento di tale memoria, per questo motivo `e consigliabile spostare la scrittura
sulla partizione di unaltra device (magari anche solo una chiavetta USB, dato che non `e richiesta
una grande velocit`
a di trasmissione), al fine di garantire una maggiore durata alla memoria
contenente alla configurazione del sistema.

3.3.2

Configurazione della Raspberry PI

La maggior parte dei dati salvati nel file di log della sessione non hanno significato fisico, ma
sono rappresentazioni numeriche di variazioni di differenze di potenziale, `e quindi necessario
rielaborare questi dati al fine di ottenere misure aventi significato fisico. Questo passaggio `e
molto importante e dipende dalla configurazione di taratura della macchina, con le costanti di
taratura allinterno di un file testuale, lette da un codice compilato o da uno script, che provvede
alla creazione di un nuovo file con le misure reali. Il nuovo file, contenente le misure passa
attraverso un secondo codice che provvede allestrapolazione delle misure derivate secondo le
equazioni descritte nella sezione 1.1.2. Il compito di questo script `e anche valutare le derivate di
torsione e velocit`
a angolare al fine di identificare eventuali grippaggi e scrivere in un file il numero
1. Se la lettura di questo file riporta come variabile booleana 1, il sistema si deve bloccare
immediatamente perch`e `e presente grippaggio. Una implementazione molto simile potrebbe
essere effettuata a livello di MSP430, che se rileva una accelerazione fortemente negativa sugli
encoder, invia un messaggio di spegnimento alla macchina (in questo caso si potrebbe pensare
ad uno sviluppo di un embedded real-time enviroment, magari programmando il sistema in G
- LabView - invece che in C). Questi sono alcuni dei tanti switch di siurezza che possono essere
implementati nella macchina. A livello analitico tale problema pu`o essere descritto cos`:

n
t2

 0

ST OP

La parte di dati elaborati `e parsata da uno script PHP per lesposizione allutente tramite
una interfaccia web (servita da una istanza lighttpd ). Tramite questa interfaccia si pu`o compiere
anche la funzione inversa, ovvero configurare la macchina e inserire le costanti necessarie alla
elaborazione dei dati in ingresso.
La presenza di un sistema informatico di questo tipo, collegati tramite interfaccia di rete
TCP/IP alla WAN dellUniversit`
a, richiede sicurezza informatica: questa pu`o essere ottenuta
facendo uso di sistemi integrati nel sistema operativo, come le iptables, e implementando un
sistema utente sulla interfaccia web.
Di seguito `e presentato uno schema funzionale di quello che `e stato fino a qui descritto:
3 Ogni call di lettura sensori genera una trasmissione di 80 byte/call. Per una prova di 108 cicli @ 1000 rpm
si suppone una durata di 70giorni . Impostando una chiamata di lettura ogni 5minuti , ovvero 288call/giorno ,
si ottiene 80 byte/call 70giorni 288call/giorno = 16128000 byte 1.54 M B.

3.3. FORNIRE INTELLIGENZA ALLA MACCHINA

USB Input

43

LOG SESSIONE
GNU.Octave
(Matlab)
CONFIGURAZIONE
Script elaborazione dati
TARATURA

USB Output

ARRESTO (1/0)

Script analisi dati

DATI ELABORATI
CICLO DI CARICO
Server WEB (lighttpd)

Script PHP

Pagina di esposizione
e download dei dati

TCP/IP I/O

Pagina di
configurazione

UTENTE

Figura 3.6: Schema di implementazione della Raspberry PI

e un esempio del codice Octave (Matlab) che pu`o essere implementato nella macchina:
1
2
3

% %%%%%%%%%%%%%%%%%%%%%%%
% Matlab / Octave Script %
% %%%%%%%%%%%%%%%%%%%%%%%

4
5

% % Parsa i file di lettura , conf igurazio ne e taratura

6
7
8
9

fid_Lettura = fopen ( LOG_SESSIONE , rt ) ;


f id _C o n f i g u r a z i o n e = fopen ( F I L E _ C O N F I G U R A Z I O N E , rt ) ;
fid_Taratura = fopen ( FILE_TARATURA , rt ) ;

10
11
12
13
14
15
16
17

Lettura = textopen ( fid_Lettura , % f % f % f % f % f % f % f % f % f % f ,


Delimeter , , , CollectOutput , 1 , EmptyValue ,0) ;
Taratura = textopen ( fid_Taratura , % f % f % f ,
Delimeter , , , CollectOutput , 1 ,
EmptyValue ,0) ;
Configurazi one = textopen ( fid_Configurazione , % f ,
CollectOutput , 1 , EmptyValue ,0) ;

18
19
20
21

fclose ( fid_Lettura ) ;
fclose ( f i d _ C o n f i g u r a z i o n e ) ;
fclose ( fid_Taratura ) ;

22
23
24
25
26

% % Struttura di lettura :
% [ Tempo , RPM1 , Torque1 , RPM2 , Torque2 , PT100 ,
%
Wattmetro1 , Wattmetro2 , Real_Freq1 , Real_Load2 ];
% fare riferimento al codice scritto in precedenza .

27
28
29
30
31
32
33
34
35

% % Struttura di c onfigur azione


% [ Psi_n ;
%
Lambda ;
%
Coefficiente di scambio termico ;
%
Area di scambio termico ;
%
Temperatura ambiente ;
%
Diam . prim . vite
% ];

36
37
38
39

% % Struttura di taratura
% [ Taratura torsiometro 1;
%
Taratura torsiometro 2;

...
...
...
...

44

40
41

CAPITOLO 3. SENSORISTICA, ATTUAZIONE E INTERSCAMBIO DATI

%
Vettore coefficienti PT100 (3)
% ];

42
43

clear fid_Lettura f i d _ C o n f i g u r a z i o n e fid_Taratura ;

44
45
46
47
48
49
50
51

% % Eventuali funzioni di taratura


% Funzione di taratura PT100 , esempio polinomio di 2^ grado
function _Temp = TaraturaPT100 ( _coefficienti , _DeltaV )
_Temp = _coefficienti (1) +
...
_coefficienti (2) * _DeltaV + ...
_coefficienti (3) * _DeltaV ^2;
end function

52
53

% Misure

54
55
56
57
58
59
60
61
62
63
64

Time = Lettura (: ,1) /1000;


RPM1 = Lettura (: ,2) *60;
Torque1 = Lettura (: ,3) * Taratura (1 ,1) ;
RPM2 = Lettura (: ,4) *60;
Torque2 = Lettura (: ,5) * Taratura (2 ,1) ;
PT100 = TaraturaPT100 ( Taratura (3 ,:) , Lettura (6) ) ;
Wattmetro1 = Lettura (: ,8) ;
Wattmetro2 = Lettura (: ,9) ;
Real_Freq1 = Lettura (: ,10) ;
Real_Load2 = Lettura (: ,11) ;

%
%
%
%
%
%
%
%
%
%

ms -> s
ngiri / s -> ngiri / m
V -> Nm
ngiri / s -> ngiri / m
V -> Nm
V -> * C
W
W
Hz
Nm

65
66

clear Lettura Taratura ;

67
68

% % Calcolo di grandezze derivate

69
70

% Rendimento totale della macchina

71
72

R e n d i me n t o _ m a c c h i n a = Wattmetro2 /. Wattmetro1

73
74

% Rendimento della trasmissione

75
76

Rendimento _ t r a s m = ( RPM1 *. Torque1 ) /. ( RPM2 *. Torque2 ) ;

77
78

% Coefficiente d attrito

79
80
81

Attrito = (( Re n di me nt o _t ra s - 1) *. cos ( Co nfiguraz ione (1) ) ) /.


( R e n d i m e n t o _ t r a s m + tan ( C onfigur azione (2) ) ) ;

...

82
83

% Temepratura trasmissione

84
85
86
87
88
89

Temp_trasm = (1 / ( Confi gurazio ne (3) * Confi gurazio ne (4) ) ) *


( Attrito + Attrito *. tan ( Confi gurazio ne (2) ) ) *. Torque1 *.
(2 * pi * RPM1 / 60) /.
( Attrito * cos ( Confi gurazio ne (2) + cos ( Config urazion e (1) ) *
cos ( C onfigura zione (2) ) ) + Config urazion e (5) ;

90
91

% Forze di trasmissione

92
93

FT = 2 / Configu razione (6) * Torque1 ;

94
95
96
97
98

FA = 2 / Configu razione (6) * (( cos ( Confi gurazion e (1) ) *


cos ( Co nfigura zione (2) ) ) - Attrito * sin ( C onfigura zione (2) ) ) /.
(( cos ( Con figuraz ione (1) ) * sin ( Co nfiguraz ione (2) ) ) + Attrito *
sin ( Co nfigura zione (2) ) ) *. Torque1 ;

...
...
...

FR = 2 / Configu razione (6) * sin ( C onfigura zione (1) ) /.


( cos ( Conf igurazi one (1) ) * sin ( Con figurazi one (2) ) ) + Attrito *
sin ( Co nfigura zione (2) ) ) *. Torque1 ;

...
...

99
100
101
102
103
104
105

% Volendo si potrebbero implementare anche le funzioni per il calcolo


% del carico sui cuscinetti

106
107

% % Esportazione dati

108
109
110
111
112
113
114
115
116

DATA_EXPORT = [ Time ,
Rendimento_Macchina ,
Rendimento_trasm ,
Attrito ,
Temp_trasm ,
FT ,
FA ,
FR ];

...
...
...
...
...
...
...

117
118

dlmexport ( RISULTATI . log , DATA_EXPORT , delimeter , , , precision ,3) ;

...
...
...
...

Indice
1 Introduzione
1.1 La trasmissione a vite senza fine . . . . . . . .
1.1.1 Perch`e le trasmissioni a vite senza fine?
1.1.2 Analisi della trasmissione . . . . . . . .
Geometria e cinematica . . . . . . . . .
Dinamica e rendimento . . . . . . . . .
Il problema della potenza termica . . .
Dimensionamento della trasmissione . .
Forze sui cuscinetti . . . . . . . . . . . .
1.2 Considerazioni iniziali . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

2
2
2
3
3
6
10
10
13
16

2 Il banco di prova
2.1 Divide et impera . . . . . . . . . . .
2.2 Blocco motore . . . . . . . . . . . . .
2.2.1 Composizione del sistema . .
2.2.2 Distinta del blocco motore . .
2.3 Blocco generatore . . . . . . . . . . .
2.3.1 Composizione del sistema . .
2.3.2 Distinta del blocco generatore

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

18
18
20
20
22
25
25
27

3 Sensoristica, attuazione e interscambio dati


3.1 Uno sguardo generale al comparto elettronico . .
3.2 Analisi dei protocolli di comunicazione . . . . . .
3.2.1 Lettura analogico/digitale dei sensori . . .
3.2.2 Implementazione del protocollo modBUS
3.2.3 Protocollo USB Arduino - Raspberry PI .
3.3 Fornire intelligenza alla macchina . . . . . . . . .
3.3.1 Memorie a stato solido . . . . . . . . . . .
3.3.2 Configurazione della Raspberry PI . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

30
30
32
32
36
39
42
42
42

.
.
.
.
.
.
.

45

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Bibliografia
[1]

R. C. Juvinall - K. M. Marshek, Fondamenti della progettazione dei componenti


delle macchine, Edizioni ETS, Pisa, 1993, 684-696

[2]

V. Fontanari, Progettazione meccanica e costruzione di macchine, slides del corso:


ingranaggi, 2011

[3]

AGMA Standards, Design manual cylindrical wormgearing, ANSI AGMA 6022C93-1993

[4]

A. D. Dimagronas, Machine Design: a CAD approach, Wiley-Interscience, 2001,


877-891

[5]

R. J. Drago, Foundamentals of gear design, Butterworths, 1988

[6]

V. Fontanari, Banco prova per trasmissioni a vite senza fine - considerazioni


preliminari, 2011

[7]

Enel Distribuzione, Criteri di allacciamento di impianti di produzione alla rete


BT di Enel Distribuzione: DK5940 ed.2.2, 2007

[8]

Enel Distribuzione, Criteri di allacciamento di impianti di produzione alla rete


MT di Enel Distribuzione: DK5740 ed.2, 2005

[9]

Gustavo Litovsky, Beginning microcontrollers with the MSP430: Tutorial, Version


0.3

[10]

Texas Instruments, MSP430x2xx: Users guide, 2008

[11]

Jan Axelson, Designing RS-485 Circuits, Circuit Cellar (107), June 1999, 20-24

[12]

Christian Walter per FreeModBUS Project, FreeModbus/Examples/AVR/demo.c@ http://freemodbus.berlios.de/api/index.html, 2006

[13]

Mariolino de Cecco, Note sul principio di funzionamento degli encoder ottici


incrementali, 2011

46

Você também pode gostar