Vous êtes sur la page 1sur 66

UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO TECNOLGICO DEPARTAMENTO DE ENGENHARIA ELTRICA PROJETO DE GRADUAO

Sistema de Controle de Baixo Nvel e Instrumentao de uma Cadeira de Rodas Robtica

PATRICK NO DOS SANTOS FILGUEIRA

VITRIA - ES 2007

PATRICK NO DOS SANTOS FILGUEIRA

Sistema de Controle de Baixo Nvel e Instrumentao de uma Cadeira de Rodas Robtica

Parte manuscrita do Projeto de Graduao do aluno Patrick No dos Santos Filgueira, apresentado ao Departamento de Engenharia Eltrica do Centro Tecnolgico da Universidade Federal do Esprito Santo, para obteno do grau de Engenheiro Eletricista.

UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO TECNOLGICO DEPARTAMENTO DE ENGENHARIA ELTRICA PROJETO DE GRADUAO

MONOGRAFIA APRESENTADA POR PATRICK NO DOS SANTOS FILGUEIRA, ORIENTADA E APROVADA EM _______________________

COMISSO EXAMINADORA:

_________________________________ Prof. Dr. Teodiano Freire Bastos Filho Orientador

_________________________________ Prof. Dr. Evandro Ottoni Teatini Salles Examinador

_________________________________ Prof. Dr. Raquel Frizera Vassallo Examinador

DEDICATRIA
Aos meus maiores mestres. queles que sabem ouvir e calar, imprimindo cunho e superioridade em tudo o que lhes passam pelas mos. Enfim... A minha famlia, onde todos so por um e um por todos, onde a paz criou razes e floriu. Em especial a minha esposa Danielly, que esteve presente em todos os momentos de dificuldades nesta longa caminhada.

AGRADECIMENTOS

Agradeo o seu valioso exemplo e amizade: Ao meu orientador Prof. Dr. Teodiano Freire Bastos Filho... Agradeo pelo seu apoio desde o incio desta jornada o que me proporcionou muito mais que orientao para este trabalho, mas sim, um grande exemplo de autenticidade, valores ticos e amor ao estudo, que serviro de espelho para nossa prpria construo intelectual. E tambm pela fantstica oportunidade de desenvolver este trabalho e entrar em contato com esta rea de pesquisa.

Aos meus amigos... Agradeo suas valiosas sugestes nos momentos decisivos e importantes de minha vida, bem como o constante estmulo, dedicao e ateno, oferecendo-me sempre as condies e protees necessrias para a realizao deste trabalho. Em especial, a todos os alunos de doutorado, mestrado e Iniciao Cientfica do LAI, em especial aos alunos de doutorado Andr ferreira, Wanderley Cardoso Celeste e ao aluno de iniciao cientifica Igor Berger Arantes, por toda ajuda no desenvolvimento deste e outros trabalhos. Aos meus colegas que me acompanharam ao longo de todo o curso de Engenharia Eltrica.

Enfim... Agradeo a todos os que me ajudaram a percorrer a trajetria de construo deste trabalho. E, em especial, aos meus pais e minha esposa que sempre estiveram ao meu lado ao longo de todos esses anos.

RESUMO
Neste trabalho foi desenvolvido um sistema de controle de baixo nvel para uma cadeira de rodas robotizada controlada por sinais biolgicos, incluindo hardware (placa de acionamento dos motores) e software (firmware executado em microcontrolador). O objetivo dar suporte para um sistema de controle de alto nvel que captura, processa e interpreta sinais biolgicos a fim de controlar uma cadeira de rodas robtica. O trabalho consiste basicamente de duas partes: construir uma placa que seja capaz de acionar motores acoplados na cadeira de rodas em questo. A outra parte a criao de um programa que dever ser executado em um microcontrolador, o qual tem a finalidade de gerenciar todos os dispositivos acoplados a cadeira inclusive os motores, que sero acionados pela placa da primeira parte. Para alcanar o objetivo proposto neste trabalho fez-se necessrio manipular dispositivos de eletrnica de potncia, programao, algoritmos de controle e instrumentao.

Palavra - chave: Instrumentao; Cadeira de Rodas; Sensores; Controle; Acionamento.

SUMRIO
1-Introduo .......................................................................................10 2 A Placa de Acionamento ..............................................................13 2.1 O Sinal PWM ............................................................................14 2.2 A Ponte H ..................................................................................15 2.3 Clculos dos Componentes da Ponte H ....................................20 2.3.1 Os Transistores ..........................................................20 2.3.2 Os Componentes de Bootstrap ..................................21 2.4 O Acoplamento ptico .............................................................24 2.5 Dispositivos Complementares ..................................................27 2.6 Dispositivos De Segurana .......................................................28 2.7 LEDs Indicadores .....................................................................29 2.8 Conexes ..................................................................................30 2.8.1 Microcontrolador ......................................................30 2.8.2 Os Encordes ..............................................................30 2.8.3 O Sonar .....................................................................31 2.8.4 Conexes para Expanso ..........................................32 2.8.5 O Mapa da Placa .......................................................33 3 O Sistema de Controle de Baixo Nvel ........................................34 3.1 O Microcontrolador ....................................................34 3.2 A Aquisio de Dados dos Encoders ..........................35 3.3 A Comunicao ...........................................................39 3.4 O Controlador ..............................................................43 4 - Concluses e Trabalhos Futuros ...................................................48 - Referncias Bibliogrficas ..............................................................50 - Apndices - A Obteno de Parmetros do Controlador ..........................52 - O Algoritmo de Controle ......................................................53 - Programa criado para execuo no microcontrolador..........54

LISTA DE FIGURAS

Figura 1 Cadeira de Rodas Desenvolvida na UFES..................................................11 Figura 2 Simulao de um sinal PWM com freqncia de 20 kHZ, amplitude de 3,6 V e 50 % de Ciclo de Trabalho.....................................................................................14 Figura 3 Ponte H composta de transistores dos tipos MOSFET Canal P e N..........16 Figura 4 - Ponte H composta apenas de transistores do tipo MOSFET Canal N.......16 Figura 5 Pontes H sugeridas pela IRF.......................................................................17 Figura 6 Ponte H implementada no trabalho............................................................18 Figura 7 Simulao do sinal de sada da ponte H mostrada na Figura 05................19 Figura 8 Foto do sinal de sada da ponte H implementada.......................................20 Figura 9 Comportamento resistivo do IRF3205.......................................................21 Figura 10 Identificao dos componentes de Bootstrap...........................................24 Figura 11 Circuito de acoplagem ptica...................................................................25 Figura 12 Sinal na Sada do Acoplador ptico..........................................................25 Figura 13 Sinal da sada de um dos comparadores...................................................26 Figura 14 Circuito de acionamento de um dos motores...........................................27 Figura 15 Circuito divisor de tenso utilizado para abaixar nveis TTL................28 Figura 16 Dispositivos de segurana da placa.........................................................29 Figura 17 Conector do microcontrolador.................................................................30 Figura 18 Conector de um dos encoders..................................................................31 Figura 19 Conector do sonar....................................................................................31 Figura 20 Conectores de expanso...........................................................................32 Figura 21 Placa final.................................................................................................33 Figura 22 Placa de prototipagem do MSP430..........................................................35 Figura 23 - Princpio de funcionamento de um encoder rotativo...............................36 Figura. 24 - Princpio de funcionamento de um encoder linear............................................36 Figura 25 - Representao grfica dos sinais A e B de um encoder incremental...................................................................................................................37

Figura 26 Encoder da roda direita..........................................................................39 Figura 27 Disposio dos Bits em uma transmisso serial.............................................40 Figura 28 interface do programa RComSerial.......................................................43 Figura 29 Modelo dinmico da cadeira de Rodas..................................................44 Figura 30 Controlador proporcional com lao integrativo....................................45 Figura 31 Controlador implementado....................................................................46 Figura 32 Sinais de excitao de transistores de mesmo brao de uma das pontes H.................................................................................................................................49 Figura 33 Dissipador e ventilar instalados na placa...............................................49 Figura 34 Representao da cadeira como sistema de duas variveis acopladas...................................................................................................................52

GLOSSRIO

CC CI PWM TTL VDS ID rdson VGS

Corrente continua Circuito integrado Pulse-width modulation Transistor-Transistor Logic Queda de Tenso entre o dreno e a fonte de um transistor MOSFET Corrente de dreno de um transistor MOSFET Resistncia srie de um transistor MOSFET conduzido Tenso de gate para fonte de um transistor MOSFET

10

INTRODUO
Indivduos com srias disfunes de origem neuromotoras apresentam,

invariavelmente, graves problemas de fala e comunicao e locomoo. No entanto, pessoas que apresentam estas limitaes, mantm um perfeito estado de conscincia, o que permite que algumas tcnicas sejam desenvolvidas para prov-las de meios pelos quais possam expressar suas vontades [1]. Uma soluo largamente estudada e pesquisada nos dias de hoje o uso de sinais eletro-biolgicos para desenvolvimento de canais alternativos de comunicao entre o indivduo e tudo aquilo que o cerca. Dentre estes sinais eletro-biolgicos, os mais comumente utilizados so: sinais mioeltricos (eletromiograma - EMG), potenciais crtico-retina (eletrooculograma EOG) e sinais cerebrais (eletroencefalograma - EEG) [1]. Assim, possvel substituir os dispositivos tradicionais utilizados na comunicao, tais como, apontadores de cabea, pulsadores, dentre outros, que no seriam eficazes para pessoas acometidas de graves disfunes motoras, por sistemas baseados em sinais eletro-biolgicos. Alm disso, possvel, juntamente com o uso de recursos computacionais especficos, desenvolver ferramentas que sejam capazes de identificar um desejo ou uma vontade do usurio utilizando sinais eletro-biolgicos. Para tal, entretanto, necessrio que o usurio tenha um grau mnimo de controle de suas funes cerebrais, de tal forma que possibilite a operao do sistema de maneira satisfatria. Diante de tal realidade, o grupo de pesquisa do Laboratrio de Automao Inteligente LAI da Universidade Federal do Esprito Santo UFES est desenvolvendo uma cadeira de rodas robtica (Figura 1) que interpreta sinais eletrobiolgicos e possibilita a locomoo de pessoas com srias incapacidades de movimento de seus membros. O projeto tem por objetivo prover um meio de locomoo eficiente para pessoas que possuem o intelecto preservado, mas sua nica maneira de interagir com o ambiente atravs de sinais eletro-biolgicos.

11

Figura 1 Cadeira de Rodas Desenvolvida na UFES.

A Cadeira da Figura 1 composta de sistema de captura e processamento de sinais eletro-biolgicos e ainda de dois nveis de controle de trajetria: um sistema de controle de alto nvel e um sistema de controle de baixo nvel. O sistema de controle de alto nvel assim como o processamento das sinais biolgicos so executados em um PC de bordo, e o controle de baixo nvel executado em um microcontrolador. Assim, o PC processa os sinais eletro-biolgicos e traa uma trajetria para a cadeira, e de acordo com essa trajetria o PC envia valores de velocidade para o microcontrolador que se encarrega de controlar a velocidade da cadeira. Neste trabalho, foi desenvolvido o sistema de controle de baixo nvel para a cadeira de rodas, que inclui: sistema de acionamento dos dois motores eltricos de corrente contnua da cadeira de rodas, e um programa executado em um microcontrolador, no qual implementado um sistema de controle de baixo nvel. A primeira parte do trabalho foi a confeco de uma placa de acionamento dos motores eltricos presentes na cadeira de rodas. Esta placa ainda precisa dar suporte para os sensores de velocidade (encoders) e para o sonar, isso devido a uma incompatibilidade entre nveis de tenso dos mesmos e do microcontrolador. A segunda parte do trabalho foi o desenvolvimento de um programa executado em um microcontrolador, e tem o objetivo de prover o gerenciamento e todo o controle de baixo nvel da cadeira de rodas.

12 Para o desenvolvimento do projeto foi utilizada uma cadeira de rodas eltrica comercial, fabricada pela empresa Freedom Ltda, a qual dispe de um sistema de acionamento de seus motores controlado por um joystick. Entretanto, no projeto utilizou-se apenas a estrutura da cadeira, as baterias e seus motores. Para o controle, o microcontrolador escolhido foi o MSP430F1611 da Texas instruments [2]. Isso devido o fato de ser um que possui perifricos especficos para a gerao de PWM e para captura de perodo de encoders. Neste trabalho o microcontrolador se encontra em uma placa separada da placa de acionamento, sendo conectadas as placas por meio de conectores [3].

13

2 A PLACA DE ACIONAMENTO
Por uma questo de economia de espao optou-se por construir uma placa apenas para o acionamento dos motores, para dispositivos de interfaces e para suprir alimentao que o resto do sistema possa necessitar. O sistema de acionamento dos motores das rodas composto basicamente de duas pontes H alimentadas em 24 V [4]. Essas pontes H so responsveis por alimentar os motores CC que tracionam as rodas da cadeira de rodas, permitindo o controle das velocidades e sentido de giro dos motores da cadeira apenas variando a largura de pulsos de um sinal PWM gerado pelo microcontrolador. As interfaces se fazem necessrias devido ao fato dos sensores de velocidade da cadeira (encoders) e do sonar usarem nveis de tenso TTL, ou seja, 0 e 5 V, e o microcontrolador usar nveis 0 e 3,6 V [5]. A placa em questo supre a alimentao de possveis dispositivos que possam ser acoplados cadeira, tais como mdulos de comunicao wireless, o microcontrolador e outros. Para isso, a placa de acionamento deve disponibilizar terminais de tenso de 5 e 9 V, sendo a mesma alimentada por uma bateria de 12 V. Por fim, a placa de acionamento prov total isolamento eltrico entre as baterias de alimentao dos motores e a bateria de alimentao dos dispositivos microcontrolados. Isso porque os motores CC geram rudos de alta amplitude que causam graves problemas para dispositivos sensveis, tais como os microcontroladores [4]. Assim, todos os dispositivos em contato eltrico com o microcontrolador so alimentados por um bateria de 12 V e os dispositivos ligados as pontes H so alimentados pelas baterias de 24 V da cadeira, sendo feito acoplamento entre as partes por meio de opto-acopladores.

14

2.1 O Sinal PWM


A cadeira de rodas possui dois motores CC com tenso nominal de 24 V e corrente nominal 15 A. Outro dado importante o fato da alimentao da cadeira ser provida por duas baterias de 12 V ligadas em srie, resultando assim em uma tenso total de 24 V. Sendo assim, faz-se necessrio montar um sistema de acionamento com o qual seja possvel controlar as velocidades dos motores, e que atenda s especificaes citadas anteriormente. Para o controle de velocidade especificou-se um sinal do tipo PWM, que um sinal pulsado, peridico, mas com largura de pulsos varivel [4]. O sinal PWM faz variar sua tenso mdia apenas variando a largura de seus pulsos. Assim, variando-se a tenso mdia de alimentao dos motores CC, variam-se tambm as velocidades dos mesmos. A Figura 2 mostra um sinal PWM de 20 kHz com ciclo de trabalho de 50%.
4.0V

3.0V

2.0V

1.0V

0V 0s V(R4:2) Time 200us

Figura 2 Simulao de um sinal PWM com freqncia de 20 kHZ, amplitude de 3,6 V e 50 % de ciclo de trabalho.

Este sinal deve ser gerado pelo dispositivo de controle, que neste caso o microcontrolador MSP430F1611 da Texas instruments.

15 O microcontrolador trabalha com um relgio de 8 MHz e, portanto, o perodo do PWM deve ser mltiplo do perodo de relgio do microcontrolador, que neste caso de 125 ns. O MSP430F1611 possui um Hardware especfico para a gerao de sinais PWM [2]. Este Hardware um contador com trs canais, os quais podem ser dispostos da seguinte maneira: um para medir o perodo e os outros dois para medir o ciclo ativo de dois sinais, um para cada roda da cadeira. Optou-se ento por um PWM de 20 kHz, ou seja, 400 ciclos de relgio de 8 MHz com resoluo de 9 bits. Com este valor de freqncia obteve-se uma preciso de 0,25% nos incrementos de largura de pulsos do sinal. Isso devido ao fato da contagem de tempo se dar atravs de contadores, que contam perodos inteiros de relgio. Se o valor escolhido de freqncia do PWM fosse maior, a preciso nos incrementos de largura de pulsos seria menor, o que poderia levar a uma instabilidade no controle das rodas da cadeira, haja vista que as velocidades das rodas so controladas pelo valor da largura de pulsos do sinal PWM. Mais detalhes do microcontrolador sero discutidos adiante.

2.2 A Ponte H
Foi idealizada uma ponte H utilizando transistores MOSFET, por sua baixa resistncia (rdson) srie e alta velocidade de resposta. A Figura 3 mostra o esquema da ponte H utilizando transistores MOSFET [4].

16

Figura 3 Ponte H composta de transistores dos tipos MOSFET Canal P e N.

Um grande problema da configurao de ponte H mostrada acima o fato dos transistores MOSFET canal P, na parte superior da ponte, terem uma resistncia de conduo elevada em relao aos transistores MOSFET canal N. A soluo encontrada foi utilizar somente transistores MOSFET canal N, como mostrado na Figura 4.

Figura 4 - Ponte H composta apenas de transistores do tipo MOSFET Canal N.

17 Contudo, para usar a configurao da Figura 4 necessrio utilizar um dispositivo que seja capaz de acionar os transistores da parte superior da ponte. Isso, devido ao fato dos transistores MOSFET canal N necessitarem de uma tenso positiva entre o seu gate e fonte. Contudo, em tal configurao, isso no aconteceria com os transistores da parte superior da ponte [4]. Para solucionar esse problema foi idealizado um sistema de acionamento dos transistores da parte superior baseado nos circuitos integrados IR2101 e no IR2102, ambos produzidos pela International Rectifier IRF [6]. Tais circuitos integrados so capazes de gerarem um terra virtual na fonte dos transistores da parte superior da ponte. Com isso, os transistores so submetidos a uma tenso positiva entre o gate e a fonte, o que leva sua plena conduo. A International Rectifier IRF sugere uma topologia de ponte H, mostrada na Figura 5, mas que no atende as especificaes do projeto. Isso porque, necessita de uma fonte simtrica de 24 V e -24 V e, como dito anteriormente, o projeto tem como prerrogativa utilizar as baterias da cadeira de rodas, que geram uma tenso de 24 V.

Figura 5 Pontes H sugeridas pela IRF.

18 A pinagem IR2101 e do IR2102 est descrita abaixo [6]; Vcc, tenso de alimentao do CI. COM, referncia do circuito integrado. VB, fonte flutuante da parte alta da ponte. VS, terra virtual. HO, sada para a parte alta da ponte. LO, sada para a parte baixa da ponte. HIN, entrada da parte alta da ponte. LIN, entrada da parte baixa da ponte. , entrada negada da parte alta da ponte. , entrada negada da parte baixa da ponte.

Depois de analisar as especificaes dos circuitos integrados citados anteriormente e avaliar os seguintes pontos: o IR2101 e o IR2102 possuem os tempos de subida e descida dos sinais que acionam os MOSFET preparados para evitar conduo cruzada, o uso de apenas uma bateria de 24 V, foi proposta a topologia de circuito mostrada na Figura 6.

Figura 6 Ponte H implementada no trabalho.

19 A configurao mostrada na Figura 6 permite controlar a velocidade e o sentido de giro dos motores com apenas um PWM, sendo o valor mdio de tenso aplicado ao motor controlado pela largura de pulso do sinal PWM. Assim, um sinal com pulsos de 50 % de ciclo de trabalho corresponde ao valor mdio de tenso zero, e para um sinal com largura diferente de 50% o valor de tenso mdio pode ser positivo ou negativo. Em testes no protoboard a topologia mostrada na Figura 6 mostrou-se eficiente e robusta. Contudo, um detalhe deve ser ressaltado: o sinal PWM nunca poder ter pulsos com 0 ou 100% de ocupao do perodo. Isso devido ao fato que, para que o capacitor de Bootstrap (Figura 10) carregue, h a necessidade de transies no sinal PWM de entrada. Se no houver transies o capacitor de Bootstrap no carregar e a tenso VGS dos transistores da parte alta da ponte cair, o que far a dissipao de calor nestes aumentar, levando sua queima. A Figura 7 mostra uma simulao do sinal PWM de sada da ponte H com ocupao de perodo diferente de 50%, e a Figura 8 mostra o sinal real obtido na sada da ponte H do motor direito, sendo mostrado em um osciloscpio com escala de amplitude de 10 V por diviso e escala temporal de 10 s por diviso.
40V

20V

0V

-20V

-40V 0s V(R4:2) Time 20us 40us 60us 80us 100us 120us 140us 160us 180us 200us

Figura 7 Simulao do sinal de sada da ponte H mostrada na Figura 5.

20

Figura 8 Foto do sinal de sada da ponte H implementada.

A cadeira de rodas usa um sistema de trao diferencial com dois motores de CC. Assim, foram implementadas duas pontes H iguais mostrada na Figura 6, sendo uma para cada motor.

2.3 Clculos dos Componentes da Ponte H

2.3.1 Os Transistores
Os motores possuem ambos corrente nominais de 15 A, sendo assim, considerando o fato dos motores poderem trabalhar em sobrecarga os transistores escolhidos so os IRF3205, que um MOSFET canal N, que suporta corrente de regime de at 110 A e tem isolamento para at 55 V [7]. Outro dado relevante do IRF3205 sua curva de corrente de dreno (ID) por queda de tenso de dreno para fonte (VDS) mostrada na Figura 9, que indica a resistncia do canal do transistor.

21

Figura 9 Comportamento resistivo do IRF3205.

De acordo com a Figura 9, a curva de menor resistncia de canal a correspondente VGS igual a 15 V.

2.3.2 Os Componentes de Bootstrap


Os circuitos integrados IR2101 e IR2102 geram um terra virtual na fonte dos transistores da parte superior da ponte H, mas para tal, eles utilizam um capacitor de bootstrap, que eleva a tenso no gate do transistor da parte alta da ponte soma da tenso de alimentao da ponte com a tenso de alimentao do prprio circuito integrado. Assim, a tenso entre o gate e a fonte (VGS) do transistor da parte alta igual tenso de alimentao do circuito integrado. Para o transistor da parte baixa da ponte a tenso VGS a prpria tenso Vcc de alimentao do circuito integrado.

22 O capacitor de Bootstrap deve ter um valor de capacitncia tal que consiga carregar polarizar o canal do transistor de modo a conseguir a mnima resistncia de canal. Este valor pode ser calculado a partir da expresso

[8], na qual:

C o valor mnimo de capacitncia para o capacitor de Bootstrap Qg a capacitncia de carga do gate do MOSFET VMin a mnima tenso entre VB e VS. Vf o valor da queda de tenso de conduo do diodo de bootstrap. VLS a queda de tenso de conduo do transistor da parte baixa da ponte. Iqbs a corrente quiescente do circuito integrado. Icbs(leak) a corrente de fuga do capacitor de Bootstrap. Qls nvel para deslocamento de carga requerido por ciclo = 5 nC para o IR2101 e IR2102. Vcc a tenso de alimentao do circuito integrado. f a freqncia de operao do PWM. Assim: A tenso de alimentao de 15 V, isso devido ao fato do transistor utilizado o IRF3205 possuir a menor resistncia de canal para VGS igual a 15 V. A freqncia do PWM de 20 kHz. Qls ser 5 nC, pois o circuito integrado utilizado de at 600V [8]. Icbs pode ser desconsiderado devido a seu pequeno valor.

23 Iqbs tem um valor tpico de 30 A. De acordo com a Figura 9 para um corrente ID de 15 A VDS ser 0,8 v, ou seja, VLS=0,8 V. A queda tpica de tenso no diodo Vf de 0,7 V. VMin ser de 12V. Qg do IRF3205 146 nC. C ser aproximadamente 400 nF. Contudo, a International Rectifier IRF sugere que o valor de C seja multiplicado por 15, de modo que o valor recomendado de aproximadamente 6 F. Diante disso o valor escolhido para o capacitor de Bootstrap de 10 F. O diodo de bootstrap deve ser rpido o suficiente para carregar o capacitor de Bootstrap nas transies do sinal PWM. Assim, o tempo de chaveamento no deve ser maior que 100 ns e a corrente nominal deve ser maior que Qbs*f, na qual: [8]. Portanto, Qbs igual a 300 nC e ento a corrente nominal ser 6 mA. O diodo escolhido foi o 1N4148 que possui corrente mxima em regime de 200 mA e o tempo de chaveamento de 4 ns. O capacitor de supresso de transitrios tem o propsito de atenuar os efeitos de indutncias parasitas, e seu valor somente pode ser mensurado empiricamente com a placa montada. Sendo assim, seu valor 4 mF. Todos os componentes calculados para o IR2101 so os mesmos para o IR2102. A Figura 10 mostra-se a disposio de cada componente de Bootstrap.

24

Figura 10 Identificao dos componentes de Bootstrap.

2.4 O Acoplamento ptico


Os motores CC, aliados ao fato de existir um chaveamento de 20 kHz de corrente da ordem de 30 A, geram rudos de alta amplitude. Isso faz com que o sistema microcontrolado ligado mesma bateria dos motores no funcione [4]. A soluo implementada o uso de baterias separadas para os motores e para o sistema microcontrolado, fazendo-se necessrio ento o uso de acopladores pticos para comunicao entre o microcontrolador e a ponte H. Logo, para fazer com que o sinal PWM gerado pelo microcontrolador chegue ponte H necessrio pass-lo por um sistema de opto-acopladores para ento chegar s entradas dos drivers, ou seja, os circuitos integrados IR2101 e IR2102 que comandam a ponte H. O acoplador ptico utilizado o 4N35, cujo circuito montado est mostrado na Figura 11. A Figura 12 mostra o sinal real de sada do circuito opto-acoplador em um osciloscpio com escala de amplitude de 5 V por diviso e escala temporal de 20 s po diviso.

25

Figura 11 Circuito de acoplagem ptica.

Figura 12 Sinal na Sada do Acoplador ptico.

O sinal de sada do circuito mostrado na Figura 11 em 20 kHz possui um nvel de offset de 11 V, assim, o nvel lgico 1 na sada do opto-acoplador o sinal de 15 V e o nvel lgico 0 o sinal de tenso 11 V. Esses valores no so reconhecidos

26 pelos drivers, j que os mesmos interpretam como nvel lgico 0 qualquer valor de tenso abaixo de 0,8 V, e interpreta como 1 qualquer valor de tenso acima de 2,5 V. Para fazer com que o sinal de sada do opto-acoplador fosse reconhecido pelo driver, fez-se uso de um comparador com limiar de deciso de 12,5 V. A Figura 13 mostra o sinal real obtido na sada do comparador. Este sinal est mostrado em um osciloscpio com escala de amplitude de 5 V por diviso e 10 s por diviso de escala temporal.

Figura 13 Sinal da sada de um dos comparadores.

27 O circuito resultante ilustrado na Figura 14.

Figura 14 Circuito de acionamento de um dos motores.

Observa-se na Figura 14 a independncia entre as alimentaes da ponte H e do microcontrolador.

2.5 Dispositivos Complementares


A cadeira de rodas composta de vrios subsistemas que interagem entre si. Assim, cada um desses sistemas tem suas prprias caractersticas: tenso de alimentao e nveis de tenso e corrente para entrada e sada. Para comprimir circuito e espao, foram colocado na placa de acionamento reguladores de tenso 7805, 7809 e o 7815 com seus trs nveis de tenso, respectivamente, 5, 9 e 15 V, sendo 5 V para os sensores e para a placa do microcontrolador; 9V para um dispositivo de comunicao wireless Zigbee que pode ser utilizado como Link de comunicao entre o PC e o microcontrolador, e 15 V para a alimentao da eletrnica da ponte H. Ainda para tornar compatvel o microcontrolador utilizado com os sensores houve a necessidade de disponibilizar divisores de tenso para abaixar de nveis TTL,

28 ou seja, de 0 e 5 V para 0 e 3,6 V. Isso porque o microcontrolador MSP430F1611 opera em 3,6 V, ou seja, seu nvel lgico 1 3,6 V e seu nvel lgico 0 0 V. A Figura 15 mostra o circuito implementado para o divisor de tenso.

Figura 15 Circuito divisor de tenso utilizado para abaixar nveis TTL para 3,6 V.

A sada do divisor de tenso 0 e 3,4 V. Observa-se que seu valor no chega 3,6 V, entretanto, o MSP430F1611 reconhece como nvel lgico 1 qualquer nvel acima de 2,0 V [2].

2.6 Dispositivos de Segurana


Para evitar curtos circuitos e sobrecorrentes nos motores, foi colocado um fusvel na entrada de alimentao da ponte H, cujo valor a soma das correntes nominais dos motores acrescida de 25%. Os motores tm corrente nominal de 15 A cada um, logo, o fusvel de 35 A. Pelo mesmo motivo citado anteriormente, tambm foi colocado um fusvel de 1 A na entrada de alimentao dos reguladores de 5, 9 e 15 V.

29 Para melhor controle e economia de bateria, foi colocado um rel na entrada de alimentao da eletrnica de acionamento da ponte H. Assim, o microcontrolador pode ligar e desligar a ponte H sem que haja necessidade e chaves. O circuito de comando da ponte H est mostrado na Figura 16. Alem do rel existe ainda uma chave de segurana, a qual tem por finalidade inibir ou no o acionamento da ponte H, independentemente do rel.

Figura 16 Dispositivos de segurana da placa.

2.7 LEDs Indicadores


Para auxiliar na visualizao de acontecimentos foram colocados quatro LEDs indicativos, sendo: LED verde indica que os reguladores de 5 e 9 V esto ligados. LED vermelho indica que o regulador de 15 V est ligado, ou seja, que a eletrnica da ponte H est ligada. LED amarelo piscando regularmente a 2 Hz indica que o microcontrolador funciona corretamente. LED amarelo piscando aleatoriamente indica que a comunicao serial com o microcontrolador est ativa.

30

2.8 Conexes

2.8.1 Microcontrolador
Para fazer as conexes com os demais dispositivos que compe o sistema foram disponibilizados conectores do tipo pinhead. Por outro lado, para que a conexo com o microcontrolador fosse possvel, foi colocado o conector representado pela da Figura 17:

Figura 17 Conector do microcontrolador.

2.8.2 Os Encoders
Foram utilizados para leitura de velocidade dois encoders incrementais [8], sendo um para cada roda da cadeira. Para a conexo dos encoders com o dispositivo de controle, ou seja, com o microcontrolador MSP430F1611, foi colocado um conector de cinco pinos para cada encoder. Assim, na Figura 18 est a descrio de cada pino dos conectores e na Figura 19 est mostrado o encoder da roda esquerda.

31 Outro detalhe importante a colocao dos encoders na cadeira, pois existe a necessidade de capturar o menor movimento dos motores da cadeira. Por esta razo, os encoders foram fixados no eixo de cada motor.

Figura 18 Conector de um dos encoders.

2.8.3 O Sonar
Outro sensor que necessitou de uma interface com o microcontrolador foi o sonar. Para a interface em questo tambm foi utilizado um divisor de tenso para abaixar os nveis de sada do sonar [9]. Assim, a interface com o sonar est representada na Figura19.

Figura 19 Conector do sonar.

32

2.8.4 Conexes Para Expanso


Ainda para possveis expanses, e para possveis dispositivos posteriormente anexados ao sistema, foram disponibilizados 13 divisores de tenso para abaixar nveis TTL para 3,6 V. Assim, foram colocados mais dois conectores, um de entrada TTL e outro de sada at 3,6 V. Na Figura 20 ilustrado o esquemtico da interface de expanso.

Figura 20 Conectores de expanso.

33

2.8.5 O Mapa da Placa


Na Figura 21 est a placa final com as indicaes de todas suas partes integrantes.

Figura 21 Placa final.

34

3 O SISTEMA DE CONTROLE DE BAIXO NVEL


A placa de acionamento discutida anteriormente controlada por um microcontrolador. Neste, executado um algoritmo de controle de velocidade das rodas da cadeira de rodas denominado, controlador, e um algoritmo de comunicao com um PC. O PC executa o algoritmo de controle de alto nvel o qual recebe informaes dos encoders com as quais feita a hodometria e o controle de trajetria. O objetivo do sistema de controle baixo nvel enviar informaes de leitura dos encoders a um PC e receber informaes de velocidade das rodas. Com base nos valores de velocidade recebidos do PC, e em informaes obtidas dos encoders, o algoritmo de controle de baixo nvel executado no microcontrolador deve controlar as larguras dos sinais PWM de modo a controlar as velocidades das rodas da cadeira.

3.1 O Microcontrolador
Como salientado anteriormente, o microcontrolador utilizado no projeto o MSP430F1611 da Texas instruments. Este dispositivo uma mquina RISC de 16 Bits com 56 kB de memria flash e 8 kB de memria RAM. Pode operar em at 8 MHz e alimentado em 3,6 V [2]. O MSP430F1611 um microcontrolador desenvolvido para aplicaes de baixa demanda de potncia. Possui um baixo consumo e ainda dispe de inmeros perifricos internos que possibilitam o desenvolvimento de sistemas rpidos, confiveis e pequenos. Para testes e prototipagem foi utilizada uma placa de testes para o microcontrolador em questo, a qual foi desenvolvida pelo Laboratrio de Automao Inteligente (LAI) do Departamento de Engenharia Eltrica (DEL) da Universidade Federal do Esprito Santo (UFES). A Figura 22 mostra a placa de testes utilizada [3]. O programa foi escrito na liguagem C, e a plataforma de programao o IAR Embedded Workbench for MSP430.

35

Figura 22 Placa de prototipagem do MSP430.

3.2 A Aquisio de Dados dos Encoders


O encoder um transdutor que converte um movimento angular ou linear em uma srie de pulsos digitais eltricos. Esses pulsos gerados podem ser usados para determinar velocidade, taxa de acelerao, distncia, rotao, posio ou direo [10]. O sistema de leitura baseado em um disco (encoder rotativo), formado por janelas radiais transparentes e opacas alternadas. Este iluminado perpendicularmente por uma fonte de luz infravermelha, quando ento, as imagens das janelas transparentes so projetadas no receptor. O receptor converte essas janelas de luz em pulsos eltricos conforme os desenho das Figuras 23 e 24. Os encoders podem ser divididos em encoders incrementais e absolutos.

36

Figura 23 - Princpio de funcionamento de um encoder rotativo.

Figura 24 - Princpio de funcionamento de um encoder linear.

37 O encoder incremental fornece normalmente dois pulsos quadrados defasados em 90, que so chamados usualmente de canal A e canal B, de acordo com a Figura 25. A leitura de somente um canal fornece apenas a velocidade, enquanto que a leitura dos dois canais fornece tambm o sentido do movimento.

Figura 25 - Representao grfica dos sinais A e B de um encoder incremental.

Os encoders utilizados neste trabalho so do tipo incremental (Figura 26). Assim, processo de leitura de velocidade das rodas comea com a captura do perodo dos sinais gerado pelos encoders. Como salientado anteriormente, os encoders esto acoplados aos eixos de cada motor. Sabendo que os motores esto ligados s rodas por um sistema de polias e correias, e ainda desprezando qualquer tipo de folga, escorregamentos e distenso no sistema de polias e correias possvel afirmar que os perodos dos sinais de cada encoder so proporcionais ao perodo de sua respectiva roda. Para se obter o valor de velocidade em metros por segundo apenas com a captura dos perodos dos sinais dos encoders, foi necessrio primeiramente capturar o perodo dos encoders. O MSP430F1611 possui um perifrico especifico para captura

38 de perodo de sinais chamado TIMERB. Este perifrico uma srie de contadores e registradores com capacidade de gerao de interrupo [2]. O processo de captura de perodos do TIMERB se baseia em um contador de relgio operando a 8 MHz e quatro outros registradores com seus respectivos sinais de gatilhos. Assim, quando gerada uma transio de 0 para 1 nos sinais de gatilhos os registradores armazenam o atual valor do contador e geram uma interrupo para o programa. Este valor armazenado corresponde a um nmero inteiro de perodos de 125 ns. Assim, basta saber quanto tempo se passou de uma transio at outra para se obter o valor o perodo do sinal de gatilho. Os sinais dos encoders so configurados como sinais de gatilho para o TIMERB. Dessa maneira, possvel obter nmeros inteiros mltiplos de 125 ns que correspondem ao valor dos perodos dos encoders. O algoritmo de captura de perodo executado nas interrupes no programa geradas pelas transies de 0 para 1 dos sinais dos encoders conectados aos pinos de captura do TIMERB (sinal de gatilho). Dessa maneira, feita uma subtrao entre dois valores consecutivos capturados e o valor do perodo essa diferena de valores. Em seguida, ainda feita uma avaliao do sentido de giro das rodas, que como salientado anteriormente, possvel ser feita apenas observando os valores dos dois canais de cada encoder. Assim, quando o sentido de giro da roda para frente o valor do perodo positivo, e quando o sentido de giro para trs o valor do perodo negativo. Os perodos capturados so ainda colocados em variveis do tipo long int, ocupando assim 4 Bytes cada um. Como todo sistema de medio de uma grandeza fsica, existe a necessidade de calibrao prvia. Para tal, fixou-se um valor de largura de pulso do sinal PWM de uma das rodas, e depois, com o auxilio de um Tacmetro e de um programa de testes executado no microcontrolador, que captura o perodo dos sinais dos encoders e transmite seu valor pela interface serial, foram feitas vrias medies de velocidade da roda das quais se tirou uma mdia.

39 O valor obtido foi 3840, de modo que para se obter o valor da velocidade de uma das rodas em metros por segundo, basta dividir 3840 pela diferena entre dois valores consecutivos de um dos registradores de captura do TIMERB.

Figura 26 Encoder da roda direita.

3.3 A Comunicao
A comunicao se d atravs de uma interface serial. O MSP430 possui duas interfaces seriais internas, USART0 e USART1, das quais foi utilizada apenas a USART0. Essas interfaces so bastante versteis, visto que depois de devidamente configuradas a transmisso se d apenas escrevendo um valor em um registrador, U0TXBUF. E para ter acesso ao caractere recebido basta ler o valor de um registro, o U0RXBUF. Outra caracterstica importante das interfaces seriais em questo a capacidade de gerao de interrupo de programa no microcontrolador, o que torna possvel a transmisso e recepo de seqncias de caracteres de forma eficiente [2]. Para a comunicao com o PC se faz necessrio o uso de um conversor de nveis, visto que o PC utiliza o protocolo RS-232 para comunicao serial, que utiliza nveis de -12 a +12 V [11], e o microcontrolador de 0 a 3,6 V [1].

40 Para fazer a interface entre o PC e o microcontrolador se fez necessrio o uso do MAX3243 [11], que um conversor de nveis RS-232 para nveis aceitveis pelo microcontrolador. As duas interfaces seriais do MSP430F1611 podem operar em varias taxas de comunicao e em vrias configuraes, entretanto, por uma questo de compatibilidade de temporizao com o algoritmo de controle, foi escolhida a taxa de 57,6 kbps com um Bit de parada, oito Bits (01 Byte) de dados e sem Bit de paridade. A Figura 27 mostra a seqncia temporal de envio dos dados pela interface serial do MSP430F1611.

Figura 27 Disposio dos Bits em uma transmisso serial.

Escolheu-se a configurao citada anteriormente devido ao fato do PC requerer de 100 em 100 ms que o microcontrolador envie as informaes lidas dos encoders. Essas informaes so os ltimos valores medidos dos perodos dos dois encoders, que, por serem variveis do tipo long int, ocupam quatro Bytes cada uma. Logo, para o microcontrolador enviar as informaes requeridas pelo PC, ter de enviar oito Bytes. Portanto, so gastos aproximadamente 1,6 ms para a transmisso dos dois valores de perodo. Observou-se que os Bytes mais significativos dos perodos eram em sua grande maioria zero. Este fato poderia levar a uma elevada taxa de erros de transmisso, visto que um caractere todo preenchido por zeros pode levar a uma perda de sincronismo de relgio entre as interfaces seriais do PC e do microcontrolador. Para solucionar este possvel problema, feita na transmisso dos dados uma operao lgica do tipo ou exclusivo Byte a Byte com o valor hexadecimal 0xAA, e na recepo feito o mesmo procedimento para se recuperar o valor original do Byte recebido. Dessa maneira a probabilidade de ocorrer uma seqncia longa de zeros diminui, fazendo a taxa de erros cair [12].

41 O PC tem a funo de enviar um requerimento de envio de dados, aguardar o recebimento das informaes dos encoders e traar uma trajetria para a cadeira. Em seguida, deve enviar ao microcontrolador comandos de controle para guiar a cadeira conforme a trajetria traada. Para tal, foi criada uma seqncia de comandos de controle para a cadeira. Cada comando representado por uma letra, assim, quando o PC necessitar enviar um comando cadeira ele deve enviar o caractere ASCI correspondente letra do comando. Abaixo est listada a sequencia de comandos com suas respectivas letras. l ligar as pontes H. d desligar as pontes H. s requerimento para envio de informaes dos encoders. r reset de todas as variveis envolvidas com o sistema de controle. t teste para as conexes dos motores com a placa. v atualizar o valor da velocidade linear. w - atualizar o valor da diferena de velocidade linear entre as duas rodas. O comando l deve ser enviado quando houver a necessidade de movimento da cadeira, pois, quando o microcontrolador recebe uma letra l ele seta um pino de sada de modo a ligar o rel do acionamento das pontes H. O comando d deve ser enviado quando houver a necessidade de desligar o acionamento das pontes H da cadeira, pois, quando o microcontrolador recebe uma letra d ele limpa um pino de sada de modo a desligar o rel do acionamento das pontes H. O comando r provoca a um reset em todas as variveis de controle da cadeira, provocando assim, uma parada brusca da mesma.

42 O PC necessita periodicamente dos dados dos encoders. Para obt-los, o PC envia um comando representado pela letra s, que, assim que recebido, o microcontrolador envia oito Bytes contendo as informaes dos perodos dos encoders. O comando t faz com que o microcontrolador verifique se os motores e os encoder esto conectados corretamente. Assim, quando recebido um t pelo microcontrolador, primeiramente provocado um movimento para frente na roda direita, de modo que esperada uma captura positiva do encoder conectado na roda direita. Se o valor capturado for positivo, o microcontrolador envia pela interface serial um caractere c, indicando que as conexes da roda direita esto corretas. Contudo, se o valor for negativo o microcontrolador envia um caractere D, indicando assim que existe algo errado com as conexes do motor direito. Em seguida executado o mesmo procedimento com a roda esquerda, contudo, o caractere enviado pelo microcontrolador em caso de erro agora E. Para atualizar os valores de velocidade linear da cadeira utiliza-se o comando v. Assim, quando, o microcontrolador recebe um caractere ASCI v, entendido que os prximos dois Byte recebidos so o Byte mais significativo e menos significativo de uma varivel inteira, que corresponde ao valor da velocidade atual em milmetros por segundo. O mesmo acontece quando rebebido um w, contudo, o valor interpretado como sendo a diferena de velocidade entre as rodas, necessria para fazer curvas. Todos os teste de comunicao foram feitos com auxilio de um software de comunicao via interface serial chamado RComserial [13] (Figura 28) e de um dispositivo de comunicao serial wireless ZigBee [14]. Este software tem a capacidade de enviar e receber dados via porta serial. Assim, foi possvel emular o PC, j que o sistema de controle de alto nvel no estava disponvel no desenvolvimento deste trabalho.

43

Figura 28 interface do programa RComSerial.

3.4 O Controlador
O sistema de controle de baixo nvel consiste em controlar as velocidades das rodas de acordo com o que foi estabelecido por um algoritmo de alto nvel executado em um PC. Diante disso, o sistema de controle de baixo nvel deve capturar as informaes de velocidade dos encoders e ajustar o valor do PWM, de modo a manter as velocidades das rodas nos valores estabelecidos pelo sistema de controle de alto nvel. O microcontrolador tem a funo de executar o algoritmo de controle de baixo nvel chamado controlador.

44 Como salientado anteriormente, a cadeira possui dois motores, sendo um para cada roda de trao. Devido a este motivo, as curvas so feitas de forma diferencial, ou seja, atravs da diferena de velocidade entre as duas rodas da cadeira. Na figura 29 representada a cadeira e suas variveis de controle de alto nvel, que no so abordadas neste trabalho. Como salientado anteriormente o PC de bordo se encarrega executar o algoritmo de controle de alto nvel que traa a trajetria da cadeira e envia para o sistema de controle de baixo nvel informaes de velocidade. O sistema de controle de baixo nvel executado no microcontrolador,o qual se encarrega de carrega de controlar as velocidades das rodas da cadeira.

Figura 29 Modelo dinmico da cadeira de Rodas.

O controlador escolhido foi um proporcional com lao integrativo, como mostrado na Figura 30 [4].

45

Figura 30 Controlador proporcional com lao integrativo.

O funcionamento do controlador citado acima baseado no cruzamento de informaes das duas rodas, ou seja, o sinal de controle para cada roda gerado a partir do sinal de erro das duas rodas. O ramo integral do controlador tem a funo de manter as duas rodas com velocidades iguais, e ainda corrigir qualquer desvio de rota que pode ocorrer na dinmica do sistema. Contudo, em testes prticos, o controlador da Figura 30 no apresentou resultados satisfatrios, pois, apresentava um erro em regime muito acentuado, e quando ajustado o ganho proporcional para reduzir o erro em regime, o controlador respondia rpido demais, provocando mudanas abruptas de velocidade. Esse comportamento no satisfatrio, haja vista que erro em regime compromete o desempenho de todo sistema, e mudanas abruptas de velocidade torna a cadeira desconfortvel para o usurio que se encontra sobre a mesma. O ramo integral tem como principal caracterstica a extino do erro em regime [15]. Esta caracterstica levou proposta de um novo controlador. O novo

46 controlador tem um ramo integral para cada roda somado ao ramo proporcional j existente no controlador da Figura 30. Na Figura 31 mostra-se o controlador utilizado.

Figura 31 Controlador implementado.

O controlador da Figura 31 possui um ramo integrativo individual para cada roda, isso em regime seja igual a zero e ainda possibilita ajustar a velocidade de resposta transitria de acordo com o necessrio para o conforto do usurio. Os resultados obtidos com o controlador da Figura 31 foram bastante satisfatrios. Outra caracterstica importante o fato do controlador da Figura 31 funcionar como freios, haja vista que, quando a velocidade desejada zero o controlador se ope a qualquer tentativa de movimento das rodas e ainda corrige qualquer desvio de posio ocorrido.

47 Toda a anlise de resultados foi feita de forma visual e com auxlio de equipamentos simples, tais como tacmetros e osciloscpio. A escolha dos parmetros do controlador foi feita com base na experincia adquirida em diversos testes com o sistema [Apndice 1]. O controlador da Figura 31 um algoritmo executado no microcontrolador [Apndice 3]. Este algoritmo obedece alguns pr-requisitos mais amplamente discutidos no Apndice 2.

48

4 CONCLUSES E TRABALHOS FUTUROS

O objetivo deste trabalho foi desenvolver um sistema de controle de baixo nvel para uma cadeira de rodas robotizada controlada por sinais eletro-biolgicos. Este sistema consiste de placa de acionamento dos motores da cadeira e ainda de um programa executado em um microcontrolador que tem o objetivo, juntamente com um sistema de controle de alto nvel, de prover a robotizao da cadeira. Foi possvel implementar um sistema confivel e robusto que pode ser acoplado a qualquer cadeira de rodas eltricas. Ainda, devido ao fato do sistema de controle de baixo nvel ter sido implementado em um microcontrolador, as possibilidades de ampliao das funes da cadeira so inmeras, tendo em vista que a placa de acionamento tambm possui possibilidade de expanso. Foram feitos com a cadeira diversos testes com usurios diferentes a bordo, e todos apresentaram resultados satisfatrios. Contudo, um problema a ser resolvido em trabalhos futuros o excessivo aquecimento dos transistores da ponte H. Isso se deve ao fato de durante um intervalo de tempo muito curto no perodo de comutao dos transistores haver um caminho de baixa resistncia entre transistores do mesmo lado das pontes H. Isso leva dissipao razovel de potncia nas mesmas. A soluo encontrada foi a colocao de um dissipador acoplado a um ventilador (Figura 33) para auxiliar na dissipao do calor. Na Figura 32 esto mostrados os sinais de entrada dos gates dos transistores de um mesmo brao de uma das pontes H, na qual observa-se um breve perodo de conduo simultnea dos mesmos .

49

Figura 32 Sinais de excitao de transistores de mesmo brao de uma das pontes H.

Figura 33 Dissipador e ventilar instalados na placa.

50

REFERNCIAS BIBLIOGRFICAS

[1] FREIRE, E.O. et al. Human-Machine Interface Based on Electro-Biological Signals for Mobile Vehicle Control, Proceedings of the 2006 IEEE International Symposium on Industrial Electronics, Anais Montreal, [s.n]Jun.2006. p. 29542959. [2] TEXAS INSTRUMENTS. MSP430X1XX FAMILY Users guide [s.n,2003]. [3] LABORTORIO DE AUTOMAO INTELIGENTE (LAI). PROTO430 Placa de prototipagem para microcontrolador TI MSP430. [s.n, 2005]. [4] JONES, Joseph L.; FLYNN, Anita M.; SEIGER, Bruce A. - Mobile Robots: inspiration to implementation. Massachusetts: Wellesley, 2001. [5] SEDRA. A. S., SMITH, K. C. Microelectronic circuits. 3rd Ed. USA, HWR Saunders College Publishing, 1991. [6] INTERNATIONAL RECTIFIER (IRF). Data Sheet No. PD60043 Rev. O IR2101(S)/IR2102(S) & (PbF) [s.n, 2004]. [7] INTERNATIONAL RECTIFIER (IRF). Data Sheet No. PD-91279E IRF3205 [s.n, 2001]. [8] INTERNATIONAL RECTIFIER (IRF). DESIGN TIP DT 98-2a. Bootstrap

Component Selection For Control ICs. [s.n, 2001]. [9] FREIRE, Eduardo Oliveira. Desenvolvimento de um Sistema de Sensoriamento Ultra-Snico para Rob Mvel. Vitria: UFES, 1997.100p. Tese (Mestrado) Programa de Ps- Graduao em Automao, Universidade Federal do Esprito Santo, Vitria, 1997. [10] MATIAS, Juliano. Encoders. So Paulo: Saber, 2002. Disponvel em: <http://www.mecatronicaatual.com.br/artigos/cnc/> Acesso em: 09 de Julho de 2007.

51 [11] TEXAS INSTRUMENTS. MAX3243 3 V TO 5, 5 V MULTICHANNEL RS232 LINE DRIVER/RECEIVER Technical Data [s. n, 2004]. [12] MUNIZ, Rogrio. Princpios de Telecomunicaes. Vitria: Tropical, 2003. [13] MESSIAS, Antnio Rogrio. Comunicao com Porta Serial. So Paulo: Copyright, 2007. [14] MAXSTREAM Zigbee OEM RF MODULE. Disponivel em 2006. Disponvel em: <http://www.rogercom.com/PortaSerial/PortaSerial.htm>Acesso em: 15 de julho de

http://www.maxstream.net/ Acesso em: 15 de julho de 2007. [15]DORF, Richard,C. BISHOP, Robert H. Sistemas De Controle Moderno. 8 ed. USA, HWR Saunders College Publishig, 1989.

52

APNDICES

1. A Obteno de Parmetros do Controlador

A cadeira de rodas um sistema de duas entradas e duas sadas acopladas de acordo com a Figura 34, ou seja, as duas rodas interagem-se entre si, o que faz em que qualquer variao de velocidade de uma das rodas influenciar na velocidade da outra.

Figura 34 Representao da cadeira como sistema de duas variveis acopladas.

Existem muitas tcnicas para se obter os parmetros de um controlador para um sistema como a cadeira de rodas. Contudo, com base no conhecimento adquirido no projeto de todo sistema de acionamento dos motores, e com a prtica tambm adquirida em inmeros testes prticos com a cadeira, foi possvel sintonizar o controlador em questo de acordo com as necessidades do projeto sem maiores dificuldades.

53

2. O Algoritmo de Controle
O microcontrolador, assim como todo sistema programvel, executa um programa de forma seqencial, ou seja, uma instruo por vez. Foram implementadas duas funes: o controlador e uma funo de comunicao. O controlador uma funo custosa no sentido de processamento, isso porque efetua uma srie de divises e multiplicaes entre outras operaes. Portanto, deve-se ter muito cuidado com o algoritmo implementado, pois, um algoritmo pouco eficiente pode na sua execuo no respeitar a dinmica do sistema o que leva instabilidade do mesmo [4] [15]. O software de programao utilizado o IAR Embedded Workbench que tambm um software de simulao que permite estimar o tempo de execuo e a eficcia de programa executado no microcontrolador. A primeira verso do programa implementava um controlador que manipulava variveis em ponto flutuante. O controlador necessitava em sua demanda mxima de aproximadamente 23000 ciclos de relgio para ser executado. Isso o equivalente, em 8 MHz de relgio, a quase 3 ms de tempo de execuo. Observando o tempo de execuo da funo que executava o controlador e ainda o tempo de execuo da funo de comunicao que de aproximadamente 50 s no pior caso, foi estipulado que o controlador deve ser executado de forma sncrona, ou seja, deve haver um temporizador para indicar o momento no qual o controlador deve ser executado. Este perodo de execuo do controlador de 4 ms. Na verso final, foi utilizado um numero mnimo de variveis em ponto flutuante, assim, as demais foram realizadas em ponto fixo com quatro casas decimais de preciso. O desempenho obtido com as modificaes nas variveis se mostrou muito satisfatrio, haja vista que agora necessita de 1,5 ms para ser executado, e o perodo de execuo do microcontrolador pode ento ser abaixado para 3 ms.

54

3. Programa criado para execuo no microcontrolador


#include <intrinsics.h> #include <msp430x16x.h> // declarao de funces //////////////////////////////////////////////////////////////////// void USART(void); void controlador(long int periodo_1,long int periodo_2); void setup(void); int transmissao_PC(long int dado,long int dado2); ///////////////////////////////////////////////////////////////////////////////////////////// // declarao de vairveis globais int tempo_para_zero = 35; unsigned int deley = 0; char buf_RX[16]; char buf_TX[16]; int pont_rec = 0; int pont_proc = 0; int temp_encoder_1 = 3; int temp_encoder_2 = 3; int temp_controlador = 3; unsigned int buffer_TBCCR1 = 0; unsigned int buffer_TBCCR2 = 0; unsigned int buffer_TBCCR3 = 0; unsigned int buffer_TBCCR4 = 0; unsigned int buffer_TBCCR5 = 0; int temp_led = 15; int temp_sonar = 15; int pont_TX = 0; int conta_tempo = 0; long int periodo_1; long int periodo_2; long int periodo_sonar = 0; long int passada_inteira_11 = 0; long int passada_inteira_12 = 0; long int passada_inteira_21 = 0; long int passada_inteira_22 = 0; long int passada_inteira_sonar = 0; long int somatoria_1 = 0; long int somatoria_2 = 0; long int somatoria_w = 0; float ki; float ki_2; float kp; int set_point = 0; int delta_v = 0; char acao_atual = 'n'; struct { unsigned int enc_1_z :1; unsigned int enc_2_z :1; unsigned int controlador :1;

55
unsigned int trava_intregral_2 :1; unsigned int trava_intregral_1 :1; }controle; struct { char sonar :1; }disp; ///////////////////////////////////////////////////////////////////////////////////////////// //#include "asci_dec.c" #pragma vector = TIMERB1_VECTOR __interrupt void trata_timer_B1(void) { switch (TBIV) { case 0x02 : if ((TBCCTL2 & CCI) != 0) { periodo_1 = TBCCR1 + (passada_inteira_11 - buffer_TBCCR1); } else { periodo_1 = + buffer_TBCCR1 - (TBCCR1 + passada_inteira_11) ; } buffer_TBCCR1 = TBCCR1; passada_inteira_11 = 0; controle.enc_1_z = 0; temp_encoder_1 = tempo_para_zero; break; case 0x04 : if ((TBCCTL1 & CCI) == 0) { periodo_1 = TBCCR2 + (passada_inteira_12 - buffer_TBCCR2); } else { periodo_1 = + buffer_TBCCR2 - (TBCCR2 + passada_inteira_12) ; } buffer_TBCCR2 = TBCCR2; passada_inteira_12 = 0; controle.enc_1_z = 0; temp_encoder_1 = tempo_para_zero; break; case 0x06 : if ((TBCCTL4 & CCI) == 0) { periodo_2 = TBCCR3 + (passada_inteira_21 - buffer_TBCCR3); } else { periodo_2 = + buffer_TBCCR3 - (TBCCR3 + passada_inteira_21) ; } buffer_TBCCR3 = TBCCR3; passada_inteira_21 = 0; controle.enc_2_z = 0;

56
temp_encoder_2 = tempo_para_zero; break; case 0x08 : if ((TBCCTL3 & CCI) != 0) { periodo_2 = TBCCR4 + (passada_inteira_22 - buffer_TBCCR4); } else { periodo_2 = buffer_TBCCR4 - (TBCCR4 + passada_inteira_22); } buffer_TBCCR4 = TBCCR4; passada_inteira_22 = 0; controle.enc_2_z = 0; temp_encoder_2 = tempo_para_zero; break; case 0x0a : // eco periodo_sonar = TBCCR5 + (passada_inteira_sonar - buffer_TBCCR5); //U0TXBUF = 'h'; break; case 0x0c : // init buffer_TBCCR5 = TBCCR6; passada_inteira_sonar = 0; temp_sonar = 20; break; case 0x0e : passada_inteira_11 += 65536; passada_inteira_12 += 65536; passada_inteira_21 += 65536; passada_inteira_22 += 65536; passada_inteira_sonar += 65536; break; default : break; } } #pragma vector = TIMERB0_VECTOR __interrupt void trata_timer_B0(void) { TBCCR0 += 8000; if (temp_controlador == 0) { temp_controlador = 2; controle.controlador = 1; } else { temp_controlador --; } //CONTADOR DE ZERO DOS ENCODERS if (temp_encoder_1 <= 0 ) {

57
temp_encoder_1 = tempo_para_zero; controle.enc_1_z = 1; } else { temp_encoder_1--; } // CONTADOR DE ZERO DOS ENCODERS if (temp_encoder_2 <= 0 ) { temp_encoder_2 = tempo_para_zero; controle.enc_2_z = 1; } else { temp_encoder_2--; } // temprizador para controlador //PISCA LED if (temp_led == 0) { temp_led = 250; P2OUT ^= 0x04; } else { temp_led --; } }

#pragma vector = TIMERA1_VECTOR __interrupt void timer_A(void) { switch (TAIV) { case 0x02: break; default : break; } } #pragma vector = TIMERA0_VECTOR __interrupt void timer_A0(void) { } ///////////////////////////////////////////////////////////////////////////////////////////////// #pragma vector = USART0RX_VECTOR __interrupt void recepcao(void) { pont_rec ++; pont_rec &= 0x000f; buf_RX[pont_rec] = U0RXBUF; }

58
////////////////////////////////////////////////////////////////////////////////////////////////// #pragma vector = USART1RX_VECTOR __interrupt void recepcao1(void) { } ///////////////////////////////////////////////////////////////////////////////////////////////// #pragma vector = USART0TX_VECTOR __interrupt void transmicao(void) { if (pont_TX > 0) { P2OUT |= 0x02; pont_TX--; U0TXBUF = buf_TX[pont_TX]; } else { P2OUT &= 0xFD; pont_TX = 0; } } //////////////////////////////////////////////////////////////////////////////////////// #pragma vector = USART1TX_VECTOR __interrupt void transmicao1(void) { }

void main( void ) { WDTCTL = WDTPW + WDTHOLD; // desaviva o wacth dog ////////////////////////////////////////////////////////////////////////////////////////////// // configura o MCLK para o X2 em 8MHz BCSCTL1 = DIVA_0 + RSEL2; BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0; deley = 2000; do { deley --; } while (deley != 0); IFG1 = 0; // configurao do timer B com a frequencia de interrupo do CCPB0 igual a 2s o clock de 1/2^15 s TACTL = TASSEL_2 + ID_0 + MC_1; TACCTL0 =0X00; TACCTL1 = OUTMOD_7; TACCTL2 = OUTMOD_7; TACCR0 = 400; TACCR1 = 200; TACCR2 = 200; ////////////////////////////////////////////////////////////////////////////////////////////// // configuracao da USART ME1 = UTXE0 + URXE0;

59
U0CTL = 0; U0CTL = CHAR + SWRST; // CONFIGURA PARA BIT DE PARIDADE 8 BITS RECEBIDOS E ENDERECAMENTO POR INATIVIDADE DE LINHA U0TCTL = SSEL1 + SSEL0; // C0ONFIGURA O CLOCK DA USART PARA O SMCLK QUE DEVE SER DE 1Mhz //U0RCTL = 0; // CONFIGURA A INTERRUPO DE CARACTERES U0MCTL = 0XEF; // CONFIGURA A VELOCIDADE DE ENVIO PARA 9600 Bps U0BR0 = 0X8A; U0BR1 = 0X00; U0CTL = U0CTL & 0xfe ; IE1 = UTXIE0 + URXIE0; /* ME1 = UTXE0 + URXE0; U0CTL = 0; U0CTL = CHAR + SWRST; // CONFIGURA PARA BIT DE PARIDADE 8 BITS RECEBIDOS E ENDERECAMENTO POR INATIVIDADE DE LINHA U0TCTL = SSEL1 + SSEL0; // C0ONFIGURA O CLOCK DA USART PARA O SMCLK QUE DEVE SER DE 1Mhz //U0RCTL = 0; // CONFIGURA A INTERRUPO DE CARACTERES U0MCTL = 0X92; // CONFIGURA A VELOCIDADE DE ENVIO PARA 9600 Bps U0BR0 = 0X41; U0BR1 = 0X03; U0CTL = U0CTL & 0xfe ; IE1 = UTXIE0 + URXIE0; */ /////////////////////////////////// TBCTL = TBCLGRP_0 + CNTL_0 + TBSSEL_2 + ID_0 + MC_2 + TBIE; TBCCTL0 = CCIE; TBCCTL1 = CM_1 + OUTMOD_0 + SCS + CAP + CCIE; TBCCTL2 = CM_1 + OUTMOD_0 + SCS + CAP; TBCCTL3 = CM_1 + OUTMOD_0 + SCS + CAP + CCIE; TBCCTL4 = CM_1 + OUTMOD_0 + SCS + CAP; TBCCTL5 = CM_1 + OUTMOD_0 + SCS + CAP + CCIE; TBCCTL6 = CM_1 + OUTMOD_0 + SCS + CAP + CCIE; TBCCR0 = 0; _EINT(); // CONGURAO DAS PORTAS P1DIR = 0XFF; P1SEL = 0XFF; P2DIR = 0XFF; P2SEL = 0X00; P5DIR = 0XFF; P5SEL = 0X00; P3DIR = 0XFF; P3SEL = 0XF0; P4DIR = 0X00; P4SEL = 0XFF; P6DIR = 0XFF; P6SEL = 0XFF; P2OUT = 0X00; ki = (0.150);//0.003*50 ki_2 = (0.0000750);//0.003*250/10000 kp = 0.01;//100/10000 somatoria_1 = 0; somatoria_2 = 0; somatoria_w= 0; controle.enc_1_z = 1;

60
controle.enc_2_z = 1; while (1) { if (pont_rec != pont_proc) { USART(); } if (controle.controlador == 1) { controlador(periodo_1,periodo_2); controle.controlador = 0; } } } /////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////// void USART(void) { int aux; int ponteiro; char processa = 1; ponteiro = pont_proc; while (processa == 1) { switch (acao_atual) { case 'w' : aux = pont_rec - ponteiro; if (aux < 0) { aux += 16; } if ((aux) >= 2) { ponteiro++; ponteiro &= 0x000f; delta_v = 0; delta_v = buf_RX[ponteiro]; ponteiro++; ponteiro &= 0x000f; delta_v = delta_v << 8; delta_v |= buf_RX[ponteiro]; delta_v *= 10; acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro;

61
} } else { processa = 0; } break; case 'v' : aux = pont_rec - ponteiro; if (aux < 0) { aux += 16; } if ((aux) >= 2) { ponteiro++; ponteiro &= 0x000f; set_point = 0; set_point = buf_RX[ponteiro]; ponteiro++; ponteiro &= 0x000f; set_point = set_point << 8; set_point |= buf_RX[ponteiro]; set_point *= 10; acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } } else { processa = 0; } break; case 'l' : P2OUT |= 0X01; acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } break; case 'd' : P2OUT &= 0XFE; acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } break; case 't' : setup(); acao_atual = 'n'; if (ponteiro == pont_rec) {

62
processa = 0; pont_proc = ponteiro; } break; case 'r' : somatoria_1 = 0; somatoria_2 = 0; somatoria_w = 0; set_point = 0; TACCR1 = 200; TACCR2 = 200; delta_v = 0; acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } break; case 's' : pont_TX = transmissao_PC(periodo_1,periodo_2);// 13us acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } break; case 'n' : if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } else { ponteiro++; ponteiro &= 0x000f; acao_atual = buf_RX[ponteiro]; pont_proc = ponteiro; } break; default : acao_atual = 'n'; if (ponteiro == pont_rec) { processa = 0; pont_proc = ponteiro; } break; } } } void controlador(long int periodo_1,long int periodo_2) { long int e_1;

63
long int e_2; long int speed_1; long int speed_2; long int u_1; long int u_2; long int aux_w; long int delta_speed; long int aux_somatoria_1; long int aux_somatoria_2; static long int e_1_ant = 0; static long int e_2_ant = 0; // acha a velocidade if ( controle.enc_1_z == 0) { speed_1 = (38400000/(periodo_1));//3840 calibrao controle.trava_intregral_1 = 0; } else { speed_1 = 0; if (controle.trava_intregral_1 == 0) { somatoria_1 = 0; controle.trava_intregral_1 = 1; } } if ( controle.enc_2_z == 0) { speed_2 = (38400000/(periodo_2)); controle.trava_intregral_2 = 0; } else { speed_2 = 0; if (controle.trava_intregral_2 == 0) { somatoria_2 = 0; controle.trava_intregral_2 = 1; } } /////////////////////////////////////////////// delta_speed = (speed_1 - speed_2);//10^(-4) somatoria_w = (delta_speed + delta_v) + somatoria_w; //10^(-4) aux_w = (ki*somatoria_w); e_1 = (set_point - (speed_1 + aux_w)); e_2 = (set_point - (speed_2 - aux_w)); aux_somatoria_1 = (e_1 + e_1_ant)/2; aux_somatoria_2 = (e_2 + e_2_ant)/2; e_1_ant = e_1; e_2_ant = e_2; u_1 = ((kp*e_1) + (ki_2*somatoria_1)); u_2 = ((kp*e_2) + (ki_2*somatoria_2)); u_1 += 200; u_2 += 200; // saturador roda 1 if ((u_1 <= 370)&&(u_1 >= 30)) {

64
TACCR1 = u_1; somatoria_1 += aux_somatoria_1; } else { if (u_1 >= 370) { TACCR1 = 370; if (aux_somatoria_1 <= 0) { somatoria_1 += aux_somatoria_1; } } else { TACCR1 = 30; if (aux_somatoria_1 >= 0) { somatoria_1 += aux_somatoria_1; } } } // saturador roda 2 if ((u_2 <=370)&&(u_2 >= 30)) { TACCR2 = u_2; somatoria_2 += aux_somatoria_2; } else { if (u_2 >= 370) { TACCR2 = 370; if (aux_somatoria_2 <= 0) { somatoria_2 += aux_somatoria_2; } } else { TACCR2 = 30; if (aux_somatoria_2 >= 0) { somatoria_2 += aux_somatoria_2; } } } } void setup(void) { char aux = 0; periodo_1 = 0; periodo_2 = 0; TACCR1 = 350; P2OUT |= 0X01; while (aux == 0)

65
{ if (periodo_1 != 0) { if (periodo_1 > 0) { aux = 1; TACCR1 = 200; U0TXBUF = 'c'; } else { aux = 1; TACCR1 = 200; U0TXBUF = 'D'; } } } aux = 0; TACCR2 = 350; periodo_1 = 0; periodo_2 = 0; while (aux == 0) { if (periodo_2 != 0) { if (periodo_2 > 0) { aux = 1; TACCR2 = 200; U0TXBUF = 'c'; } else { aux = 1; TACCR2 = 200; U0TXBUF = 'E'; } } } P2OUT &= 0XFE; } int transmissao_PC(long int dado,long int dado2) { int n=0; if (controle.enc_1_z == 1) { dado = 0; } if (controle.enc_2_z == 1) { dado2 = 0; } buf_TX[n] = (dado)^0xAA; n++; buf_TX[n] = (dado >> 8)^0xAA; n++; buf_TX[n] = (dado >> 16)^0xAA;

66
n++; buf_TX[n] = (dado >> 24)^0xAA; n++; buf_TX[n] = (dado2)^0xAA; n++; buf_TX[n] = (dado2 >> 8)^0xAA; n++; buf_TX[n] = (dado2 >> 16)^0xAA; n++; U0TXBUF = (dado2 >> 24)^0xAA; return(n); }