do arquivo - Programa de Pós
Transcrição
do arquivo - Programa de Pós
Universidade Federal Da Bahia Escola Politécnica Programa de Pós-Graduação em Engenharia Elétrica Jovelino Torres dos Santos Dissertação de Mestrado PROJETO E DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE EMBARCADO APLICADO A ROBÓTICA MÓVEL Salvador 2014 Jovelino Torres dos Santos Orientador: Prof. Dr. André Gustavo Scolari Conceição PROJETO E DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE EMBARCADO APLICADO A ROBÓTICA MÓVEL Dissertação de mestrado apresentada ao Programa de Pós-Graduação em Engenharia Elétrica da Universidade Federal da Bahia como requisito para a obtenção do título de Mestre em Engenharia Orientador: André Gustavo Scolari Conceição Universidade Federal da Bahia - UFBA Escola Politécnica Programa de Pós-Graduação em Engenharia Elétrica S237 Santos, Jovelino Torres Projeto e desenvolvimento de um sistema de controle embarcado aplicado a robótica móvel. / Jovelino Torres dos Santos. – Salvador, 2014. 121 f. : il. color. Orientador : Prof. Dr. André Gustavo Scolari Conceição. Dissertação (mestrado) – Universidade Federal da Bahia. Escola Politécnica, 2014. 1. Robótica móvel. 2. Sistemas embarcados. 3. Controle de processos. I. Conceição, André Gustavo Scolari. II. Universidade Federal da Bahia. III. Título. CDD.: 629.892 Jovelino Torres dos Santos Projeto e Desenvolvimento de um Sistema de Controle Embarcado Aplicado a Robótica Móvel Esta Dissertação de Pós-Graduação foi julgada adequada para obtenção do Titulo de Mestre em Engenharia Elétrica e aprovado em sua forma final pela Comissão Examinadora e pelo Colegiado do Curso de Pós-Graduação em Engenharia Elétrica da Universidade Federal da Bahia. ______________________________________ Prof. Dr. Fernando Augusto Moreira Coordenador do Colegiado do Curso de Pós-Graduação em Engenharia Elétrica Comissão Examinadora: ____________________________________ Prof. Dr. André Gustavo Scolari Conceição Orientador - DEE/UFBA ____________________________________ Prof. Dr. Amauri Oriveira Examinador Interno - DEE/UFBA ____________________________________ Prof. Dr. Eudemario Souza de Santana Examinador Externo - SENAI/CIMATEC ____________________________________ Prof. Dr. Paulo César Machado de Abreu Farias Examinador Interno -DEE/UFBA RESUMO O objetivo deste trabalho é o desenvolvimento de uma plataforma de hardware e firmware para controle de robôs móveis terrestres com rodas. A plataforma proposta é composta por módulos de acionamento e controle de atuadores, aquisição e tratamento de dados sensoriais e um sistema de comunicação sem fio. Os módulos sensoriais utilizam sensores inerciais como bussola digital e acelerômetros para obter informações de acelerações lineares, velocidade e posição angular da plataforma, além disso, as informações sensoriais de velocidade e corrente da motorização da base também são aferidas. O firmware possui controladores PID embarcados cujos ganhos são parâmetros ajustáveis. O sistema comunica-se com um supervisório através de um protocolo que viabiliza o acesso as leituras de todos os sensores e permite realizar o acionamento dos motores de duas maneiras distintas: utilizando os controladores PID embarcados, ou controlando a tensão dos motores através de um sinal PWM. Foi desenvolvido um protótipo da plataforma e testado em uma base de um robô omnidirecional de três rodas. Resultados experimentais com a base e do desempenho dos sensores e atuadores são apresentados. Palavras-chave: Robótica móvel, Instrumentação robótica, Sistemas Embarcados, Controle de Processos. ABSTRACT This paper is aimed to develop hardware and firmware platforms to control wheeled ground mobile robots. The proposed platform is composed by actuation modules, control of actuators, acquisition and treatment of sensory data as well as a wi-fi communication. The sensory modules use inercial sensors as a digital compass and accelerometer to obtain information from linear accelerators, speed and pose of the platform, besides the sensory information of speed and current of motor are also measured. The firmware owns PID controls embedded whose gain are adjustable parameters. The system interacts through a protocol that makes feasible, the reading of all sensors and allows the motors starting in two different ways: using embedded PID controlers or controlling the engine’s voltage through PWM signal. It’s been developed a platform prototype and teste in a the three wheel omnidirectional robot. Experimental results with the base and actuator and sensor performances are presented. Keywords: Mobile robotics, instrumentation robotics, Embedded Systems, Process Control LISTA DE FIGURAS Figura 1: Panorama da venda de robôs para diversas aplicações. Fonte: World Robotics 2013. .............................................................................................. 16 Figura 2: Robô AxeBot. Fonte [9]. ........................................................................................ 18 Figura 3: Base omnidirecional desenvolvida em [16]. .......................................................... 19 Figura 4: Robô Khepera. [2] ................................................................................................. 27 Figura 5: Estrutura de controle do Khepera (Fonte: Manual Robô Khepera III). ................... 29 Figura 6 - Robô Koala .......................................................................................................... 30 Figura 7 - Robô Pioneer [3]. ................................................................................................. 32 Figura 8 - Turtletbot 2. ......................................................................................................... 33 Figura 9: - Diagrama do Hardware da Plataforma de Controle. ............................................ 36 Figura 10: Modelo mecânico, elétrico e circuito de diagrama de controle de um motor DC....................................................................................................... 37 Figura 11: Sinal de PWM e circuito com timer...................................................................... 39 Figura 12: Diagrama de Bloco de Uma Ponte H e suas Tensões de Acionamento. ............. 40 Figura 13: Circuito típico utilizado no acionamento de MOSFETs e IGBTs de uma Ponte H. [30] ................................................................................................. 41 Figura 14: Acionamento do MOSFET com sinal chaveado. ................................................. 43 Figura 15: Diagrama do circuito de acionamento dos motores. ............................................ 45 Figura 16 - Circuito da Ponte H e Condicionamento dos Sinais de Acionamento ................. 49 Figura 17 - Sinais de controle da ponte H ............................................................................ 49 Figura 18: Sinais de corrente e tensão para o cálculo da potência dissipada nas chaves de uma ponte H. ............................................................................... 50 Figura 19 - Diagrama interno do amplificador de instrumentação INA826 ............................ 54 Figura 20 - Diagrama de Bode de um filtro passa baixas, com aproximação por Butterworth, Chebyshev e Cauer. ................................................................. 55 Figura 21 - Filtro passa-baixas de segunda ordem não inversor. ......................................... 56 Figura 22: Amplificador de instrumentação e filtro antialiasing. ............................................ 57 Figura 23: Módulo de acionamento final. ............................................................................. 58 Figura 24: Sistema massa mola. [33] ................................................................................... 59 Figura 25: Estrutura interna de um acelerômetro que utiliza a variação de capacitores para mensurar a aceleração. [33] ............................................... 60 Figura 26: Influência da gravidade nas saídas do acelerômetro de acordo com a inclinação [34] ............................................................................................... 61 Figura 27: Resposta em frequência do acelerômetro. [36] ................................................... 62 Figura 28: Acelerômetro MMA7361L.................................................................................... 63 Figura 29: Efeito Coriolis. ..................................................................................................... 64 Figura 30: Sistema de massa vibrante [38] .......................................................................... 65 Figura 31: Giroscópio IDG500 ............................................................................................. 66 Figura 32: Composição das linha de campo terrestre [41] ................................................... 68 Figura 33: Módulo CMP03 [41] ............................................................................................ 69 Figura 34: Módulo de sensores. ........................................................................................... 69 Figura 35: Diagrama geral do firmware. ............................................................................... 72 Figura 36: Sinais de um encoder com saída em quadratura (Fonte http://www.qsl.net – Acessado, 20 de junho de 2014). .................................. 73 Figura 37: Métodos de medição da velocidade utilizando o sinal do encoder. ..................... 74 Figura 38: Diagrama do algoritmo de leitura do ângulo ........................................................ 77 Figura 39: Topologias de rede zigbee. ................................................................................. 79 Figura 40: Topologias de Rede Zigbee. ............................................................................... 79 Figura 41: Estrutura do frame de comunicação com o Zigbee.[44] ...................................... 83 Figura 42 - Diagrama de recepção dos dados na porta serial. ............................................. 84 Figura 43: Placas com microcontrolador e zigbee. ............................................................... 85 Figura 44: Peças utilizadas para testar a plataforma desenvolvida. ..................................... 87 Figura 45: Plataforma desenvolvida junto com a base. ........................................................ 88 Figura 46: IHM de testes. ..................................................................................................... 89 Figura 47: Sinais gerados no módulo. .................................................................................. 90 Figura 48: Saída da Ponte H................................................................................................ 91 Figura 49: Sinais com atraso e após o gate driver. .............................................................. 91 Figura 50: Corrente sobre o resistor serie com a ponte H. ................................................... 92 Figura 51: Curva de velocidade medida pelo osciloscópio e pela base ................................ 94 Figura 52: Comunicação com o software em diferente taxas de comunicação. ................... 95 Figura 53: Frames transmitidos e recebidos pelo módulo Zigbee conectado ao computador. .................................................................................................. 96 Figura 54: Diagrama de velocidades da base. [10] .............................................................. 98 Figura 55: Velocidade angular do centro da base ................................................................ 99 Figura 56: Análise da aceleração da base. ........................................................................ 101 Figura 57: Curva de resposta ao degrau de 3,9 V de cada motor. ..................................... 105 Figura 58: Controle da roda com PI, Kp = 0,1 e Ki =0,01 ................................................... 106 Figura 59: Erro valor do PWM gerado pelo controlador PI. ................................................ 107 Figura 60: Curva de corrente do motor com o controlador PI. ............................................ 107 LISTA DE TABELAS Tabela 1: Perda de potência nos MOSFETs da ponte H com operação em 6 V e 3,5 A de carga..................................................................................................... 52 Tabela 2: Perda de potência nos MOSFETs da ponte H com operação em 18 V e 3,5 A de carga. .............................................................................................. 52 Tabela 3: Interfaces de comunicação com os módulos. ....................................................... 71 Tabela 4: Comparação entre modo transparente e API. ...................................................... 82 Tabela 5: Análise da leitura de velocidade ........................................................................... 94 Tabela 6: Comparação entre a orientação obtida pela base e o valor fornecido pelo sensor. .......................................................................................................... 97 Tabela 7: Variação da aceleração com a posição da base em ralação a terra ................... 102 Tabela 8: Parâmetros dos modelos de primeira ordem das rodas ..................................... 103 Tabela 9: Parâmetros elétricos do FDS8958...................................................................... 116 Tabela 10: Configurações da rede zigbee. ......................................................................... 117 Tabela 11: Comando API suportatos. ................................................................................ 118 Tabela 12: Frame de envios de dados e configurações. .................................................... 119 Tabela 13: Frame de recepção de dados e configurações. ................................................ 120 Tabela 14: Parâmetros enviados pelo robô. ....................................................................... 121 Tabela 15: Formato do comando 0x02............................................................................... 122 Tabela 16: Formato do comando 0x03............................................................................... 123 Tabela 17: Formato do comando que configura o PID. ...................................................... 124 LISTA DE SIGLAS Os seguintes símbolos têm este significado no texto, a menos outro significado seja devidamente informado. DC: Direct current AC: Alternate current PIC: Programmable Interface Controllers - Microcontrolador da Microchip PWM: Robot Operational System PID: Proportional Integral Derivative GPS: Global Positioning System TTL: Transistor-Transistor Logic CMOS: Complementary metal–oxide–semiconductor V: Volts A: Àmpere W: Watt Ω: OHMs Hz: Hertz KHz: Kilo Hertz MHz: Mega Hertz I2C: Inter-Integrated Circuit UART Universal Asynchronous Receiver/Transmitter USB: Universal Serial Bus DSP: Digital Signal Processor ARM: Advanced RISC Machine RAM: Random Access Memory I/O: Input - Output m/s: Metros por segundo mm: Milímetros cm: Centímetros bps: Bytes por segundo º/s: Graus por segundo LCD: Liquid Crystal Display ROS: Robot Operational System MOSFET: IGBT: Metal Oxide Semiconductor Field Effect Transistor Insulated Gate Bipolar Transistor TBJ: CI: AMPOP: dB: Transistor Bipolar de Junção Circuito Integrado Amplificador Operacional deciBel g: Aceleração da gravidade ns: Nanosegundos mA: Miliampères T: Período R: Resistor C: Capacitor F: Força a: Aceleração Rad/s: Radianos por segundos ADC: Analog to Digital Converter ACK: Acknowledgement RTS: Request to Send CTS: Clear to Send Tx: Transmission Rx: Receiver API: Application Programming Interface 14 1. INTRODUÇÃO .................................................................................................... 16 1.1 OBJETIVOS ........................................................................................................ 20 1.1.1 Objetivos específicos ...................................................................................... 21 1.2 JUSTIFICATIVA .................................................................................................. 22 1.3 ESTRUTURA DA DISSERTAÇÃO...................................................................... 25 2. ESTADO DA ARTE DAS PLATAFORMAS COMERCIAIS ............................... 26 2.1 K-TEAM .............................................................................................................. 27 2.2 ADEPT MOBILEROBOTS .................................................................................. 31 2.3 TURTLETBOT .................................................................................................... 32 2.4 CONCLUSÃO ..................................................................................................... 34 3. DESENVOLVIMENTO ........................................................................................ 35 3.1 DRIVER DE ACIONAMENTO DE MOTORES .................................................... 37 3.1.1 Módulo de Acionamento Projetado ................................................................. 44 3.1.2 Leitura da Corrente no Driver. ........................................................................ 53 3.2 MÓDULO DE SENSORES DE ACELERAÇÃO E ORIENTAÇÃO ...................... 58 3.2.1 Acelerômetro .................................................................................................. 58 3.2.2 Velocidade de Rotação ................................................................................... 63 3.2.3 Sensor de orientação ...................................................................................... 66 3.3 MICROCONTROLADOR E FIRMWARE ............................................................ 70 3.3.1 Leitura da Velocidade dos Motores ................................................................ 73 3.3.2 Orientação da Plataforma ............................................................................... 75 3.4 COMUNICAÇÃO COM O SUPERVISÓRIO ....................................................... 78 3.4.1 Módulo Xbee................................................................................................... 80 3.4.2 Comunicação com o Microcontrolador............................................................ 83 4. RESULTADOS ................................................................................................... 86 4.1 DRIVER .............................................................................................................. 90 4.2 COMUNICAÇÃO COM O SOFTWARE .............................................................. 95 15 4.3 SENSORES DE ACELERAÇÃO, VELOCIDADE ANGULAR E ORIENTAÇÃO ........................................................................................... 97 4.4 CONTROLADORES EMBARCADOS ............................................................... 102 5. CONCLUSÃO ................................................................................................... 108 4.5 TRABALHOS FACILITADOS PELO PROJETO. .............................................. 109 6. REFERÊNCIAS ................................................................................................ 111 ANEXO I 116 ANEXO II................................................................................................................. 117 ANEXO III................................................................................................................ 118 ANEXO IV ............................................................................................................... 119 ANEXO V ................................................................................................................ 120 ANEXO VI ............................................................................................................... 121 ANEXO VII .............................................................................................................. 122 ANEXO VIII ............................................................................................................. 123 ANEXO IX ............................................................................................................... 124 ANEXO X ................................................................................................................ 125 16 1. INTRODUÇÃO Atualmente os robôs são utilizados em diversos segmentos da sociedade. Dentre os setores que investem na utilização de robôs está a indústria, principalmente a automobilística, onde robôs desenvolvem trabalhos de extrema precisão e com eficiência superior a de um trabalhador humano. Nas lavouras, os sistemas automatizados são usados na irrigação e dispersão de adubos e inseticidas. Já nas atividades domésticas, robôs realizam atividades como cortar grama e aspirar pó. Em ambientes hospitalares podemos citar o HELPMATE [1], utilizado para transporte. Na área do entretenimento, os robôs brinquedos interagem com o usuário, replicando comportamentos de humanos ou de outros animais frente a um estímulo, como um carinho ou uma palmada. Para termos uma idéia da importância dos robôs de serviço na sociedade atual, a Figura 1 apresenta uma visão atual do mercado mundial de robôs de serviço. Figura 1: Panorama da venda de robôs para diversas aplicações. Fonte: World Robotics 2013. No âmbito educacional, as plataformas robóticas são muito empregadas na aprendizagem. Legos (Lego Mindstorms) interativos, dotados de sensores e atuadores são largamente usados nas escolas de ensino fundamental e médio. Já 17 nas escolas técnicas e de ensino superior, as plataformas robóticas como Khepera, Koala [2] e Pioneer [3] auxiliam no desenvolvimento e validação de algoritmos de controle, navegação, técnicas de inteligência computacional, sistemas multiagentes, dentre outras. Dentre os tipos de robôs com rodas existentes, os robôs móveis omnidirecionais têm chamado bastante atenção, devido à mobilidade no plano, já que podem se mover em qualquer direção, sem necessidade de reorientação, como citado em [4]: “Ao contrário de robôs não holonômicos, como os robôs nas configurações Ackerman e diferencial, que têm que executar primeiro o movimento de rotação, para depois desempenhar uma velocidade de translação, robôs omni têm um maior poder de manobra e são muito utilizados em aplicações em ambientes dinâmicos.” Este tipo de configuração é muito útil em ambientes fabris, sendo utilizados para transporte de cargas, além de aplicações acadêmicas, como a competição de futebol de robôs [5]. Nas aplicações acadêmicas, trabalhos como [6], [7] e [8] utilizam uma base omnidirecional de três rodas para desenvolver e validar: Técnicas de controle Multivariável, Controle Preditivo e levantamento de modelos de atrito. Todos estes trabalhos necessitaram de informações de velocidades das rodas, correntes dos motores e aceleração da base, para a estimação do estado do robô e dos parâmetros relativos ao modelo dinâmico. Se existem muitos trabalhos que se dedicam ao desenvolvimento das técnicas de controle e modelagem, têm outros que se propõem ao desenvolvimento da base robótica em si, incluído a mecânica e hardware de sensoriamento e controle. Estes trabalhos dedicam-se tanto ao desenvolvimento de robôs comerciais, como em [12] que desenvolve uma plataforma aplicada a serviços domésticos, bem como plataforma para aplicações acadêmicas como em [9], [13], [14], [15] e [16]. Os trabalhos [9] e [16] serão apresentados com um pouco mais de detalhe por serem os precursores deste trabalho. Dentre vários modelos de autônomos utilizados pelo grupo de robótica do departamento de Engenharia Elétrica da Universidade Federal da Bahia, encontrase o robô omnidirecional de três rodas, o mesmo utilizado nas competições de futebol de robô. Este modelo de robô foi utilizado em [9] intitulado: “CONTROLE DE 18 TRAJETÓRIA DE ROBÔS MÓVEIS OMNI-DIRECIONAIS: UMA ABORDAGEM MULTIVARIAVEL”, onde foi montado o robô AxeBot apresentado na Figura 2. O objetivo do trabalho era a aplicação da técnica de controle e não o hardware do robô, desta forma foram usados módulos comerciais em sua montagem. O Hardware do AxeBot era constituído por um driver para acionamento dos motores DC, um módulo com um PIC, denominado BrainStem da Acroname Automation Engineering, para controle das velocidade dos motores e um processador Stargate da Crossbow Technology, onde foi embarcado o controlador Multivariável proposto. Figura 2: Robô AxeBot. Fonte [9]. Devido às limitações impostas pelos módulos comerciais, mais especificamente o módulo de acionamento dos drivers dos motores BrainStem, foi desenvolvido o projeto de final de graduação [16], que valeu-se da mesma base mecânica de três rodas utilizado no AxeBot, tendo como objetivo desenvolver uma plataforma microcontrolada baseada no PIC32 para substituir os módulos BrainStem, mas ainda aproveitando os drivers de acionamento dos motores. O projeto tinha o intuito de projetar um hardware aplicado à pesquisa onde o principal diferencial era a flexibilidade na forma de controle dos motores, que seria realizado por meio da atuação sobre tensão dos motores modificando diretamente o duty cycle do PWM. Outra maneira era o controle de velocidade através da utilização de controladores PID embarcados. O segundo diferencial era a possibilidade de modificar o firmware de acordo com a necessidade da pesquisa 19 realizada, uma vez que o código era aberto e licença livre. O robô concebido está apresentado na Figura 3. Figura 3: Base omnidirecional desenvolvida em [16]. Atualmente existe no mercado uma diversidade de plataformas móveis prontas para uso. De maneira geral, todas possuem hardware voltado à navegação de alto nível, contendo câmeras, GPS e sensores de distância. Todavia, poucas permitem o levantamento de parâmetros, pois não fornecem informação de baixo nível, como corrente dos motores, dentre outras informações sensoriais necessárias para controle e estimação de parâmetros de robôs terrestres. Além disso, podemos apontar – “o custo” como o ponto importante para a aquisição destes módulos robóticos. Plataformas como Khepera e Koala custam valores acima de R$ 10.000,00. A alternativa adotada é montar uma plataforma usando Kits e módulos comerciais. No entanto, os módulos vêm com limitações de hardware que restringem a aplicação, como os módulos de acionamento de motores utilizados em [9] e [16], por exemplo, que possuem controladores de corrente internos que limitam inadequadamente a corrente de partida dos motores, fazendo com que o robô não tenha uma resposta satisfatória na partida - ou mesmo os módulos BrainStem, que 20 têm controladores PID embarcados, porém não permitem que o usuário realize modificações em seu firmware para adaptar a sua necessidade. Diante dos entraves apresentados nas plataformas existentes, idealizou-se a criação de uma plataforma embarcada de baixo custo, empregando um módulo com um microcontrolador de fácil acesso, incorporando em um único módulo todas as funcionalidades necessárias para obter as informações sensoriais para controle e estimação de modelos e parâmetros de robôs. Este trabalho de mestrado visa o desenvolvimento de uma plataforma que seja de uso geral, podendo ser aplicada a diferentes arquiteturas de locomoção e que permita obter informações dos sensores e realizar o controle dos atuadores. Sobretudo, a plataforma também permitirá acrescentar sensores, comunicar-se com um software supervisório através de um protocolo aberto para obter as leituras dos sensores e controlar os atuadores do robô. 1.1 Objetivos O objetivo deste trabalho é o desenvolvimento de um sistema de controle embarcado de baixo custo para ser utilizado em robôs móveis terrestres com rodas. Esta plataforma deve reunir todas as funcionalidades necessárias para a modelagem e estimação de parâmetros do modelo do robô, assim como possibilitar o controle de seus atuadores. O sistema embarcado proposto é construído de forma modular, permitindo a expansão do hardware, independente do número de sensores e atuadores. Os módulos de sensoriamento, bem como os drivers de potência devem ter interface de comunicação em níveis de tensão e corrente compatíveis com níveis TTL e CMOS. Dessa maneira, será possível utilizá-los com quaisquer microcontroladores. Esta liberdade possibilita que o usuário realize atualização para a plataforma microcontrolada que satisfaz as necessidades da pesquisa. Como produto final foi concebido um protótipo funcional de baixo custo, com toda a documentação necessária, o que inclui esquemáticos, layouts e arquivos gerber para fabricação das placas. O firmware também deve ser disponibilizado de forma integral e comentado. 21 1.1.1 Objetivos específicos Os objetivos específicos são: Realizar o acionamento de três motores DC de 5 V a 18 V usando método de modulação por largura de Pulso (PWM); Fazer a leitura das velocidades e direção de cada motor; Desenvolver um circuito para leitura das correntes de cada motor; Obter leitura de sensores de aceleração linear; Obter a velocidade angular da base através de um acelerômetro; Realizar a leitura de um sensor para obtenção do ângulo da base em relação ao eixo magnético terrestre; Comunicação serial com e sem o Zigbee; Desenvolvimento de um firmware, que embarcado no microcontrolador, permita a comunicação com um software supervisório, fornecendo a este as informações dos sensores e realize o controle dos motores. O sistema embarcado tem dois modos de controle. O primeiro modo é a atuação direto sobre a tensão dos motores. Este método de controle é feito através da atuação sobre a largura de pulso do PWM em malha aberta. O segundo modo é em malha fechada através de controladores PID. Cada motor tem o seu controlador, cujos parâmetros são ajustados de forma independente. Para atingir o objetivo final deste trabalho o projeto do hardware é divido em módulos com funcionalidades especificas, sendo: Driver de corrente: Este módulo tem a função de realizar o acionamento adequando dos motores utilizando técnica PWM. O hardware terá capacidade de controlar até três (3) módulos, sendo que cada módulo é dedicado a um motor. Além do acionamento, este módulo fornece a alimentação necessária aos encoders que proporcionam informações de velocidade dos motores, realiza o 22 condicionamento dos sinais do encoder e a leitura da corrente do motor; Placa de sensoriamento: Este módulo é responsável pelo levantamento das acelerações lineares da base, velocidade e posição angulares através do uso de sensores como o acelerômetro, giroscópio e bússola digital, respectivamente; Microcontrolador: Responsável pelo gerenciado dos demais módulos, deve possuir entradas digitais e de interrupções para leitura das velocidades dos sensores, entradas analógicas para aferição dos sensores de corrente, dos sensores de aceleração e velocidade angular. Também é necessário portas de comunicação serial tanto síncronas como I2C, quanto assíncronas. Estas portas servem de interface com alguns sensores e com o sistema supervisório. Para o acionamento dos motores são necessárias três saídas de PWM e três saídas digitais; Placa de comunicação Zigbee: A placa é acoplada à placa do microcontrolador podendo ser retirada de acordo com a necessidade do usuário; Placa distribuidora de energia: É responsável por fornecer os níveis de tensão adequados ao funcionamento dos módulos citados anteriormente, além disso, realiza as interconexões entres os módulos. Juntamente com o hardware foi desenvolvido um firmware para fazer o gerenciamento da plataforma e comunicação com um sistema supervisório. 1.2 Justificativa Este projeto de dissertação vem com o intuito de suprir uma lacuna na área de instrumentação aplicada à robótica móvel terrestre. No trabalho de mestrado abordado em [9], foram utilizados módulos comerciais na montagem do robô, uma vez que a preocupação do autor era com a técnica de controle em si. Detalhando um pouco mais a interface com os motores, o AxeBot era formado por: 23 Três drivers de corrente para acionamento dos motores (S17-3ALV-HBRIDGE). O circuito destes drivers impõe uma limitação indevida da corrente e impede que o robô tenha um bom desempenho em situações de arranque ou aceleração, principalmente em terrenos que exigem uma corrente maior de partida, como gramado. Este driver possui um sensor de corrente interno que é disponibilizado para a leitura. Contudo, este sensor não é sensível às baixas correntes. Além disso, este sinal de corrente é entregue para a leitura pelo conversor analógico digital sem nenhum tratamento de filtragem; Duas placas microcontroladas (BrainStem) com capacidade de controlar até dois drivers S17-3A-LV-HBRIDGE. Este módulo possui um microcontrolador PIC da família 18E, não regravável, sendo assim, não é possível realizar mudanças no seu firmware. O fato do módulo BrainStem não permitir regravação do seu firmware restringe as possibilidades do sistema, pois ele impede que o usuário adapte variáveis de acordo com a sua necessidade, como por exemplo, o tempo de amostragem ou valores dos ganhos dos controladores. Tendo em vista a busca de um hardware que reunisse as funcionalidades indispensáveis para serem empregadas por pesquisadores em áreas como: modelagem; estimação de parâmetros; e técnicas de controle avançado, foi proposto o desenvolvimento de uma base própria com o microcontrolador de 32 bits, mas ainda utilizando o driver de corrente do Axebot. O projeto foi desenvolvido no trabalho final de graduação [16], onde se criou uma placa microcontrolada usando um microcontrolador da família 32 bits. Esta placa permitia a aquisição das velocidades dos encoders dos três motores, o acionamento dos motores, tanto em malha aberta quanto em malha fechada utilizando controladores PID, cujos ganhos podiam ser configurados pelo usuário. Quanto à corrente, deixou-se de utilizar o sensor interno do driver, por este não responder as correntes baixas do motor. Foi desenvolvido um circuito para aferição de corrente utilizando-se um resistor em série com o barramento da alimentação do driver. A tensão sobre o resistor de medição da corrente era amplificado por um circuito amplificador não inversor e um filtro anti recobrimento. 24 O trabalho desenvolvido por [16] foi utilizado em [10], que se utilizou das velocidades das rodas para calcular as velocidades lineares e angulares da base através da cinemática direta. O projeto mostrou que as velocidades das rodas necessitavam de um filtro digital, para redução do ruído inerente as características do sistema. Dentre as velocidades obtidas pela cinemática direta, a velocidade de rotação é a mais afetada, portanto seria interessante realizar sua medida de forma mais direta por meio de um sensor próprio. [10] e [4] igualmente demonstram que a velocidade máxima de navegação da base estava sendo restringida a valores inferior a 2 m/s e tal limite era imposto pelo módulo de acionamento dos motores através de seu circuito de proteção, uma vez que os valores de corrente velocidades maiores ultrapassam os limites do módulo. No trabalho desenvolvido em [8] calculava-se os coeficientes de atrito do modelo dinâmico da base, de acordo com o modelo proposto em [6], que utiliza a informação das correntes dos motores e das velocidades do centro de massa da base em regime permanente. Outra forma de se obter os coeficientes de atrito é empregando as informações de aceleração do centro de massa da base, no entanto o único modo de obtenção na base é derivando os valores de velocidades da base, que por sua vez foram obtidas pela velocidade das rodas. Sendo assim, o uso de sensores acelerômetros é uma opção para obter uma aceleração mais exata, uma vez que não herdaria o ruído e erros das velocidades das rodas. Diante dos trabalhos de [4], [8], [10] e [16] verificou-se a importância de se desenvolver um driver próprio, bem como um circuito de medida de corrente com um resistor de sensoriamente o menor possível, para não limitar a corrente fornecida ao motor, com um circuito de condicionamento com um amplificador de instrumentação diferencial. Além de sensores de aceleração e de velocidade angular fornecendo uma informação mais exata e de forma mais direta, bem como filtros digitais provendo a redução do ruído dos sensores. 25 1.3 Estrutura da dissertação A dissertação está estruturada da seguinte maneira: O capítulo 2 apresenta um benchmarking dos robôs comerciais com foco em pesquisa; O capítulo 3 aborda o desenvolvimento do projeto proposto detalhando o hardware, o firmware e o protocolo de comunicação adotado; O capítulo 4 apresenta os resultados, as curvas experimentais e a estrutura física concebida; A conclusão e considerações finais são realizadas no capítulo 5. 26 2. ESTADO DA ARTE DAS PLATAFORMAS COMERCIAIS Atualmente no mercado encontram-se diversas plataformas robóticas que atendem bem as necessidades de muitas pesquisas. Estas plataformas oferecem muitas opções de configurações, deste o sistema de locomoção, isto é, configuração diferencial, triciclos, holonômicos, não holonômicos, terrestres e aquáticos, até configurações de sensores e capacidade de processamento. Alguns modelos disponibilizam sistemas operacionais embarcados que permite comunicação com elementos como: câmeras e aplicação de técnicas mais avançadas como sistemas multiagentes. De forma geral, as plataformas possuem pelo menos duas camadas bem definidas. Uma camada de baixo nível que incorpora os drivers de acionamento dos motores e de sensoriamento de velocidade. A segunda camada de grau superior dispõe de um processador ou microcontrolador mais robusto, geralmente com um sistema operacional embarcado, usualmente o Linux. Este processador da camada superior permite que o usuário embarque aplicações diretamente no robô, além disso, admite o uso de câmeras que precisam de drivers, dos quais não são fornecidos para microcontroladores. Já a camada mais baixa possui um microcontrolador dedicado, geralmente um DSP. Dentre as companhias que criam robôs voltados para pesquisa em universidades estão a K-Team, a Adept Mobilerobots e a Turtlebot. As duas primeiras são empresas que desenvolvem a plataforma completa, já a segunda usa parte de outros produtos para montar sua plataforma. Apesar de termos conhecimento de outros módulos, nos atentaremos a aplicação para os robôs de rodas terrestres. 27 2.1 K-Team A companhia suíça K-TEAM é uma grande desenvolvedora de robôs, para fins de pesquisa acadêmica e ensino, dentre seus modelos estão o Khepera III e Koala, que são plataformas voltadas à pesquisa de alto nível. Também são desenvolvidas plataformas educacionais como o K-Junior. Os robôs da K-TEAM possibilitam o desenvolvimento de pesquisas em áreas como controle, programação, visão, inteligência artificial, entre outros, uma vez que estas plataformas já vêm dotadas de sensores, atuadores, comunicação com programas como Matlab, Labview. Existe ainda a possibilidade de expansão conectando-se câmeras e outros módulos de acordo com a necessidade do pesquisado. A Figura 4 apresenta o robô Khepera em sua primeira versão (4.a) e sua versão mais atual (4.b). Esta é a principal plataforma da K-Team, sendo muito utilizado em pesquisas nas áreas de navegação, inteligência artificial, sistemas multiagentes, controle, comportamento coletivo e programação em tempo real, como apresentado em [1], [2] e [17]. A viabilidade do uso deste tipo de robô nas áreas de controle e navegação é demonstrada em [18] e [19], no qual o primeiro desenvolve um trabalho de estudo de navegação e o segundo faz o uso do Khepera, para levantar o modelo cinético de um robô. a) Khepera b) Khepera III Figura 4: Robô Khepera. [2] 28 O sucesso desta plataforma baseia-se na facilidade de uso e comunicação. Com um protocolo simples, o usuário envia comandos de acionamento dos motores, leitura dos sensores, dentre outras configurações. Isto tudo através de qualquer software que permita acesso a porta serial, como o Matlab, por exemplo. Esta pequena plataforma disponibiliza os seguintes recursos e configurações: Processador DsPIC 30F5011 60 MHz; 4 KB de RAM; Memória flash 66 KB; Dois motores DC com encoder acoplado com resolução 22 pulsos a cada mm; Velocidade máxima 0,5 m/s; Sensores: o Oito sensores infravermelhos que permitem verificar proximidade de até 30 cm e luminosidade; o Dois sensores infravermelhos na parte inferior o que permite que o robô possa funcionar como um seguidor de linha; o Cinco sensores ultrassom que medem distâncias de 20 cm a 4m; I/O para acoplar outros módulos; Comunicação por porta serial RS232 em até 115200 bps. Além dos periféricos básicos que acompanham o robô, é possível acoplar uma placa de expansão, a Korebot 2. Este módulo é composto por um processador ARM XSCALE PXA-270 em 600 MHz. A adição deste processador dá um upgrade de 128 MB de RAM, 32 MB de flash, comunicação por USB, bluethooth, conexão com câmera e ainda é possibilita que o usuário embarque códigos próprios, uma vez que, têm o Linux 2.6 embarcado. Contudo, todo este poder de processamento custa nada menos que $ 2.600,00 Francos Suíços ou aproximadamente R$ 11.000,00 - incluso os impostos, [2]. Quanto ao controle dos motores e navegação, a plataforma é bem versátil, sendo possível realizar o controle dos motores por velocidade, posição ou controle ta tensão sobre os motores em malha aberta, como ilustrado na 29 Figura 5. Figura 5: Estrutura de controle do Khepera (Fonte: Manual Robô Khepera III). 30 O robô Koala, ilustrado na Figura 6, é outra plataforma desenvolvida pela KTeam para fins de pesquisa. Sua estrutura é uma plataforma de seis rodas, que contém apenas dois motores. Demonstra um poder computacional superior ao Khepera, com uma RAM de 4 GB e uma série de sensores como acelerômetros, GPS, giroscópio e uma bateria mais duradora com autonomia de até 4 horas [2]. Suas principais especificações são: Processador Dual core Intel Atom N2800 1.86 GHz; Memória RAM 4 GB; Dois motores DC 6 W, um para cada conjunto de três rodas. Encoder acoplado ao eixo do motor com resolução de 100 pulsos por volta; Velocidade máxima em malha aberta até 0,6 m/s; Sensores: o 9 sensores ultrassom; o Acelerômetro de 3 eixos; o Giroscópio; o GPS. Possui ainda um barramento I/O que permite conectar outros módulos usando canais de comunicação tais como: I2C; entrada de áudio; ADCs; PWM e etc. Figura 6 - Robô Koala Assim como o Khepera, o Koala têm um DsPic, neste caso, o dsPIC33FJ64GS608 [21], dedicado exclusivamente ao acionamento dos motores e leitura dos sensores. 31 O Koala contém um processador dedicado à programação de alto nível com Linux embarcado, permitindo assim que o usuário embarque uma aplicação no dispositivo ou até mesmo realize processamento de imagem, rode algoritmos de navegação, sistemas multiagentes, dentre outros. A comunicação com o Koala é compatível com o Khepera, podendo ser realizado através de programas como Matlab, Labview ou qualquer outro programa que permita acesso a portas seriais. Sendo assim, o usuário tem acesso ao controle e leitura de todos os sensores e atuadores, acesso a configurações como controle dos parâmetros do controlador PID embarcado. O Koala pode ser adquirido por $ 9.480,00 ou aproximadamente R$ 35.796,00 inclusos todos os impostos [22]. 32 2.2 Adept Mobilerobots Assim como a empresa K-Team, a Adept MobileRobots é uma companhia que desenvolve robôs voltados para pesquisadores. Funda em 1995, têm em seu portfólio uma série de robôs de auto desempenho, fornecendo soluções para organizações como a Universidade de Carnegie Mellon, Hitachi, Microsoft, MIT, Siemens, exército dos Estados Unidos e NASA [3]. Dentro de sua linha de robôs podemos citar as famílias: Seekur, PowerBot, Pionner, Research PatrolBot, PeopleBot e AmigoBot. Todas essas plataformas são utilizadas em pesquisa e desenvolvimento, monitoramento, com aplicação áreas visão computacional, como teleoperação, localização, manipulação, navegação autônoma e cooperação e comportamento de multi-indivíduos. O robô Pineer P3-DX da Figura 7 é um dos modelos mais utilizados, ele possui duas rodas com dois motores, porém existe a configuração de quatro rodas deslizantes. A plataforma vêm acompanhada pelo software de interface ActivMedia Robotics Interface for Applications (ARIA), que realiza simulação e propicia a comunicação com o robô. O primeiro modelo do robô Pinner P3 – DX, fazia uso do microprocessador da Motorola 68HC11 com sistema operacional próprio, o Pioneer Server Operating System (PSOS). Já em sua segunda versão, o núcleo utilizado foi substituído pelo Siemens C166, com o sistema Pioneer 2 Operating System (P2OS), migrou em seguida para o Hitachi H8S com o ActivMedia Robotics Operating System (AROS). Hoje em dia o Pioneer utiliza o microcontrolador de 32 bit Renesas SH2 juntamente com o sistema operacional ActivMedia’s Robot Control and Operations (ARCOS). O preço aproximado da versão mais básica deste robô é $ 30.000,00. Suas principais configurações são: Microcontrolador Renesas SH2, de 32-bit e 44 MHz; 4 portas seriais RS232 com baud rate configurável de 9600 bps a 115200 bps; Interface I2C para comunicação com display LCD; 4 arrays de sonar com 8 sonar cada; Giroscópio; 33 Frequência de comunicação entre o software e o robô 10 Hz. Figura 7 - Robô Pioneer [3]. 2.3 Turtletbot O Turtletbot é um robô desenvolvido para uso em pesquisas, principalmente na área de navegação doméstica. Esta plataforma apresenta como diferencial o uso do ROS - Robot Operational System, o qual é um sistema operacional voltado para robôs que possibilitam o desenvolvimento de aplicações de alto nível, como atuação dos manipuladores e leituras dos sensores através de drivers, bibliotecas e outros recursos de programação de alto nível. Este recurso facilita o uso do robô sem se preocupar com o baixo nível (ROS, 2014). O primeiro modelo do Turtlebot foi criado utilizando o robô iCreate, que era utilizado como sistema de locomoção da estrutura. Este robô pertence à empresa iRobot e foi adaptado do robô Roomba. A iRobot é fabricante de robôs voltados para serviços domésticos como: aspirar pó (Roomba); lavar pisos (Scooba); limpar piso (Braava); e limpar piscina (Mirra) (Irobot, 2014). O robô Turtletbot é composto pelo robô iCreate e por sistema de visão usando o Kinect da Microsoft e um sistema de posicionamento utilizando um giroscópio. A segunda versão do Turtlebot, apresentado na Figura 8, utiliza em sua base o robô Kobuki. Desenvolvido de forma conjunta pelas empresas Yujin Robotics e Willow Garage, esta plataforma tem o intuito de ser um robô voltado para pesquisa e de substituir o iCreate (ROS, 2014). Seu preço é aproximadamente $2.000,00. 34 Figura 8 - Turtletbot 2. A versão mais recente do Turtlebot apresenta as seguintes características: Velocidade máxima 70 cm/s; Velocidade de rotação 180°/s; Encoders com resolução de 2.578,33 pulsos/volta; Giroscópio; Conexão com PC via UART; Detecção de sobre corrente (>3 A); Atualização do sensor em 50 Hz; Conector de expansão 3,3 V/ 1 A, 5 V / 1,5 V, 4 entradas analógicas, 4 entradas digitais e 4 saídas digitais. 35 2.4 Conclusão Atualmente existem plataformas robóticas que possibilitam o desenvolvimento de pesquisa, no qual, o pesquisador não precisa se preocupar em desenvolver o hardware. Algumas plataformas como o Khepera propiciam um nível de controle em que o usuário pode atuar diretamente sobre os atuadores, além de possuir uma gama de sensores de aceleração e posição, porém estas plataformas têm custo elevado. Opções como o turtlebot possuem preços mais acessíveis, mas não disponibilizam sensoriamento de baixo nível, contudo possui um sistema de visualização avançada. Por utilizar o ROS, em vez de um sistema operacional próprio como o Pioneer, o Turtlebot tem uma aceitação maior pelos pesquisadores, uma vez que o ROS é um sistema do tipo open source, ou seja, de código aberto. Além disso, existe uma gama de pesquisadores de áreas de tecnologia, mas que não são engenheiros eletricistas, portanto não têm tanta afinidade com o hardware. Isto faz com que o uso de sistemas que possuem interface em alto nível seja visto de forma diferenciada. Apesar do Turtlebot conter uma interface que segue a tendência do mercado e possuir um preço mais acessível que os demais, este produto deixa a desejar quando se faz necessário desenvolver pesquisas aplicadas a modelagem e controle. Esta plataforma tem como base plataformas comerciais, voltadas para outras atividades e que foram adaptadas. Portanto não foram projetadas para disponibilizar informações de debaixo nível, exceto a velocidade da roda e velocidade angular. Diferentemente, o Khepera e o Pioneer possuem mais sensores, porém voltados à localização e detecção de distância, contudo propiciam mais opções de controle sobre seu sistema de locomoção. No entanto, possuem preço bastante elevado, acima de R$ 10.000,00. A proposta deste trabalho é de desenvolver o hardware que pode ser utilizado na plataforma de interesse do pesquisador que possibilite o controle de baixo nível, bem com o acesso ao sensoriamento como da corrente dos motores, que nenhuma das plataformas citadas apresenta, acima de tudo, deve possuir um valor acessível que os modelos comerciais já citados. 36 3. Desenvolvimento O diagrama da Figura 9 apresenta a plataforma proposta neste trabalho, bem como sua divisão em módulos e as interfaces utilizadas para comunicação das placas. A proposta é ter um “módulo base” onde os demais módulos devem ser conectados. Este módulo base deve fornecer alimentação aos demais módulos e realizar a conexão entre os sinais elétricos. Ainda fazem parte da plataforma: Um módulo dedicado ao sensoriamento da aceleração e posição; Um módulo de acionamento de potência que pode acionar um motor e aferir sua corrente; Uma placa com um microcontrolador capaz de controlar os demais módulos e comunicar-se com o sistema supervisório; E por fim, um módulo de comunicação sem fio que proporciona o canal de comunicação entre o hardware e o supervisório. É importante salientar, que o microcontrolador possui embarcado um firmware com filtros digitais, controladores PID, o protocolo de comunicação com o supervisório, além do algoritmo de leitura das variáveis analógicas dos sensores, das velocidades e acionamento dos motores. 37 Alimentação 3,3 V, 6 V, -3,3 V Alimentação 3,3 V Módulo de sensores de aceleração e posição Acelerômetro Giroscópio Bússola digital Módulo base Zigbee UART Controle em malha aberta ou fechada com PID Módulo do Microcontrolador Sinal de corrente Alimentação 3,3 V, 6 V, -3,3 V ADC Entradas de Interrupção ou Capture Filtragem digital Protocolo de comunicação Sinais do Encoder (Velocidade) Timers / PWM PWM + Sinal de Controle de Direção Alimentação 5 V a 18 V Barramento de Energia / reguladores Alimentação 3,3 V Entradas de Interrupção ou I2C ADC Módulo de acionamento dos Motores Alimentação 5 V a 18 V para a ponte H Condicionamento do sinal do encoder Circuito de Leitura de Corrente Sinais do Encoder Gate Driver e Ponte H PWM + 6 V de alimentação do encoder Motor DC E Encoder Figura 9: - Diagrama do Hardware da Plataforma de Controle. 38 3.1 Driver de Acionamento de Motores Motores de corrente contínua, também denominados motores DC, são muito utilizados em equipamentos eletrônicos portáteis, brinquedos, equipamentos médicos e robôs, uma vez que possuem dimensões reduzidas, baixo custo, podem ser controlados de forma simples e apresentam um bom desempenho em termos de torque e velocidade de rotação. [32] A estrutura mecânica de um motor DC, Figura 10 a), é composta por: um rotor, também chamado de armadura, um estator, escovas e o comutador. O estator pode ser constituído por imã permanente ou por uma bobina que gera o campo magnético para excitação. Esta bobina pode ser acionada de forma simples como apresentado em [28], no qual apresenta que: a mesma fonte de tensão que aciona o rotor é utilizada para excitar o estator. Outra forma de excitar o estator é utilizar uma fonte separada, o que possibilita, por exemplo, o controle da corrente no estator. 𝐼𝑑 R 𝑉𝑑 a) Modelo mecânico do motor DC. [43] L E=KΦω b) Circuito equivalente da armadura Figura 10: Modelo mecânico, elétrico e circuito de diagrama de controle de um motor DC. A velocidade de um motor DC é controlada diretamente pela tensão aplicada nos terminais do circuito de armadura (Figura 10 b), como apresentado na equação 1 e o torque é controlado pela corrente, o que é visto na equação 2. Já o sentido de 39 giro é definido pela polarização da tensão 𝑉𝑑 nos terminais do motor. Uma vez invertida a polaridade nos terminais, o motor tem o giro de seu eixo invertido. 𝑑𝐼 𝑉𝑑 − 𝑅𝐼𝑑 + 𝐿 𝑑𝑡𝑑 𝜔= 𝐾𝛷 (1) 𝑇 = 𝐾𝛷𝐼𝑑 (2) As equações 1 e 2 descrevem a velocidade de rotação e torque do motor mediante seu modelo elétrico. Sendo: 𝑉𝑑 : Tensão da fonte; R: Resistência da armadura; 𝐼𝑑 : Corrente na armadura; L: Indutância do enrolamento da armadura; 𝛷: Fluxo de entreferro; 𝐾: Constante da máquina determinada por características construtivas. Como já citado, o controle da velocidade de motores de DC é realizado através do controle sobre a tensão de armadura. Mas como controlar a tensão sobre a armadura de um motor DC? O controle de tensão sobre uma carga é abordado por diversos trabalhos, dentre o qual Antenor Pomilio [29] em seu material de aula, onde cita que: “Caso seja preciso variar a tensão aplicada sobre uma carga, é necessário o emprego de algum dispositivo que seja capaz de "dosar" a quantidade de energia transferida. Pode-se ter um atuador linear, sobre o qual se tem uma queda de tensão proporcional à sua impedância. Este tipo de controle da tensão tem como inconveniente a perda de energia sobre a resistência série. A maneira mais eficiente e simples de manobrar valores elevados de potência é por meio de chaves.” 40 Como referenciado por [29], o controle através de uma chave é a opção que acarreta em menor perda de potência. O propósito agora é apresentar um método de controle da chave. O PWM (Pulse Width Modulation) é uma técnica de acionamento onde se controla o tempo ativo de um sinal com frequência fixa. A Figura 11 contém um esquema básico de um sinal de PWM gerado pelo timer de um microcontrolador. Neste exemplo um contador é comparado com um sinal de referência. Enquanto o valor do contador é menor que o sinal de referência, o sinal de saída está em estado alto, quando o contador ultrapassa o valor de referência, o sinal de saída transita para nível baixo. Desta forma, controla-se o tempo em que o sinal de saída permanece em nível alto através do sinal de referência. A razão entre o tempo ativo e o período total do sinal é chamado de duty cycle do PWM. A tensão entregue a carga é igual à tensão de entrada multiplicada pelo duty cycle, ou seja, se o sinal de PWM encontra-se em 50 %, a tensão sobre a carga é metade da tensão de entrada. Contador do Timer Período do Timer Comparador Sinal de referência Tempo Sinal de saída PWM Duty Cycle 40 % Duty Cycle 20 % Figura 11: Sinal de PWM e circuito com timer. O sinal de PWM gerado pelo microcontrolador é capaz de controlar o tempo ativo de uma chave eletrônica, controlando assim a tensão sobre uma determinada carga. No entanto, este sinal proveniente do microcontrolador está limitado a valores baixos de tensões inferiores a sua tensão alimentação, tipicamente entre 1.8 V a 5 V. 41 Já as correntes chegam a alguns miliampères o que consequentemente limita o valor de potência que pode ser fornecido a uma carga. Para contornar este problema o controle de tensão sobre cargas é geralmente realizado por um driver, que por sua vez, utiliza o PWM como sinal de controle. Quando a carga é um motor DC, a configuração mais utilizada para o driver é o circuito em ponte H da Figura 12 a), como pode ser observado no circuito, a ponte H é formada por 4 chaves eletrônicas, cujo acionamento controla a tensão sobre o motor, consequentemente a velocidade e o sentido de giro. Em uma das possibilidades de acionamento, ao acionar somente as chaves S1 e S4, o motor funcionará em um determinado sentido. Ao inverter as chaves, ou seja, desligar S1 e S4 e ativar S2 e S3, o motor terá seu sentido de giro invertido. Conclui-se assim que com a ponte H é possível controlar tanto a velocidade quanto o sentido de giro do motor. Além das chaves, observa-se a presença de diodos ligados em paralelo com as chaves. Estes diodos são necessários, visto que, o motor é uma carga com características indutiva e portanto, a corrente em seu enrolamento não cessa de forma imediata ao fechar das chaves. Dessa forma, os diodos proporcionam um caminho para que a corrente do enrolamento circule sem prejudicar o circuito. S1 D1 D2 S1 S2 D1 VGS1 A M CC S3 D3 D4 S4 S3 D3 VGS3 a) Circuito da ponte H b) Tensões de acionamento nos gates de MOSFET Figura 12: Diagrama de Bloco de Uma Ponte H e suas Tensões de Acionamento. 42 Os dois dispositivos semicondutores mais utilizados como chave em um circuito de ponte são o MOSFET (Metal Oxide Semiconductor Field Effect Transistor) e o IGBT (Insulated Gate Bipolar Transistor) [30]. Ambos MOSFET e IGBT são dispositivos controlados por tensão em seu gate, diferentemente do TBJ (Transistor Bipolar de Junção) no qual o controle é realizado pela corrente em sua base. A Figura 12 b) apresenta as tensões VGS1 e VGS3 que controlam as chaves S1 e S3, respectivamente, a partir do qual se conclui que a tensão que ativa a chave inferior, S3 é sempre referenciada a um valor de tensão fixa, geralmente o próprio referencial do circuito. Já a tensão que ativa a chave S1 (VGS1) é referenciada sobre o ponto A, cuja tensão é um valor que flutua, podendo chegar até ao valor do barramento DC. Deste modo, é necessário que o referencial do sinal que controla a chave superiora flutue junto com tensão em A. Esta situação pode ser alcançada com o auxílio de circuitos como o da Figura 13. Figura 13: Circuito típico utilizado no acionamento de MOSFETs e IGBTs de uma Ponte H. [30] O circuito da Figura 13 é um circuito de Bootstrap que funciona da seguinte maneira: Quando a chave Q2 da Erro! Fonte de referência não encontrada. está ativa, o valor da tensão no terminal fonte de Q1 vai para terra fazendo com que o capacitor de bootstrap (Cboot) carregue gerando um VB positivo em relação à VS. Quando a chave Q2 é desativada a fonte de Q1 flutua e o referencial VS do circuito de boostrap flutua junto, mas VB agora é capaz de fornecer a tensão necessária para acionar Q1. 43 O uso do circuito de Bootstrap requer um correto dimensionamento dos elementos que compõem o circuito que são o capacitor Cboot, o diodo D1 e a resistência de gate (Rgate) presentes na Figura 13. Eventualmente, o circuito pode conter também um resistor em série com o Diodo D1 para limitar a corrente proveniente da fonte de tensão, evitando um dano à mesma. O dimensionamento deste resistor de gate depende diretamente das características do elemento utilizado como chave na ponte H, da frequência de operação do sistema, além da tensão de operação do circuito. Trabalhos como [31] descrevem o funcionamento e dimensionamento de circuitos como este. Outros tipos de configurações estão detalhados em [30]. No modelo construtivo de um MOSFET e de um IGBT com acionamento dinâmico surge capacitâncias parasitas entre o terminal do gate para o dreno e do gate para a fonte ou gate para o coletor e do gate para o emissor no IGBT. A consequência da presença dessas capacitâncias é que apesar do acionamento do MOSFET e do IGBT ser realizado por tensão em regime permanente, no regime transitório existe a necessidade de uma corrente para carregar e descarregar estas capacitâncias. Esta corrente pode chegar a valores de alguns ampères, dependendo do valor dessas capacitâncias e do tempo de carga. A Figura 14 a) ilustra as capacitâncias do ponto de vista do gate do MOSFET. Já a Figura 14 b) e Figura 14 c) relacionam o tempo de carga destas capacitâncias com as tensões Vgs e Vds e com a corrente de dreno (Id), através de td(on) e tr, bem como a descarga por td(off) e tf. Os tempos de carga e descarga influenciam na perda de potência no semicondutor, uma vez que como descrito na Figura 14 c): já existe uma corrente de dreno (Id) durante o acionamento do MOSFET, momento no qual ele ainda não se encontra na região ativa. O mesmo vale para a desativação do MOSFET. A Erro! Fonte de referência não encontrada. d) apresenta o circuito equivalente da resistência de saída do gate driver e capacitância de entrada do gate do MOSFET ou do IGBT. Diante deste circuito obtêm-se o tempo de carga da capacitância do gate e corrente de gate, como demonstrado nas Equações 3, 4, 5 e 6. Esses parâmetro devem ser utilizados para dimensionar a resistência utilizada entre o gate e o gate driver. 44 a) Capacitâncias do Gate [30] b) Tempos de Acionamento c) Comportamento da Tensão VDS e d) Circuito equivalente do gate driver e Corrente Ids com Tensão de Gate capacitância do gate [30] Figura 14: Acionamento do MOSFET com sinal chaveado. Antes de apresentar as equações algumas definições devem ser feitas, tais como: A capacitância equivalente no gate 𝐶𝑡𝑜𝑡𝑎𝑙 é a relação da carga total do gate 𝑄𝑡𝑜𝑡𝑎𝑙 pela tensão do gate 𝑉𝑔𝑎𝑡𝑒 ; A carga do gate 𝑉𝑔𝑎𝑡𝑒 relaciona do tempo de carga ( 𝑇𝐶𝑎𝑟𝑔𝑒 ) com corrente no gate (𝐼𝐶𝑎𝑟𝑔𝑒 ); A resistência do gate driver ( 𝑅𝐷𝑟𝑖𝑣𝑒𝑟 ) e de gate ( 𝑅𝐺𝑎𝑡𝑒 ) determinam a constante de tempo de carga do gate. 45 𝐶𝑡𝑜𝑡𝑎𝑙 = 𝑄𝑡𝑜𝑡𝑎𝑙 𝑉𝑔𝑎𝑡𝑒 (3) 𝑄𝑇𝑜𝑡𝑎𝑙 = 𝐼𝐶𝑎𝑟𝑔𝑒 𝑡𝐶𝑎𝑟𝑔𝑒 (4) 𝑇𝐶𝑎𝑟𝑔𝑒 = (𝑅𝐺𝑎𝑡𝑒 + 𝑅𝐷𝑟𝑖𝑣𝑒𝑟 )𝐶𝑇𝑜𝑡𝑎𝑙 (5) 𝑅𝐺𝑎𝑡𝑒 = 𝑇𝐶𝑎𝑟𝑔𝑒 − 𝑅𝐷𝑟𝑖𝑣𝑒𝑟 𝐶𝑇𝑜𝑡𝑎𝑙 (6) A seleção dos elementos da ponte H, seja um IGBT ou um MOSFET, deve levar em consideração características como os tempos de ativação e carga do gate a fim de minimizar a perda de potência na ponte H . 3.1.1 Módulo de Acionamento Projetado O módulo de acionamento foi projetado para acionar motores DC que operem com tensões de 5 V a 18 V. Além do circuito do driver para acionamento de motor, este módulo viabiliza a conexão de um encoder juntamente com o motor e realiza a medição da corrente do motor. O digrama de blocos da Figura 15 apresenta uma visão geral do circuito eletrônico do módulo de acionamento. Como apresentado, a comunicação do microcontrolador com está placa ocorre através do conector A mediante os seguintes sinais: PWM. Sinal de controle de acionamento do motor. Através deste, o micrcontrolador controla a velocidade do motor. Este sinal é adaptado através do circuito A onde são gerados os sinais PWM_1 e PWM_2, sinais defasados entre si que são utilizadas para controle do gate driver (circuito B). Que por sua vez aciona os MOSFETs da ponte H do circuito E; Direção. Sinal digital utilizado para controle do sentido de giro do motor. Assim como o sinal de PWM, este sinal é devidamente condicionado antes do gate driver; 46 Encoder A e Encoder B. São sinais de informações de velocidade e direção do motor provenientes do encoder acoplado ao seu eixo. É através destes sinais que é realizado o controle de velocidade e da plataforma; Corrente. Este sinal fornece informação da corrente do motor. Sua mediação é realizada através do circuito D que esta em série com a ponte H. A alimentação da ponte H é realizada por um conector dedicado (Conector B) e a conexão do motor e do encoder é feita no conector C. Conector B Alimentação 6 V - 18 V Energia PWM Direção Adequação dos sinais PWM e Direção Sinal de Corrente PWM_1/ PWM_2 Dir_1/Dir_2 Circuito B Gate Driver Circuito D Leitura de corrente Energia Sinais de controle de gate Circuito C Encoder_A Encoder_B Adequação dos sinais do Encoder Circuito E Ponte H Acionamento do motor Conector A - Comunicação com o microcontrolador Circuito A - Conector C Sinais do Encoder Motor + Encoder Figura 15: Diagrama do circuito de acionamento dos motores. Uma vez feita a descrição macro da placa de acionamento e seus sinais, será realizado a descrição detalhada do projeto do circuito, começando pela ponte H e 47 circuito de gate driver. Será abordado do o cálculo necessário para o dimensionamento e justificativa das escolhas de cada componente. A ponte H foi desenvolvida utilizando o circuito integrado FDS8958. Este CI possui em seu encapsulamento dois MOSFETs, um de canal N e outro canal P. Dessa forma um único CI compõe um lado da ponte, sendo que o MOSFET de canal N é utilizado na parte inferior da ponte e o canal P é usado na parte superior. A escolha do FDS8958 deve-se aos seguintes motivos: Possui dois MOSFETs no mesmo encapsulamento, o que reduz as dimensões do circuito e minimiza as ligações de trilhas na placa; Tensões VGS de 4,5 V para o canal N e -4,5 V para o canal P, já são suficientes para colocar o dispositivo na região triodo, com resistência de canal 𝑅𝐷𝑆𝑜𝑛 de 0,04 Ω no canal N e 0,08 Ω no canal P, apresentando assim baixas perdas durante a condução; Os tempos 𝑡𝑑 (𝑜𝑛 ) , 𝑡𝑑(𝑜𝑓𝑓 ) , 𝑡𝑟 e 𝑡𝑓 são da ordem de unidades a dezenas de nano segundos. Logo, o tempo de transição entre o estado aberto e fechado é extremamente rápido, o que reduz as perdas durante o chaveamento do dispositivo; As correntes de dreno para fonte em regime permanente são de 7 A, no canal N e -5 A no canal P. Suportando picos correntes de até 20 A em ambos os canais. O cálculo da corrente de gate necessária para ativar o MOSFET depende do tempo de carga e do valor da carga do gate. Neste caso, o objetivo é calcular o maior valor de corrente que será solicitado do gate driver. Esta corrente é diretamente proporcional à carga do gate (𝑄𝑇𝑜𝑡𝑎𝑙 ) e inversamente proporcional ao tempo de carga ( 𝑡𝐶𝑎𝑟𝑔𝑒 ), como descrito anteriormente na Equação 4 e reapresentada com a corrente em função da carga e do tempo de carga na Equação 7. 𝐼𝐶𝑎𝑛𝑔𝑒 = 𝑄𝑇𝑜𝑡𝑎𝑙 𝑡𝐶𝑎𝑟𝑔𝑒 (7) 48 A Tabela 9 do Anexo I utiliza os valores de carga do gate e tempo de carga informados pelo datasheet do FDS8958 para mensurar a corrente máxima na carga e descarga do gate dos dois MOSFETs que compõem o CI utilizando a Equação 7. Estes valores indicam que em ambos os MOSFETs a corrente de carga é maior que a de descarga, sendo que a corrente no canal N é ligeiramente maior que a do canal P. Esta diferença ocorre devido à carga do gate do canal N ser maior e o tempo de descarga ser menor. Uma vez selecionados os MOSFETs, determinado os níveis de tensão de trabalho da ponte e dimensionado a corrente de gate é possível determinar o gate driver a ser usado. Diante das características do MOSFET selecionado para chave da ponte H, foi selecionado o CI TC4469 como gate driver do módulo. Este CI é um circuito integrado da Microchip dedicado ao acionamento de motores DC de baixa tensão e motores de passo. Ademais, é empregado em aplicações que operem de 4 V a 18 V, com capacidade de fornecer corrente de pico de 1,2 A e 250 mA de corrente contínua, apresenta um baixo tempo de subida e descida de 25 ns e um delay de 75 ns. A saída do CI TC4469 possui uma configuração pushpull, formada por dois MOSFETs semelhante a um lado da ponte H desenvolvida neste trabalho, onde o MOSFET superior tem canal P e o inferior tem canal N. Com isto, a resistência de saída do gate driver é baixa, tendo um valor típico de 10 Ω e máximo de 15 Ω para uma tensão de operação de 4,5 V a 18 V. É importante que a resistência de saída do gate driver seja baixa para não limitar de forma inadequada a corrente de carga e descarga dos gates dos MOSFETs e consequentemente deixando seu acionamento lento. Como visto na Figura 15, que apresenta a visão geral do circuito, as entradas de controle do driver de acionamento do motor são os sinais PWM e Direção (DIR_1). O módulo utiliza estes sinais de controle para gerar internamente o sinal DIR_2, que é o sinal DIR_1 negado e os sinais PWM_1 e PWM_2 a partir do sinal de PWM (Figura 16 b). Estes sinais DIR_1, DIR_2, PWM_1 e PWM_2 são que de fato controlam o acionamento do motor através do CI TC4469, que por sua vez, gera os sinais de gate da Figura 17. Dessa forma e de acordo com a Figura 16 a tem-se que: 49 i. De um lado da ponte H, o MOSFET canal P S1 da parte superior está sempre ativo e o MOSFET canal N S3 inferior está aberto. Logo, este lado estará sempre com a tensão do barramento; ii. O outro lado da ponte, os MOSFETs S2 e S4 estão sempre alternando entre os estados: triodo e corte entre si. Logo este lado do motor ora “enxerga” o barramento de tensão, ora o referencial; iii. Os sinais PWM_1 e PWM_2 tem uma defasagem, onde o PWM_1 sempre sobe antes do PWM_2, e sempre desce depois, ou seja, uma chave é sempre aberta antes de ativar a outra, evitando que as duas chaves estejam ativas no mesmo instante, pois isto provocaria um curto do barramento para o referencial, o que consequentemente queimaria os MOSFETs; iv. A mudança no sentido de giro é realizada invertendo os sinais de S1 e S3 para S2 e S4, respectivamente. a) Ponte H e Driver de Acionamento dos MOSFETs. 50 b) Sinal de Direção, Sinais PWM_1 e PWM_2 com Atraso. Figura 16 - Circuito da Ponte H e Condicionamento dos Sinais de Acionamento O gate driver utilizado não gera internamente a defasagem t1 e t2 (Figura 17) entre os sinais de saída PWM_1 e PWM_2, portanto foi necessário projetar o circuito da Figura 16 b) para gerar estes sinais. Este circuito usa a constante de tempo de carga e descarga de um capacitor para gerar os sinais PWM_1 e PWM_2 com a defasagem. A ideia deste circuito é usar um diodo em paralelo com o resistor de um circuito RC fazendo com que o tempo de carga do capacitor seja mais rápido que a descarga, gerando o sinal PWM_1 e que o tempo de carga seja menor que a descarga gerando PWM_2. 1 Gate de S1 0 1 PWM_1 Gate de S2 0 1 t1 t2 Gate de S3 0 1 PWM_2 Gate de S4 0 tempo Figura 17 - Sinais de controle da ponte H 51 Outro parâmetro que deve ser levado em consideração no projeto de uma ponte H é a potência que o driver será capaz de fornecer à carga. O dimensionamento dessa potência leva em consideração a capacidade de dissipação de calor dos elementos que compõem a ponte H e o dimensionamento dos dissipadores que podem ser utilizados para auxiliar na dissipação de calor, aumentando a capacidade do driver em fornecer potência para a carga. Como já citado anteriormente, os elementos mais utilizados como chaves nos circuitos chaveados são os IGBT e o MOSFET. No que tange a dissipação de calor, estes dois dispositivos apresentam características distintas, no MOSFET, por exemplo, o canal fonte-dreno é tido como um canal resistivo, portanto, a perda de potência é modela como a potência dissipada sobre um resistor: 𝑃 = 𝑅𝐼 2 , já no IGBT a perda ocorre na junção PN, logo segue o modelo de 𝑃 = 𝐼𝑉𝑐𝑒 . Uma forma prática de calcular a potência dissipada nos elementos de chaveamento, apresentada em [29] e [37], é dividir o período de acionamento das chaves em 4 partes de acordo com a Figura 18. PWM Tensão Corrente 𝐼1 𝑉1 𝐼0 𝑉0 t0 t1 t2 t3 t4 T t t Figura 18: Sinais de corrente e tensão para o cálculo da potência dissipada nas chaves de uma ponte H. No primeiro estágio, que vai do tempo t0 a t1, a chave encontra-se aberta, portanto, a corrente na chave é muito baixa sendo composta por correntes de fuga 52 no elemento, logo a potência dissipada também é baixa. De maneira geral a potência dissipada neste trecho pode ser desprezada. No segundo estágio, de t1 a t2, a chave transita do estado aberto para o estado de condução e, portanto, o componente trabalha na região ativa no caso do IGBT e saturação no MOSFET, a corrente se eleva o que provoca uma grande perda de potência. Idealmente o tempo de t1 a t2 são os tempos td(on) e tr presentes nos datasheets, todavia o tempo de carga do gate pode influenciar aumentando-o. A perda neste intervalo é descrita como: 𝑃1 = 1 𝑉 𝐼 (𝑡2 − 𝑡1) 2𝑇 1 1 (8) No terceiro estágio o dispositivo está saturado, no caso do IGBT ou na região Triodo no caso do MOSFET. A perda depende da corrente de carga e da tensão 𝑉0 , de acordo com a Equação 9: 𝑃2 = 1 𝑉 𝐼 (𝑡3 − 𝑡2) 𝑇 01 (9) Onde, o intervalor de tempo entre t2 e t3 é o duty cycle do PWM. Em elementos como o IGBT a tensão 𝑉0 é a tensão da junção PN coletoremissor, já no MOSFET esta tensão depende da resistência do canal dreno-fonte 𝑅𝐷𝑆𝑜𝑛 . Quanto menor a esta resistência menor a perda de potência no dispositivo. A potência 𝑃2 é reescrita para o MOSFET da seguinte maneira: 𝑃2 = 1 𝑅 𝐼 2 (𝑡3 − 𝑡2) 𝑇 𝐷𝑆𝑜𝑛 1 ( 10 ) O quarto estágio tem uma característica semelhante ao segundo, neste estágio o dispositivo está saindo da condução para o corte e, portanto, passando pela região ativa (IGBT) ou saturação (MOSFET) com uma corrente alta. Neste caso, o intervalo de tempo de t3 a t4 corresponde idealmente aos tempos td(off) e tf. A equação de perda é descrita da seguinte maneira. 𝑃3 = 1 𝑉 𝐼 (𝑡4 − 𝑡3) 2𝑇 0 1 ( 11 ) 53 A perda total de potência é descrita então pela soma das perdas em cada estágio de acordo com: 𝑃𝑡 = 𝑃1 + 𝑃2 + 𝑃3 ( 12 ) Uma vez definido o método de cálculo das perdas de potência nas chaves que compõem a ponte H, é realizado o cálculo para o driver desenvolvido neste trabalho. As tabelas 1 e 2 exibem as perdas por trecho e totais em cada MOSFET, para tensões de operação 6 V e 18 V, respectivamente. A corrente de carga foi estabelecida como 3,5 A para operação em ambas as tensões. O cálculo das potências leva em consideração uma situação com o motor girando apenas para um lado, com duty cycle em 99%, o que representa perda de potência máxima no sistema. Observe que durante a operação um dos MOSFETs canal P (S1) que localizase na parte superior da ponte está sempre ativo, portanto possui perda referente apenas a 𝑃2 que é descrita na Equação 10. O MOSFET canal N S4 possui perda em todas as parcelas, já S2 e S3 não apresenta perdas. Os tempos de carga e descarga do canal N operando em 6 V foram definidos utilizando a Tabela 9 como 43 ns. Já os valores de operação em 18 V foram retirados do datasheet, sendo estes 30 ns para carga e 41 ns para descarga. Tabela 1: Perda de potência nos MOSFETs da ponte H com operação em 6 V e 3,5 A de carga. 𝑅𝐷𝑆𝑜𝑛 (Ω) 𝑃1 (W) 𝑃2 (W) 𝑃3 (W) 𝑃𝑡 (W) S1 (canal P) 0,08 0 0,98 0 0,98 S2 (canal P) 0,08 0 0 0 0 S3 (canal N) 0,04 0,009 0,49 0,009 0,508 S4 (canal N) 0,04 0 0 0 0 Tabela 2: Perda de potência nos MOSFETs da ponte H com operação em 18 V e 3,5 A de carga. 𝑅𝐷𝑆𝑜𝑛 Ω 𝑃1 (W) 𝑃2 (W) 𝑃3 (W) 𝑃𝑡 (W) S1 (canal P) 0,052 0 0,64 0 0,64 S2 (canal P) 0,052 0 0 0 0 S3 (canal N) 0,028 0,019 0,343 0,026 0,39 S4 (canal N) 0,028 0 0 0 0 54 Após observar as Tabela 1 e Tabela 2, conclui-se que os valores totais das perdas em cada MOSFET reduzem um pouco com o aumento da tensão de operação. Isto é possível pois as perdas referentes à resistência do canal 𝑅𝐷𝑆𝑜𝑛 reduzem, uma vez que este reduz com o aumento da tensão de gate. 3.1.2 Leitura da Corrente no Driver. Outro circuito que compõem o módulo de acionamento é a leitura de corrente do motor, que é realizada com resistor em série com a ponte H. Este resistor é pequeno com valor de 0,1 Ω, a fim de evitar que ele limite a corrente de partida do motor ou variação de velocidade da roda, fazendo com que o robô não seja capaz de vencer a força de atrito, prejudicando o seu desempenho. Uma vez que, a tensão sobre o resistor que mede a corrente é pequena, é necessário amplificar este sinal para valores que possam ser amostrados por um ADC. Portanto, é utilizado o amplificador de instrumentação INA826. A Figura 19, apresenta o diagrama do circuito interno do amplificador INA826. O ganho deste amplificador é controlador por um resistor externo 𝑅𝑔 , como exibido na Equação 13. 𝐺 =1+ 49,4 𝑘Ω 𝑅𝑔 ( 13 ) Ajustando-se o ganho do amplificador para 10, o sinal de saída tem a resolução de 1 V/ 1 A . A corrente amostrada na ponte H exibe como componentes de frequência predominantes à frequência do PWM e suas harmônicas. A leitura de corrente do motor visa mensurar corrente em regime permanente, ou seja, é importante apenas a componente DC da corrente. Por isso é indispensável o projeto de um filtro para eliminar os demais componentes de frequência presente no sinal, principalmente a frequência de chaveamento e suas harmônicas. 55 Figura 19 - Diagrama interno do amplificador de instrumentação INA826 O teorema da amostragem de Nyquist diz que a maior frequência que pode ser observada em um processo de amostragem é a metade da frequência de amostragem. Se o sinal a ser amostrado conter frequências maiores, estas serão incluídas incorretamente em uma frequência dentro do espectro de interesse. A frequência de amostragem utilizada neste projeto é 100 Hz, logo só é possível observar sinais de até 50 Hz. Portanto foi projetado um filtro para eliminar as frequências maiores 50 Hz do sinal antes de ser amostrado. O ADC empregado possui 10 bits, portando a atenuação necessária na frequência de rejeição, de acordo com a Equação 14, é 60 dB. Para não ocorrer cortes na faixa de frequência útil, a frequência de corte foi fixada em 50 Hz e a frequência de rejeição em 2000 Hz, que é dez vezes menor que a frequência do PWM que se deseja atenuar. Atenuação = 20 log 1 210 ≅ 60𝑑𝐵 ( 14 ) 56 A Figura 20 apresenta a resposta em frequência do filtro calculado a partir dos parâmetros de ganho, atenuação e frequência de corte e rejeição. Foram levantados três modelos com funções de aproximação: Butterworth, Chebshev e Cauer, todos de 2ª ordem. Diante das curvas de resposta em frequência levantadas, conclui-se que a aproximação de Butterworth é a que melhor se aplica ao projeto, uma vez que oferece a atenuação especificada na frequência de rejeição e possui um comportamento linear do ganho na faixa de passagem. Figura 20 - Diagrama de Bode de um filtro passa baixas, com aproximação por Butterworth, Chebyshev e Cauer. O filtro sintetizado é de segunda ordem, logo pode-se fazer o uso de uma arquitetura Biquad, como por exemplo, a do circuito da Figura 21, cuja topologia é de um filtro passa-baixas não inversor com ganho unitário. Sua função de transferência é descrita na Equação 15. 1 𝐻 𝑠 = 𝑅2 𝐶1 𝐶2 2 1 𝑆 2 + 𝑅𝐶 𝑆 + 2 𝑅 𝐶1 𝐶2 1 ( 15 ) 57 Figura 21 - Filtro passa-baixas de segunda ordem não inversor. Uma vez defina a arquitetura do biquad, é possível utilizar o polinômio de Butterworth de segunda ordem normalizado (Equação 16) para calcular os valores dos resistores e capacitores que compõem o circuito. Neste caso é necessário normalizar a função de transferência da equação 15 para uma frequência de corte de 1 rad/s e resistor 1Ω, de acordo com a Equação 17. 𝐻 𝑠 = 1 𝑆2 + 2𝑆 + 1 1 𝐶1 𝐶2 𝐻 𝑠 = 2 1 𝑆2 + 𝐶 𝑆 + 𝐶 𝐶 1 1 2 ( 16 ) ( 17 ) Comparando-se as Equações 16 e 17, obtém-se os valores do capacitores normalizados (Equações 18 e 19). 2 = 𝐶1 2, 1 = 1, 𝐶1 𝐶2 𝐶1 = 1,418 ( 15 ) 𝐶2 = 0,707 ( 16 ) 58 Uma vez levantados os valores normalizados, obtém-se os valores reais dos capacitores utilizando a frequência de corte (50 Hz) em rad/s e o valor do resistor (22 KΩ) de acordo com as Equações 20 e 21. 𝐶1 = 1,418 , 𝐶1 = 204 𝑛𝐹 𝑅 ∗ 𝑊𝑛 ( 17 ) 𝐶2 = 0,707 , 𝐶2 = 102 𝑛𝐹 𝑅 ∗ 𝑊𝑛 ( 18 ) A Figura 22 mostra o circuito desenvolvido para o amplificador de instrumentação e para o filtro antialiasing. Figura 22: Amplificador de instrumentação e filtro antialiasing. A foto da Figura 23 apresenta o módulo de acionamento na placa final. 59 Figura 23: Módulo de acionamento final. 3.2 Módulo de Sensores de Aceleração e Orientação 3.2.1 Acelerômetro O principio da inércia afirma que: se a resultante das forças sobre um corpo é nula, então sua velocidade é constante. A segunda lei ou princípio da dinâmica afirma que: se a resultante das forças sobre o corpo não é nula, então ela é igual à taxa de variação do momento linear. Considerando-se o corpo com massa constante, a resultante da força provocará uma variação da velocidade do corpo, ou seja, uma aceleração (Equação 22). 𝐹 = 𝑚𝑎 ( 19 ) Um acelerômetro é um dispositivo que tem como objetivo medir a variação da velocidade de um objeto, logo a aceleração. Uma vez conhecida a aceleração e de posse da massa do objeto, é possível obter a resultante das forças sobre o corpo em questão. Um dos métodos adotados na literatura e apresentado em [33] para construir um acelerômetro é utilizar o sistema massa mola da Figura 24. Neste sistema um 60 objeto de massa conhecida é acoplado a uma base através de uma mola com constate elástica k também conhecida. De acordo com a lei de Hook apresentada na Equação 23, a resultante das forças atuantes sobre o objeto provoca um deslocamento ∆𝑥. 𝐹 = 𝑘∆𝑥 ( 20 ) Figura 24: Sistema massa mola. [33] Igualando as equações de dinâmica (22) e do sistema massa mola (23), verifica-se que a aceleração pode ser definida medindo-se o deslocamento sofrido pelo sistema massa mola, de acordo com as Equações 24 e 25. 𝐹 = 𝑚𝑎 = 𝑘∆𝑥 𝑎= 𝑘∆𝑥 𝑚 ( 21 ) ( 22 ) Essa topologia com sistema massa mola é utilizada em sensores comerciais como: LIS3DSH da ST Semiconductor, MMA7361LC da Freescale Semiconductor e ADXL345 da Analog Devices. Todos estes sensores utilizam a tecnologia de microfabricação para desenvolver seus sensores em pastilhas de silício utilizando a estrutura de um sistema massa mola. A Figura 25 apresenta a estrutura interna de um acelerômetro em que é utilizado o conceito de massa mola para mensurar a aceleração. No caso deste 61 sensor, a variação ∆𝑥 é medida utilizando a variação da capacitância de dois capacitores da seguinte forma: Uma estrutura de silício compõe a massa do sistema massa mola, esta estrutura forma junto com o corpo do sensor um sistema de capacitores CS1 e CS2, visualizados na Figura 25. O deslocamento ∆𝑥 provocado pela atuação da força aplicada ao objeto é refletido nas placas dos capacitores CS1 e CS2, consequentemente ocorre a variação da capacitância de ambos os capacitores. Como estes capacitores estão numa configuração diferencial, o movimento das placas provoca um aumento da capacitância em um e a redução em outro. Figura 25: Estrutura interna de um acelerômetro que utiliza a variação de capacitores para mensurar a aceleração. [33] Na robótica móvel, o acelerômetro é utilizado para medir grandezas tais como a variação da velocidade da base na partida, na mudança de direção ou de velocidade de navegação. Outra informação importante é a inclinação do robô em relação ao plano da terra. Isto é possível uma vez que todos os corpos estão o tempo todo sobre a ação da força gravitacional, dessa forma o sistema massa mola do sensor também sofre esta ação. O efeito da gravidade pode ser observado de maneira mais clara quando o objeto encontra-se estático, sendo, portanto a saída do sensor resultado puramente da gravidade. A Figura 26 ilustra bem o efeito da força da gravidade em cada eixo do acelerômetro de acordo com sua inclinação. 62 Figura 26: Influência da gravidade nas saídas do acelerômetro de acordo com a inclinação [34] Uma análise importante a ser realizada a respeito da medida da aceleração é a banda de frequência que o sensor suporta mensurar. A análise realizada até então levou em consideração um sistema com aceleração estática, mas existem casos como a vibração, por exemplo, em que a aceleração apresenta uma característica dinâmica. Neste caso a equação do sistema massa mola é descrito com um sistema de segundo grau de acordo com a Equação 26. 𝐹 = 𝑚𝑎 = 𝑚𝑥 + 𝑏𝑥 + 𝑘𝑥 ( 23 ) Utilizando Laplace a função de transferência do deslocamento pela aceleração é descrita pela Equação 27. 𝑋 𝑠 1 = 𝑏 𝑎(𝑠) 𝑠 2 + 𝑠 + 𝑘 𝑚 𝑚 𝑤0 = 𝑘 𝑚 ( 24 ) ( 25 ) Como apresentado pela função de transferência, o sistema se caracteriza como um sistema de segunda ordem “passa baixa” cuja frequência natural 𝑤0 (Equação 28) depende dos fatores construtivos do sensor: 𝑘 que é a constante elástica da mola, b que é a constante de amortecimento e 𝑚 que é a massa. A 63 Figura 27 mostra o diagrama de bode do sensor, com ele observa-se que o sensor deve ser utilizado com acelerações cuja frequência seja menor que a frequência natura do sistema. Figura 27: Resposta em frequência do acelerômetro. [36] Neste projeto foi utilizado o sensor MMA7361L, Figura 28. Sua interface analógica possui sensibilidade selecionável entre 800 mV/g e 206 mV/g, cuja configuração é feita através de um pino digital. Outros pinos digitais de controle permitem: colocar o sensor em estado de baixo consumo; verificar o funcionamento do sensor e realizar detecção de zero. Neste caso o pino fica em estado alto e muda seu estado para baixo quando os três eixos assumem o valor de 0 g, dessa forma, este pino pode ser usado na interrupção de um microcontrolador. 64 Figura 28: Acelerômetro MMA7361L. 3.2.2 Velocidade de Rotação A tecnologia de microfabricação viabilizou além do desenvolvimento de sensores de aceleração compactos, a fabricação de sensores que medem a velocidade angular, também chamados de giroscópio. Estes sensores utilizam o efeito Coriolis para medir a velocidade de rotação de um corpo em relação a um referencial fixo. Imagine um sistema composto por uma circunferência no plano (x,y) com o eixo z perpendicular ao plano do papel, como ilustrado na Figura 29. Este sistema apresenta uma rotação no eixo z com uma velocidade angular Ω, portanto um ponto “p” qualquer perto do centro apresenta uma velocidade Vy tangencial ao raio, proporcional a velocidade angular e a sua distância do centro da circunferência, logo Vy = Ωr. Se o mesmo ponto “p” for deslocado para longe do centro e para perto das bordas, a sua velocidade angular Ω permanecerá a mesma, todavia sua velocidade tangencial aumentará com o aumento da distância r do centro. A velocidade da variação de r (Vx) pela velocidade angular é a aceleração de Coriolis e é descrita pela Equação 29. 𝑎𝑐𝑜𝑟𝑖𝑜𝑙𝑖𝑠 = 2(Ω x Vx ) ( 26 ) 65 Vx Ω x Vy r p y Figura 29: Efeito Coriolis. Boa parte dos sensores de velocidade angular microfabricados de mercado, como a linha ADXRS da Analog Device e IDG da Inven Sense, utilizam o efeito Coriolis para mensurar a velocidade de rotação. Estes elementos possuem sua estrutura interna constituída por um sistema duplo massa mola semelhante ao apresentado na Figura 30. Neste sistema uma massa é colocada em permanente oscilação no eixo X com uma velocidade Vx constante, como o movimento do ponto p descrito na Figura 29. Esta oscilação é geralmente obtida utilizando-se força eletrostática ou eletromagnética. Devido ao efeito Coriolis, a ação de uma velocidade de rotação Ω provocará o surgimento de uma força aparente perpendicular ao movimento de oscilação da massa de prova, cujo valor varia de acordo com a oscilação da massa de prova, logo surgirá uma segunda oscilação perpendicular ao eixo X, que por sua vez, provocará a variação das distâncias das placas dos capacitores da estrutura interna do sensor. 66 Figura 30: Sistema de massa vibrante [38] Simplificadamente a relação entre a capacitância medida e a velocidade de rotação do sistema é descrita de acordo com as Equações 30 e 31, que igualam a força de Coriolis a Lei de Hook evidenciado o deslocamento provocado pela força de Coriolis em função da velocidade de rotação. 𝐹𝐶𝑜𝑟𝑖𝑜𝑙𝑖𝑠 = 𝐹𝐸𝑙𝑎𝑠𝑡𝑖𝑐𝑎 Δ𝑦 = −2𝑚Ω𝑣 𝑘 ( 27 ) ( 28 ) O sensor IDG500 que foi utilizado no projeto é constituído por dois sistemas de vibração independentes que mensuram portanto a rotação em dois eixos ortogonais entre si. O sensor disponibiliza para ambos os eixos duas saídas analógicas com diferentes sensibilidades de medição, 2 mV/º/s e 9,1 mV/º/s. Portanto, é possível aferir valores máximos de 110 º/s e 500 º/s de acordo com a sensibilidade de cada saída do sensor. 67 Figura 31: Giroscópio IDG500 Apesar do sensor disponibilizar dois deixo de medição neste projeto apenas eixo é um utilizado, visto que a base só apresenta movimento de rotação em um eixo. 3.2.3 Sensor de orientação A orientação do robô a um determinado referencial é uma informação importante utilizada na navegação do dispositivo pelo ambiente. Esta orientação pode ser fornecida utilizando sistemas sofisticados com visão computacional ou sistemas mais simples como a orientação por bússola através do campo magnético terrestre. Neste caso, os tipos mais comuns de sensores são: Fluxo de gate, efeito hall, magneto indutivo e magneto resistivos. O sensor fluxo de gate é formado por uma estrutura de bobinas compondo um transformador com um núcleo constituído por uma liga sensível ao campo magnético, como o permaloy (Ni - Fe). A bobina primaria é excitada com tensão AC, o campo magnético terrestre atua sobre o núcleo fazendo com que a corrente no secundário varie de acordo com o ângulo de incidência do campo. Este tipo de sensor apresenta alta sensibilidade, sendo capaz detectar campo na ordem de 1 miligauss. Por este motivo, este tipo de sensor é utilizado em aplicações militares como sistemas de posicionamento geográfico e detecção de submarinos. Na área comercial este tipo de sensor é utilizado para mapeamento do solo para localização de minérios e hidrocarbonetos [39]. No entanto, de acordo com 68 [40], o tempo de resposta leva de 2s a 3s, o que o torna lento para aplicações de navegação que necessitem de resposta mais imediata, como na robótica móvel. Uma opção de sensor que apresenta uma resposta mais rápida, podendo chegar a 1 us é o sensor baseado no princípio magneto resistivo, cuja estrutura é constituída por uma fina camada de permaloy depositada sobre uma estrutura de silício. Durante o processo de deposição do permaloy sobre o silício, o dispositivo é exposto a um forte campo magnético que orienta a estrutura do permaloy, dessa forma, ao ser exposto a um campo magnético com um ângulo diferente, sua resistência varia. Este tipo de sensor pode apresentar sensibilidade na ordem de até 0.1 miligauss, podendo detectar campos a uma distância maior que os sensores baseados em efeito hall, por exemplo. O princípio magneto resistivo é utilizado por fabricantes como a NXP para fabricar seus sensores comerciais, neste caso o KMZ51 e KMZ52, onde o primeiro é composto por um único sensor, já o segundo é composto por dois sensores dispostos de maneira perpendicular entre si dentro do mesmo encapsulamento. O uso de dois sensores é condição essencial para mensurar o ângulo azimutal (α) indicado na Figura 32, que representa o ângulo entre o norte magnético e a orientação do corpo sobre a superfície terrestre. Esta configuração de dois sensores dispostos em 90º é utilizado para mensurar as componentes Hey e Hex. A Equação 32 calcula o ângulo azimutal utilizando tais componentes. 𝛼 = arctan 𝐻𝑒𝑦 𝐻𝑒𝑥 ( 29 ) 69 Figura 32: Composição das linha de campo terrestre [41] O módulo utilizando neste trabalho foi o CMP03, este módulo comercial é uma bússola digital que utiliza o sensor KMZ51 ou o KMZ52 em sua versão mais recente. Além do sensor magnético, este dispositivo é constituído por um microcontrolador da família 18F da microchip. Este por sua vez, tem como propósito promover o devido condicionamento e leitura do sinal do sensor, realizando a correção do ângulo lido referente ao norte magnético para o norte geográfico, visto que ambos não coincidem, apresentando uma diferença de aproximadamente 11,5 º. Esta diferença entre o norte geográfico e o norte magnético não é fixo, portanto este sensor necessita ser calibrado de tempos em tempos de acordo com este ângulo. A Figura 33 apresenta o módulo CMP03 e seus pinos de interface. Este dispositivo deve ser alimentado com 5 V e disponibiliza duas interfaces de comunicação, uma através de uma porta de comunicação serial I2C e outra utilizando a largura de pulso de um sinal de PWM com resolução de 100 us/º. A 70 largura mínima do pulso que representa 0º é 1 ms, portanto a largura máxima é 36,99 ms. Figura 33: Módulo CMP03 [41] A leitura do ângulo fornecido por este módulo está sendo realizado através da identificação da largura do pulso. O algoritmo utilizado para medi-lo é descrito na seção 3.3. A Figura 34 apresenta o módulo de sensores com os três sensores que o compõem: O acelerômetro, o giroscópio e a bussola digital. Figura 34: Módulo de sensores. 71 3.3 Microcontrolador e Firmware O controle dos módulos de acionamento e leitura dos sensores é realizado pelo módulo de processamento. Este módulo contém um microcontrolador PIC32 da Microchip, que pertence a uma família de microcontroladores de 32 bits, cujo poder de processamento se equipara aos processadores DSPs. Em termos de processamento, suas principais características são: 1,56 DMIPS/MHZ; Frequência de operação até 80 MHz; Latência zero para acesso a flash; 512 K de memória Flash e 128 K de RAM; Multiplicação de ponto fixo em um ciclo de instrução. Os requisitos dos periféricos estão mapeados de acordo com as interfaces de comunicação com os módulos descritos na Tabela 3, sendo, portanto descritos da seguinte maneira: Três saídas de PWM para controle de velocidade; Três saídas digitais para controle de direção; Quatro entradas de interrupção, sendo três para a leitura de velocidade dos motores e uma para a leitura de orientação do compasso digital; Três entradas digitais para leitura da direção de giro dos motores; Sete entradas analógicas, sendo: três para leitura de corrente, duas para aceleração, uma para velocidade angular e uma para nível de bateria; Uma porta UART para comunicação com o servidor. 72 Tabela 3: Interfaces de comunicação com os módulos. Módulos Nº por base Driver de acionamento 3 Interfaces Controle do motor Periférico 1 - PWM 1 - Saída Digital Sensor de velocidade 1 - Entrada de Interrupção 1 - Entrada Digital Módulo de sensores Sensor de corrente 1 - Entrada analógica (ADC) Acelerômetro (x,y) 2 - Entradas analógicas (ADC) Giroscópio (y) 1 - Entrada analógica (ADC) Compasso digital 1 - Entrada de Interrupção 1 Nível da bateria 1 - Entrada analógica (ADC) 1 Comunicação serial 1 – UART 1 Distribuidora de energia e interconexões Comunicação sem fio O Firmware embarcado no microcontrolador atende aos seguintes requisitos: Realiza a leitura dos sensores de corrente, aceleração e velocidade angular a cada 10 ms; Envia as leituras para o sistema supervisório a cada 50 ms; Permitir a seleção da forma de atuação sobre as rodas. Que pode ser em malha aberta ou em malha fechada; A malha de controle tem tempo de amostragem de 10 ms; O firmware monitora a corrente de cada ponte e atua em caso de “sobre corrente”, servindo como proteção ao circuito; Controle sobre a tensão dos motores em malha aberta. A Figura 35 descreve o diagrama macro do firmware desenvolvido. Quando o sistema é ligado são realizadas as configurações dos periféricos e após a 73 inicialização, o firmware entra em um loop infinito, onde realiza tarefas cíclicas a cada 10 ms, como por exemplo: leitura dos sensores; tratamento dos pacotes recepcionados pela porta de comunicação e controle dos motores. O envio dos dados para o sistema supervisório deve ser realizado em uma taxa fixa com uma frequência mínima de 20 Hz. Inicio Configura periféricos Liga interrupções While(1)? Há pacotes recepcionados? S Trata pacotes Atua sobre os motores S N 50 ms? S Controlador Acionado? Envia Leituras dos sensores N 10 ms? S Realiza leitura de: Corrente; Aceleração; Posição angular; Filtra os sinais amostrados dos diversos sensores Figura 35: Diagrama geral do firmware. No próximo tópico serão detalhados os algoritmos de leitura dos sensores, onde estão descritas as configurações em hardware necessárias. 74 3.3.1 Leitura da Velocidade dos Motores Como apresentado na seção 3.1, o módulo de acionamento do motor disponibiliza uma interface para conectar um encoder. Este sensor permitir que o microcontrolador obtenha informações de velocidade e sentido de giro do motor. Independente do princípio físico do sensor que compõem o encoder, sua saída é um sinal quadrado cujo período varia de acordo com a velocidade do eixo ao qual o encoder encontra-se acoplado. É comum que os encoders disponibilizem uma segunda saída em quadratura com a primeira, permitindo que seja identificado o sentido de giro do eixo como, por exemplo, os sinais A e B da Figura 36, que são sinais típicos de saída de um encoder. Tomando-se o sinal B como referência, nota-se que no diagrama superior no instante da borda de subida do sinal B o sinal A está em nível alto, já no diagrama inferior, na mesma borda de subida do sinal B o sinal A está em nível baixo. Portanto, identifica-se o sentido de giro analisando a polaridade do sinal A em relação ao sinal B. Figura 36: Sinais de um encoder com saída em quadratura (Fonte http://www.qsl.net – Acessado, 20 de junho de 2014). Como já citado, o período do sinal do encoder varia de acordo com a velocidade do eixo ao qual ele encontra-se acoplado. Portanto, para medir a 75 velocidade do motor é preciso medir o intervalo de tempo entre dois pulsos seguidos ou contar quantos pulsos ocorreu dentro de um determinado período. Ambas as opções podem ser realizadas utilizando uma entrada de interrupção para detectar os pulsos do encoder. a) b) Figura 37: Métodos de medição da velocidade utilizando o sinal do encoder. O método que mede o número de pulsos do encoder é realizado utilizando-se um timer com referência. O objetivo é contar o número de pulsos do encoder usando a entrada de interrupção, dentro de um período do timer de referência, como no diagrama da Figura 37 a). Neste caso, o cálculo da velocidade em rpm é: 𝑉= 𝑁𝑒 ∗ 𝐹𝑡 ∗ 60 𝑁 ( 30 ) Sendo, 𝑁𝑒: Número de pulsos do encoder; 𝐹𝑡 : Frequência do timer; 𝑁: Número de pulsos do encoder para uma volta da roda. Este método faz com que as velocidades maiores tenham melhor resolução, uma vez que haverá maior número de pulsos num período do timer de referência. Devido a esta perda de resolução existe um limite para se medir as frequências menores, visto que para obter-se um erro menor que 10 %, a menor velocidade tem que gerar pulsos a uma frequência pelo menos 10 vezes maior que a frequência do 76 período timer. Contudo, este método tem a vantagem de utilizar apenas um timer para ler a velocidade das três rodas, uma vez que o mesmo apenas marca o período de referência. A segunda forma de ler a velocidade é medir o período entre os pulsos do encoder, isto é, conta-se o número de pulsos de um timer entre dois pulsos do encoder, de acordo com o diagrama apresentado na Figura 37 b). A velocidade é calculada de acordo com a equação: 𝑉= 𝐹𝑡 ∗ 60 𝑇𝑀𝑅 ∗ 𝑁 ( 31 ) Onde TMR é o contador do timer. Esta forma de ler a frequência exige que seja disponibilizado um timer por motor, o que é uma desvantagem em relação ao primeiro método, mas tem uma resolução melhor quanto menor a velocidade da roda. Diante das características de cada método, optou-se por medir a velocidade por “período” do encoder, visto que este método garante uma boa resolução para as baixas frequências de rotação e permite que a informação da direção seja realizada a cada pulso do encoder juntamente com a velocidade. Para tanto, três timers foram configurados para utilizarem o clock em 80 MHz, como um pré-escaler de 256, assim a frequência dos timers para leitura dos motores é 312500 Hz. A exatidão da leitura maior que 1 % é garantida para que velocidades que gerem um sinal de frequência de até 3,125 KHz. O registrador de contagem do timer TMR foi configurado com o valor 0xFFFF, isto resulta em um tempo de estouro de 0,2097 s. Dessa maneira, é possível ler sinais com frequência acima de 4,7 Hz. 3.3.2 Orientação da Plataforma O Compasso digital fornece a informação de ângulo através de uma saída de PWM, cuja largura do pulso indica o ângulo. A largura de pulso mínima 1 ms indica 77 0 °, 36,99 ms indica 359,9°, logo ângulo é aferido medindo-se a largura de pulso do PWM utilizando-se uma entrada de interrupção. A leitura de velocidade dos encoders é realizada contando-se as bordas de subida ou descida, já o compasso é necessário mudar a borda de detecção de interrupção uma vez que se deseja ler o tempo ativo do sinal e não o período. Como o sinal possui período fixo de 36,99 ms, a leitura de posição só terá garantia de ter sido atualizada dentro do loop maior de 50 ms. A medida da duração do pulso do compasso é realizada usando o timer 1. Este timer também é utilizado pelo firmware para gerar os tempos de amostragem para leitura dos sensores de corrente, aceleração e velocidade angular em períodos de 10 ms. Como o período do pulso da bússola pode chegar a 36,99 ms, pode haver ocorrência de estouro do timer, então é utilizado uma variável chamada “ContBussola”, para auxiliar na medição do pulso. O diagrama contido na Figura 38 detalha como é realizado o tratamento da leitura do pulso. 78 Ocorrência de uma borda de subida Muda a interrupção para detectar borda de descida; Zera contador de estouro do timer; Amazena valor do contador do timer Interrupção de estouro do timer Loop Principal Interrupção por borda de descida Incrementa contador de estouro; Muda a interrupção para detectar borda de subida; Amazena valor do contador do timer Não Contador Final> Inicial Sim (Periodo do timer) *(Contador de (Periodo do timer) *(Contador de estouros - 1) + Inicial - Final estouros ) + Final - Inicial Loop Principal Figura 38: Diagrama do algoritmo de leitura do ângulo 79 3.4 Comunicação com o Supervisório Zigbee é um protocolo aberto baseado no modelo OSI, cujas duas primeiras camadas, física e de acesso, são especificadas pela norma IEEE 802.15.4. As demais camadas são definidas pela Zigbee Alliance. O Zigbee pertence à classe das WPANs (Wireless Personal Area Network), com operação na faixa de 2.4GHz ou 915 MHz, possuindo de 14 a 16 canais, dependendo do modelo. Assim como os dispositivos WPANs, um módulo Zigbee deve permitir a comunicação com outro modulo Zigbee, independente do fabricante. O protocolo Zigbee define três dispositivos na rede: Coordenador: Tem a função de montar e gerenciar a rede Zigbee, realizando ações como seleção do PAN ID e o canal de operação, além de inserir outros dispositivos atribuindo-lhes um endereço de rede e roteamento de pacotes; Router: É um dispositivo secundário na rede, cuja função principal é rotear pacotes, mas que com exceção da montagem da rede, pode realizar as tarefas do coordenador, dando autorização para que um novo dispositivo entre na rede, entre outras funções; End Device: Tem funções limitadas, não pode rotear pacotes nem permitir que novos dispositivos ingressem na rede. Sua função é ser um dispositivo final, como um sensor ou atuador. A rede pode assumir três topologias, Figura 39: i. Estrela, onde todos os dispositivos comunicam-se com o coordenador; ii. Árvore, que tem uma versatilidade maior que a estrela, sendo ideal para aplicações que se deseja aumentar o alcance da rede; iii. Mesh, este tipo de rede é caracterizada por uma capacidade de se reorganizar de forma automática, onde os dispositivos podem trocar dados entre si sem a necessidade da participação do coordenador. 80 Estrela Coordenador Árvore Router Mesh End Device Figura40: 39:Topologias Topologiasde deRede rede zigbee. Figura Zigbee. Alguns conceitos importantes da configuração da rede são: PAN ID: É o endereço da rede, seu valor é gerado pelo coordenador da rede e é configurado pelo campo ID. Se o coordenador tiver seu ID configurado com valor zero, ele escolherá um PAN ID qualquer, caso seja configurado com um valor diferente de zero, ele irá utilizar o valor determinado pelo campo ID. Os demais dispositivos, como routers e end devices, irão ingressar na rede cujo valor do PAN ID estiver sendo indicado no campo ID. Se este valor estiver igual à zero, isto significa que ele pode entrar em qualquer rede; Canais: O Zigbee opera na faixa de 2.4 GHz no Brasil e Estados Unidos e 915 MHz na Europa e Japão. Além disso, dentro da frequência de operação ele pode operar em até 16 canais diferentes, que assim como o PAN ID pode ser configurado, ou deixado livre para o coordenador escolher de acordo com as condições do ambiente. Este parâmetro é configurado pelo campo SC. Se SC for configurado com FFFF o dispositivo irá utilizar o canal que melhor lhe convier; Endereço de 64 bits: Todo dispositivo Zigbee vem com um endereço de 64 bits de fábrica. Este valor é imutável e único no mundo; 81 Endereço de 16 bits: Este é o endereço do dispositivo na rede. Seu valor vai de 0000 a FFFF, logo pode haver até mais de 65mil dispositivos na rede. Este endereço é normalmente gerado pelo coordenador, mas na topologia Mesh, pode ser gerado por um router se o coordenador estiver ausente; Segurança: O zigbee permite que seja habilitada a criptografia AES 128, dessa forma impede-se dispositivos espiões ingressem na rede ou vejam o que está sendo transmitido na mesma; Tempo de ingresso: O tempo em que a rede está aberta a entrada de novos dispositivos também pode ser configurado. Neste caso, o campo NJ determina este tempo. Ao término teste tempo, nenhum outro dispositivo novo poderá ingressar na rede. Se desejar reativar o tempo de ingresso, pode-se enviar um comando a algum dispositivo da rede via software ou hardware. 3.4.1 Módulo Xbee O módulo Zigbee da empresa Digi é referência quando se fala de tecnologia Zigbee. Este módulo se popularizou graças a sua interface acessível, que permite sua utilização com o mínimo de programação. Possuem comunicação via interface UART, com conexões mínimas dos pinos de transmissão e recepção. O controle de fluxo por RTS e CTS podem ser deixando-os em aberto. O módulo funciona de duas formas: Modo Transparente: Todo dado disponibilizado em seu pino RX é transmitido pelo canal sem fio para o destinatário pré-configurado e todo dado recepcionado pelo canal sem fio é disponibilizado no pino TX para o Host. Este modo de funcionamento é mais prático, visto que o Zigbee passa a ser um conversor UART/Wireless. Contudo, o seu uso não é recomendado para aplicações em que se deseja comunicar com dispositivos com endereços diferentes, quando deseja-se obter 82 respostas da rede, como ACKs ou mesmo no envio de configurações. Para tanto é recomendado o modo API; Modo API: Toda a comunicação com o Zigbee pela UART está encapsulada em um frame (Figura 41). Este modo permite realizar um controle da rede, com indicações de respostas de envio, controle de endereço e configuração remota. A Tabela 4 apresenta as principais vantagens dos dois modos. Numa rede Zigbee o coordenador é responsável por selecionar o canal, o PAN ID, a política de segurança e o protocolo. O coordenador é o único elemento que pode iniciar uma rede. Depois de iniciada a rede, outros dispositivos podem ser ingressos na rede. Quando o coordenador é inicializado, primeiro ele faz uma varredura em todos os canais, verificando se existe alguma rede ativa em seu PAN ID. Depois da varredura, o coordenador lista os canais mais favoráveis para que a rede se estabeleça. Já o router varre a rede, canal por canal, até que encontre um PAN ID ao qual esteja habilitado para ele entrar. Caso todos os canais sejam verificados, e o router não encontre um PAN ID válido, ele volta a varrer todos os canais. Após ingressar na rede, o router será capaz de dar permissão para outro dispositivo entrar na rede. As principais configurações que devem ser observadas para que uma rede seja configurada são listadas na Tabela 10 do Anexo II. 83 Tabela 4: Comparação entre modo transparente e API. Modo Transparente Interface Simples Todo dado recebido pela porta serial é transmitido Suporte Configurações via comando AT de forma direta. Modo API Gerenciamento de dados transmitidos Transmitem dados para múltiplos destinos sem requerer configuração previa do destinatário. Isto se deve ao fato de que o endereço do destinatário já está contido no frame API enviado ao Zigbee. para múltiplos destinos Recebimento de dados com Os dados recebidos têm campo de identificação do tipo de dado e quem é o remetente identificação do destinatário Diagnóstico da rede avançado Configuração remota Os frames recebidos podem prover informações das portas de interface do módulo remoto, sem a necessidade de um host junto ao dispositivo remoto. Além disso, possui campo de indicação de respostas ao envio de dados, com indicação se o dado foi enviado, se o zigbee foi encontrado, ACK de resposta, se o dado recepcionado é um broadcast, se está criptografado, entre outros. Além das configurações locais do Zigbee, o modo API permite configurar um dispositivo Zigbee remotamente. A comunicação do host com o zigbee no modo API ocorre através de Frames, cuja estrutura é apresenta na Figura 41. O frame é formado pelos campos: Star Delimiter, length, Frame data e por último o checksum. Os campos Star Delimiter, Length e Checkum são padrões e independem do dado trafegado. Já o campo Frame data depende do tipo de dado. Este campo é composto por um campo de identificação do tipo de dado, é este dado que define os demais campos contidos no campo Frame data. A Tabela 11 do Anexo III contém os valores validos do campo API apresentados de acordo com sua funcionalidade. 84 Figura 41: Estrutura do frame de comunicação com o Zigbee.[44] 3.4.2 Comunicação com o Microcontrolador A comunicação com o sistema supervisório utiliza o Zigbee como módulo de comunicação sem fio. Para ter uma garantia de integridade do pacote é importante que a comunicação com o Zigbee ocorra utilizando o modo de comunicação API, pois neste modo a comunicação com o dispositivo se dá por meio de um frame, que além dos campos de cabeçalho têm um campo de verificação de erro através de um checksum. A comunicação do microcontrolador com o Zigbee ocorre pela porta UART 3, com uma taxa de transmissão de 115200 bps e 1 stop bit. A recepção dos dados é realizada através da interrupção da porta serial, que ocorre byte a byte. Depois da recepção de todo o pacote, o firmware faz a averiguação do checksum do pacote e estando correto, armazena o pacote recebido na pilha de tratamento. O digrama da Figura 42 apresenta de forma detalhada o tratamento do dado na recepção. 85 Recepção de um byte Estado da recepção Estado = 0 Estado = 1 Estado = 2 Estado = 3 Lê o byte recepcionado Lê o byte recepcionado Lê o byte recepcionado Lê o byte recepcionado Byte= 0x7E Armazena byte recepcionado. Estado := 2 Armazena byte. Pega o tamanho do Frame. Estado := 3 Liga timer out Estado := 1 Fim N Armazena byte. Numero de bytes recebidos = tamanho do frame? S Desliga timer out Abre secção critica Desliga timer out. Estado := 0 Fecha secção critica Armazena frame na pilha. Seta pacote recebido completo Figura 42 - Diagrama de recepção dos dados na porta serial. A comunicação possui os seguintes comandos: 0x01 – Envio das leituras dos sensores. As leituras são envidadas a cada 50 ms, sem a necessidade de serem solicitadas; 0x02 – Atuação sobre a tensão dos motores através dos PWM; 0x03 – Configuração dos paramentos do controlador; 0x04 – Envio das referências de velocidades para cada motor; 0x05 - Parar de enviar dados das leituras. 86 A idéia é manter o padrão do protocolo de comandos AT do Zigbee, isto é, todo comando tem um campo para dados. Quando o campo de dados for enviado sem estar preenchido, o dispositivo final entende que é uma solicitação de leitura daquele dado. Se o campo de dado vier preenchido e for um comando de configuração, o dispositivo final utiliza o valor do campo para configurar o parâmetro. O transmissor envia um dado pelo zigbee com o campo API Identifier 0x10, já o receptor recebe o pacote de dados transmitido com o campo API Identifier 0x90 como indicado na Tabelas 12 e 13 dos Anexos IV e V, respectivamente. Caso o dado recepcionado for uma solicitação de leitura de configuração, o sensor deve responder com o dado solicitado. A resposta é enviada mais especificamente no campo RF Data, que por sua vez é subdividido nos campos Command e Data. O campo Command é preenchido com o comando que gerou a requisição no sensor. O campo Data contém os dados requisitados, seu tamanho depende do dado requisitado. Os Anexos de VI a IX apresentam de forma detalhada o formato do frames utilizados na comunicação do robô com o supervisório. A placa final contendo o microcontrolador e os módulos zigbees são apresentados na Figura 43. a) Módulo microcontrolado. b) Módulo zigbee/USB e Zigbee. Figura 43: Placas com microcontrolador e zigbee. 87 4. Resultados Os testes da plataforma foram realizados utilizando a estrutura de um robô omnidirecional de três rodas utilizado em [15] e [16] e apresentada na Figura 44 a). Esta estrutura possui um chassi de fibra de vidro composto por duas partes: uma parte inferior para acomodação dos motores e outra superior que prende os motores na primeira. Os motores são distribuídos formando um ângulo de 120º entre eles equilibrando o peso na base e fazendo com que o centro de massa fique localizado no centro da base. Os motores utilizados são motores DC AMax-22 da empresa Maxon de acordo com a Figura 44 c). Suas principais características são: tensão nominal de 6 V, corrente nominal 0,84 A, velocidade angular de até 16000 rpm e torque de 0,0491 kg-cm. Estes motores possuem ainda uma caixa de redução em seu eixo com relação 19:1, esta redução aumenta seu torque e possibilita trabalho com baixas rotações. Também faz parte do motor um encoder magnético com duas saídas em quadratura, que permite aferir a velocidade e direção de rotação do motor. Este encoder fornece 16 pulsos por rotação do motor, ou 304 pulsos por rotação do eixo da caixa de redução ao qual será acoplado à roda. As rodas utilizadas são do tipo omnidirecional, constituídas por anéis distribuídos por sua área de contato, como demonstrado na Figura 44 b). Estes anéis reduzem o atrito perpendicular à roda o que a torna omnidirecional. Este modelo de roda adotado possui um diâmetro de 10,5 cm, que é maior que as rodas do Axebot, cujo diâmetro é 7 cm. Com isto lhe é conferido maior torque em terrenos como carpetes e grama. A Figura 45 apresenta o resultado final da eletrônica montada na base robótica. 88 a) Estrutura da plataforma com as rodas e motores. b) Modelo de roda utilizada. c) Motor. Figura 44: Peças utilizadas para testar a plataforma desenvolvida. 89 Figura 45: Plataforma desenvolvida junto com a base. Além da plataforma robótica montada foi concebido o software supervisório da Figura 46 para realizar os testes no hardware, firmware e no protocolo de comunicação da rede zigbee utilizada. Este software foi desenvolvido em linguagem pascal utilizando a plataforma Lazarus, que é uma plataforma aberta. O uso do software permite: Visualização em tempo real das variáveis aferidas pela base em uma interface gráfica; Salvar os dados obtidos em um arquivo de texto CSV para serem tratados a posteriori em softwares como MATLAB; Gerar e visualizar os frames utilizados na comunicação com a base; Controlar os acionadores atuando diretamente sobre a tensão sobre os motores; Controlar os motores utilizando os controles PID embarcados; 90 Configurar os ganhos Kp, Ki e Kd dos controladores; Gerar trajetórias a serem executadas pelo robô. Figura 46: IHM de testes. 91 4.1 Driver Os testes com o módulo de acionamento dos motores visa avaliar o circuito em ponte H desenvolvido, a leitura de corrente e o algoritmo de leitura de velocidade adotado. Após a montagem da base de teste foram analisados os sinais de acionamento utilizados para controlar a ponte H. O robô foi colocado sobre uma estrutura elevando-o de forma a possibilitar que sua roda fica-se livre e seja acionada sem carga. O barramento de alimentação foi conectado a uma bateria com tensão 7,8 V e o duty cycle do PWM foi fixado em 16%, o que corresponde a aproximadamente 1,25 V sobre o motor. Com o auxílio de um osciloscópio foram analisados os sinais no módulo de acordo com a Figura 47. PWM Condicionamento de sinal PWM_1 PWM_2 Gate Driver Gate P Gate N Saida Ponte H Motor Figura 47: Sinais gerados no módulo. Primeiramente foi avaliado o sinal de saída da ponte H sem o circuito que gera os atrasos entre os sinais PWM_1 e PWM_2 e em seguida com a inclusão deste circuito. A Figura 48 a) apresenta o sinal sem o circuito de atraso, o dado em vermelho é o sinal na saída da ponte, o azul é o PWM na entrada do módulo. Já Figura 48 b) apresenta o sinal na saída da ponte com o circuito de atraso incluso. Observando os sinais da Figura 48 verifica-se que quando não é gerado o atraso para acionar os MOSFETs os picos de tensão na transição do sinal são maiores do que quando utiliza-se o circuito de atraso. A análise dos sinais PWM_1 e PWM_2 e seu efeito no acionamento dos MOSFETs é feita utilizando a Figura 49, onde é visto que o sinal PWM_1 sobe antes que o sinal PWM_2, consequentemente o sinal que desativa o MOSFET canal P sobe antes no sinal que ativa o canal N. A análise na descida dos sinais apresenta que o sinal PMW_2 desce antes do PWM_1, portanto o MOSFET canal N é desativado antes que o MOSFET P seja ativado. 92 a) Sem atraso. b) Com atraso. Figura 48: Saída da Ponte H. Figura 49: Sinais com atraso e após o gate driver. O benefício adquirido pelo circuito de atraso é visto no sinal de corrente das Figura 50 a) e b). Observa-se que os picos de corrente na transição do acionamento das chaves são maiores no circuito sem o condicionamento de atraso. O pico de corrente no circuito com o atraso é dez vezes menor que o pico de corrente para o módulo sem o devido condicionamento. 93 A resistência série, sobre a qual mede-se a corrente, é 0,1 Ω. Os gráficos mostram que o pico de corrente sem o condicionamento é aproximadamente 20 A, e com o circuito apropriado, seu valor é 2 A. a) Circuito sem condicionamento dos sinais PWM_1 e PWM_2 b) Circuito com condicionamento dos sinais PWM_1 e PWM_2 Figura 50: Corrente sobre o resistor serie com a ponte H. 94 Outro teste realizado com o intuito de avaliar a plataforma é a leitura da velocidade das rodas. Este experimento também foi realizado com a base erguida, com as rodas livres, porém devido ao desbalanceamento provocado pela roda, esta foi retirada do eixo do motor, portanto a velocidade foi mensurada com o motor sem carga. Com o auxílio do software supervisório foram aplicadas 5 tensões diferentes sobre o motor utilizando o controle através do duty cycle do PWM. Após a estabilização do sistema o sinal do encoder proveniente do motor foi analisado com um osciloscópio com o intuito de mensurar sua frequência. A frequência mensurada com o osciloscópio foi utilizada como referência na análise da velocidade medida pela plataforma. Os dados coletados estão apresentados na Tabela 5. A primeira coluna trás os valores do duty clyle utilizados em porcentagem. A segunda descreve os valores de tensão para cada valor de duty cycle tendo como base que um valor de 100 % corresponde a tensão da bateria de 7,8 V. A terceira e quarta colunas são os valores mínimos e máximos mensurados pelo osciloscópio. É necessário utilizar os valores mínimos e máximos pois mesmo sem a roda o motor ainda apresenta algum desbalanceamento que gera um oscilação na frequência do sinal observado. A quinta e sexta colunas são os valores de velocidade mensurados pela plataforma e transmitidos para o supervisório. Os pontos coletados foram colocados no gráfico da Figura 51 onde é apresentado a curva de velocidade pela tensão e o erro entre a velocidade medida no osciloscópio e a velocidade medida pelo projeto. Como a informação medida no osciloscópio foi a frequência em KHz, foi necessário converter este valor para rpm para ser comparado com os valores mensurados pelo sistema. Esta conversão leva em consideração que devido caixa de redução e ao número de pulsos do encoder por volta do motor a relação entre a frequência medida no encoder e a velocidade no eixo do motor é 304 pulsos para cada volta. O erro encontrado foi menor que 1%, o que mostra que os sistema de hardware desenvolvido junto com o algoritmo apresenta um bom desempenho. 95 Tabela 5: Análise da leitura de velocidade Duty Cycle Tensão Frequência Frequência Velocidade Velocidade (%) (V) Mínima (KHz) Máxima (kHz) Mínima (rpm) Máxima (rpm) 16,52 1,29 0,495 0,500 97,5 99,5 33,04 2,58 0,98 1.05 199,6 201,9 49,57 3,87 1,52 1,53 300,8 305,3 66,09 5,16 2,04 2,07 405,7 408,4 82,62 6,44 2,55 2,58 505,5 514 Figura 51: Curva de velocidade medida pelo osciloscópio e pela base 96 4.2 Comunicação com o software A comunicação com o software supervisório é realizado diretamente via cabo utilizando a porta UART ou via RF, através do Zigbee. Os testes realizados nesta etapa tem o objetivo de validar protocolo e o canal de comunicação, avaliando sua capacidade e integridade dos dados. O teste realizado consistiu em enviar um valor de duty cycle para uma roda do robô e armazenar os pacotes recebidos em um arquivo. O objetivo foi averiguar se o período de transmissão de 50 ms é suficiente diante da dinâmica do sistema e se a comunicação ocorre de forma integra. Para este teste a base foi erguida de forma que suas rodas ficassem livres. Foi enviado um duty cycle de 16%. A resposta do sistema está apresentado na Figura 52. Num primeiro instante foi utilizado um período de 50 ms, cujos dados são apresentados na Figura 52 a), onde observa-se que com este período só foi possível observar dois pontos durante o transiente do motor. Logo esta taxa não é apropriada para uma análise do regime transitório dos motores utilizados. É portanto desejável que a taxa de comunicação seja reduzida. Foi realizado um segundo teste seguindo as mesmas condições que o primeiro, porém com um período de 20 ms, cujo resultado é está na A Figura 52 b. Mediante os resultados encontrados neste teste pode-se deduzir que uma taxa de amostragem maior (50 Hz) é mais apropriada para observar o regime transitório dos motores utilizados. a) Leitura a 50 ms b) Leitura a 20 ms Figura 52: Comunicação com o software em diferente taxas de comunicação. 97 O teste para averiguar se a comunicação seria de fato possível foi realizado utilizando um osciloscópio para captura os frames transmitidos e recebidos pelo microcontrolador. Neste caso, o software envia um frame cada vez que um novo dado é recepcionado, ou seja, o microcontrolador que cadencia a comunicação, uma vez que o software não teria capacidade para tal função devido as limitações do sistema operacional. A Figura 53 apresenta os frames capturados pelo osciloscópio no pino do conversor USB/Serial que realiza a interface entre o Zigbee e o computador. O dado do canal 1, em verde, são os frames recepcionados pelo zigbee, portanto provenientes no módulo presente no robô. Já o canal 2, representado em amarelo, são os frames transmitido pelo computador em resposta ao dado recepcionado. O que observa-se neste ponto é que o zigbee tem total condições de comunica-se a esta taxa de 50 Hz com um baudrate de 115200 bps. Todavia a resposta do computador fica no limite do tempo de transmissão. Portanto é possível que o microcontrolador envie a uma taxa de 50 Hz para o computador, no entanto, a resposta deste fica no limite da capacidade do sistema. Figura 53: Frames transmitidos e recebidos pelo módulo Zigbee conectado ao computador. 98 4.3 Sensores de aceleração, velocidade angular e orientação Foram realizados testes com os sensores de aceleração, velocidade angular e orientação. No primeiro teste foi avaliado a resposta da bussola digital obtida pela base e os resultados comparados com a saída PWM utilizando um osciloscópio para medir o ângulo. Este teste foi realizado com a base sobre a bancada e o ângulo da base foi alterado em passos de aproximadamente 90º. Os resultados obtidos estão apresentados na Tabela 6 e o erro máximo observado tendo o osciloscópio como referência foi 1º. Tabela 6: Comparação entre a orientação obtida pela base e o valor fornecido pelo sensor. Duração do Pulso Ângulo Osciloscópio Leitura do sistema Erro 1,2 ms 12º 12º 0 9,1 ms 91º 90º 1º 18,2 ms 182º 181º 1º 27,1 ms 271º 270º 1º Também foram realizados testes com o sensor de giroscópio. Neste caso, a base foi posta em rotação no solo com os sinais de PWM igualmente configurados com duty cycle em 33%. Os resultados foram capturados com o software supervisório e posteriormente analisados no MATLAB. Os valores de velocidade angular medidos pelo sensor giroscópio foram comparados com a velocidade angular obtido pela odometria utilizando a cinemática direta, de acordo com o modelo da Equação 35 desenvolvidos em [9] e [10]. 𝑉𝑥 𝑉𝑦 𝜔 0 = 2𝑟1 3 𝑟1 3𝑙 𝑟2 3 3 𝑟2 − 𝑟3 3 3 𝑟3 3 𝑟2 3 𝑟3 3𝑙 3𝑙 𝜔1 𝜔2 𝜔3 ( 32 ) 99 Onde 𝜔 é a velocidade angular do centro da base em rad/s. 𝜔𝑖 é a velocidade angular da roda i, com i = 1,2 e 3, 𝑟𝑖 é o raio da roda de i, portanto 5,25 cm e 𝑙 é o radio da base que é 12 cm. A Figura 54 detalha o digrama de velocidades da base. Vy Vx Figura 54: Diagrama de velocidades da base. [10] A Figura 55 compara o resultado obtido pela odometria e pelo sensor de velocidade angular. Observa-se que o resultado da odometria é mais ruidoso que o sinal obtido a partir do sensor. Isto é compreensível uma vez a velocidade obtida através da odometria está sujeita a erros provenientes do processo de medição das velocidades das rodas. Além disso, fatores como desbalanceamento das rodas e escorregamento também influenciam em seu resultado. 100 Figura 55: Velocidade angular do centro da base A odometria também foi utilizada para avaliar os resultados obtidos com os sensores de aceleração. Neste caso, foi aplicado uma rampa de velocidade nas rodas dois e três, provocando um movimento no eixo x do robô. As velocidades de cada roda, a velocidade nos eixos x e y calculadas pela odometria e as acelerações são apresentadas na Figura 56. A Figura 56 c) mostra que os resultados da aceleração obtido através da odometria é mais ruidoso que os resultados medidos a partir do sensor. Isto deve-se ao fato que a aceleração a partir da odometria é resultado de um derivação da velocidade da base, que por sua vez já é bastante ruidosa, logo o processo de derivação acentua este ruído 101 a) Curvas de velocidades e aceleração. b) Velocidade linear da base e aceleração. 102 c) Comparação das acelerações obtidas por odometria e pelo sensor Figura 56: Análise da aceleração da base. Além da odometria, o sensor de aceleração foi avaliado quando a resposta diante da mudança dos eixos x e y quanto a orientação à Terra. A base foi posicionada de forma que os eixos x e y mudassem seu posicionamento em relação à Terra a seguinte forma: Ambos paralelos ao vetor normal; x normal e y paralelo; e y normal e x paralelo. Assim a ação da gravidade terrestre provoca mudanças nos valores de saída de cada eixo. Os resultados obtidos no sensor medindo-se as saídas com o osciloscópio e com o software supervisório estão organizados na Tabela 7. Como indicado na folha de dados do sensor [42], a tensão de referência de 0 g foi assumida como sendo 1,65 V. Os resultados apresentados possuem uma ligeira variação entre os valores referenciais da folha de dados e os valores medidos, tanto pelo osciloscópio quanto pelo software. Este erro pode ser atribuído ao alinhamento incorreto da base com o eixo normal da Terra. Da mesma forma o erro entre as medidas do osciloscópio e do 103 software se devem ao próprio erro de medição inerente ao equipamento que não é calibrado e ao erro de bits do processo de amostragem do ADC do microcontrolador. Tabela 7: Variação da aceleração com a posição da base em ralação a terra Eixo Normal ao plano Tensão na saída do da Terra sensor Aceleração do sensor Aceleração lida no software Eixo X Eixo Y Eixo X Eixo Y Eixo X Eixo Y Eixo Z 1,79 V 1,81 V 0,175 g 0,2 g 0,05 g 0,087 g Eixo X 2,47 V 1,83 V 1,025 g 0,225 g 1,025 g 0,2 g Eixo Y (-180º) 1,69 V 1,01 V 0,05 g -0,8 g -0,07 g -0,813 g Eixo X (-180º) 0,819 V 1,85 V -1,0388 g 0,25 g -1,113 g 0,144 g Eixo Y 1,70 V 2,62 V 0,063 1,213 g -0,044 1,063 g 4.4 Controladores Embarcados O trabalho [10] faz um levantamento detalhado do modelo do sistema motor roda. O modelo levantado é um sistema de segunda ordem, com uma constante de tempo elétrica e outra mecânica. No entanto, uma vez que a constante de tempo elétrica é muito maior que a mecânica o modelo do sistema pode ser aproximado por um sistema de primeira ordem sem perdas de generalidades. Os parâmetros modelo de primeira ordem proposto (Equação 36) podem ser levantados utilizando o método gráfico, onde o ganho 𝐾 é obtido pela variação da variável de saída pela variação do degrau de entrada aplicado, como indicado na Equação 37. Uma das forma de se obter a constante de tempo 𝜏 é utilizando um critério do tempo em que o sistema leva para alcançar 63% do valor de regime, como apresentado na Equação 38. 104 𝜔(𝑠) 𝐾 = 𝑢(𝑠) 𝜏𝑠 − 1 𝐾 = ( 33 ) Δ𝜔 Δ𝑢 ( 34 ) 𝜏 = 0,63𝑡1 ( 35 ) O modelo dos três sistemas motor roda foram adquiridos com o auxílio do MATLAB utilizando o método gráfico. Para tanto, foi aplicado um degrau de tensão utilizando 50% PWM o que corresponde a uma tensão de 3,9 V sobre cada motor. A Figura 57 contém a resposta ao degrau de cada uma das rodas, tanto a resposta experimental em vermelho, quanto ao do modelo levantado, em azul. Já a Tabela 8 trás os parâmetros levantados para cada motor. Tabela 8: Parâmetros dos modelos de primeira ordem das rodas Sistema motor + roda Ganho (𝐾) Constante de tempo 𝜏 1 7,87 0,052 2 8,10 0,056 3 7,81 0,052 105 a) Resposta ao Degrau do Motor 1. b) Resposta ao Degrau do motor 2. 106 c) Resposta ao Degrau do motor 3. Figura 57: Curva de resposta ao degrau de 3,9 V de cada motor. Para testar o algoritmo do controlador embarcado os ganhos proporcional e integral foram configurados em 0,1 e 0,01, com base na técnica do lugar das raízes, mas sem se preocupar com marge de ganho, margem de fase ou tempo de resposta em malha fecha. Foi aplicado um degrau de 60 rpm na roda 1 e o resultado do sistema juntamente com o erro e o esforço de controle é apresentado na Figura 58 e Figura 59, respectivamente. Como esperado, valor medio do erro é zero. A curva de corrente do motor com o controlador atuando é apresentada na Figura 60, onde verifica-se que ocorreu um pico de corrente na partida do motor, na ordem de 600 mA, mas a corrente em regime é da ordem de 150 mA. 107 Figura 58: Controle da roda com PI, Kp = 0,1 e Ki =0,01 108 Figura 59: Erro valor do PWM gerado pelo controlador PI. Figura 60: Curva de corrente do motor com o controlador PI. 109 5. Conclusão Neste trabalho foi desenvolvido um sistema embarcado de baixo custo aplicado à robótica móvel. Foram realizados testes individuais em cada módulo que compõem o hardware da plataforma e testes envolvendo toda a estrutura. Dessa forma foi possível obter curvas de desempenho e avaliar o conjunto. Os testes com a placa de acionamento dos motores avaliou o desempenho da ponte H projetada junto com o circuito de gate driver e condicionamento dos sinais de acionamento da ponte. Foi possível observar que o circuito foi capaz de acionar o motor com a carga projeta. Além disso, o sensor de corrente elaborado apresentou respostas coerentes com o modelo conhecido, o que mostra que o sistema é capaz de fornecer as informações necessárias em estudos como levantamento de modelos do robô. As avaliações no sinal de saída da ponte H mostrou que o circuito projetado para gerar os sinais de PWM defasados teve uma resposta melhor que a resposta sem o circuito e portanto, foi capaz de evitar os picos de corrente gerados pela transição de estados dos MOSFETs do mesmo lado da ponte. No entanto, foi verificado ainda pequenos picos de corrente na transição, o que mostra a necessidade de ajuste fino nos valores do circuito RC utilizado. Os testes com o sistema supervisório mostrou que o sistema é capaz de comunicar-se com uma frequência de atualização dos dados maior que os 20 Hz propostos. Foi possível alcançar respostas com 50 Hz, isto é, a comunicação com o sistema supervisório pode ser realizada em até 20 ms, contra os 50 ms propostos inicialmente. Foi averiguado também robustez do protocolo de comunicação zigbee e não foi observado erros de sincronia nem perdas de dados de transmissão. Averiguo-se apenas uma limitação na recepção no computador, que se deve as limitações do sistema operacional do computador e não ao módulo zigbee utilizado. Com o sistema supervisório foram geradas trajetórias para o robô para a realização dos testes com os sensores de aceleração, velocidade angular e compasso digital. Com estes testes foi possível levantar curvas de aceleração e verificar o desempenho da estrutura. A plataforma mostrou-se ser capaz de controlar uma base robótica comprovando sua utilidade em pesquisa para levantamento de modelos e projeto de 110 sistemas de controle avançados. Todavia, como trabalho futuro é recomendado que sejam embarcados algoritmos de fusão de dados, onde as informações dos sensores sejam cruzas com as informações da odometria para auxiliar na interpretação dos dados provenientes dos diferentes sensores utilizados no projeto. O Anexo X faz uma descrição da organização dos arquivos de esquemático layout e código gerados pelo projeto. 4.5 Trabalhos facilitados pelo projeto. Ainda como resultados diretos e indiretos deste projeto foram realizados os seguintes trabalhos: Nascimento, Tiago P. ; Moreira, António Paulo ; SCOLARI CONCEIÇÃO, ANDRÉ G. . Multi-robot nonlinear model predictive formation control: Moving target and target absence. Robotics and Autonomous Systems (Print), v. 61, p. 1502-1515, 2013; BARRETO S., JULIO CESAR LINS ; CONCEICAO, ANDRE GUSTAVO SCOLARI ; DOREA, CARLOS E. T. ; MARTINEZ, LUCIANA ; DE PIERI, EDSON ROBERTO . Design and Implementation of Model-Predictive Control With Friction Compensation on an Omnidirectional Mobile Robot. IEEE/ASME Transactions on Mechatronics, v. 19, p. 1-10, 2013; Ribeiro, T.T. ; Santos, J.T. ; COSTA, A. L. ; Conceição, A. G. S. . Sistema Microprocessado de Tempo Real Aplicado à Robótica Móvel. Revista Jr de Iniciação Científica em Ciências Exatas e Engenharia, p. 23 - 31, 01 ago. 2011. Conceição, A. G. S. ; Correia, M. D. ; MARTINEZ, L. . Modelagem de Robôs Móveis Omnidirecionais incluindo Modelos Estáticos de Atrito. In: XI Simpósio Brasileiro de Automação Inteligente, 2013, Fortaleza. SBAI/DINCON 2013, 2013. Conceição, A. G. S. ; Correia, M. D. . Modeling of a Three Wheeled Omnidirectional Robot Including Friction Models. In: 10th International IFAC Symposium on Robot Control, 2012, Dubrovnik-Croatia. SYROCO 2012, 2012. v. 10. p. 7-12; 111 Ribeiro, T.T. ; Santos, J.T. ; Santos Jr., J. ; COSTA, A. C. P. L. ; Conceição, A. G. S. . Real-time microprocessed system applied to mobile robots control. In: Latin American Robotics Symposium, 2011, Bogota. LARC-LARS 2011, 2011; Ribeiro, T.T. ; Santos, J.T. ; Santos Jr., J. ; COSTA, A. L. ; Conceição, A. G. S. . Sistema Microprocessado para Controle em Tempo Real de Robôs Móveis Omnidirecionais. In: X Simpósio Brasileiro de Automação Inteligente, 2011, São João Del-Rei. SBAI 2011, 2011; Correia, M. D. ; Santos, J.T. ; Ribeiro, T.T. ; Conceição, A. G. S. . Modelagem de um robô móvel omnidirecional de três rodas incluindo compensação de atrito. In: X Simpósio Brasileiro de Automação Inteligente, 2011, São João Del-Rei. SBAI 2011, 2011. p. 1031-1036; Ribeiro, T.T. ; Conceição, A. G. S. . Sistema Embarcado de tempo real aplicado a robótica móvel. In: VII Seminário Nacional de Controle e Automação, 2011. VII Seminário Nacional de Controle e Automação; Santos, J.T. ; Ribeiro, T.T. ; Conceição, A. G. S. . Sistema Embarcado Microprocessado Aplicado à Robótica Móvel. In: XXIV Congresso Regional de Iniciação Científica e Tecnológica em Engenharia, 2010, Rio Grande. XXIV CRICTE - 2010, 2010. 112 6. Referências [1] Siegwart, Roland ; Nourbakhsh, Ikkah R., Scaramuzza, Davide. Introduction to Autonomous Mobile Robots. London, The MIT Press, 2011. [2] KTeam Mobile robotics. Disponível em http://www.k-team.com, Acessado em 2 de outubro de 2013. [3] Adept mobilerobots, Disponível em http://www.mobilerobots.com, Acessado em 2 de outubro de 2013. [4] Barreto, Júlio C.L.. Controle Preditivo de um Robô Omnidirecional com Compensação de Atrito. Dissertação – (Mestrado em Engenharia Elétrica) – Escola Politécnica, Universidade Federal da Bahia. Salvador, 2011. [5] Ribeiro, F. ; Moutinho, I. ; Silva, P. ; Fraga, C. ; Pereira, N. , THREE OMNIDIRECTIONAL WHEELS CONTROL ON A MOBILE ROBOT. Universidade do Minho, 2002. [6] Conceição, A. G. S.; Costa, Paulo J.; Moreira, A. P.. Practical Approach of Modeling and Parameters Estimation for Omnidirectional Mobile Robots. IEEE/ASME Transactions on Mechatronics , v. 14, p. 377-381, 2009. [7] Barreto S., Julio Cesar Lins; Conceição, A. G. S; Dorea, Carlos E. T.; MARTINEZ, LUCIANA ; DE PIERI, E. R.. Design and Implementation of Model-Predictive Control With Friction Compensation on an Omnidirectional Mobile Robot. IEEE/ASME Transactions on Mechatronics , v. 19, p. 1-10, 2013. [8] Conceição, A. G. S.; Correia, M. D. . Modeling of a Three Wheeled Omnidirectional Robot Including Friction Models. In: 10th International IFAC Symposium on Robot Control, 2012, Dubrovnik-Croatia. SYROCO 2012, 2012. v. 10. p. 7-12. 113 [9] Nascimento, Tiago P.. Controle De Trajetória De Robôs Móveis Omni-Direcionais: Uma Abordagem Multiváriavel. Dissertação – (Mestrado em Engenharia Elétrica) Escola Politécnica, Universidade Federal da Bahia. Salvador, 2009. [10] Ribeiro, Tiago T., Sistema de Controle em Tempo Real Aplicado a Robótica Móvel, Trabalho de final de curso, Universidade Federal da Bahia – UFBA, Salvador, 2010 [10] Shroeder, Greyce N., Espístola, Danúbia B., Oliveira, Vinicius M., Modelagem e controle de robôs móveis Omnidirecionais, Fundação Universidade Federal do Rio Grande – FURG, Rio Grande/RS. [12] Rodrigues, J. A. C.; Plataforma Omnidirecional para Robô de Serviço em Casa – (Tese de Mestrado), Universidade do Minho – Escola de Engenharia, 2010. [13] Costa, J. P. V.; Integração e Controlo de Sensorese Atuadores de um Robô Futebolista – (Tese de Mestrado), Universidade do Minho – Escola de Engenharia, 2012. [14] Jácobo, J. E. A.. Desenvolvimento de um Robô Autônomo Móvel Versátil utilizando Arquitetura Subsumption (Dissetação de Mestrado), Universidade Estadual de Campinas – UNICAMP, 2001. [15] Gonçalves, José; Costa, Paulo; Moreira, Paulo (2004) - Desenvolvimento de um robot omnidireccional para fins didácticos usando o Kit Lego Mindstorms. In Encontro Científico do Robótica (Proceedings of the Scientific Meeting of the Portuguese Robotics Open). Porto. ISBN 972-752-066-9. [16] Santos, J. T.. Projeto e Desenvolvimento de um Sistema Microprocessado Aplicado à Robótica Móvel –(Trabalho Final de Graduação), Universidade Federal da Bahia –UFBA, Salvador, 2009. [17] Mondada F., Franzi E., Lenne Paolo. Proceedings of the Third International Symposium on Experimental Robotics, page 501--513 Mondada, F.; Franzi, E. & 114 Ienne, P. (1993), Mobile Robot Miniaturization: A Tool for Investigation in Control Algorithms, in 'Proceedings of the Third International Symposium on Experimental Robotics' , pp. 501--513. (1993) [18] A. Prorok, A. Arfire, A. Bahr, J. Farserotu, and A. Martinoli. Indoor Navigation Research with the Khepera III Mobile Robot: An Experimental Baseline with a Casestudy on Ultra-wideband Positioning. In Proceedings of the IEEE International Conference on Indoor Positioning and Indoor Navigation, pages 1-9, 2010. [19] Pereira, Jonas. Avaliação e correção do modelo cinemático de robôs móveis visando a redução de erros no seguimento de trajetória. Dissertação de mestrado. Universidade do Estado de Santa Catarina-UDESC, Joinville, 2003. [20] Lambercy Frédéric, Tharin Julien, Khepera III User Manual, Switzerland, 2013 [21] Tharin, Julien, Lambercy, Frédéric, Carron, Timothée., Koala 2.0 User manual Switzerland, 2014; [22] Road Narrows Store, Robotics and Intelligente system, http://www.roadnarrowsstore.com/products/robots/wheeled.html. Acessado em 05 de março de 2014. [23] Adep Mobilerobots. Disponível em http://www.movilerobots.com, Acesso em 30 de Outubro de 2013. [24] Bueno, Samuel S., Azevedo, Helio, Mirisola, Luis G., Paiva, Ely C. Ramos, Josué Jr., Uma Plataforma Para Pesquisa e Desenvolvimento Em Robótica Terrestre De Exterior, IX Simpósio Brasileiro de Automaçao Inteligente, Brasılia-DF, Brasil (2009). [25] Website Lego Mindstorms, http://www.lego.com/en- us/mindstorms/?domainredir=mindstorms.lego.com, Acessado em 9 de maio de 2014. 115 [26] Website Acroname, http://www.acroname.com/products/, Acessado em 9 de maio de 2014. [27] Crossbow Technology, Stargate Developer’s Guide, February 2004. [28] On Semiconducor, DC Motor Driver Fundamentals [29] Pomilio, J.A., Eletronica de Potencia – Pós graduação, Cap2. Disponível em: http://www.dsce.fee.unicamp.br/~antenor/elpot.html. [30] Dum Jamie, Determining MOSFET Drivers Needs for Motor Drive Applications, Microchip technology, 2003 [31] Fairchild Semiconductor, Design and Application Guide of Bootstrap Circuit of High-Voltage Gate-Driver IC, 2008 [32] ROHM Semiconductor, Controlling DC Brush Motors with H-Bridge Drivers ICs, San Diego, 2009. [33] Meehan P., Moloneu K., Basic Principles of Operation and Applications of the Accelerometer, Limerick Institute of Technology. [34] Freescale Semiconductor, ± 1.5 g, ± 6 g Tree Axis Low-g Micromachined Accelerometer, 2011. [35] Analog Device, Linear Circuit Design Handbook, Newnes, 2008. [36] Erismis M. Akif, MEMS ACCELEROMETERS AND GYROSCOPES FOR INERTIAL MEASUREMENT UNITS, Middle East Technical University, 2004. [37] Millett, P.. Calculating Motor Driver Power Dissipation – Application Report SLVA504. Texas Instruments, 2012. 116 [38] Geen, John; Krakauer, David. New iMEMS Angular – Rate –Sensing Gyroscope. ADI Micromachined Products Division, 2003. [39] Langley, B. Richard. The Magnetic Compass and GPS. GPS World, Setember 2003. [40] Caruso, J. Michael. Applications of Magnetoresistive Sensors in Navigation System. Honeywell Inc. [41] Philips Semiconductor. Eletronic Compass Desing using KMZ51 and KMZ52, Application Notes. [42] Freescale Semiconductor, Eletronic Compass Desing using KMZ51 and KMZ52, Application Notes. [43] NXP Semiconductors, Brushed DC motor control using the LPC2101, Application note, 2007. [44] Digi International, XBee/XBee-PRO ZigBee RF Modules, User Guide, 2015. 117 Anexo I Tabela 9: Parâmetros elétricos do FDS8958. Canal P Canal N 𝑄𝑇𝑜𝑡𝑎𝑙 (nC) 23 26 td(on) (ns) 6,7 6 tr (ns) 9,7 10 td(off) (ns) 19,8 18 tf (ns) 12,3 5 Tempo de carga (ns) = (td(on)+tr) 16,4 16 Tempo de descarga (ns) = (td(off)+tf) 32,1 23 Corrente de carga (A) 1,4 1,62 Corrente de descarga (A) 0,71 1,13 118 Anexo II Tabela 10: Configurações da rede zigbee. Comando ID Descrição Determina o PAN ID. Se configurado como 0 (zero), um valor randômico será selecionado, sendo um coordenador, se não, sendo router ou end device entra em qualquer PAN ID. SC Indica quais canais estarão habilitados para serem utilizados SD Configura o período que o coordenador irá verificar os canais, em busca do canal de melhor energia e eu esteja livre. ZS Seleciona o Stack Profile EE Habilita ou desabilita a segurança da rede NK Chave de criptografia da rede KY Chave de criptografia do centro de segurança EO Seta a política de segurança NJ Configura o tempo de permissão para permitir que outros dispositivos entrarem na rede 119 Anexo III Tabela 11: Comando API suportatos. API Frame Names API ID Comando AT 0x08 Comando AT – Vetor de armazenamento 0x09 Transmissão de um pacote de dados 0x10 Envio de pacote de dados com endereço do 0x11 Cluster ID e Profile ID Comando AT remote 0x17 Criação de rota 0x21 Resposta a comando AT 0x88 Status do modem 0x8A Status da transmissão de um pacote 0x8B Recepção de um pacote de dados 0x90 Recepção de um pacote de dados com indicação 0x91 do cluster ID e profile ID Recepção de amostragem de um pino IO 0x92 Recepção da leitura de um sensor 0x94 Indicação de dispositivo 0x95 Resposta a comando AT remoto 0x97 Update de firmware over-the-air 0xA0 Resposta a criação de rota no elemento final 0xA1 Resposta ao comando de criação de rota 0xA3 120 Anexo IV Tabela 12: Frame de envios de dados e configurações. A P I Campos do Frame Posição Exemplo Start Delimiter 0 0x7E MSB 1 0x00 LSB 2 0x16 Tipo de Frame 3 0x10 Indica que está enviando um dado para outro dispositivo Frame ID 4 0x01 Solicita um ACK. Se configurado zero, nenhuma resposta é enviada. MSB 5 0x00 6 0x13 7 0xA2 8 0x00 9 0x40 10 0x0A 11 0x01 LSB 12 0x27 MSB 13 0xFF LSB 14 0xFE Length F r a m e 64-bit Destination Address Frame Data 16-bit Destination Network Address Broadcast Radius 15 0x00 Descrição Número de bytes entre o tamanho e o checksum Configura o endereço de 64bit do destino. 0x0000000000000000 Reservado para coordenador – o 0x000000000000FFFF Endereço de Broadcast – Endereço de 16-bit da rede. Se não conhecido, deve ser configurado como 0xFFFE Configura o máximo numero de pulos que um pacote pode dar num broadcast. Se configurado em 0x00, é configurado o valor máximo. Opção de transmissão: 0x01 – Desabilita ACK; Options 16 0x00 0x20 – Habilita criptografia APS (se EE = 1) 0x40 – Utiliza o timer out RF Data Checksum Comman d 17 Data 18 +N 18 + N+1 0x01 Comando do protocolo para Leitura dos sensores Dados dos sensores 0xXX 121 Anexo V Tabela 13: Frame de recepção de dados e configurações. Campos do Frame Start A Delimiter A P I Posição Exemplo 0 0x7E MSB 1 0x00 LSB 2 0x0E 3 0x90 MSB 4 0x00 5 0x13 6 0xA2 7 0x00 8 0x40 9 0x52 10 0x2B LSB 11 0xAA MSB 12 0x7D LSB 13 0x84 Length Frame type F r a m e 64-bit Address Source Descrição Número de bytes entre tamanho e o checksum o Indica que foi recepcionado um pacote de dados de outro dispositivo Endereço de 64-bit do dispositivo que enviou o dado. Se igual a 0xFFFFFFFFFFFFFFFF o endereço é desconhecido. Frame Data 16-bit Destination Network Address Endereço de 16-bit dispositivo que enviou do 0x01 – Pacote conhecido 0x02 – Pacote broadcast Receive Options 14 0x01 0x20 – Pacote criptografado com criptografia APS 0x40 – Pacote foi enviado por um dispositivo final RF Data Checksum Comman d 15 Data 15+N 15+N+1 0x07 Indica o tipo de resposta Dado solicitado. Pode retornar vazio se for configuração. 0xXX 122 Anexo VI Tabela 14: Parâmetros enviados pelo robô. Dado Formato Descrição VelMotor_1 2 bytes Velocidade do motor 1 em rpm*10. VelMotor_2 2 bytes Velocidade do motor 2 em rpm*10. VelMotor_3 2 bytes Velocidade do motor 3 em rpm*10. CorrMotor_1 2 bytes Corrente do motor 1 em mA CorrMotor_2 2 bytes Corrente do motor 2 em mA CorrMotor_3 2 bytes Corrente do motor 3 em mA Aceleracao_X 2 byte Aceleração no eixo X em m/s² Aceleracao_Y 2 byte Aceleração no eixo y em m/s² Giro 2 bytes Velocidade angular em rad/s Compasso 2 bytes Ângulo em decimos de graus Dir 1 byte Indica o sentido de giro dos motores. 1º byte setado em 1 motor 1 com giro horário, setado em 0 giro anti-horário; 2º byte setado em 1 motor 2 com giro horário, setado em 0 giro anti-horário; 3º byte setado em 1 motor 3 com giro horário, setado em 0 giro anti-horário; PWM_1 1 byte Valor configurado no duty cycle do motor 1 PWM_2 1 byte Valor configurado no duty cycle do motor 2 PWM_3 1 byte Valor configurado no duty cycle do motor 3 123 Anexo VII Tabela 15: Formato do comando 0x02 Dado Formato Descrição Duty_1 1 byte Valor do Duty cycle do PWM 1 Duty_2 1 byte Valor do Duty cycle do PWM Duty_3 1 byte Valor do Duty cycle do PWM Dir 1 byte Indica o sentido de giro dos motores. 1º byte setado em 1 motor 1 com giro horário, setado em 0 giro antihorário; 2º byte setado em 1 motor 2 com giro horário, setado em 0 giro antihorário; 3º byte setado em 1 motor 3 com giro horário, setado em 0 giro antihorário; 124 Anexo VIII Tabela 16: Formato do comando 0x03. Dado Formato Descrição Referencia_1 2 bytes Set point de velocidade para o controlador do motor 1, em rpm*10 Referencia_2 2 bytes Set point de velocidade para o controlador do motor 2, em rpm*10 Referencia_3 2 bytes Set point de velocidade para o controlador do motor 3, em rpm*10 Dir 1 byte Indica o sentido de giro dos motores. 1º byte setado em 1 motor 1 com giro horário, setado em 0 giro antihorário; 2º byte setado em 1 motor 2 com giro horário, setado em 0 giro antihorário; 3º byte setado em 1 motor 3 com giro horário, setado em 0 giro antihorário; 125 Anexo IX Tabela 17: Formato do comando que configura o PID. Dado Formato P_1 1 byte Ganho proporcional*10 do controlador do motor 1 I_1 1 byte Ganho integrativo*10 do controlador do motor 1 D_1 1 byte Ganho derivativo*10 do controlador do motor 1 P_2 1 byte Ganho proporcional*10 do controlador do motor 2 I_2 1 byte Ganho integrativo*10 do controlador do motor 2 D_2 1 byte Ganho derivativo*10 do controlador do motor 2 P_3 1 byte Ganho proporcional*10 do controlador do motor 3 I_3 1 byte Ganho integrativo l*10 do controlador do motor 3 D_3 1 byte Ganho derivativo*10 do controlador do motor 3 126 Anexo X Os arquivos gerados pelo trabalho encontram-se organizados da seguinte maneira: Os arquivos de esquemático e layout referentes ao hardware estão organizados em 6 arquivos com os nomes: o Base - Refere-se ao modulo de interconexões e alimentação; o Driver - Módulo contendo a ponte H e circuito de leitura de corrente; o Sensores - Sensores de aceleração, velocidade angular e bússola; o Microcontrolador - Modulo de processamento com o microcontrolador PIC32; o Zigbee - Sistema de comunicação sem fio; o Conversor USB/Zigbee - Conversor USB/Serial com o módulo Zigbee para comunicação com o software supervisório. Os códigos referentes ao firmware encontram-se no arquivo mecateam. Os códigos foram desenvolvidos utilizando a ferramenta MPLABX, com o compilador XC32 na versão gratuita. Os códigos do software supervisório estão no arquivo software. Este programa foi desenvolvido utilizando o Lazarus. Para compilá-lo é necessário instalar dois componentes do arquivo programas, o Spd0 que é o componente de acesso a porta serial, e o csvdocument, que possibilita a interação com arquivos do tipo CSV. Todos os arquivos podem ser obtidos através do endereço de e-mail: [email protected]