Post on 07-Oct-2018
UNIVERSIDADE SÃO FRANCISCOEngenharia de Computação
FÁBIO A. A. COELHO
PROJETO E IMPLEMENTAÇÃO DE UM ROBÔ DO TIPO PÊNDULO INVERTIDO MÓVEL
Itatiba2012
UNIVERSIDADE SÃO FRANCISCOEngenharia de Computação
FÁBIO A. A. COELHO
PROJETO E IMPLEMENTAÇÃO DE UM ROBÔ DO TIPO PÊNDULO INVERTIDO MÓVEL
Itatiba2012
Monografia apresentada ao Curso de Engenharia de Computação da Universidade São Francisco, como requisito parcial para obtenção do título de Bacharel em Engenharia de Computação.
Orientador: Prof. Dr. Claudio K. Umezu
Agradecimentos
Inicialmente agradeço ao meu orientador, Claudio K. Umezu, pela plena disponibilidade
em me ajudar e pelo apoio para a conclusão de mais esta fase.
Agradeço, também, a minha namorada Juliana pelo apoio e pela companhia carinhosa
durante estes longos anos. Ao meu irmão Reginaldo por me mostrar, mesmo que de formas
confusas, a diferença entre o caminho fácil e o caminho que deve traçado.
E de maneira imensurável agradeço meus pais; “Seu Détinho” por me oferecer toda
solidez e segurança e me mostrar o que é ser um “grande” homem, e a “Dona Dêga” (in
Memoriam) que fez valer cada significado possível da palavra “mãe” e, através da incerteza
do amanhã, me ajudou a perceber o valor de cada hoje.
Resumo
O modelo apresentado sob a forma de um pêndulo invertido oferece, devido à sua
natureza essencialmente instável, um desafio interessante para o projeto de um sistema de
controle. E fugindo de sua aplicação conhecidamente acadêmica pode-se encontrar o mesmo
modelo em diversos usos práticos e sofisticados atualmente. como por exemplo, em sistemas
de controle de lançamento de foguetes e em sistemas de estabilidade de guindastes de grande
porte. Este projeto vislumbra, utilizando-se da plataforma Arduino, projetar e implementar um
modelo de pêndulo invertido, representado por um robô de duas rodas capaz de se manter
equilibrado através de um sistema de controle implementado com a técnica PID.
Palavras-chave: Pêndulo, invertido, Arduino, Robô, Controle, PID.
Abstract
The model presented in the form of an inverted pendulum offers due to its unstable
nature essentially, an interesting challenge for the design of a control system. And running
your application knowingly academic can find the same model in various practical uses and
sophisticated nowadays. for example, in control systems for rockets and stability systems of
large cranes. This project envisions, using the Arduino platform, design and implement a
model of inverted pendulum, represented by a two-wheeled robot able to remain balanced
through a control system implemented with the technical PID.
Keywords: Pendulum, inverted, Arduino, Robot Control, PID.
LISTA DE ILUSTRAÇÕES
Ilustração 1: Exemplo de sensores............................................................................................16Ilustração 2: Exemplo de atuadores..........................................................................................17Ilustração 3: Sistema em malha aberta......................................................................................19Ilustração 4: Sistema em malha fechada...................................................................................20Ilustração 5: Funcionamento PID.............................................................................................20Ilustração 6: Atuação da parte proporcional na saída................................................................21Ilustração 7: Atuação da parte integral na saída........................................................................22Ilustração 8: Atuação da parte derivativa na saída....................................................................23Ilustração 9: Modelos de pêndulo invertido..............................................................................24Ilustração 10: Circuito Ponte H.................................................................................................25Ilustração 11: Funcionamento PWM 1......................................................................................26Ilustração 12: Funcionamento do PWM 50%...........................................................................26Ilustração 13: Funcionamento do PWM 30%...........................................................................27Ilustração 14: Microcontrolador................................................................................................28Ilustração 15: Arduino UNO.....................................................................................................29Ilustração 16: Servos.................................................................................................................30Ilustração 17: Desenho inicial do robô.....................................................................................32Ilustração 18: Desenho final do chassi......................................................................................32Ilustração 19: Montagem servos no chassi...............................................................................33Ilustração 20: Montagem dos circuitos.....................................................................................33Ilustração 21: Esquema de ligação da ponte H.........................................................................34Ilustração 22: Esquema de ligação do sensor de aceleração.....................................................34Ilustração 23: Fluxo do programa.............................................................................................35
LISTA DE SIGLAS
CAD
CC
CI
CPU
EPROM
GPL
GPS
ICSP
PID
PWM
RAM
RIA
USB
Computer-aided Design - Desenho auxiliado por computador
Corrente continua
Circuito Integrado
Central Processing Unit - Unidade central de processamento
Erasable Programmable Read-Only Memory - Memória programável
apagável somente de leitura
General Public License - Licença Pública Geral
Global Positioning System - Sistema de Posicionamento Global
In-Circuit Serial Programming - Programação Serial No Circuito
Proporcional Integral Derivativo
Pulse Width Modulation - Modulação por Largura de Pulso
Random Access Memory - Memória de acesso aleatório
Robotics Industries Association - Associação das indústrias da robótica
Universal Serial Bus
LISTA DE TABELAS
Tabela 1: Características do Arduino UNO...............................................................................30
SUMÁRIO
1 INTRODUÇÃO.....................................................................................................................111.1 Objetivo..........................................................................................................................111.2 Metodologia....................................................................................................................11
2 ROBÓTICA...........................................................................................................................132.1 História...........................................................................................................................132.2 Definição – O que é um robô.........................................................................................142.3 Tipos e classificação dos robôs......................................................................................142.4 Sensores..........................................................................................................................162.5 Atuadores........................................................................................................................16
3 CONTROLE DE SISTEMAS................................................................................................183.1 Introdução.......................................................................................................................183.2 História...........................................................................................................................183.3 Objetivos .......................................................................................................................193.4 Sistemas em malha aberta..............................................................................................193.5 Sistemas em malha fechada............................................................................................203.6 Controladores PID..........................................................................................................20
4 O PÊNDULO INVERTIDO...................................................................................................245 PROJETO...............................................................................................................................25
5.1 Ponte H...........................................................................................................................255.2 PWM..............................................................................................................................265.3 Microcontrolador............................................................................................................275.4 Arduino...........................................................................................................................28
5.4.1 Arduino UNO.........................................................................................................295.4.2 Características ........................................................................................................30
5.5 Servomotor.....................................................................................................................306 IMPLEMENTAÇÃO.............................................................................................................317 REFERÊNCIAS BIBLIOGRÁFICAS...................................................................................378 APÊNDICES..........................................................................................................................39
1 INTRODUÇÃO
A cada ano surgem diversas inovações tecnológicas nas mais diversas áreas de pesquisa.
Estas inovações aplicadas ao estudo e desenvolvimento de novos robôs permitem que o
homem consiga construir dispositivos eletromecânicos capazes de imitar, e muitas vezes
superar, movimentos e habilidades motoras de animais e até mesmo do próprio homem.
Porém, mesmo com o contínuo avanço da tecnologia, existem ainda certas áreas da
robótica pouco evoluídas quando comparadas às capacidades intrínsecas de grande parte dos
seres vivos. Pode-se citar, por exemplo: visão, sensibilidade tátil, estabilidade e equilíbrio,
entre outras...
Buscando um maior aprofundamento na questão levantada sobre a lenta evolução dos
robôs dotados de equilíbrio e estabilidade, este trabalho apresenta a pesquisa e o estudo
envolvidos nos processos de projeto e implementação de um robô móvel de 2 rodas, do tipo
pêndulo invertido, com um sistema de controle de equilíbrio dinâmico.
1.1 Objetivo
O objetivo deste projeto foi desenvolver um estudo em diversas áreas das ciências
exatas e tecnológicas, tais como: física, mecânica, eletrônica, afim de coletar informações
suficientes para o projeto e para a implementação de um robô móvel do tipo pêndulo
invertido, capaz de se manter equilibrado sobre 2 rodas, utilizando como base eletrônica o
hardware livre Arduino e um sensor do tipo acelerômetro.
1.2 Metodologia
Com o intuito de alcançar o conhecimento necessário para a implementação final do
robô, inicialmente, foi realizada uma intensa pesquisa bibliográfica. Deve-se ressaltar ainda
que durante todo o decorrer do projeto houveram conhecimentos absorvidos, através de novas
leituras, visando o constante aprimoramento da ideia inicial.
11
Após a consolidação de um bom embasamento teórico, seguiu-se a etapa do projeto
mecânico e eletrônico. Nesta etapa foram realizadas algumas pesquisas de mercado para se
obter mais informações sobre os produtos e materiais que seriam de fato empregados no
modelo final.
Foram adquiridas as peças que ofereceram o melhor equilíbrio entre valor e qualidade.
As principais foram o sensor de aceleração(acelerômetro), 2 motores de corrente continua,
uma bateria para suprir o sistema, circuitos integrados de ponte H entre outras minorias como
rodas, chapas de acrílico(para o chassi), conexões e etc.
Com a aproximação entre teoria e prática, partiu-se para o desenho do robô. Aqui,
baseando no materiais adquiridos e com o auxilio de softwares de CAD, pretendeu-se
desenvolver um modelo tridimensional já dotado das proporções desejadas para o protótipo
final.
Utilizando o modelo tridimensional como um guia, partimos para o próximo passo
então, iniciar a etapa da implementação prática, montando, assim, toda a estrutura mecânica e
eletrônica do projeto.
Com o “corpo” já devidamente montado e testado foi possível iniciar a modelagem
matemática do sistema. Baseando-se no modelo matemático obtido, deu-se início à etapa de
programação do software que é responsável por fazer todo o interfaceamento entre o sensor de
aceleração e os motores do robô.
Ou seja, nesta etapa foi desenvolvido o código a ser executado no microcontrolador do
Arduino, recebendo, processando e emitindo os sinais responsáveis pelo “equilíbrio” do
corpo.
12
2 ROBÓTICA
2.1 História
A humanidade sempre mostrou certo fascínio, desde tempos pré-históricos, por seres
extraordinários, homens mecânicos, e outras criaturas que, em geral, nunca passaram de
fantasias. Antigos sacerdotes egípcios construíram os primeiros braços mecânicos, os quais
eram colocados em estatuas de deuses que pretendiam estar atuando sobre a direta inspiração
do deus representado, sem dúvida, para impressionar o povo com o poder desse deus.[1]
Durante toda sua história o homem utilizou-se de ferramentas e utensílios para
conseguir realizar diversas tarefas de maneira mais rápida, mais segura, menos trabalhosa, etc.
Para a civilização ocidental, o conceito de evolução humana está associado diretamente
ao grau de desenvolvimento tecnológico adquirido ao longo do tempo, através do
aperfeiçoamento desses objetos. Portanto a motivação de se criarem máquinas que possam
substituir o homem na realização de tarefas é uma característica da própria cultura ocidental.
A primeira referência explícita a esse conceito foi escrita por Aristóteles(século IV AC):”Se os
instrumentos pudessem realizar suas próprias tarefas, obedecendo ou antecipando o desejo de
pessoas...”[2]
Entretanto a idéia de se construir robôs só começou a tomar força no início do século
XX com a necessidade de aumentar a produtividade e melhorar a qualidade dos produtos. É
nesta época que o robô industrial encontrou suas primeiras aplicações, o pai da robótica
industrial foi George Devol. Atualmente devido aos inúmeros recursos que os sistemas de
microcomputadores nos oferece, a robótica atravessa uma época de contínuo crescimento que
permitirá, em um curto espaço de tempo, o desenvolvimento de robôs inteligentes fazendo
assim a ficção do homem antigo se tornar à realidade do homem atual. [2]
13
2.2 Definição – O que é um robô
A palavra “robot” surgiu no ano de 1921 durante uma peça de teatro de Karel Capek,
durante a peça, seres artificiais de aparência humana chamados de “Robota” obedeciam
ordens de seu professor e realizavam os trabalhos mais pesados. A palavra “robot” deriva,
então, da original “robota”, que no idioma eslavo pode ser traduzido como um trabalho
exercido de forma compulsória.
Existem diversas e muito variadas definições sobre o que é um robô. Uma definição
supostamente “oficial” do termo robô foi estabelecida pela Associação das Indústrias da
Robótica(RIA): Um robô industrial é um manipulador reprogramável, multi-funcional,
projetado para mover materiais, peças, ferramentas ou dispositivos especiais em movimentos
variáveis programados para a realização de uma variedade de tarefas.
Será analisado posteriormente que, do ponto de vista de um conceito amplo do termo
robô, essa definição corresponderia apenas à uma classe especifica de robôs, precisamente os
robôs manipuladores. [1]
2.3 Tipos e classificação dos robôs
Segundo GOMIDE [14], pode-se enquadrar os robôs em 4 categorias:
Robôs Inteligentes: são manipulados por sistemas multifuncionais controlados por
computador, são capazes de interagir com seu ambiente através de sensores e de tomar
decisões em tempo real. Atualmente grandes esforços são dedicados ao desenvolvimento
desse tipo de robô.
Robôs com controle por computador: embora sejam semelhantes aos robôs
inteligentes, não possuem a capacidade de interagir com o ambiente.
14
Robôs de aprendizagem: Se limitam a repetir uma seqüência de movimento
memorizados ou realizados com a intervenção de um operador
Manipuladores: são constituídos de sistemas mecânicos multifuncionais que possuem
um sistema de controle sensível, o qual permite governar o movimento de seus
membros das seguintes formas:
a) manual: que ocorre quando o operador controla diretamente os movimentos;
b) de seqüência variável, quando algumas características do ciclo de trabalho são
possíveis de alterar.
GOMIDE [14], afirma ainda que a realização da classificação dos robô do ponto de
vista do controle de seus movimentos, pode ser extremamente interessante se admitida as
seguintes configurações:
1. Sem controle-servo: é o programa que controla o movimento dos diferentes
componentes do robô e se realiza em um posicionamento conhecido como "ponto-a-
ponto" no espaço.
2. Com controle-servo: este tipo de controle permite duas formas de trabalho, sendo:
a) controle dos movimentos dos membros do robô em função de seus eixos,
neste caso os movimentos podem ser realizados com trajetória contínua ou
ponto-a-ponto.
b) os movimentos se estabelecem da respectiva posição de seus eixos de
coordenada e da orientação da mão ferramenta do robô.
15
2.4 Sensores
De acordo com Filho [11], o uso de sensores permite que um robô possa obter
informação sobre ele mesmo e sobre seu ambiente com a finalidade de realizar a operação
para a qual foi destinado, além de poder modificá-la de acordo com tal informação. Os
sensores podem ser agrupados em duas categorias principais: sensores internos ou
propioceptivos, que fornecem informação sobre as variáveis do próprio robô, e sensores
externos ou extereoceptivos, cujo objetivo é obter informação do ambiente ao redor do robô.
Exemplos: Sensores ultrasônicos de distância, sensor de luz, sensor de temperatura, sensor
óptico de posição e etc.
2.5 Atuadores
Um atuador é um mecanismo, ou um conjunto de mecanismos, que converte algum tipo
de energia em movimento mecânico. Os três tipos de energia mais comuns para acionar os
atuadores de um robô são:
Pneumática
Elétrica
Hidráulica
16
Ilustração 1: Exemplo de sensores
Os atuadores hidráulicos possuem alto torque e velocidade de resposta, sendo
adequados para atuar sobre cargas pesadas. Entretanto requerem equipamentos periféricos,
como bombas, o que implica na necessidade de manutenção frequente, além de gerar grande
ruído. Os atuadores pneumáticos são mais baratos e simples, entretanto, não podem ser
controlados com precisão. Atualmente os motores elétricos, CA ou CC, são os mais atrativos
para serem empregados em robótica, devido a que são mais baratos e silenciosos. [11]
17
Ilustração 2: Exemplo de atuadores
3 CONTROLE DE SISTEMAS
3.1 Introdução
Um sistema de controle, é um dispositivo ou um grupo de dispositivos que gerenciam o
comportamento de outros dispositivos. [8]
3.2 História
O primeiro trabalho significativo envolvendo um sistema de controle foi o regulador
centrífugo construído por James Watt para o controle de velocidade de uma máquina a vapor,
no século XVIII. [7]
A teoria de sistemas de controle começou a ser formalizada na segunda metade do
século XIX. Até então os sistemas de controle automático eram desenvolvidos através da
intuição e invenção.
1868 - Maxwell - Publicou um artigo analisando o comportamento dinâmico dos
sistemas de controle.
1877 - Routh e Hurwitz - Análise da estabilidade sem a necessidade da solução de
equações.
1922 - Minorsky - construiu controladores automáticos para pilotagem de
embarcações e demonstrou como a estabilidade poderia ser determinada a partir de
equações diferenciais que descrevem o sistema. [7]
1932 - Nyquist - desenvolveu um procedimento relativamente simples para a
determinação da estabilidade de sistemas de malha fechada com base na resposta de
malha aberta a excitações senoidais estacionárias.
18
1934 - Hazrn - introduziu o termo servomecanismos para sistemas de controle de
posição.
3.3 Objetivos
O objetivo buscado ao se utilizar um sistema de controle é o de fazer com que uma
variável do sistema assuma um valor desejado(referência, comando) por meio de uma ação no
sistema. [7]
No caso em estudo, o robô de pêndulo invertido, a função do sistema de controle é
manter o ângulo, formado entre o chassi do robô e o chão, o mais próximo possível de 90º.
Resistindo às interferências externas ao sistema, utilizando, para isso, o torque aplicados às
rodas através dos motores.
3.4 Sistemas em malha aberta
Os sistemas de controle de malha aberta são aqueles em que o sinal de saída não exerce
nenhuma ação de controle no sistema. Isso quer dizer que em um sistema de controle de
malha aberta o sinal de saída não é medido nem realimentado para comparação com a entrada.
[7]
19
Ilustração 3: Sistema em malha aberta
3.5 Sistemas em malha fechada
Os sistemas de controle com realimentação são, com frequência, denominados também
sistemas de controle de malha fechada.
Em um sistema de controle de malha fechada, o sinal de erro atuante, que é a diferença
entre o sinal de entrada e o sinal de realimentação, realimenta o controlador, de modo que
minimize o erro e acerte a saída do sistema ao valor desejado. [7]
3.6 Controladores PID
Controladores do tipo Proporcional, Integral e Derivativo, comumente denominados de
PID, são largamente utilizados no cenário industrial. Segundo Aströn [9], entre 90 e 95% dos
problemas de controle são solucionados empregando tais controladores, podendo considerá-
los como “o pão e a manteiga” da engenharia de controle. Tal utilização deve-se ao fato deste
controlador ser facilmente implementável, de baixo custo e versátil com capacidade de alterar
os comportamentos transitório e de regime permanente dos processos sob controle.
20Ilustração 5: Funcionamento PID
Ilustração 4: Sistema em malha fechada
A fórmula do PID é dada por:
Onde:
u(t) é a saída em relação ao tempo
e(t) é a entrada menos o erro em relação ao tempo
Kp é a constante proporcional
Ki é a constante integral
Kd é a constante derivativa
Proporcional
Função:
Essa função do controlador PID produz um valor na saída proporcional ao erro obtido
na Realimentação. A resposta proporcional pode ser ajustada a partir da constante de ganho
Kp. Quanto maior a constante Kp, maior será o ganho do erro e mais instável será o sistema.
Mas se a constante Kp for muito pequeno, menor será o seu tempo de resposta. A ilustração
abaixo mostra um gráfico com uma entrada (linha azul) e as saídas com Kp de vários valores:
[10]
21
Ilustração 6: Atuação da parte proporcional na saída
Integral
Função:
A função integral soma todos os erros instantâneos e a somatória é multiplicada pela
constante Ki. A função integral do controlador PID acelera o movimento do processo até o
ponto desejado e elimina o erro que ocorre na função anterior. Como a função soma dados
instantâneos, o resultado do processo pode ultrapassar o ponto desejado. Essa consequência se
chama "overshoot". A ilustração abaixo mostra um gráfico com uma entrada (linha azul) e as
saídas com Ki de vários valores: [10]
Derivativa
Função:
A função derivativa retarda a taxa de variação de saída do controlador. Essa função
diminui o "overshoot" da função anterior e melhora a estabilidade do controlador. Por outro
22
Ilustração 7: Atuação da parte integral na saída
lado, a função derivativa causa um retardo na resposta e é muito suscetível à ruídos. Isto
acontece porque essa função amplifica o ruído e caso o ruído e o ganho Kd forem muito
grandes, podem causar instabilidade no controlador. A ilustração abaixo mostra um gráfico
com uma entrada (linha azul) e as saída geradas pela função: [10]
23
Ilustração 8: Atuação da parte derivativa na saída
4 O PÊNDULO INVERTIDO
O pêndulo invertido é um mecanismo com característica dinâmica intrinsecamente
instável e representa uma plataforma útil para o estudo de muitos outros mecanismos
complexos. Uma analogia simples é a brincadeira de equilibrar um lápis ou um cabo de
vassoura na ponta dos dedos. Para conseguir uma condição relativamente estável é necessário
ficar constantemente movendo a mão de forma a manter o eixo do cabo de vassoura nas
proximidades da sua posição vertical. [4]
A razão pela qual esse sistema é de interesse para estudos do ponto de vista da
tecnologia de controle, é que ele ilustra as dificuldades práticas associadas com aplicações de
sistemas de controle no mundo real. Por exemplo, o modelo resultante é muito similar aos
usados para estabilização de foguetes em vôo, no posicionamento de guindastes especiais, etc.
[4]
No caso específico deste trabalho, o pêndulo invertido apresenta-se na forma de um
robô de duas rodas e estrutura ligeiramente alta. O sistema de controle executado pelo
microcontrolador do Arduino se encarregará de, através da movimentação das rodas, manter o
chassi do robô sempre na posição vertical. Representando, assim, o conceito de equilíbrio.
24
Ilustração 9: Modelos de pêndulo invertido
5 PROJETO
5.1 Ponte H
Ponte H é um circuito eletrônico que serve como auxiliar quando pretende-se controlar
um motor CC através de um microcontrolador. Este circuito faz-se necessário uma vez que o
microcontrolador, em geral, não consegue fornecer a quantidade de corrente adequada para o
funcionamento do motor.
Em sua montagem mais básica, ou seja, sem componentes extras para fornecer uma
maior segurança tanto ao microcontrolador quanto ao motor, o circuito é montado utilizando-
se quatro “chaves”. Estas chaves podem ser qualquer componente eletrônico que simule um
circuito liga-desliga (transistores, relés e etc).
Supondo que as chaves sejam S1, S2, S3 e S4 como apresentado na imagem abaixo. O
acionamento de duas delas, alternadamente(S1 e S3 ou S2 e S4), pelo microcontrolador
determina para qual sentido o motor deve girar.
25
Ilustração 10: Circuito Ponte H
5.2 PWM
A sigla PWM é uma abreviação de Pulse Width Modulation que é traduzido como
Modulação por Largura de Pulso. Através desta técnica de modulação será possível controlar
a velocidade dos motores do robô.
O PWM funciona baseado na razão cíclica(duty cycle) do sinal em uma transmissão
com frequência constante, ou seja, o quanto de tempo de sinal 1 (ligado) foi aplicado por
ciclo. [5]
Nas ilustrações acima vê-se os sinais ligado e desligado sendo aplicados na mesma
proporção de tempo, t1 e t2. Ou seja, durante metade do ciclo o sinal ligado, que equivale a
6v, é aplicado e na outra metade do ciclo o sinal de 0v é aplicado. Com isso, obtêm-se no final
do ciclo o sinal equivalente a média dos sinais aplicados, 3V.
26
Ilustração 11: Funcionamento PWM 1
Ilustração 12: Funcionamento do PWM 50%
Neste caso a proporção temporal, ou razão cíclica, é de 30% ligado e 70% desligado.
Gerando, desta forma, o equivalente a 1,8V como saída. Que é obtido através da
multiplicação simples entre o tempo de sinal ligado e seu valor: 6V * 0,3 = 1,8V
5.3 Microcontrolador
Um microcontrolador é um CI (Circuito Integrado) que possui internamente um
microprocessador e todos os componentes periféricos essenciais ao seu funcionamento, como:
Memória de programa – geralmente uma memória do tipo EPROM (memória
apagável de somente leitura), onde serão armazenadas as informações de programa, ou
seja, o que o microprocessador deve executar; [3]
Memória de dados – geralmente uma memória do tipo RAM (memória de acesso
randômico), onde ficarão armazenadas as informações de dados que o programa ira
utilizar, geralmente é utilizada para guardar um valor ou um flag; [3]
Dispositivo de seleção de entrada e saída – faz a comunicação das posições de
memória com os pinos externos do microcontrolador; [3]
Temporizadores e Contadores – utilizados para contar tempo ou contar eventos; [3]
27
Ilustração 13: Funcionamento do PWM 30%
Clock – em alguns microcontroladores o gerador de sinal de clock é também acoplado
ao microprocessador dentro do CI, ele tem a função de sincronizar todos os eventos de
um circuito digital; [3]
Dispositivo controlador de interrupção – como o nome já diz, é este componente que
controla os pedidos de interrupção para a CPU. [3]
5.4 Arduino
Arduino é uma plataforma de prototipagem eletrônica de hardware livre, projetada com
um microcontrolador Atmel AVR de placa única, com suporte de entrada/saída embutido e
uma linguagem de programação padrão, a qual é essencialmente C/C++. [13]
O objetivo do projeto é criar ferramentas que são acessíveis, com baixo custo, flexíveis
e fáceis de se usar por artistas e amadores. [13]
De modo geral essa plataforma oferece muitas vantagens para os desenvolvedores que a
escolhem, contudo sua principal vantagem é que utiliza linguagem de programação de alto
nível.
28
Ilustração 14: Microcontrolador
Além do desenvolvimento contínuo da plataforma, alguns fabricantes montam, e
disponibilizam para compra, módulos para Arduino que realizam operações específicas, tais
como adaptador wireless, adaptador de rádio frequência, módulo de Global Positioning
System (GPS) entre outros.
Logo, optou-se pela utilização do Arduino como controlador no projeto. Ele será
responsável por toda a captação dos sinais fornecidos pelo sensor, seus devidos
processamentos e, também, pela emissão de sinais de comando aos atuadores, neste caso os
motores CC presentes nos servos.
5.4.1 Arduino UNO
Devido a ser a última versão comercial lançada no momento será ela, então, empregada
no projeto. O Arduino UNO (“um” em italiano) é uma placa de microcontrolador baseado no
microcontrolador ATmega328 da Atmel Corporation. Ele possui 14 pinos de entrada/saída
digital, dos quais 6 podem ser usados como saídas PWM. Além de 6 entradas analógicas, um
cristal oscilador de 16MHz, uma conexão Universal Serial Bus (USB), uma entrada de
alimentação uma conexão In-Circuit Serial Programming (ICSP) e um botão de reset. Ele
contém todos os componentes necessários para suportar o microcontrolador, necessitando
apenas de uma fonte de alimentação externa ou através da conexão USB. [14]
29
Ilustração 15: Arduino UNO
5.4.2 Características
Microcontrolador ATmega328
Tensão Operacional 5V
Tensão de entrada (recomendada) 7-12V
Tensão de entrada (limites) 6-20V
Pinos E/S digitais 14 (dos quais 6 podem ser saídas PWM)
Pinos de entrada analógica 6
Corrente CC por pino E/S 40 mA
Corrente CC para o pino 3,3V 50 mA
Flash Memory 32 kB (ATmega328) dos quais 0,5KB são utilizados pelo bootloader
SRAM 2 kB (ATmega328)
EEPROM 1 kB (ATmega328)
Velocidade de Clock 16 MHz
Tabela 1: Características do Arduino UNO
5.5 Servomotor
Servomotor é uma máquina, mecânica ou eletromecânica, que apresenta movimento
proporcional a um comando, em vez de girar ou se mover livremente sem um controle mais
efetivo de posição como a maioria dos motores; servomotores são dispositivos de malha
fechada, ou seja: recebem um sinal de controle; verificam a posição atual; atuam no sistema
indo para a posição desejada.[6]
30
Ilustração 16: Servos
Os servomotores foram escolhidos para substituir os motores DC comuns, propostos
inicialmente, por já possuírem uma caixa de redução integrada, oferendo um maior torque e
uma menor velocidade, ideal para o projeto. Eles foram modificados para que funcionassem
independentes do seu sistema de controle de posição interno. Para isso, foram feitos ajustes
nas ligações eletrônicas e também nas peças plásticas. Dessa forma conseguiu-se controlá-los
pelo Arduino como se fossem motores comuns, e também , que seus eixos façam giros livres e
contínuos de 360º.
6 IMPLEMENTAÇÃO
Buscando a melhor implementação possível do projeto apresentado, optou-se por
comprar todas a peças inicialmente, com isso, o desenho do chassi seria feito levando em
consideração o perfeito encaixe entre as partes.
Foram adquiridos os seguintes componentes:
1 - Placa Arduino UNO.
1 – Shield de sensor de aceleração
1 – Ponte H L298n
1 – Bateria 9v
1 – Placa de contatos
Além de materiais diversos, como cabos e parafusos que se fizeram necessários no
decorrer da montagem.
Com os componentes já em mãos, o chassi foi desenhado de forma a oferecer um base
de fixação, um centro de gravidade levemente elevado em relação ao eixo e um formato
simples, uma vez que, seria moldado em acrílico.
31
Após uma analise mais lógica o chassi recebeu pequenas modificações que manteriam
seus seus principais objetivos mas que iriam ajudar reduzindo seu peso e ,consequêntemente,
o torque exigido dos motores para ajustar seu ângulo de inclinação.
Com isso, chegou-se a versão final do desenho, que, por sua vez, foi enviado a uma
oficina especializada em polímeros para a produção.
32
Ilustração 17: Desenho inicial do robô
Ilustração 18: Desenho final do chassi
Os servos, já modificados para giro livre, foram instalados inicialmente para que
pudessem ser calibrados e ajustados visando o máximo alinhamento.
Com o alinhamento realizado, partiu-se para a montagem dos demais componentes e a
ligação dos circuitos empregados.
33
Ilustração 19: Montagem servos no chassi
Ilustração 20: Montagem dos circuitos
O shield do acelerômetro e o circuito de ponte h foram ligados obedecendo os seguintes
esquemas:
34
Ilustração 21: Esquema de ligação da ponte H
Ilustração 22: Esquema de ligação do sensor de aceleração
Com tudo montado e testado passou-se a escrever o código que seria executado pelo
Arduino e iria reger o funcionamento de todo o sistema.
Para o cálculo PID foi utilizada a biblioteca BR3TTB Arduino PID Library, na versão
1.1.0. Está biblioteca é distribuída sob a licença GNU GPLv3 (General Public License) e é a
mais conhecida e recomendada atualmente para este objetivo com o Arduino.
O código foi escrito seguindo o seguinte fluxograma:
35
Ilustração 23: Fluxo do programa
7 CONCLUSÃO
Quando se fala de sistema de controle é inegável as suas diversas aplicações e a
importância de sua existência e do seu correto funcionamento nos tempos atuais.
O objetivo deste trabalho foi projetar e implementar um robô capaz de representar e
controlar um sistema de pêndulo invertido, explorando os recursos oferecidos pela plataforma
Arduino e utilizando a técnica de controle PID. Este objetivo foi alcançado.
Durante sua implementação, encontrou-se maior dificuldade para o perfeito
funcionamento na etapa de sintonia dos parâmetros PID.
Como extensão para o trabalho, pode-se sugerir a melhoria na sintonia do controle PID
buscando parâmetros mais justos ao modelo. Além da integração de um módulo bluetooth,
dos vários oferecidos em formato shield Arduino, para controle remoto da direção do robô.
36
7 REFERÊNCIAS BIBLIOGRÁFICAS
[1] PAZOS, Fernando.; Automação de sistemas e robótica. Rio de Janeiro: Axcel Books,
2002.
[2] ROMANO, Vitor Ferreira. Robótica industrial: aplicação na indústria de manufatura
e de processos. São Paulo: E. Blücher, 2002.
[3] REIS, Wagner dos. O Microcontrolador e suas características. Disponível em:
<http://www.angelfire.com/sc/wagner/Microcontroladores.html>. Acesso em: 26 de maio de
2012.
[4] RIBEIRO, R. Implementação de um sistema de controle de um pêndulo invertido.
2007. 86 f. Dissertação (Mestrado em Engenharia Elétrica) – Universidade Federal de Itajubá,
Itajubá. 2007.
[5] Entenda o PWM - PNCA Robótica e Eletrônica. Disponível em
<http://www.pnca.com.br>. Acesso em: 02 de agosto de 2012.
[6] Servomotor. Disponível em <http://pt.wikipedia.org/wiki/Servomotor>. Acesso em: 01
de agosto de 2012.
[7] OGATA, Katsuhiko; Engenharia de Controle Moderno. São Paulo: Pearson Education
do Brasil, 2011;
[8] Sistema de controle. Disponível em <http://pt.wikipedia.org/wiki/Sistema_de_controle>.
Acesso em: 01 de agosto de 2012.
[9] ASTRON, K. J. , HAGGLUND, T. PID Control IN PEREIRA, Luis F. A. , HAFFNER,
José, F. Controladores do tipo Proporcional, Integral e Derivativo - Pontifícia
Universidade Católica do Rio Grande do Sul. Disponível em:
<http://www.feng.pucrs.br/~gacs/new/disciplinas/psc_CN/apostilas/Aula6_2007II.pdf>.
37
Acesso em: 02 de setembro de 2012.
[10] Controlador PID (Proporcional-Integral-Derivativo) - Laboratório de Garagem.
Disponível em: <http://labdegaragem.com/profiles/blogs/artigo-controlador-pid-proporcional-
integral-derivativo-parte-1>. Acesso em: 08 de setembro de 2012.
[11] FILHO, Teodiano, F. B. Aplicação de Robôs nas Indústrias - Departamento de
Engenharia Elétrica Universidade Federal do Espírito Santo. Disponível em:
<www2.ele.ufes.br/~tfbastos/RobMov/robosindustriais.pdf>. Acesso em: 15 de setembro de
2012.
[12] GOMIDE, Fernando Antônio Campos; GUDWIN, Ricardo Ribeiro. Modelagem,
Controle, Sistemas e Lógica Fuzzy. Artigo publicado na SBA Controle & Automação, Vol. 4
no 3. São Paulo. 1994.
[13] ARDUINO. Disponível em: <http://arduino.cc/>. Acesso em: 21 de setembro de 2012.
[14] ARDUINO UNO – Multilógica Opens Source Hardware. Disponível em:
<http://multilogica-shop.com/Arduino-Uno>. Acesso em: 21 de setembro de 2012.
38
8 APÊNDICES
Código fonte do programa
#include <PID_v1.h>
//Pinos START
int pinoMotorEsquerdoA = 3;
int pinoMotorEsquerdoB = 5;
int pinoMotorDireitoA = 9;
int pinoMotorDireitoB = 10;
int pinoY = A0;
//Pinos END
//Parâmetros START
int quantidadeLeiturasMedia = 3;
int intervaloEntreLeituras = 0;
int tolerancia = 0;
//Parâmetros END
39
//Variáveis globais START
int zeroConsiderado = 0;
int sentidoVariacao = 1;
double valorY = 0;
double valorYKILL = 130;
int pwmAplicarMotores = 0;
int pwmAnterior = 0;
int sentidoVariacaoAnterior = 1;
//Variáveis globais END
//PID
double Setpoint = 0;
double Input = 0;
double Output;
double kp = 3.15;
40
double ki = 0.1;
double kd = 0.7;
PID myPID(&Input, &Output, &Setpoint, kp, ki, kd, DIRECT);
///
int leituraMedia(int zeroConsiderado = 0) {
int valorMedio = 0;
int valorLeiturasAcumulado = 0;
int con;
for(con =0; con < quantidadeLeiturasMedia; con++) {
valorLeiturasAcumulado = valorLeiturasAcumulado + analogRead(pinoY);
delay(intervaloEntreLeituras);
}
41
valorMedio = (valorLeiturasAcumulado / quantidadeLeiturasMedia);
if (valorMedio >= zeroConsiderado) {
valorMedio = valorMedio - zeroConsiderado;
sentidoVariacao = 1;
} else {
valorMedio = zeroConsiderado - valorMedio;
sentidoVariacao = -1;
}
valorMedio = abs(valorMedio);
if (valorMedio < tolerancia) {
valorMedio = 0;
}
42
return valorMedio;
}
void acionaMotorEsquerdo(int sentido = 0, int valor = 255) {
digitalWrite(pinoMotorEsquerdoA, LOW);
digitalWrite(pinoMotorEsquerdoB, LOW);
if (sentido == 1){
analogWrite(pinoMotorEsquerdoB, valor);
} else {
analogWrite(pinoMotorEsquerdoA, valor);
}
}
void acionaMotorDireito(int sentido = 0, int valor = 255) {
43
digitalWrite(pinoMotorDireitoA, LOW);
digitalWrite(pinoMotorDireitoB, LOW);
if (sentido == 1){
analogWrite(pinoMotorDireitoB, valor);
} else {
analogWrite(pinoMotorDireitoA, valor);
}
}
void acionaMotores(int sentido = 0, int valor = 255) {
acionaMotorDireito(sentido, valor);
acionaMotorEsquerdo(sentido, valor);
}
44
void pararMotores(int sentidoVariacaoAnterior, int pwmAnterior){
int con = 0;
for ( con = pwmAnterior; con > 0; con--) {
acionaMotores(sentidoVariacaoAnterior, con);
}
}
//Funções default START
void setup() {
Serial.begin(9600);
pinMode(pinoMotorEsquerdoA,OUTPUT);
pinMode(pinoMotorEsquerdoB,OUTPUT);
pinMode(pinoMotorDireitoA,OUTPUT);
pinMode(pinoMotorDireitoB,OUTPUT);
45
pinMode(pinoY,INPUT);
//zeroConsiderado = leituraMedia(0);
zeroConsiderado = 347;
//config PID
Setpoint = 0;
myPID.SetMode(AUTOMATIC);
/////////
}
void loop() {
int con = 0;
46
//antes de serem atualizados pela nova leitura
sentidoVariacaoAnterior = sentidoVariacao;
pwmAnterior = pwmAplicarMotores;
valorY = leituraMedia(zeroConsiderado);
if (valorY >= valorYKILL) {
pararMotores(sentidoVariacaoAnterior, pwmAnterior);
} else {
Input = valorY * -1;
myPID.Compute();
pwmAplicarMotores = Output;
47
if (pwmAplicarMotores < 0) {
pwmAplicarMotores = 0;
}
if (pwmAplicarMotores > 255) {
pwmAplicarMotores = 255;
}
acionaMotores(sentidoVariacao, pwmAplicarMotores);
}
Serial.print(" --- Y - ");
Serial.print(valorY);
48