%
% ControlloMotoreCC.tex
%

\documentclass{beamer}

\usepackage{beamerthemeshadow}
\usepackage{listings}
\usepackage{graphics}
\usepackage{times}
\usepackage{algorithm2e}

\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
% \usepackage{amsmath,amssymb} \usepackage[latin1]{inputenc}
% \usepackage{colortbl}
\usepackage[english]{babel}

\newcommand{\erlang}{
\lstset{language=Prolog, basicstyle=\ttfamily\footnotesize,frame=trBL,
  frameround=fttt}}

\newcommand{\erlangsmall}{
\lstset{language=Prolog, basicstyle=\ttfamily\scriptsize,frame=trBL,
  frameround=fttt}}

\newcommand{\clang}{
\lstset{language=Prolog, basicstyle=\ttfamily\footnotesize,frame=trBL,
  frameround=fttt}}

\newcommand{\clangsmall}{
\lstset{language=Prolog, basicstyle=\ttfamily\scriptsize,frame=trBL,
  frameround=fttt}}

\newcommand{\clangtiny}{
\lstset{language=Prolog, basicstyle=\ttfamily\tiny,frame=trBL,
  frameround=fttt}}

\erlang

\newcommand\blue{\color[rgb]{0,0,1}}
\newcommand\green{\color[rgb]{0,0.5,0}}
\newcommand\red{\color[rgb]{1,0,0}}
\newcommand\black{\color[rgb]{0,0,0}}

\newcommand\tape[9]{
\framebox{#1}
\framebox{#2}
\framebox{#3}
\framebox{#4}
\framebox{#5}
\framebox{#6}
\framebox{#7}
\framebox{#8}
\framebox{#9}}

\newcommand\two[2]{
\framebox{#1}
\framebox{#2}}

\newcommand\six[6]{
\framebox{#1}
\framebox{#2}
\framebox{#3}
\framebox{#4}
\framebox{#5}
\framebox{#6}}

\newcommand\three[3]{
\framebox{#1}
\framebox{#2}
\framebox{#3}}

\title[Controllo Motore CC]{Controllo di un Motore Elettrico\\in Corrente Continua}
%%

\author[Corrado Santoro]
       {Corrado Santoro}

\date{ }

\institute[University of Catania]
  {
    \begin{center}
      \textbf{\red{}ARSLAB - Autonomous and Robotic Systems Laboratory}\\
      Dipartimento di Matematica e Informatica - Universit\`{a} di Catania, Italy\\
      \texttt{santoro@dmi.unict.it}\\
      \includegraphics[width=60pt]{robotEscher_Eura_blur.eps}\\%%~~~~\includegraphics[width=80pt]{logo_dmi.png}
      Programmazione Sistemi Robotici\\
    \end{center}
  }



\begin{document}

\frame{\titlepage}



%%
\begin{frame}[fragile]
%%
  \frametitle{Motore Elettrico}
%%
%%
\begin{itemize}
\item\footnotesize{}Un \textbf{\red{}motore elettrico} \`{e} una macchina che trasforma \textbf{energia
  elettrica} in \textbf{energia meccanica}
%%
\item Ci\`{o} \`{e} ottenuto sfruttando le propriet\`{a} del campo magnetico
  %%
\item Esistono differenti tipologie di motori elettrici
  \begin{itemize}
  \item\footnotesize{}Motori in Corrente Continua (DC) o \textbf{\red{}brushed}
  \item Motori in Corrente Alternata (AC) o \textbf{\red{}brushless}
  \item Motori Brushless Speciali (\textbf{\red{}stepper})
  \end{itemize}
  %%
\end{itemize}
%%
\begin{center}
\includegraphics[scale=0.2]{dc_motor.eps}
\end{center}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Motore Elettrico}
%%
%%
\begin{itemize}
\item\footnotesize{}Qualunque motore elettrico \`{e} composto da due parti:
  \begin{itemize}
  \item\footnotesize{}\textbf{\red{}Statore}, parte statica
  \item\textbf{\red{}Rotore}, parte che viene posta in rotazione generando
    l'energia meccanica
  \end{itemize}
%%
\item Una delle due parti \`{e} composta da \textbf{magneti permanenti}
%%
\item L'altra parte \`{e} composta da \textbf{bobine (avvolgimenti) di filo di rame}
  le quali generano campo magnetico al passaggio di una corrente elettrica
%%
\item Il moto viene generato dalla \textbf{\red{}contrapposizione} dei campi
  magnetici generati da statore e rotore
  %%
\item Affinch\`{e} il moto sia assicurato, il campo magnetico sugli
  avvolgimenti \textbf{\red{}deve variare continuamente}
%%
\item La \textbf{velocit\`{a} angolare}
  risultante del motore \`{e} proporzionale all'\textbf{intensit\`{a} del
    campo magnetico}
%%
\item L' intensit\`{a} del campo magnetico \`{e} a sua volta proporzionale
  alla \textbf{tensione/corrente} applicata alle bobine
%%
\end{itemize}
%%
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Motore Elettrico in Corrente Continua (o Brushed)}
%%
%%
\begin{itemize}
\item\footnotesize{}Un motore elettrico in \emph{corrente continua} (DC
  motor):
  \begin{itemize}
  \item\footnotesize{}lo statore \`{e} la \textbf{\red{}cassa esterna},
    composta da magneti permanenti
  \item il rotore \`{e} un \textbf{\red{}insieme di avvolgimenti}
  \end{itemize}
%%
\item Un sistema di \textbf{``spazzole''} (contatti striscianti) permette di variare
  continuamente la \textbf{\red{}polarit\`{a}} della tensione applicata alle
  bobine, comportanto l'\textbf{inversione continua del campo magnetico}
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{brushed_motor.eps}
\end{center}
%%
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Motore Elettrico in Corrente Continua}
%%
%%
\begin{itemize}
\item\footnotesize{}Un motore elettrico in corrente continua \`{e} in grado
  di generare una \textbf{coppia di forze} $T_m$ proporzionale alla tensione
  applicata $V$. La proporzionali\`{a} \`{e} basata sui parametri costruttivi
  del motore \textbf{resistenza elettrica} $R_a$ e \textbf{impedenza}
  $L_a$ dell'avvolgimento:
\[\red{}%%
T_m = f_1(V, R_a, L_a)
\]
%%
\item La \textbf{velocit\`{a} angolare} $\omega$ di rotazione del motore
  \`{e} invece funzione della coppia generata dal motore $T_m$ e della
  \textbf{coppia resistente} $T_r$ cio\`{e} la {\red{}coppia risultante,
    sull'asse del motore, da tutti i carichi che il motore stesso deve
    ``spostare''}:
\[\red{}%%
\omega = f_2(T_m, T_r)
\]
\end{itemize}
%%
%%
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{(Alcuni) Dati Tipici di un Motore Elettrico in Corrente Continua}
%%
%%
\begin{itemize}
\item$\red{}V$, tensione di lavoro (tipicamente 6V, 12V,
  24V, 48V, etc.)
\item$\red{}R_a$, resistenza elettrica dell'avvolgimento di rame
\item$\red{}L_a$, impedenza elettrica dell'avvolgimento di rame
\item$\red{}K_m$, rapporto coppia erogata/corrente assorbita
\item$\red{}T_s$, coppia massima di stallo
\end{itemize}
%%
%%
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Riduttori (Gearbox)}
%%
%%
\begin{itemize}
%%
\item\footnotesize{}I motori DC hanno tipicamente coppie molto basse e
  velocit\`{a} di rotazione molto elevate (nell'ordine di 20-30000
  giri/minuto)
%%
\item\footnotesize{}Per aumentare la coppia si usa collegare
  (meccanicamente) all'asse del motore un \textbf{\red{}riduttore di giri
  (gearbox)}
%%
\item I riduttori sono formati da ingranaggi (ruote dentate) che, in
  funzione del rapporto dei diametri, consentono:
  \begin{itemize}
  \item una \textbf{riduzione di velocit\`{a} angolare}
  \item un \textbf{incremento della coppia generata}
  \end{itemize}
%%
\item In un riduttore $n:1$ si ha:
  \begin{itemize}
  \item\red{}velocit\`{a} angolare risultante = $\frac{\omega}{n}$
  \item\red{}coppia risultante = $nT_m$
  \end{itemize}
%%
\end{itemize}
%%
%%
%%
\begin{center}
\includegraphics[scale=0.15]{Planetary-gear.eps}~~\includegraphics[scale=0.3]{gearmotor.eps}
\end{center}
%%
%%
\end{frame}
%%


%%
\begin{frame}[fragile]
%%
  \frametitle{Controllo di un motore DC}
%%
\begin{block}{}
\begin{center}
\huge{}Pilotaggio di un motore DC
\end{center}
\end{block}
\end{frame}
%%


%%
\begin{frame}[fragile]
%%
  \frametitle{Pilotaggio di un motore DC}
%%
\begin{itemize}
%%
\item In un sistema robotico, i motori sono utilizzati per movimentare le parti
mobili, siano essi ruote di locomozione, o giunti di bracci meccanici
%%
\item Essi sono pilotati dal \textbf{software che implementa gli algoritmi
  di controllo}
%%
\item Occorre pertanto una opportuna {\red{}interfaccia (hardware)} che
  possa   trasformare il \textbf{\red{}dato in uscita dall'algoritmo del
    PID} in   una \textbf{tensione} opportuna da applicare ai capi del motore
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.2]{interfaccia_motore.eps}
\end{center}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Pilotaggio di un motore DC - H Bridge}
%%
\begin{itemize}
%%
\item\footnotesize{}Lo schema di pilotaggio di un motore DC \`{e} costituito da
  \textbf{\red{}quattro interruttori elettronici (transistor MOSFET)} $A,
  B, C, D$  connessi come in figura
%%
\item I quattro interruttori sono pilotati dall'hardware dell'interfaccia
%%
\item La configurazione in figura \`{e} detta \textbf{ponte-H} o
  \textbf{H-bridge}, in quanto ha proprio la forma della lettera ``H''
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{h_bridge.eps}
\end{center}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Rotazione CW \& CCW}
%%
\begin{itemize}
%%
\item\footnotesize{}Se ``attiviamo'' solo gli switch {\red{}$A$ e $D$}, la
  corrente scorrer\`{a} nel verso indicato nella figura a sinistra $\rightarrow$
  {\red{}il motore ruota in senso orario}
%%
\item\footnotesize{}Se ``attiviamo'' solo gli switch {\red{}$B$ e $C$}, la
  corrente scorrer\`{a} nel verso indicato nella figura a destra (opposto
  al caso  precedente) $\rightarrow$  {\red{}il motore ruota in senso
    anti-orario}
%%
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{h_bridge_2.eps}
\end{center}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Modulazione della velocit\`{a} di rotazione}
%%
\begin{itemize}
%%
\item\footnotesize{}La variazione della velocit\`{a} di rotazione \`{e}
  causata dalla variazione della {\red \textbf{tensione}
  applicata del motore}
%%
\item Questo potrebbe essere effettuato \textbf{variando la tensione di
  alimentazione}, tuttavia questa tecnica \`{e} alquanto complessa (dal
  punto di vista circuitale)
%%
\item La tecnica relamente utilizzata prevede invece l'uso di una
  \textbf{sequenza continua e temporizzata} di {\red{}accesione} e
         {\red{}spegnimento} del motore
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{pwm_bridge.eps}
\end{center}
%%
\end{frame}
%%


%%
\begin{frame}[fragile]
%%
  \frametitle{Modulazione della velocit\`{a} di rotazione}
%%
\begin{itemize}
%%
\item\footnotesize{}Gli interruttori $A, D$ (o $B, C$) vengono
  \textbf{accesi} per un tempo $T_{on}$ e \textbf{spenti} per un tempo
  $T_{off}$
\item La sequenza ON/OFF si ripete velocemente nel tempo (a frequenze
  dell'ordine dei KHz)
\item Il \textbf{\red{}segnale di pilotaggio} degli interruttori risulta
  avere un andamento (nel tempo) di questo tipo:
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{pwm.eps}\\
\includegraphics[scale=0.15]{pwm_bridge.eps}
\end{center}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Modulazione della velocit\`{a} di rotazione}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{pwm2.eps}
\end{center}
%%
\begin{itemize}
%%
\item\footnotesize{}Se la {\red{}frequenza \`{e} elevata} gli
  \textbf{effetti induttivi} del motore fanno s\`{i} che la \emph{tensione
    risultante} ai capi del motore sia la \textbf{tensione media (nel tempo)}
%%
\item Pertanto opportunamente \textbf{modulando il rapporto} tra $T_{on}$ e
  $T_{off}$ \`{e} possibile variare la tensione media risultante e
  conseguentemente la \textbf{\red{}velocit\`{a}} del motore
%%
\end{itemize}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Modulazione della velocit\`{a} e segnale PWM}
%%
%%
\begin{itemize}
%%
\item\footnotesize{}Pi\`{u} ampio \`{e} il $T_{on}$ (rispetto a $T_{off}$)
  pi\`{u} alta sar\`{a} la tensione media risultante, e pi\`{u} alta la
  velocit\`{a} di rotazione
%%
\item Questa tecnica di modulazione (nel tempo) di un segnale \`{e} detta
  \textbf{\red{}PWM - Pulse Width Modulation} (Modulazione della larghezza dell'impulso)
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{pwm3.eps}
\end{center}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Output PID e segnale PWM}
%%
%%
\begin{itemize}
%%
\item\footnotesize{}L'interfaccia di pilotaggio del motore \`{e} dunque un
  circuito \textbf{generatore di PWM} che \`{e} connesso agli interruttori
  elettronici del \textbf{ponte-H}
%%
\item Il software (l'algoritmo del PID) produce, in output, un {\red{}valore
  numerico intero} che istruisce il
  circuito PWM a modulare opportunamente $T_{on}$ (rispetto a $T_{off}$)
%%
\item L'intervallo di tale valore numerico dipende dalla
  \textbf{risoluzione in bit} del circuito generatore di PWM
%%
\item Il \textbf{segno} del valore numerico indica il senso di rotazione
  (CW o CCW)
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.15]{interfaccia_pwm.eps}
\end{center}
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Segnale PWM, esempio numerico}
%%
%%
\begin{itemize}
%%
\item\footnotesize{}Consideriamo un circuito PWM con \textbf{12 bit} di
  risoluzione e un
  motore elettrico alimentato a \textbf{12 V}
%%
\item 12 bit (+ segno) implica un valore numerico nell'intervallo
  $\red{}[-4095, 4095]$ ($2^{12} - 1 = 4095$)
%%
\item Pertanto:\\~\\
%%
{\scriptsize%%
\begin{tabular}{||c|c|c|c||}
\hline
\bf Valore & \bf Tensione &  & \\
\bf Numerico & \bf Risultante & \bf Direzione & \bf Velocit\`{a}\\
\hline 4095 & 12 V & CW & MAX\\
\hline 2048 & 6 V & CW & Media\\
\hline 0 & 0 V & - & Stop\\
\hline -3500 & 10.25 V & CCW & Alta\\
\hline -4095 & 12 V & CCW & MAX\\
\hline ... & ... & ... & ...\\
\hline
\end{tabular}}
%%
\end{itemize}
%%
\end{frame}
%%


%%
%%
\begin{frame}[fragile]
%%
  \frametitle{Controllo di un motore DC}
%%
\begin{block}{}
\begin{center}
\huge{}Lettura della posizione\\e della velocit\`{a}
\end{center}
\end{block}
\end{frame}
%%
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Encoder}
%%
%%
\begin{itemize}
%%
\item\footnotesize{}I motori elettrici possono aver collegato (calettato)
  all'asse un \textbf{sensore di posizione} denominato \textbf{\red{}encoder}
%%
\item Un encoder traduce la \textbf{posizione angolare} dell'asse in un
  valore numerico (opportunamente scalato)
%%
\item Gli encoder possono essere:
  \begin{itemize}
  \item Resistivi
  \item Ottici
  \item Magnetici
  \end{itemize}
%%
\end{itemize}
%%
%%
\begin{center}
\includegraphics[scale=0.3]{motore_encoder.eps}
\end{center}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Encoder Ottici}
%%
%%
\begin{itemize}
%%
\item\footnotesize{}Un {\red{}encoder ottico} \`{e} costituito da un disco
  con un insieme di fori (es. 500, 1000, 2000, etc.) che ruota insieme
  all'asse del motore
%%
\item Nella zona dei fori \`{e} presente una coppia
  \textbf{\red{}LED/fotodiodo}
  che rivela il passaggio (o non-passaggio) di luce dai fori
%%
\item La rotazione del disco fa s\`{i} che il fotodiodo produca un
  \textbf{\red{}treno di impulsi} la cui frequenza \`{e} tanto pi\`{u} alta
  quanto pi\`{u} elevata \`{e} la velocit\`{a} di rotazione
%%
\item Il segnale letto dal fotodiodo \`{e} collegato ad un interfaccia
  hardware che effettua il \textbf{\red{}conteggio} degli impulsi generati,
  offrendone il valore al software in una opportuna \textbf{variabile}
\end{itemize}
%%
\begin{center}
\includegraphics[scale=0.25]{encoder.eps}
\end{center}
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Encoder e grandezze misurate}
%%
%%
\begin{center}
\includegraphics[scale=0.25]{encoder.eps}
\end{center}
%%
\begin{itemize}
%%
\item\footnotesize{}Questo tipo di encoder ottico premette di determinare:
\begin{itemize}
\item\footnotesize{}La \textbf{posizione}, {\red{}contando i ``tick''}
\item La \textbf{velocit\`{a}}, calcolando la {\red{}differenza tra i tick in due
  istanti successivi}, e {\red{}dividendola per l'intervallo temporale} tra i due
  istanti
\end{itemize}
\item Tuttavia \textbf{non consente} di determinare il \textbf{\red{}verso
  di rotazione} del motore
\end{itemize}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Encoder in Quadratura}
%%
\begin{itemize}
%%
\item\footnotesize{}Un {\red{}encoder ottico \textbf{in quadratura}} \`{e}
  costituito da un disco con \textbf{due serie concentriche di fori}
%%
\item Nella zona dei fori sono presenti \textbf{due coppie}
  \textbf{\red{}LED/fotodiodo}, denominati canali ``A'' e ``B''
%%
\item I fori sono \textbf{sfasati di ``mezzo tick''} (vedi figura)
%%
\end{itemize}
%%
\begin{center}
\includegraphics[scale=0.45]{quad_encoder.eps}
\end{center}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Encoder in Quadratura}
%%
\begin{center}
\includegraphics[scale=0.25]{q_encoder.eps}
\end{center}
%%
\begin{itemize}
%%
\item\footnotesize{}Lo sfasamento di ``mezzo tick'' comporta che le sequenze generate sui
  canali A e B siano differenti a seconda della direzione CW o CCW
%%
\item Le sequenze di segnali generati sui canali A e B sono:
  \begin{itemize}
    \item\footnotesize{}~CW: {\red{}$AB=01\rightarrow 11 \rightarrow 10 \rightarrow 00
      \rightarrow 01 \rightarrow 11 \rightarrow \dots$}
    \item CCW: {\red{}$AB=01\rightarrow 00 \rightarrow 10 \rightarrow 11
      \rightarrow 01 \rightarrow 00 \rightarrow \dots$}
  \end{itemize}
\end{itemize}
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Encoder in Quadratura}
%%
\begin{center}
\includegraphics[scale=0.20]{q_encoder.eps}
\end{center}
%%
\begin{itemize}
%%
\item\footnotesize{}Le interfacce hardware per questo tipo encoder sono
  dette \textbf{\red{}QEI} - \textbf{Quadrature Encoder Interface}
%%
\item Tali interfacce identificano le differenti sequenze:
  \begin{itemize}
    \item\footnotesize{}~CW: {\red{}$AB=01\rightarrow 11 \rightarrow 10 \rightarrow 00
      \rightarrow 01 \rightarrow 11 \rightarrow \dots$}
    \item CCW: {\red{}$AB=01\rightarrow 00 \rightarrow 10 \rightarrow 11
      \rightarrow 01 \rightarrow 00 \rightarrow \dots$}
  \end{itemize}
%%
\item Il valore del contatore di impulso viene
  \begin{itemize}
  \item\footnotesize{}\textbf{incrementato se CW}
  \item\textbf{decrementato se CCW}
  \end{itemize}
%%
\end{itemize}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Sistema Finale}
%%
\begin{itemize}
%%
\item\footnotesize{}Il sistema complessivo \`{e} pertanto il seguente, ed include
%%
  \begin{itemize}
    \item\footnotesize{}L'algoritmo del PID (software)
    \item L'intefaccia PWM pi\`{u} il ponte-H (hardware)
    \item Il sistema motore + encoder (sistema fisico)
    \item L'intefaccia QEI (hardware)
  \end{itemize}
%%
\end{itemize}
%%
\begin{center}
\includegraphics[scale=0.2]{pid_pwm_encoder.eps}
\end{center}
%%
\end{frame}
%%






%%
\frame{\titlepage}
%%


\end{document}
%%
%%

