127
Universidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia Elétrica Nícolas Bruno Montanha Vançan PROTOBOT - Protótipo de Braço Robótico comandado por comunicação sem fio Londrina 2017

PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

  • Upload
    dokhanh

  • View
    237

  • Download
    1

Embed Size (px)

Citation preview

Page 1: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Universidade Estadual de LondrinaCentro de Tecnologia e UrbanismoDepartamento de Engenharia Elétrica

Nícolas Bruno Montanha Vançan

PROTOBOT - Protótipo de Braço Robóticocomandado por comunicação sem fio

Londrina2017

Page 2: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Universidade Estadual de Londrina

Centro de Tecnologia e UrbanismoDepartamento de Engenharia Elétrica

Nícolas Bruno Montanha Vançan

PROTOBOT - Protótipo de Braço Robóticocomandado por comunicação sem fio

Trabalho de Conclusão de Curso orientado pelo Prof. Dr. Er-nesto Fernando Ferreyra Ramirez intitulado “PROTOBOT - Pro-tótipo de Braço Robótico comandado por comunicação sem fio” eapresentada à Universidade Estadual de Londrina, como parte dosrequisitos necessários para a obtenção do Título de Bacharel emEngenharia Elétrica.

Orientador: Prof. Dr. Ernesto Fernando Ferreyra Ramirez

Londrina2017

Page 3: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Ficha Catalográfica

Nícolas Bruno Montanha VançanPROTOBOT - Protótipo de Braço Robótico comandado por comunicação semfio - Londrina, 2017 - 124 p., 30 cm.Orientador: Prof. Dr. Ernesto Fernando Ferreyra Ramirez1. Arduino. 2. NRF24L01. 3. Robótica. 4. Linguagem de Programação. 5.Robótica Educacional.I. Universidade Estadual de Londrina. Curso de Engenharia Elétrica. II.PROTOBOT - Protótipo de Braço Robótico comandado por comunicação semfio.

Page 4: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Nícolas Bruno Montanha Vançan

PROTOBOT - Protótipo de Braço Robóticocomandado por comunicação sem fio

Trabalho de Conclusão de Curso apresentado ao Curso deEngenharia Elétrica da Universidade Estadual de Londrina,como requisito parcial para a obtenção do título de Bacharelem Engenharia Elétrica.

Comissão Examinadora

Prof. Dr. Ernesto Fernando FerreyraRamirez

Universidade Estadual de LondrinaOrientador

Prof. Dr. Aziz Elias Demian JúniorUniversidade Estadual de Londrina

Prof. Dra Maria Bernadete de MoraisFrança

Universidade Estadual de Londrina

Londrina, 5 de fevereiro de 2018

Page 5: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura
Page 6: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Agradecimentos

Agradeço primeiramente à minha família e a Deus por me ter permitido estudar du-rante minha vida e alcançar o local que estou atualmente. Não menos, agradeço ao meuorientador Professor Dr. Ernesto Fernando Ferreyra Ramirez por, desde meu ingresso nocurso, me ensinar, aconselhar e ajudar. Agradeço também a todos os amigos, professorese pessoas que de alguma forma fizeram ou fazem parte da minha vida, pois, sem eles nãoseria quem sou hoje.

Page 7: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

O sucesso é ir de fracasso em fracasso sem perder entusiasmo.(Winston Churchill)

Page 8: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Nícolas Bruno Montanha Vançan. 2017. 124 p. Trabalho de Conclusão de Curso emEngenharia Elétrica - Universidade Estadual de Londrina, Londrina.

ResumoEste trabalho volta-se ao ensino de robótica e programação para ensinos fundamentalmédio e técnico. Pela falta de materiais disponíveis para este fim, elaborou-se este docu-mento como forma de um tutorial didático explicativo para a construção, programação eexecução de um braço robótico comandado por controle sem fio. Iniciou-se com trabalhosna construção lógica de funções de movimento para Servo-Motores, no enfoque em se terum controle energético melhor, criando-se assim modos de operação para economia deenergia. Transmitiu-se, via rádio NRF24L01, informações pertinentes aos dados e ao con-trole de fluxo de transmissão, necessário para seu funcionamento. Por fim, construiu-seuma estrutura física a fim de dar vida ao Braço Mecânico.

Palavras-Chave: 1. Arduino. 2. NRF24L01. 3. Robótica. 4. Linguagem de Programa-ção. 5. Robótica Educacional.

Page 9: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

PROTOBOT - Robotic Arm Prototype Commanded by Wireless Communi-cation. 2017. 124 p. Monograph in Engenharia Elétrica - Universidade Estadual deLondrina, Londrina.

AbstractThis work turns to the teaching of robotics and programming for basic and technicalsecondary education. Due to the lack of materials available for this purpose, this documentwas elaborated as an explanatory didactic tutorial for the construction, programming andexecution of a robotic arm commanded by wireless control. It began with work in thelogical construction of motion functions for Servo Motors, focusing on having a betterenergy control, thus creating operating modes for energy saving. Radio informations weretransmitted by the module NRF24L01, wich are pertinent to the data and the control oftransmission flow, necessary for its operation. Finally a physical structure was constructedin order to give life to the Mechanical Arm.

Key-words: 1. Arduino. 2. NRF24L01. 3. Robotics. 4. Programming language. 5.Educational Robotics.

Page 10: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Lista de ilustrações

Figura 2.1 – Placa de desenvolvimento Arduino UNO . . . . . . . . . . . . . . . . . 20Figura 2.2 – Interface IDE Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Figura 2.3 – Exemplo da Utilização de uma função void utilizando-se ponteiro . . . 26Figura 2.4 – Exemplo da Utilização de uma função int utilizando-se return . . . . . 26Figura 2.5 – Esquemático de um Push Button associado à porta D3 do arduino . . . 30Figura 2.6 – Formato ideal de onda de pulso gerado pelo acionamento do botão . . . 31Figura 2.7 – James Maxwell (1831-1879); Heinrich Hertz (1857-1894); Guglielmo

Marconi (1874-1937) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Figura 2.8 – Diagrama e bloco de um sistema de comunicação simples . . . . . . . . 34Figura 2.9 – Módulo transceptor com chip NRF24L01 . . . . . . . . . . . . . . . . . 35Figura 2.10–Conexão dos pinos do módulo transceptor ao Arduino Uno . . . . . . . 36Figura 2.11–Código básico para comunicação de dois módulos NRF24L01, Trans-

missor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Figura 2.12–Código básico para comunicação de dois módulos NRF24L01, Receptor 38Figura 2.13–Valores recebidos pelo receptor usando-se os códigos das figuras 2.11 e

2.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Figura 2.14–Junção PN representativa . . . . . . . . . . . . . . . . . . . . . . . . . 40Figura 2.15–Representação elétrica do LED Diodo Emissor de Luz . . . . . . . . . . 41Figura 2.16–Curva representativa de Corrente I x V tensão de LEDS de diferentes

cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Figura 2.17–Circuito série Resistor e LED . . . . . . . . . . . . . . . . . . . . . . . 42Figura 2.18–Exemplos de LEDs comerciais . . . . . . . . . . . . . . . . . . . . . . . 42Figura 2.19–Modelo construtivo de um transistor npn . . . . . . . . . . . . . . . . . 43Figura 2.20–Sentido de corrente de um transistor bipolar e seu respectivo esquemá-

tico elétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Figura 2.21–Esquemático Elétrico de um transistor acionado como Chave . . . . . . 44Figura 2.22–Esquemático de um aplificador operacional sem malha aberta . . . . . 45Figura 2.23–Circuito exemplo para aplicação de Buffer . . . . . . . . . . . . . . . . 46Figura 2.24–Figura representativa de um Servo-Motor SG90 . . . . . . . . . . . . . 48Figura 2.25–Figura representativa dos componentes de um Servo-motor . . . . . . . 48Figura 2.26–Diagrama de blocos do sistema de um Servo-motor . . . . . . . . . . . 48Figura 2.27–Representação do posicionamento do motor Servo em relação à larguras

de pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Figura 3.1 – Ligações de um Servo, potenciômetro no Arduino UNO . . . . . . . . . 51Figura 3.2 – Código gerado para comprovação de larguras de pulso de um Servo-motor 52

Page 11: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Figura 3.3 – Largura de pulso obtida com leitura 0 do conversor A/D . . . . . . . . 53Figura 3.4 – Largura de pulso obtida com leitura 1023 do conversor A/D . . . . . . 53Figura 3.5 – Largura de pulso obtida com leitra aproximada de 823 do conversor A/D 54Figura 3.6 – Módulo Joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Figura 3.7 – Módulo analogicomotor . . . . . . . . . . . . . . . . . . . . . . . . . . 55Figura 3.8 – Representação de Regiões de dados do módulo Joystick . . . . . . . . . 56Figura 3.9 – Montagem esquemática para uso dos botões . . . . . . . . . . . . . . . 61Figura 3.10–Diagrama de estados Geral do Sistema . . . . . . . . . . . . . . . . . . 63Figura 3.11–Montagem básica Arduino e LEDS . . . . . . . . . . . . . . . . . . . . 64Figura 3.12–Esqumático Elétrico do circuito de acionamento do Motor . . . . . . . 67Figura 3.13–Diagrama de Fluxo do protocólo de transferência de dados do Controle

à Garra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Figura 3.14–Montagem final do controlador utilizando-se de materiais avulsos. . . . 71Figura 3.15–Montagem final do receptor utilizando-se de materiais avulsos. . . . . . 74Figura 3.16–Eixos de Rotação do Braço Robótico (Garra). . . . . . . . . . . . . . . 75Figura 4.1 – Diagrama de fluxo lógico final . . . . . . . . . . . . . . . . . . . . . . . 77Figura 4.2 – Circuito acionador simulado . . . . . . . . . . . . . . . . . . . . . . . . 81Figura 4.3 – Simulação de Tensão (Superior) Corrente (Inferior) do transistor BC550

em Saturação ao passo da variação resistiva em seu coletor. . . . . . . . 81Figura 4.4 – TopLayer e BottomLayer da placa PCB de acionamento dos Motores . 82Figura 4.5 – Placa de circuito impresso PCB de acionamento dos Motores . . . . . . 83Figura 4.6 – Primeira versão do Controle PCB . . . . . . . . . . . . . . . . . . . . . 83Figura 4.7 – Versão Final do Controle sem Fio . . . . . . . . . . . . . . . . . . . . . 86Figura 4.8 – Versão Final do Braço Robótico . . . . . . . . . . . . . . . . . . . . . . 87Figura 4.9 – Versão Final do Braço Robótico e Circuito de acionamento acoplados . 87

Page 12: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Lista de tabelas

Tabela 4.1 – Tabela de Valores Despendidos para o Projeto Com preços de comprasno Brasil e da China convertidos para Reais . . . . . . . . . . . . . . . 88

Page 13: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Lista de Siglas e Abreviaturas

AWGN Additive White Gaussian Noise - Ruído Branco Aditivo GaussianoPCB Printed Circuit Board - Placa de Circuito ImpressoI/O Input/Output - Entrada/SaídaPWM Pulse Width Modulation - Modulação por Largura de PulsoRX Receiver - ReceptorTX Transmitter - TransmissorUEL Universidade Estadual de LondrinaIDE Integrated Development EnvironmentPC Personal Computer - Computador PessoalSPI Serial Peripheral Interface Protocol - Protocolo de Interface Serial PeriféricoMCU Microcontroller Unit - Unidade MicrocontroladoraEEPROM Electrically-Erasable Programmable Read-Only Memory

Page 14: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Sumário

Lista de ilustrações . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Lista de tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1 INTRODUÇÃO AO CENÁRIO . . . . . . . . . . . . . . . . . . 131.1 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2 Objetivos Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . 141.4 Estruturação do Trabalho . . . . . . . . . . . . . . . . . . . . . . . 14

2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . 162.1 Robótica e o Aprendizado . . . . . . . . . . . . . . . . . . . . . . 162.2 Sistemas Embarcados . . . . . . . . . . . . . . . . . . . . . . . . . 172.2.1 Microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2.2 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.1 Linguagens de Programação . . . . . . . . . . . . . . . . . . . . . 212.3.1.1 C/C++ Utilizando-se IDE Arduino . . . . . . . . . . . . . . . . . . 222.3.2 Interrupções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.3.2.1 Detecção de Push-Button por Software . . . . . . . . . . . . . . . . 302.4 Telecomunicações sem Fio . . . . . . . . . . . . . . . . . . . . . . 322.4.1 Transmissores e Receptores . . . . . . . . . . . . . . . . . . . . . 342.4.1.1 Conceito de Protocolo de Comunicação . . . . . . . . . . . . . . . . 352.4.2 Rádio NRF24L01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.4.3 Módulo NRF24L01 com Arduino . . . . . . . . . . . . . . . . . . 362.5 Dispositivos Eletrônicos . . . . . . . . . . . . . . . . . . . . . . . . 392.5.1 Diodo Emissor de Luz LED . . . . . . . . . . . . . . . . . . . . . 412.5.2 Transistor de Junção Bipolar TBJ . . . . . . . . . . . . . . . . . 422.5.2.1 Transistor Como Chave . . . . . . . . . . . . . . . . . . . . . . . . . 432.5.3 Amplificador Operacional . . . . . . . . . . . . . . . . . . . . . . . 452.6 Servo-Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.6.1 Funcionamento do Servo-Motor . . . . . . . . . . . . . . . . . . . 47

3 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . 50

Page 15: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

SUMÁRIO 14

3.1 Programação e Desenvolvimento . . . . . . . . . . . . . . . . . . 503.1.1 Materiais Utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . 503.2 Parte I - Desenvolvimento das Funções de Movimento do

Servo-Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.3 Parte II - Desenvolvimento da Lógica de Operação . . . . . . . 603.3.0.1 Funcionamento dos Botões . . . . . . . . . . . . . . . . . . . . . . . 613.3.0.2 Implementação dos LEDS . . . . . . . . . . . . . . . . . . . . . . . . 643.4 Parte III - Criação de uma Placa de Acionamento dos Servo-

Motores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.5 Parte IV - Elaboração da Comunicação Controle Garra . . . . 673.5.1 Protocolo Controle Garra . . . . . . . . . . . . . . . . . . . . . . . 693.5.2 Montagem do Controle e Funções de Aquisição de Dados . . . 703.5.3 Montagem da Garra . . . . . . . . . . . . . . . . . . . . . . . . . . 733.6 Acabamentos e Considerações . . . . . . . . . . . . . . . . . . . . 74

4 RESULTADOS E ANÁLISE . . . . . . . . . . . . . . . . . . . . 764.1 Análise e Resultados Parte I . . . . . . . . . . . . . . . . . . . . . 764.2 Análise e Resultados Parte II . . . . . . . . . . . . . . . . . . . . 764.3 Análise e Resultados Parte III . . . . . . . . . . . . . . . . . . . . 804.4 Análise e Resultados Parte IV . . . . . . . . . . . . . . . . . . . . 824.5 Acabamentos e Considerações . . . . . . . . . . . . . . . . . . . . 854.5.1 Controle sem Fio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.5.2 Braço Robótico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.5.3 Valores Despendidos . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5 CONCLUSÕES E SUGESTÕES . . . . . . . . . . . . . . . . . . 895.1 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895.2 Sugestões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

6 APÊNDICE A - CÓDIGO DO CONTROLE . . . . . . . . . . 94

7 APÊNDICE B - CÓDIGO DO BRAÇO ROBÓTICO . . . . . 103

8 ANEXO A. DATASHEET BC550 . . . . . . . . . . . . . . . . 108

9 ANEXO B. DATASHEET LM324 . . . . . . . . . . . . . . . . 117

Page 16: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1 Introdução ao Cenário

Com o passar dos anos o ser humano desenvolveu-se, criou tecnologias e modificouambientes à seu favor. Não obstante, a tecnologia passou a integrar grande parte de nossavida cotidiana nas últimas décadas. Isto se deu pelo estrondoso crescimento científico etecnológico. Outrossim, a robótica cresce com velocidade impressionante.

Entretanto, o interesso das crianças e jovens por estas áreas do conhecimento nãocresce conforme é demandado pela sociedade. Tal feito, dá-se principalmente pela faltade acesso destes jovens à materiais e instruções didáticas voltadas a estes assuntos.

Visando diminuir esta distância entre jovens e ciências exatas, através do uso da robó-tica educacional e kits de desenvolvimento, vislumbra-se construir um tutorial de projetoe construção de uma garra robótica com controle sem fio.

Empregando diversas áreas do conhecimento, este projeto tem como o objetivo traba-lhar problemas e soluções lógicas na área de programação e robótica, para que se estimulea criatividade e interesse destes jovens a esta área tão especial de aprendizado.

Criou-se protótipo de um controle sem fio e do braço mecânico (garra), ambos passa-ram por diversas modificações, desde modificações físicas até modificações lógicas, até seuresultado final. No entanto, com objetivo principal de elucidar os processos construtivose a viabilidade de implementação de ensino através da robótica.

1.1 Justificativa

Tendo em vista a imensa área que a robótica abrange atualmente e de seus avanços emáreas como robótica social, pensou-se em um projeto interativo e lógico para que se pu-desse ensinar robótica básica e programação através da construção de um braço robótico.Quando se utiliza de ferramentas como, programação e plataformas de desenvolvimento,com objetivos específicos de ensino, resultados muito bons virão, pois cativa e aproximaa quem os lê e faz.

1.2 Objetivos Gerais

O principal objetivo deste trabalho consiste em elaborar um material didático deconstrução de um braço robótico comandado por comunicação sem fio, tendo como baseo ensino da robótica à jovens.

Um braço robótico capaz de mover-se em 180o horizontalmente e também vertical-mente. Outrossim, uma garra anexada frontalmente capaz de pegar coisas, constituem aconstrução final do projeto.

Page 17: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 1. INTRODUÇÃO AO CENÁRIO 16

O objetivo inicial deste projeto era aprimorar um trabalho previamente feito. Paraisto, necessitaria-se desenvolver funções de movimentos do motor capazes de posicioná-losem posições distintas. Posteriormente, deveria-se transmitir dados entre o controle e obraço mecânico por comunicação sem fio. Para tanto, escolheu-se módulos capazes defaze-lo. Entretanto, no decorrer do trabalho, por dificuldades de verificação do códigopela falta do processo debugging na IDE do Arduino, criou-se diversas versões de códigoscom protocolos de comunicação distintos.

Vislumbrava-se também a possibilidade de melhoria da eficiência energética do pro-tótipo. Com isso, elaborou-se uma placa de PCB de ativação e desativação dos motoresutilizados, como também, protocolos de comunicação para melhorar a eficiência e diminuirredundâncias no envio de dados.

1.3 Objetivos Específicos

Os objetivos específicos são:

• Desenvolvimento de Funções de Movimento de Servo-Motores;

• Implementação de uma lógica de controle própria usando-se botões;

• Desenvolvimento de uma placa PCB para ativação dos Servo-Motores;

• Setorização dos códigos do controlador e braço mecânico;

• Criação de um protocolo de comunicação entre controlador e braço mecânico;

• Construção da parte estrutural da garra e controle

1.4 Estruturação do Trabalho

• Capítulo 1 - Especifica as motivações levadas à elaboração deste trabalho, junta-mente com os objetivos específicos e gerais para a construção da garra robótica

• Capítulo 2 - Apresenta o referencial teórico, abordando temas como: ComponentesEletrônicos, módulos utilizados, a plataforma Arduino, Comunicação sem Fio e oprincípio de funcionamento dos Servo-Motores, essenciais para a compreensão destetrabalho.

• Capítulo 3 - Descreve os problemas pertinentes ao projeto, a metodologia utilizadapara o desenvolvimento da lógica de programação, acionamento dos motores e acomunicação entre as partes do projeto final.

Page 18: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 1. INTRODUÇÃO AO CENÁRIO 17

• Capítulo 4 - Apresenta os resultados obtidos através da execução da metodologiadescrita no capítulo três. Não obstante, apresenta problemas encontrados durantea realização do experimento e também alterações da proposta inicial para sua reso-lução.

• Capítulo 5 - Finaliza-se o trabalho apontando pontos de relevância vistos durante arealização do projeto, considerações sobre ações tomadas sobre problemas e suges-tões para projetos futuros.

• Apêndices: Nos apêndices encontram-se os códigos finais gerados através do expe-rimento. Nos anexos encontram-se Datasheets de componentes utilizados para arealização deste.

Page 19: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

2 Fundamentação Teórica

2.1 Robótica e o Aprendizado

A tecnologia integra atualmente quase que todos os âmbitos da vida cotidiana. Con-tudo, não difere-se também da nossa interação com o mundo. Entretanto, este contatopermanente tem trazido mudanças em nossas formas de pensar e ver o mundo.

Como explica Suzana Carnielli do Prado (PRADO, 2017), a robótica refere-se aodesenvolvimento e implementação de sistemas operados por comandos programados porusuários reagindo de formas inteligentes à códigos e ferramentas disponíveis no mercado.Entretanto, pode ser utilizada de maneira produtiva na educação na forma de projetos deextensão.

Projetos estes que integram áreas diversas do conhecimento, estimulando a criatividadee o raciocínio lógico de quem participa deles. Segundo o coordenador da OlimpíadaBrasileira de Robótica Flávio Tonidandel (TERRA, 2014), "a robótica consegue fazeruma ponte entre disciplinas. É possível, em uma aula de biologia, estudar o movimentodas aranhas, por exemplo, para isso, os alunos constroem um robô que imitará seusmovimentos usando-se da matemática".

Contudo, segundo Morelato (2011) o modelo atual de ensino segue o modelo instrucio-nista, que propõe a transferência de conhecimentos através da passagem de orientações domestre ao aprendiz, como é seguido presentemente no Brasil. Tal sistema incorpora atual-mente quase todas as instituições de ensino brasileiras. Entretanto, como explica Morelato(2011), como oposição a este paradigma de aprendizagem, tem-se o construtivista, o qualdiz que a criança possuí um mecanismo de aprendizagem próprio. Ao deixa-la interagircom objetos e ferramentas, criará suas próprias maneiras de compreender as coisas ao seuredor, assim, aprendendo de uma forma mais rápida e lógica.

Conforme Calegari (2015), a robótica estimula o raciocínio lógico e a criatividadedas crianças, pois faz com que elas próprias desenvolvam suas maneiras de soluções deproblema, através do uso da programação e construção lógica do conhecimento.

Outrossim, há um grande problema ao redor do mundo de desinteresse pelos alunos poráreas que envolvam matemática. Visando reverter tal situação, são propostas diferentesatividades extra curriculares a alunos de ensino fundamental e médio, utilizando-se darobótica educacional (PIAI, 2014). Estas atividades estimulam o raciocínio e lógica parasolução de problemas, tornando-se estas disciplinas mais interessantes a eles.

Um exemplo de projeto de extensão aplicado é o Robolon, que convida alunos de diver-sas escolas públicas da região de Londrina, com o objetivo de estimula-los à interessarem-sepor áreas de robótica, matemática e consequentemente engenharia. Este evento é promo-

Page 20: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 19

vido pelos Departamento de Engenharia Elétrica - Universidade estadual de Londrina eNúcleo de Atividades de Altas Habilidades/Super-dotação - NAAH/S, patrocinado peloCNPq, Fundação Araucária e pela própria UEL1.

2.2 Sistemas Embarcados

Pelas palavras de (CUNHA, 2007), sistemas embarcados são em suma a "Capacidadecomputacional dentro de um circuito integrado, equipamento ou sistema. Esta é umadefinição para o que é um sistema embarcado". Compõem grande parte dos eletrônicosutilizados atualmente. Entretanto, em contrapartida aos sistemas computacionais atuais(PC2), os sistemas embarcados são desenvolvidos para aplicações mais específicas, comopor exemplo: Cafeteira, Alarmes, controles de fábrica, entre outros.

Uma de suas características fundamentais é a aquisição de dados através de periféri-cos, manipulação de dados e comunicação entre outros processadores. Por seu pequenotamanho e grande poder de processamento, embarcados tem tomado cada vez mais espaçono mercado e em pesquisas. No entanto, ainda são sistemas limitados, com memória etamanho restritos que, na maioria das vezes, encontram-se embutidos em outros produtos(GALLASSI, 2016).

Em sua grande maioria contém microcontroladores, que ao contrário de micropro-cessadores, possuem periféricos embutidos dentro de seu encapsulamento, simplificando odesenvolvimento de produtos. Dentre suas arquiteturas destacam-se algumas como ARM,PIC, Atmel. Contudo, neste trabalho será trabalhado o microchip da Atmel o Atmega328utilizado na placa de desenvolvimento Arduino.

2.2.1 Microcontroladores

A complexidade de se trabalhar com sistemas eletrônicos de controle analógico erademasiada. Meses eram necessários para que um projeto simples pudesse ser concluído, ecaso houvesse erros de cálculo, tudo teria de ser refeito. Tendo em vista estes problemas,com o surgimento dos Microcontroladores reprogramáveis, tornou-se muito mais simplese prático o ato de se projetar sistemas controlados.

Segundo (FILHO, 2014), os microcontroladores estão praticamente em todos os lu-gares: automóveis, aviões, brinquedos, tablets, etc. São dispositivos programáveis, emsua maioria auto-contidos (sistemas embarcados ou embutidos), que possuem um sistemacomputacional completo em um chip.

Dentro de um único encapsulamento CPU encontram-se memória, entradas e saídas dedados, temporizadores, relógios internos, entre outros Hardwares específicos. São baratos e1 UEL:Universidade Estadual de Londrina2 PC:Personal Computer - Computador Pessoal

Page 21: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 20

de grande aplicabilidade. Outro ponto interessante a se apontar é que, possuem Hardwaree Software integrados num único chip (FILHO, 2014).

Possuem como principais características:

• Programação de memória não-volátil (EEPROM3, Flash), assim, permitindo serregravado inúmeras vezes e sua memória não é apagada após desligamento.

• Interrupções, sendo assim, alguma rotinas de programação podem ser executadasquando algum evento esperado aconteça.

• Entradas e saídas analógicas (I/O4 Input/Output), permitindo a entrada e saída desinais de tensão em sua faixa de operação.

• I/O seriais, permitindo a transmissão e recepção de sinais oriundas de outros dis-positivos ligados ao processador. Deve-se seguir protocolos de comunicação comoRS232, I2C, SPI 5.

• Interface para memórias externas/barramentos, permitindo o aumento de sua me-mória de armazenamento.

• Programação no sistema, permitindo ao microcontrolador, durante sua execução,que se grave outros programas.

• Conversores analógico digital A/D.

• PWM6 output, usado em diversas aplicações.

Todo microcontrolador (MCU:7) possui elementos básicos, sendo eles: Processador,Unidade de Controle, Conjunto e instruções, Registradores, Memória, Barramento de co-municação. Deste modo, ao utiliza-los em conjunto pode-se ordenar funções programáveispara serem executadas pelo microcontrolador.

Para elucidar sobre seu funcionamento, segundo (PEREIRA, 2003), ao executar-secomandos de máquina em qualquer linguagem de programação, os (MCU) executarãoalgumas sequências de comandos utilizando seus elementos. Inicialmente, o processadorbusca instruções a serem lidas, lê a instrução em sua memória, interpreta e decodifica ainstrução para gerar sinais de controle necessários. Para isso, registradores são utilizadospara armazenamento temporário de dados e/ou de posição de memória dos processos demáquina. Alguns visíveis ao usuário e outros não.3 EEPROM:Electrically-Erasable Programmable Read-Only Memory4 Input/Output - Entrada/Saída5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico6 Pulse Width Modulation - Modulação por Largura de Pulso7 Microcontroller Unit - Unidade Microcontroladora

Page 22: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 21

Ao passo de seu processo, unidades de controle são requisitadas para que se sequencieas micro-operações requeridas, para isso utiliza-se do relógio clock e registradores de ins-trução. Após a execução destas tarefas, o processador aguarda novas instruções a seremcomputadas, repetindo-se indefinidamente.

2.2.2 Arduino

Arduino, define-se como uma placa de desenvolvimento de código aberto (Open Source),idealizada e criada pelo italiano Massimo Banzi no ano de 2005, com o intuito de facili-tação no aprendizado de eletrônica para estudantes e prototipagem rápida de designerse projetistas. Visava-se obter uma plataforma de baixo custo e suficiente para diversasaplicações. Por uma adesão generalizada à esta nova forma de se ver a eletrônica, diver-sas pessoas ao redor do mundo empenharam-se a desenvolver novos produtos e códigosvoltados à aplicações envolvendo Arduino. Atualmente a palavra Arduino é reconhecidaem quase todos os lugares.

Segundo o site da plataforma:

"O Arduino é uma plataforma de prototipagem eletrônica Open-Source quese baseia em hardware e software flexíveis e fáceis de usar. É destinado aartistas, designers, hobbistas e qualquer pessoa interessada em criar objetosou ambientes interativos. O Arduino pode sentir o estado do ambiente que ocerca por meio da recepção de sinais de sensores e pode interagir com os seusarredores, controlando luzes, motores e outros atuadores. O microcontrolador2.3. na placa é programado com a linguagem de programação Arduino, baseadana linguagem Wiring, e o ambiente de desenvolvimento Arduino, baseado noambiente Processing. Os projetos desenvolvidos com o Arduino podem serautônomos ou podem comunicar-se com um computador para a realização datarefa, com uso de software específico". (ARDUINO, 2015)

Por conter um microcontrolador Atmega328 em sua placa, possui integração de Hard-ware e Software. O Hardware representa a parte física da placa, ou seja, tudo que a placade desenvolvimento contém, como mostra a figura 2.1.

A placa Arduino UNO possui as seguintes características segundo seu site (ARDUINO,2015):

• Microcontrolador - Atmega328P

• Tensão de entrada - 7-12V (recomendado)

• Pinos digitais I/O - 14 sendo 6 deles saídas PWM (pinos 0-13)

• Pinos Conversor A/D - 6 pinos conversores Analógico Digital (A0-A5)

Page 23: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 22

Figura 2.1 – Placa de desenvolvimento Arduino UNO

Fonte: (ARDUINO, 2015)

• Corrente DC por pino digital - 20mA

• Memória Flash - 32KB

• SRAM - 2KB

• EEPROM - 1KB

Sua linguagem de programação é modelada a partir a linguagem Wiring. Ao gravar-seum código em sua memória (Flash), o IDE8 do Arduino converte o código escrito paraa linguagem C que posteriormente é transmitido ao compilador avr-gcc, traduzindo asinformações para a linguagem de máquina.

Sua IDE possuí uma linguagem própria baseada em C/C++. Comunica-se via serial(USB) com o computador, apresentando fácil gravação assim como programação, demons-trada ao longo deste trabalho.

Embora existam diversos tipo de placas de desenvolvimento da Arduino, tratar-se-áneste trabalho, apenas das placas de Arduino UNO. Entretanto, deve-se levar em contaque por sua interface de programação IDE, o código aqui gerado pode ser utilizado emqualquer outra placa de desenvolvimento. A escolha da placa levou em conta: seu preço,aplicabilidade, compatibilidade com módulo de controle Funduino (placa adicional comformato Joystick, botões e suporte para módulos imbutido) e sua alimentação com fonteexterna (bateria), pois, sua tensão de alimentação 3.3V permanece ativa, ao contrário doArduino Nano.

2.3 Programação

Segundo o dicionário Dicionário (2017), a palavra programação remete ao ato de pro-gramar. Pensa-se atualmente que o termo programação denota unicamente ao lado com-8 IDE: Integrated Development Environment

Page 24: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 23

putacional, entretanto, não é exatamente o que acontece. O programar, é de fato, partede nossas rotinas. Acordamos, escovamos os dentes, nos preparamos, seguimos rotinas,ou seja, programamos ações para que se obtenha algum resultado.

O mesmo acontece com a programação em computadores ou sistemas embarcados. Noentanto, para comunicar-se com estes dispositivos, necessita-se ”dizer” em linguagem queseja entendida por eles. Em outras palavras, precisa-se digitar linhas de comando, demodo a serem seguidas pela máquina. Contudo, a maneira de comunicação entre homeme máquina não é atual, precedendo muitos séculos.

Como explica (CAMPBELL-KELLY, 2013), o homem desde seus primórdios tem cri-ado mecanismos para facilitar sua vida, incluindo a velocidade e praticidade de fazercálculos. Um dos primeiro intrumentos utilizado para esta facilitação foi o Ábaco, o qualrealizava operações simples de soma e subtração. Ao passar de milênios, na Alemanhapor Wilhelm Schickard 1623 como evidencia (CAMPBELL-KELLY, 2013), fora criada aprimeira máquina de calcular, a qual realizava contas simples. Pouco depois na França,Blaise Pascal inventou uma máquina com seis rodas dentadas denomidada La Pascaline,realizando contas de soma até 999.999.

Ao passar dos anos, mais e mais máquinas tomaram lugar para efetuação de cálculos.No entanto, em 1801 o estudioso françês Joseph-Marie Jacquard inventara a máquina detear capaz de ler cartões perfurados, a qual iniciou uma maneira de se trabalhar com cal-culos complexos. Pouco depois, Charles Babbage, um inglês, inventou a primeira máquinacapaz de ler cartões perfurados, solucionar polinômios e fazer operações diferenciais.

A partir deste ponto, surgiram as primeiras máquinas elétricas de cálculo. Dentre asprimeiras o ENIAC, compunha-se de um tamanho estrondoso, conseguia efetuar aproxi-madamente 5000 operações por segundo, e consumia uma potência média de 160kW. Coma chegada dos transistores, o tamanho e, consequentemente, velocidade dos computado-res aumentara (CERUZZI, 2002). Com o desenvolvimento do CPU (Central ProcessingUnity) conseguiu-se dinamizar pacotes de instruções de máquina capazes de efetuar dife-rentes operações matemáticas.

Com o passar dos anos, a miniaturização dos transistores e o avanço da micro-eletrônicapossibilitaram atingir velocidades e volumes de operações de máquinas estrondosos emcomparação aos primeiros. Atualmente, uma CPU comum pode efetuar cerca de 2,5bilhões de instruções de máquinas por segundo, sendo elas programadas através de linhasde comando, fornecidas por um programador (CERUZZI, 2002).

2.3.1 Linguagens de Programação

Uma linguagem de programação é um esquema formal para a comunicação de ins-truções para um computador (DERSHEM, 1995). Contudo, por compreender apenasde números que atinjam valores de 0 e 1 (binários), torna-se difícil a compreensão destes

Page 25: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 24

pelo programador. A fim de se facilitar esta comunicação, foram desenvolvidas linguagenscapazes de executar funções e comandos de máquina para determinados tipos de dispo-sitivos. Uma das primeiras a surgir foi a linguagem Assembly, possivelmente no iníciodos anos 50 quando ainda usava-se computadores à válvulas. Esta linguagem permitia aoprogramador manipular instruções utilizando-se de registradores e memórias presentes namáquina.

A partir disto, surgiram diversas linguagens de alto nível, utilizadas para diferentesaplicações. Dentre elas destacam-se atualmente, a linguagem C, C++, Java, Phyton, entreoutas. Uma das linguagens mais importantes e ainda utilizada atualmente, é a linguagemC. Destoa-se das demais principalmente pela sua praticidade de uso. A habilitação deponteiros possibilitou um grande avanço nos campos da programação, sendo ainda muitoutilizada em variadas aplicações e de suma importância para sistemas embarcados. Paraprogramar tais dispositivos necessita-se de um ambiente de desenvolvimento e compilador.Para a plataforma Arduino, utiliza-se de sua IDE, representado na figura 2.2, ambiente oqual faz a gravação do código escrito na memória flash do microcontrolador.

Figura 2.2 – Interface IDE Arduino

Fonte: AUTOR

2.3.1.1 C/C++ Utilizando-se IDE Arduino

Alguns elementos básicos compõem a linguagem C/C++. Por tratar-se de lógica, eoperações lógicas e matemáticas, deve-se compreender algumas funções desta linguagem

Page 26: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 25

e suas aplicações. Na lista 2.3.1.1 encontram-se funções tipicamente utilizadas e de sumaimportância nesta linguagem, são elas:

• if - Função de comparação condicional

• else - Utilizada casada com a função if, entretanto, remete-se ao caso contrário dela.

• while - Loop de repetição para determinadas condições, função bloqueante.

• for - Função de incremento/decremente de variáveis, função bloqueante.

Embora não tenham sido listadas todas as funções disponíveis em C, pode-se efetuarqualquer tipo de programa apenas com estas quatro. Deve-se tomar cuidado com o uso defunções bloqueantes. Pois, ao trabalhar-se com sistemas embarcados, por possuírem clocksem MHz e sua rotina já estar contida em Loop infinito, utilizando-a o sistema permanecerábloqueado dentro desta função até que a condição de saída seja cumprida. Durante estetempo, o sistema não efetuará programas paralelos a ele, prejudicando muitas vezes asaplicações.

1 int contador = 0;

2

3 if(contador <=10)

4

5 contador ++;

6

O código lista à cima é um exemplo de loop não bloqueante, efetuando sua ação atravésde um comparador if. O mesmo exemplo de loop bloqueante é mostrado no código abaixo.

1 int contador = 0;

2

3 while(contador <=10)

4

5 contador ++;

6

Nota-se que ambos os programas exemplificados executam a mesma condição, o códigoincrementará a variável contador até que ela alcance o valor 10. Entretanto, ao utilizar-sea função while, prende-se o programa nele, até que o valor da variável contador alcance 10.Já noutro caso, outras funções podem correr paralelamente à ela mesmo que a variávelcontador esteja contida entre 0 e 10.

Page 27: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 26

Variáveis

Compreendem em endereços de memória alocados para utilização em programas. Va-riáveis possuem seu endereço próprio, um valor correspondente, sinal e um tamanho es-pecífico. Tais características da variável podem ser manipuladas através de declaraçõesde variáveis. Neste âmbito, são exemplificadas alguns tipos de variáveis abaixo:

• int - Variável de número inteiro, podendo ser negativa.

• uint8_ t - Variável de números inteiros sem sinal com tamanho de até 8 bits.

• long int - Variável de número inteiro com o dobro de bits da variável int, pode sernegativo.

• float - Variável de ponto flutuante, valores entre números inteiros.

• char - Variável utilizada para representar letras, compreende-se de 8 bits, contendo256 letras.

O código abaixo demonstra a simplicidade de se declarar variáveis. Neste exemplo,tomou-se características físicas de uma pessoa, como, peso, altura, cor dos olhos e seunome.

1 uint8_t = cor_olhos = 0;

2 int altura = 180;

3 long int peso = 80;

4 char nome [30] = " Pessoa ";

Bibliotecas

Em suma, bibliotecas, são conjuntos de códigos e funções previamente feita por outrosprogramadores que podem ser reutilizadas em diversas aplicações. Outrossim, facilita acriação de novos códigos e reaproveitamento dos existentes. Como dizem os programado-res: "Para que reinventar a roda?". Facilmente utilizáveis em códigos, seguem a seguintetopologia de uso mostrada na linha de código abaixo.

1 # include <Servo.h>

Funções

Nas palavras de Pinho (2015) funções são conjuntos de comandos em um bloco, querecebem nomes para sua identificação. Assim como em matemática, são estruturas com-putacionais dependentes ou não de variáveis. As funções dividem-se em dois tipos básicos,retornáveis funções ou sub-rotinas de execução. As funções void são funções que somenteexecutam ações podendo ou não modificar parâmetros externos através de ponteiros. Isto

Page 28: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 27

significa, ao final de seu processo de operação a função não retorna um número. As fun-ções que retornam valores podem ser de qualquer tipo de variável, entretanto, ao passode seu fim, retornarão valores, como por exemplo 0 ou 200.

Dentre suas diversas vantagens, Pinho (2015) cita algumas como: Reaproveitamentode código; Evita repetição de trechos de códigos; Possibilita alteração mais rápida decódigos; Simplifica a escrita e leitura de programas; Permite a separação do programa emblocos.

1 void funcao_soma (int *valor , int a, int b)

2

3 *valor = a+b;

4

5

6 int funcao_soma (int a, int b)

7

8 return a+b;

9

Exemplificado à cima nas linhas de código, tem-se duas representações distintas damesma função. A primeira delas é uma função void, a qual não retorna valores. Suacaracterística é o trabalho com ponteiros, o qual possibilita alterar valores de variáveisexternas à esta função, dentro de suas linhas de comando. Para este exemplo a funçãorecebe o valor de duas variáveis ou números inteiros em a e b. Posteriormente ele salva asoma destes dois valores no valor da variável apontada pelo ponteiro.

Page 29: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 28

Para compreender-se melhor seu funcionamento, ilustra-se abaixo sua utilização como codeIDE do arduino. A seguinte função mostra como declarar as variáveis e utiliza-la.Nota-se que o valor da soma de 2 e 5 é passado por ponteiro para a variável valor_final,que recebe o total de 7.

Figura 2.3 – Exemplo da Utilização de uma função void utilizando-se ponteiro

Fonte: AUTOR

Ao passo da execução desta função, o valor mostrado na comunicação serial será igualà 7. A fim de se exemplificar o funcionamento da função utilizando-se agora return fez-seo código mostrado na figura 2.4.

Figura 2.4 – Exemplo da Utilização de uma função int utilizando-se return

Fonte: AUTOR

Vê-se que o valor retornado na comunicação com a porta serial é o mesmo da funçãoanterior. No entanto, sua forma de utilização é diferente, pois ao final de sua execução,esta função a qual retorna um valor, torna-se o número 7, que posteriormente é passado

Page 30: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 29

por parâmetro ao valor_final.

Enumerado/enumerate

É uma sequência enumerada de determinadas palavras ou símbolos. Extremamenteúteis para se trabalhar com máquinas de estado, pois em sua estrutura, garantem orga-nização e controle de suas ações tomadas na programação. O primeiro nome declaradodentro desta lista deve ser atribuído algum valor, podendo ser de um número negativoaté um número positivo, para este exemplo usou-se zero. Em seguida, lista-se as outraspalavras que serão listadas no enumerado, assim, após a primeira palavar verde sendoigual a zero, as seguintes assumirão valores sequenciais conforme sua ordem.

No exempo mostrado no código abaixo, o primeiro termo verde assume o número zero,posteriormente o azul assume um, preto dois e assim por diante.

1

2

3 typedef enum

4

5 verde = 0,

6 azul ,

7 preto ,

8 castanho

9 cores;

Este exemplo de enumerate lista diversas cores pertencentes à um olho. Portanto,ao criar-se uma variável cor_olhos do enumerado cores, ter-se-á acesso à todos estesnomes. Assim, poder-se-á passar valores para esta variável utilizando-se de qualquer umdos nomes contidos no enumerado.

Tal organização computacional é extremamente importante quando quer-se trabalharcom multiplas variáveis ou dados.

Estruturas/struct

Compreendem-se de uma lista de informações contidas em uma estrutura de dados, oudo inglês struct. Compreendendo-se melhor, usa-se o ser humano como exemplo. Sabe-seque possuí diversas características, como: cor de olho, altura, peso, cor de cabelo, entreoutras, compondo uma estrutura de informações própria. Na computação, pode-se tomaro mesmo exemplo e criar estruturas de dados contendo uma lista de informações, comomostra o exemplo do código abaixo.

Page 31: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 30

1

2 typedef struct

3

4 cores cor_olhos = verde;

5 int altura = 180;

6 long int peso = 80;

7 char nome [30] = "não escolhido ";

8 pessoa ;

9

10 pessoal Charles ;

Utilizando-se das mesmas variáveis declaradas na parte de declaração de variáveis,este exemplo mostra como é a construção e declaração e uma struct. Contém informaçõespertinentes à de uma pessoa, bem como, nome, peso, altura e cores dos olhos. Vê-se queagora, através do enumerate da figura ??, criou-se uma variável do enumerado de coresdentro da estrutura. Assim, pode-se configurar seus valores por qualquer um dos nomescontidos em sua lista.

Após a criação de uma variável Charles da estrutura de dados pessoa, deve-se sabermanusear seus dados. Para tanto demonstra-se tal feito através do código abaixo.

1 typedef enum

2

3 verde = 0,

4 azul ,

5 preto ,

6 castanho

7 cores;

8

9 typedef struct

10

11 cores cor_olhos = verde;

12 int altura = 180;

13 long int peso = 80;

14 char nome [30] = "não escolhido ";

15 pessoa ;

16

17 pessoal Charles ;

18

19 void setup ()

20

21 Charles . cor_olhos = azul;

22 Charles . altura = 169;

Page 32: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 31

23 Charles .peso = 58;

24 Charles .nome [30] = " Charles "

25

Compreendendo-se esta analogia com pessoas, o uso de estruturas torna o agrupamentode dados muito mais simples. Além de seu aspecto organizacional muito bom, estruturasde dados podem contem outras estruturas e enumerados, ou até mesmo funções.

2.3.2 Interrupções

De acordo com Gonçalves (2010), interrupções são mecanismos de sinalização à CPUsobre eventos importantes relacionado aos periféricos e outros elementos do sistema. Numsistema multi-programado, a CPU está sempre pronta para compartilhar e executar ope-rações de funções e dispositivos presentes nele.

Basicamente, interrupções em sistemas programados constituem-se de dois tipos: In-terrupção por Hardware IRQ e interrupção por Software.

Interrupções por Hardware

Estas interrupções agem diretamente na estrutura física do processador. Tal efeito fazcom que a CPU saia de seu modo de operação normal e atenda ao pedido de interrupção.Ao terminá-lo retorna a seu processamento normal, por exemplo quando um botão é pres-sionado ou um timer se esgota. Assim, sinaliza à CPU que ocorreu um evento esperado,interrompendo sua operação atual e atendendo à chamada do evento.

Comumente chamadas de Handler, diferem-se de interrupções de Software por pos-suírem prioridades no sistema. Independentemente de qual operação está ou se estejapresa num Loop infinito, o sistema a atenderá e migrará para sua rotina, posteriormenteretornará a seu estado normal de processamento.

Todos os sistemas microcontrolados apresentam interrupções, variando-se de disposi-tivo à dispositivo. A placa Arduino UNO, a mais comum atualmente, possui interrupçõesexternas (sensores, botões que sinalizam algo) bem como temporizadores. No entanto,sua limitação física permite apenas o uso de duas interrupções externas simultaneamente.

Interrupções por Software

Ao contrário de interrupções por Hardware, quando deseja-se fazê-las por Software,necessita-se criar linhas de comando simulando alguma ação física externa (botões, sen-sores) ou interna (temporizadores). Entretanto, ao utilizar-se tai tipos de interrupção,além de mais uso de memória e processamente para sua execução, sujeita-se a bloqueiopor funções bloqueantes como: While, for.

Contudo, ao passo de evitar-se o uso destas, pode-se tranquilamente recorrer ao usode interrupções por linhas de comando. Por conter apenas duas interrupções externas por

Page 33: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 32

Hardware, o microcontrolador Atmega360, apresenta-se limitado ao uso de variados senso-res ou botões, caso não seja utilizado um circuito multiplexador. Para tanto, pretende-secriar funções de interrupção por Software para atender à três botões externos.

2.3.2.1 Detecção de Push-Button por Software

Tendo em vista o funcionamento básico de um botão ou Push Button, pode-se implementá-lo em linhas de comando. Inicialmente, deseja-se detectar quando há detecção de bordasdadas pelo pressionamento de um botão.

O funcionamento do botão dá-se pela mudança da tensão elétrica aplicada à umaporta de Input de um microcontrolador. Em outas palavras, ao pressionar-se o botão,altera-se o valor lido pela porta digital do sistema. Por conseguinte, ao pressioná-lo faz-seo contato físico do botão com a fonte Vcc, mudando-se o valor lido pela porta Input. Umexemplo ilustrativo é mostrado na figura 2.5.

Figura 2.5 – Esquemático de um Push Button associado à porta D3 do arduino

Fonte: AUTOR

Inicialmente com o botão solto, a tensão lida pela porta é de zero volts. Todavia, aopressioná-lo o botão cria um contato físico entre a fonte Vcc e a porta do arduino, mudando-se sua tensão lida de zero para 5V. A onda correspondente gerada é exemplificada pelafigura 2.6.

Realiza-se que na mudança de estado físico, no caso ideal, forma-se uma rampa desubida e de descida de tensão elétrica, o que não acontece exatamente na realidade.Interrupções por Hardware detectam tais variações físicas de tensão e rapidamente tratama interrupção. Para mesmo feito, imitar-se-á esta detecção por Software, utilizando-se deum Arduino UNO e a plataforma codeIDE de desenvolvimento.

Page 34: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 33

Figura 2.6 – Formato ideal de onda de pulso gerado pelo acionamento do botão

Fonte: AUTOR

Desenvolvimento do código de interrupção

Primeiramente, cria-se um enumerate indicando os dois estados do botão, solto loose epressionado push. Posteriormente cria-se uma estrutura de dados contendo duas variáveisdo tipo do enumerate anteriormente criado, contendo estados anterior e atuais do botão.

Seu destaque está no armazenamento do estado anterior do botão, e na comparaçãocom seu estado atual. Caso os estados sejam iguais, não ocorreu pressionamento, casocontrário, a borda pode ser ou de subida ou de descida. Assim, cabe ao programadorescolher a que preferir.

1

2 typedef enum

3

4 loose = 0, // solto

5 push // pressionado

6 Typedef_estados ;

7

8 typefed struct

9

10 Typedef_estados ant;// estado anterior

11 Typedef_estados atu;// estado atual

12

Após feito isto, deve-se criar funções de detecção de bordas para o codeIDE. Para esteexemplo se criará duas funções distintas, a primeira iniciará os valores anterior e atualpara push, assim ao iniciar o programa, os valores se normalizarão automaticamente aopasso de seu uso. Já a segunda, detectará efetivamente se os estados anterior e atual sãodiferentes.

Page 35: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 34

1 // inicia os estados em push

2 void inicia_detecta ( Tipo_onda * maquinas )

3

4 maquinas ->ant = push;

5 maquinas ->atu = push;

6

7

8 boolean Detecta_borda ( uint8_t pinos , Tipo_onda * maquinas )

9

10 // compara estados ant e atu

11 //se ant = 0 e atu = 1

12 // retornatrue , senão false

13 maquinas ->ant = maquinas ->atu;

14 if( digitalRead (pinos)==0)

15

16 maquinas ->ant = loose;

17

18 if( digitalRead (pinos)==1)

19

20 maquinas ->ant = push;

21

22 if(( maquinas ->ant == push)&&(( maquinas ->atu == loose)) return

true ;

23 else return false;

24

A função Detecta_Borda(uint8_t pinos, Tipo_onda *maquinas), compara os valoresatual e anterior, a fim de detectar se houve uma borda de subida. Caso tenha havido uma,por tratar-se de uma função boolean caso esta condição tenha sido satisfeita, retornarátrue, caso contrário false.

2.4 Telecomunicações sem Fio

Entre diversos tipos de dispositivos elétricos e eletrônicos, destacam-se atualmenteos que possibilitam o envio de informação sem a utilização de fios. Os usamos comoextensões dos nossos corpos e somos praticamente dependentes destes no dia a dia. Talfeito tornou-se possível através da evolução humana entre eras. (FERNANDES, 2015)

Durante séculos perdurou-se a comunicação por vias escritas ou faladas, as quaisalongavam-se muito por terem de ser feitas pessoalmente. Como exemplificado por Fer-nandes (2015), quando Pedro Álvares Cabral encontrou a costa brasileira, mais precisa-mente em porto seguro 1500, teve de enviar duas naus de sua frota naval para a chegada

Page 36: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 35

da notícia de que uma nova terra havia sido encontrada. Notavelmente, esta informaçãodemorou muito a chegar.

Entretanto, aos primórdios do aparecimento da comunicação sem fio em 1873 porJames Clerk Maxwell, deu-se início ao estudo das ondas eletromagnéticas, que poste-riormente fora comprovada experimentalmente por Heinrich Hertz em 1887, através doexperimento de Hertz. Sendo esta refeita por outros estudiosos como, Oliver Lodge,Chandra Bose e Alexander Popov (FERNANDES, 2015).

Figura 2.7 – James Maxwell (1831-1879); Heinrich Hertz (1857-1894); Guglielmo Marconi(1874-1937)

Fonte: (FERNANDES, 2015)

Em aproximadamente 1891 Nikola Tesla iniciara seus estudos em comunicação semfio. Em meados de 1893 o mesmo provara sua teoria com seu experimento "The TrueWireless" publicamente, utilizando-se de um rádio. Posteriormente, estudos dirigidos naárea propiciaram um avanço e melhoria excepcionais. (NORDIC, 2015)

Não distante, no Brasil por volta do ano de 1894 como mostram relatos, o inventorLandell de Moura contribuíra muito para o desenvolvimento do rádio. Como relatado,conseguiu se comunicar com um transmissor a 8 km de distância do receptor na avenidaPaulista (São Paulo). (CAMPOS, Julho 2007)

Após a patente da válvula de triodo do inventor Lee De Forest 1907, desenvolveu-se odetector eletrolítico para ondas de rádio, tornando-se assim possível a emissão e recepçãoatravés do uso de antenas. Posteriormente, através de avanços nas modulações e nacriação de circuitos receptores heteródinos feitos pelo inventor Edwin Howard Armstrong,tornou-se simples a recepção e emissão de ondas de rádio, proporcionando um avanço naárea de transmissão de dados. (TUTTLEBEE, 2002).

Por conseguinte, sucederam-se diversas invenções que nos proporcionaram condições derealizar e desenvolver novas tecnologias. Pelo estudo de (FERNANDES, 2015), destacaram-se algumas por sua importância como: Primeiro rádio comercial 1919; Primeira onda derádio vinda da galáxia captada 1930; Na mesma época o desenvolvimento do Radar e doTelevisor; em 1957 fora lançado o primeiro satélite de comunicações, marcando uma novaera nas telecomunicações; Nos anos 70 foram desenvolvidos os primeiros aparelhos celu-

Page 37: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 36

lares; Nas últimas décadas desenvolveram-se novos enlaces e protocolos de comunicaçãocapazes de transmitir altos volumes de dados como, WI-FI, Bluetooth, GPS.

2.4.1 Transmissores e Receptores

Em todos os sistemas de comunicação digital há três distintas camadas que integrameste meio, Camada física, Camada de Enlace e Camada de Rede. Na utilização de rádios,ou sistema wireless, a camada física realiza a modulação e demodulação das ondas eletro-magnéticas utilizadas na transmissão de informação. Tais sinais modulados compõem-seda informação a ser transportada.

A camada física é, segundo Haykin S.; Moher (2008), um equivalente entre a fonteemissora e o destino da mensagem. Nas comunicações sem fio e em alguns outros sistemas,compõe-se de três componentes básicos e necessários à ela: TX9, o canal de transmissão(ar) e o RX10, como é exemplificado na figura 2.8

Figura 2.8 – Diagrama e bloco de um sistema de comunicação simples

Fonte: (HAYKIN S.; MOHER, 2008)

Como exemplificado por Haykin S.; Moher (2008) sua função é receber informaçãooriunda de alguma parte de um sistema, como por exemplo, um transdutor sonoro,modifica-la e enviá-la através de um canal físico de comunicação.

Para que se obtenha êxito em seu envio, o transmissor deve conseguir transmitir o sinalde maneira confiável através do canal. Normalmente, tendo-se um transmissor móvel elimitado energeticamente e espectralmente, emprega-se técnicas de modulação robustapara evitar erros e fazer com que o receptor receba a mensagem desejada.

Já o receptor (RX) como explica Haykin S.; Moher (2008), influi sobre o sinal rece-bido produzindo uma estimativa da informação do sinal original transportado através docanal. Contudo, por diversas perdas, ruídos Gaussianos e interferências de outras on-das, emprega-se técnicas de recepção e correção de erros para o recebimento correto dainformação desejada.

Para sistemas complexos e com muitos dados de tráfego emprega-se o uso de protocolosde comunicação.9 TX:Transmitter - Transmissor10 RX:Receiver - Receptor

Page 38: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 37

2.4.1.1 Conceito de Protocolo de Comunicação

Protocolos de comunicação definem-se por um conjunto de normas e agrupamento dedados de comando entre dois ou mais dispositivos, de forma a garantir sua comunicaçãocom o mínimo de erros (LILA, 2012).

Segundo SILVEIRA P. SANTOS (2006), protocolo de comunicação são os conjuntosde normas e sequências de envio que regem a comunicação entre dispositivos. Contendonão somente informações, como também estrutura de dados contendo formato de ações aserem executadas para a troca de informações em um canal de comunicação

2.4.2 Rádio NRF24L01

O módulo NRF24L01 mostrado na figura 2.9, é um transceptor Ultra Low Power in-tegrado, baseado na técnologia do microchip da Nordic, que pode operar em comunicaçãoHalf Duplex. Utiliza a comunicação SPI para com o microcontrolador, e não é dificilmenteprogramável. Por seu baixo custo energético e pequeno tamanho, mostra-se interessantena utilização em sistemas embarcados que requisitem baixo consumo de energia. (NOR-DIC, 2007)

Figura 2.9 – Módulo transceptor com chip NRF24L01

Fonte: (HAYKIN S.; MOHER, 2008)

Como explicitado em seu Datasheet, opera na faixa de frequência de 2,4 GHz comlargura de banda de 2 MHz e um alta taxa de transferência de dados de aproximadamente1 Mbps. Dentre suas especificações, destacam-se as listadas abaixo:

• Taxa de transmissão de 0 à 1 Mbps

• Operações Multi-canal, até 125 canais distintos

• Tempo de troca de canal menor que 200 micro-segundos

• DuoCeiver para topologia de recepção dual

• Tensão de alimentação 1,9V à 3,6V

• Baixa corrende de (TX) pico de 10,5 mA

Page 39: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 38

• Baixa corrente de recepção (RX) pico 18 mA

Altamente aplicável, este dispositivo é amplamente utilizado para comunicações sem fioem: Mouse sem fio, Teclado sem fio, Comunicação de dados sem fio, Segurança residencial,Automação Residencial, entre outros.

2.4.3 Módulo NRF24L01 com Arduino

Dentre sua vasta gama de aplicações, destaca-se seu fácil uso através de plataformasmicrocontroladas. Entretanto, para uma melhor compreensão de seu funcionamento, deve-se destacar algumas características de seus pinos e suas funções. A figura 2.9 mostra omódulo do transceptor utilizado neste experimento. A figura 2.10 ilustra as conexõesnecessárias feitas entre uma placa de desenvolvimento Arduino e um módulo transceptorNRF24L01.

Figura 2.10 – Conexão dos pinos do módulo transceptor ao Arduino Uno

Fonte: AUTOR

Como a comunicação entre o microcontrolador e o módulo é feita via SPI, deve-seconectar os respectivos pinos de comunicação desta interface do Arduino ao módulo. Osrespectivos pinos e cores estão indicados na lista à seguir:

• Vermelho: Representa a alimentação do módulo. Deve estar sempre em 3,3V, casocontrário, causará a queima do módulo

Page 40: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 39

• Preto: Representa o pino GND ou terra do módulo, deve-se conectá-lo ao GND doArduino

• Verde: Representa o pino CSN do módulo, sua posição é opcional, no entanto,utilizou-se o pino 10.

• Amarelo: Representa o pinoCE do módulo, sua posição é opcional, no entanto,utilizou-se o pino 9.

• Rosa: Pino de clock, sua sigla é dada por SCK e deve estar conectado no pino 12.

• Laranja: Pino MISO, via de comunicação SPI, deve estar no pino 13.

• Cinza: Pino MOSI, via de comunicação SPI, deve estar no pino 11.

Tendo o conhecimento da posição das conexões, atenta-se para o fato de este módulonecessitar ocasionalmente de um capacitor alocado paralelamente à sua alimentação. Estefeito dá-se pelo fato de que, ao transmitir-se informações em alta taxa, picos de correntesão exigidos pelo módulo. Embora não ocorram sempre, esta variação na demanda decorrente faz com que a tensão de alimentação do módulo decresça, acarretando o reiníciodele. Portanto, não conseguir-se-ia transmitir dados. Um valor de 10 µF de capacitânciadeve suprir tal variação de tensão.

Notoriamente, deve-se utilizar dois Arduinos de modo a conseguir-se um canal de co-municação. Feita sua montagem, necessita-se ter conhecimento de sua programação básicae funções não negligenciáveis para seu uso. Para este processo de configuração do módulo,utilizou-se da biblioteca ”RF24”, disponível em: "https://github.com/maniacbug/RF24".

A figura 2.11, mostra as principais funções a serem utilizadas, variáveis necessárias ecomo deve-se escreve-las para iniciar uma comunicação entre dois módulos.

Alguns elementos básicos são encontrador nas figura 2.11 e 2.12 cima. Todo canalde comunicação deve ter um nome, em outras palavras, significará seu endereço. Paratransmitir-se informações deve-se ter algo à transmitir, podendo ser: Mensagens de texto,instruções, comandos, ou até mesmo códigos para controles de enlace. Neste exemplosupracitado, nota-se que um Arduino estará a enviar informações contidas no endereçoda variável Valor, que possuí o valor de 1.024. Entretanto, realiza-se que a plataformareceptora também possuí uma variável nomeada valor, no entanto, com seu valor igual azero.

Para confirmar êxito no envio de mensagens e na comunicação dos dois módulos, deve-se imprimir o valor 1.024 através da porta Serial do Arduino receptor. Isto é razoável,pois a função ”radio.read(&valor, sizeof(valor))” através do uso de ponteiros, modificao conteúdo da variável valor dando-a seu novo número de 1.024. Para confirmar o sucessode tal configuração deve-se obter o resultado da figura 2.13.

Page 41: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 40

Figura 2.11 – Código básico para comunicação de dois módulos NRF24L01, Transmissor

Fonte: AUTOR

Figura 2.12 – Código básico para comunicação de dois módulos NRF24L01, Receptor

Fonte: AUTOR

Page 42: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 41

Figura 2.13 – Valores recebidos pelo receptor usando-se os códigos das figuras 2.11 e 2.12

Fonte: AUTOR

2.5 Dispositivos Eletrônicos

O desenvolvimento da eletrônica foi um dos principais precursores do crescente e ace-lerado desenvolvimento tecnológico ocorrido nas últimas décadas. Após o aparecimentoda primeira válvula triodo em 1906 desenvolvida por Lee de Forest, tornou-se possívelo trabalho e manuseio de sinais elétricos. Por diversas dificuldades em sua utilizaçãocomo: grande tamanho, tensão elétrica necessária muito elevada e custo grande. Após asegunda guerra, foi substituída a válvula elétrica por novos componentes semicondutores,os transistores (REZENDE, 2004).

Com este feito, tornou possível a miniaturização da eletrônica e o desenvolvimento denovos e mais rápidos componentes, conduzindo-nos ao desenvolvimento atual e crescente.

Page 43: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 42

Paralelamente, isto possibilitou o progresso de novos ramos da tecnologia digital, como:eletrônica digital, sistemas microcontrolados, entre outros (REZENDE, 2004).

Entretanto, para compreender-se melhor a razão de tamanha importância, deve-seentender seu funcionamento. Segundo Boylestad (2013), componentes eletrônicos sãomateriais semicondutores dopados com componentes químicos, ou seja, muda-se a carac-terística elétrica do material a fim de se obter elétrons livres para "manuseio". Destaforma, ao aplicar-se tensões elétricas ou variações de correntes, pode-se alterar o estadode inércia elétrica de determinado componente.

Entre os dispositivos, destacar-se-á neste trabalho a utilização de três: Transistor, Di-odo de Luz (LED), Amplificador Operacional (AMPOP). Para tanto, deve-se exemplificaro meio para tais fins, tornando-se inevitável o estudo da junção PN. Conforme Rezende(2004) Uma junção PN compreende da união de duas partes dopadas de semicondutores,uma do tipo N e outra do tipo P. Assim, com sua aproximação, tem-se uma divisão físicaimpedindo a passagem de cargas como mostra a figura 2.14.

Figura 2.14 – Junção PN representativa

Fonte: (WIKIPEDIA, 2017)

À medida que ambas partes do material são aproximadas, ocorre a difusão de elétronslivres na camada de depleção. Assim, pela falta de elétrons no material tipo N, e a faltade lacunas no material tipo P, forma-se um campo elétrico entre a junção PN.

Este campo elétrico contém uma tensão associada a si, chamada de barreira de poten-cial. Ao passo do incremento de tensão entre esta barreira de potencial, induz-se o fluxode corrente, e portanto, o material passa a conduzir corrente. Entretanto, o mesmo nãose passa no sentido oposto (PIERCE, 1972).

Este princípio de funcionamento é aplicado à todos os componentes eletrônicos fabri-cados, os quais usam do processo de acúmulo de cargas e de elétrons livres em sua camadade depleção para condução de corrente.

Page 44: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 43

2.5.1 Diodo Emissor de Luz LED

LED (Light Emitting Diode) é um diodo emissor de luz. Seu funcionamento é, emsuma, idêntico ao de um diodo semicondutor comum. No entanto, ao conduzir-se corrente,dado um potencial elétrico aplicado à barreira de potencial, o diodo emitirá luz. Paracada LED, há um espectro diferente de luz emitida, podendo conter um espectro visívelou não (WIKIPEDIA, 2017).

Figura 2.15 – Representação elétrica do LED Diodo Emissor de Luz

Fonte: Autor

Sua representação elétrica em circuitos é mostrada na figura 2.15. A figura 2.16representa tensões de polarização dos diodos emissores de luz, ao incrementar-se o nível detensão de um LED, dependendo de sua cor, passará a conduzir corrente e assim brilhará.Os valores de tensão aplicados a eles diferem-se pelo espectro de luz emitido do LED,contudo, permanecem em faixas menores de 5V.

Figura 2.16 – Curva representativa de Corrente I x V tensão de LEDS de diferentes cores

Fonte: (BRAGA, 2017)

Nota-se que ao passo do incremento da tensão de polarização direta, a corrente nãoaumenta linearmente. Portanto, podendo danificar e até queimar os dispositivos casonão haja um controle da corrente. Para tanto, faz-se o uso de um resistor em série paracontrole de corrente fluente.

Como base para explicação, toma-se o circuito da figura 2.17. Este circuito representaum circuito simples de ativação de um LED. Segundo Boylestad (2013), pode-se calcularsua corrente utilizando-se da lei das malhas no circuito, como é descrito na equação 2.1

Page 45: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 44

Figura 2.17 – Circuito série Resistor e LED

Fonte: Autor

V2 = VR1 + VD2

5V = I1 × 1k + 0, 7V

I1 = 4.31kΩ = 4, 3mA.

Adicionando-se um resistor em série, pode-se prever e calcular correntes passantes nocircuito. Assim, garante-se não somente o controle dela como também maior duraçãona vida útil do componente eletrônico. Conforme diz PIERCE (1972), deve-se garantirque os diodos tenham pelo menos 2 mA de corrente passante para garantir seu corretofuncionamento.

Figura 2.18 – Exemplos de LEDs comerciais

Fonte: (BRAGA, 2017)

2.5.2 Transistor de Junção Bipolar TBJ

Dentre os anos 1904 e 1947 o uso da válvula foi, sem dúvidas, muito grande e impor-tante. No entanto, no dia 23 de Dezembro de 1947 nos laboratórios da Bell Telephone

Page 46: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 45

Laboratóries, fora desenvolvido o primeiro transistor (BOYLESTAD, 2013). A partirdaí, tornaram-se de uso indispensável na eletrônica os transistores. Dividem-se basica-mente em dois tipo, os transistores FET (Field Effect Transistor) e BJT (Bipolar JunctionTransistor). Os transistores bipolares dividem-se em pnp ou npn, dependendo do tipo dedopagem feita. Seu esquema básico construtivo é mostrado na figura 2.19.

Figura 2.19 – Modelo construtivo de um transistor npn

Fonte: (BOYLESTAD, 2013)

"O termo bipolar se deve ao fato de que lacunas e elétrons participam do processo deinjeção no material com polarização oposta. Se apenas um portador é empregado (elétronou lacuna), o dispositivo é considerado unipolar"(BOYLESTAD, 2013).

Seu funcionamento dá-se pela polarização direta de uma parte do transistor e outrainversa. Portanto, acumula-se lacunas e elétrons na camada de depleção e gera-se fluxo decarga. Tal fluxo é o originador da corrente de circulação no coletor e emissor. No entanto,têm-se uma corrente resultante de base, que depende exclusivamente de propriedadesconstrutivas do transistor (PIERCE, 1972). A figura 2.20 representa o sentido de correntedo transistor npn e sua respectiva representação elétrica, usada em esquemáticos.

Transistores possuem três modos de operação distintos: Modo de corte; Modo de Satu-ração; Modo Ativo. Distinguem-se os modos de corte e saturação do modo ativo por seremutilizados em chaveamentos, já o modo ativo, para amplificação de sinais (REZENDE,2004).

2.5.2.1 Transistor Como Chave

Por SEDRA S.; SMITH (1996), o transistor pode operar em ambos modos de corte ousaturação com a mesma montagem de circuito. A montagem da figura 2.21, exemplificao transistor construído de forma a ser utilizado para funcionar como chave. Nota-se que

Page 47: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 46

Figura 2.20 – Sentido de corrente de um transistor bipolar e seu respectivo esquemáticoelétrico

Fonte: (BOYLESTAD, 2013)

existe uma fonte Vi alimentando a base do transistor, portanto, seu modo de operaçãodependerá apenas do valor fornecido pela fonte.

Figura 2.21 – Esquemático Elétrico de um transistor acionado como Chave

Fonte: (SEDRA S.; SMITH, 1996)

Região de Corte: Para Vi ≤ 0.5V , existirá uma corrente desprezível indo ao emissor,assim considera-o reversamente polarizado. A corrente que irá ao coletor também polariza-se reversamente, assim, entrando em corte. Operando neste modo, o transistor, terá ascorrentes ib, iE e ic iguais a zero e sua tensão Vc = Vcc, (SEDRA S.; SMITH, 1996).

Page 48: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 47

Para se ter uma corrente apreciável a atravessar da base ao emissor deve-se ter Vi ≥0, 7. Sua corrente de base pode ser calculada por

ib = VI−VBE

RB≈ VI−0.7

RB

Desta forma, segundo SEDRA S.; SMITH (1996), essa corrente de coletor é obtidaatravés da equação IB = IC

β, sendo β o ganho intrínseco ao transistor. Caso a corrente

de base seja aumentada além de um valor limite IB, a corrente de coletor aumentará ea tensão de coletor cairá à um valor abaixo da tensão base. Isto se manterá até que acorrente de coletor à base torne-se diretamente polarizada. Assim, o transistor estará emmodo de saturação. Para qualquer incremento da corrente de base, a corrente de coletorterá uma variação pequena, e sua tensão VCE torna-se quase zero (SEDRA S.; SMITH,1996).

Seu funcionamento de modo de corte não permite correntes passantes entre coletor eemissor. Para que isso ocorra, a tensão VBE do transistor deve conter um valor menorque o necessário para que se transmita corrente. Como explicitado no Datasheet docomponente, para uma tensão de VCEsat = 5 V o transistor usado neste experimentoBC550 produzirá uma corrente de pelo menos 100 mA.

2.5.3 Amplificador Operacional

Amplificadores Operacionais ou abreviadamente ditos (AMPOP), são, circuitos ele-trônicos com ganho muito elevado capazes de realizar operações matemáticas através daassociação elétrica, proporcionando a aplicabilidade eletrônica de operações matemáticascomo, soma, subtração, multiplicação, entre outras (BOYLESTAD, 2013).

Fundamentos Básicos de um AMPOP

Como explica (REZENDE, 2004), um amplificador operacional é um dispositivo comganho extremamente alto, nos primeiros amplificadores algo em torno de 10000, com im-pedância de entrada muito alta e baixa impedância de saída. Tais características fornecemao amplificador aplicabilidades distintas. Como mostrado na figura 2.22, possuí duas en-tradas, uma inversora e outa não inversora. Assim, ao trabalhar-se em malha aberta, ouseja, sem realimentação, sua saída será de mesmo sinal da diferença dos sinais de entradavezes seu ganho.

Vo = A× (V+ − V−) (2.1)

Entretanto, usa-se estes amplificadores não somente para amplificar ou fazer operaçõesbásicas de sinais, como também para isolar sinais ou tensões de referência. DenominadoBuffer ou seguidor de tensão, é largamente utilizado em eletrônica. Tal configuraçãofornece na saída realimentada do amplificador, a mesma tensão aplicada à sua entrada.

Page 49: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 48

Figura 2.22 – Esquemático de um aplificador operacional sem malha aberta

Fonte: (BOYLESTAD, 2013)

Por sua impedância extremamente alta de entrada, somente o sinal de tensão lido em suaentrada é replicado à saída.

Figura 2.23 – Circuito exemplo para aplicação de Buffer

Fonte: (SACCO, 2016)

A partir da figura 2.23, exemplifica-se seu funcionamento. Neste exemplo deseja-semedir o valor de tensão de uma bateria de 12V através de um divisor resistivo. Paraisso, utiliza-se de um Arduino UNO. Ao passo da chegada da tensão ao leitor ADC, lê-seum valor naturalmente entre 0 e 5V. No entanto, caso o Buffer não estivesse posicionadoentre o circuito e o conversor, correntes viriam do divisor de tensão para o Arduino, assim,podendo ocorrer fugas de corrente oriundas do divisor de tensão.

Segundo PIERCE (1972), a tensão de entrada do amplificador, tendo-se realimentaçãonegativa, é igual à sua tensão de saída pois há um curto-circuito virtual entre entradainversora e não inversora. Isto é, havendo-se um curto-circuito entre a saída e sua entradainversora resultaria em uma impedância muito baixa neste ramo, em contrapartida, nãoincluindo-se resistência na entrada não inversora também garantiria impedância baixa,resultando em ganho adicional igual a zero e ganho final igual a um.

Assim, o valor lido pelo conversor ADC é de 3,75V. Este valor fora calculado utilizando-se um simples divisor resistivo, dado por V2 = 12V × 1MΩ

1MΩ+2,2MΩ = 3,75V. Embora hajamuitas utilidades e aplicabilidades para este amplificador, vale frizar seu apecto de segui-dor de tensão pois será utilizado neste experimento.

Page 50: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 49

2.6 Servo-Motor

Como esclarecido por SEIXAS (2012), máquinas elétricas são, dispositivos os quaisfazem a conversão eletromecânica. Dentre eles, destacam-se motores elétricos, por trans-formarem energia elétrica em mecânica, e geradores elétricos por fazerem o oposto.

Distinguem-se basicamente em três tipos distintos: Máquinas assíncronas, cujo funci-onamento não é sincronizado com a rede de energia elétrica, máquinas síncronas e máqui-nas de coletor. Embora apresentem comportamento distinto, seus aspectos construtivosassemelham-se bastante entre si. No entanto, suas aplicações são bastante variadas, prin-cipalmente quando se diz respeito à máquinas de coletor, pois conseguem operar à velo-cidades bastante distintas, proporcionando assim, mais versatilidade em seu uso emboramais caras (SEIXAS, 2012).

Ao passo da evolução tecnológica e o crescimento das demais necessidades, cresceu-se também a necessidade de precisão para certas atividades, estas que por vezes seriamimprescindíveis até para questões de vida. Durante a segunda guerra mundia, século XIX,desenvolveu-se um mecanismo preciso para utilização em controladores de fogo, os quaisajustavam o ângulo de tiro e a proporção ar combustível (MELONI, 2014).

Por apresentar um desempenho incrível quanto a sua precisão e confiabilidade, Servo-motores passaram a ser amplamente utilizados em diversas áreas do conhecimento, nãoobstante, na robótica e engenharias. Existem diversos tipos de Servo-motores disponí-veis no mercado, dentre eles, Servo-motor de corrente alternada, síncrono de correntealternada, síncrono de corrente contínua (aqui utilizado), de passo, etc (MATOS, 2012).

Com as melhorias e alterações feitas nos Servo-motores, pôde-se trabalhar com eles emcorrente contínua CC. Consequentemente, diversificou-se seu uso no âmbito da eletrônica.Dentre os modelos de motores de corrente contínua destaca-se o modelo Servo SG90 dafigura 2.24 , utilizado neste experimento, por seu tamanho compacto e preço acessível.

2.6.1 Funcionamento do Servo-Motor

Um servo CC é composto por quatro componentes principais: motor de corrente con-tínua, um dispositivo de detecção de posição, um conjunto de engrenagens e um circuitode controle. A figura 2.25 mostra internamente a composição de servomotores RC, ondeo motor é usado para acionar cargas precisamente.

No tipo Servo-Motor CC, uma tensão de referência é ajustada de modo a atingir o valorcorrespondente em sua saída. Esta tensão é controlada por um potenciômetro (resistênciamecanicamente ajustável), um gerador de largura de pulso (PWM), usado para conversorde tensão, ou também por temporizadores, variando dependendo do modelo do Servo(SANTOS, 2007). A tensão controlada pelo potenciômetro é enviada para a realimentaçãodo circuito interno como tensão de erro. A figura 2.26 ilustra o diagrama de controle deum servo.

Page 51: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 50

Figura 2.24 – Figura representativa de um Servo-Motor SG90

Fonte: (DATASHEET, 2014)

Figura 2.25 – Figura representativa dos componentes de um Servo-motor

Fonte: (TOWERPRO, 2014)

Figura 2.26 – Diagrama de blocos do sistema de um Servo-motor

Fonte: (TOWERPRO, 2014)

No controle digital, microprocessador ou microcontrolador são utilizados para gerar ospulsos de PWM para produzir sinais de controle mais precisos. Como referenciado no ma-

Page 52: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 51

nual do próprio produto (DATASHEET, 2014), o motor possuí as seguintes características:

• Peso : 9 g

• Dimensões 22,2 x 11,8 x 31 mm aproximadamente

• Toque máximo 1,8 kgf.cm

• Velocidade de operação 0,1s/60 graus

• Tensão de operação do PWM 4,8 ⇒ 5 V

• Alcance térmico 0 ⇒ 55oC

Como exemplificado por SANTOS (2007) e visto também no Datasheet do Servo-motor, o circuito de acionamento do motor funciona à uma frequência de aproximada-mente 50 Hz, ou seja, um período de 20 ms. O sinal de PWM gerado pelo microcontroladordeve compreender entre a faixa de 1 ms (5% do ciclo ativo) e 2 ms (10% do ciclo ativo).Deste modo, o circuito de acionamento do motor responderá, alterando a rotação do mo-tor. Nota-se através da figura 2.27, que dependendo-se do valor de largura de pulso geradapelo PWM, o motor responderá movendo-se para determinado ângulo.

Figura 2.27 – Representação do posicionamento do motor Servo em relação à larguras depulso

Fonte: (SANTOS, 2007)

Page 53: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

3 Desenvolvimento

3.1 Programação e Desenvolvimento

Esta sessão do trabalho divide-se em algumas partes distintas. Cada parte representauma parcela da construção do protótipo final da Garra Robótica de três eixos movido acomunicação sem fio. Nesta sessão serão trabalhados pontos previamente apresentados emsua introdução teórica como, programação e circuitos eletrônicos. As sessões são listadasabaixo correspondentes com sua ordem de execução ao longo do experimento. Assim, elasse adicionarão conforme sejam executadas, somando-se num resultado final, o protótipo.

• Parte I - Desenvolvimento das funções de movimento do Servo-Motor.

• Parte II - Desenvolvimento da lógica de Operação.

• Parte III - Criação de uma placa de acionamento dos Servo-Motores.

• Parte IV - Elaboração da comunicação entre Controle e Garra.

• Parte V - Acabamentos e considerações.

3.1.1 Materiais Utilizados

Para a construção da garra robótica e de seu controlador, foi necessário a utilizaçãode vários componentes. Após a construção do protótipo Inicial, fazendo o uso de botõese componentes separados, substituiu-se o esquemático do controlador por um móduloJoystick da Funduino. Entretanto, será mostrado como faze-lo passo a passo sem estemódulo, utilizando-se apenas de componentes separados.

Materiais

• 2 Placas de desenvolvimento Arduino UNO

• 2 Módulos do Rádio NRF24L01

• 5 Push Buttons

• 5 LEDs um azul, um amarelo e três verdes

• 1 Módulo Joystick

• 3 Baterias 9V

• 3 Servo-Motor sg90

Page 54: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 53

• 3 Transistores BC550

• 1 AmpOp LM324 16 pinos

• 13 Resistores; 10x1kΩ; 3x220Ω

• 2 Capacitores 10µF

• Cabos Jumper, usb e alimentadores para Baterias.

3.2 Parte I - Desenvolvimento das Funções de Movi-mento do Servo-Motor

De modo a comprovar-se o funcionamento do sistema de um Servo-motor SG90 funci-onaria como descrito, montou-se uma pequena estrutura utilizando-se um potenciômetroexterno, uma plataforma de desenvolvimento Arduino e um osciloscópio, a fim de se mediros valores gerados pelo PWM.

Para a programação, utilizou-se da plataforma de desenvolvimento de firmware Ar-duino IDE. Inicialmente montou-se uma estrutura rápida com o Arduino e o potenciômetrocomo mostrado na figura 3.1.

Figura 3.1 – Ligações de um Servo, potenciômetro no Arduino UNO

Fonte: AUTOR

Após sua montagem, fez-se o código da figura 3.2 para utilizar funções fornecidas dabiblioteca (Servo.h). Tal código tomou em conta os valores necessários obtidos do poten-

Page 55: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 54

ciômetro, posteriormente convertidos em ângulo entre 0 e 180 graus e por fim enviadosao motor através da função write. Variou-se a posição do potenciômetro em três pontosdistintos para se obter suas distintas larguras de pulso e perceber suas diferenças.

Figura 3.2 – Código gerado para comprovação de larguras de pulso de um Servo-motor

Fonte: AUTOR

Conectando o pino D2 a um osciloscópio, aferiu-se as larguras de pulso geradas peloArduino para posições extrema do potenciômetro, 0 e 5V. Através das figuras 3.3 e 3.4, vê-se a resposta do sistema para diferentes valores de ângulo, controlados pelo potenciômetro,escritos no motor. Na figura 3.3 o potenciômetro encontra-se na posição onde o valor detensão enviado para a porta do conversor analógico digital é zero. O sistema lê este valor,muda-o para um valor de ângulo e escreve-o no motor gerando um PWM de 5% de largurade pulso.

Para a figura 3.4, o potenciômetro é posicionado na posição onde o leitor A/D lê 5V,ou seja, 1023. Este valor é lido, processado, passado para um valor de 180 graus e escritono motor. A figura 3.4 mostra a largura de pulso que o Arduino escreve no motor paraque ele se posicione em 180 graus.

E posicionando o potenciômetro na posição medial, o sistema lê este valor de tensão,o transforma para um número entre 0 e 1023, converte-o para ângulo e escreve no motor.A figura 3.5 mostra a largura de pulso do PWM gerado para um valor de 823 lido doconverso analógico digital.

Page 56: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 55

Figura 3.3 – Largura de pulso obtida com leitura 0 do conversor A/D

Fonte: AUTOR

Figura 3.4 – Largura de pulso obtida com leitura 1023 do conversor A/D

Fonte: AUTOR

Retrata-se o comportamento do PWM gerado pelo microcontrolador. Vê-se que paraambos casos a frequência e operação é de 50Hz como explicado na fundamentação teórica.Contempla-se também que as ondas de PWM geradas vão de um pouco menos de 1ms ouseja 5% da largura de pulso à 2, 340ms (10%) da largura de pulso, concordando-se com ateoria apresentada.

De posse destas informações, pode-se de forma criativa, alterar e modificar funçõesmatemáticas ou até mesmo funções já pré feitas, para que se crie diferentes tipos demovimento e que se consiga trabalhar com melhor efetividade no uso destes motoreselétricos.

Page 57: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 56

Figura 3.5 – Largura de pulso obtida com leitra aproximada de 823 do conversor A/D

Fonte: AUTOR

Função Livre

Tendo-se conhecimento de seu funcionamento, sabe-se que os Servo-motores variamseu ângulo conforme o valor da largura de pulso do PWM recebido por ele. Desta forma,pode-se abranger ângulos entre 0 e 180 graus.

Contudo, necessita-se ter algo que consiga variar esta largura de pulso, para tanto, usa-se de uma plataforma de desenvolvimento Arduino UNO. Capaz de gerar PWM output,seu microcontrolador deve ser programado de forma a fornecer tal largura de pulso.

Sabe-se que o Arduino IDE disponibiliza bibliotecas com diversas funções prontas.Portanto, utilizar-se-á a biblioteca Servo.h. Conforme já mostrado na figura 3.2, pode-segerar esta variação de largura de pulso através da função write.

Para fazer-se um controlador interativo, se usará o módulo Joystick mostrado na figura3.6. Este módulo possuí dois eixos x e y. Cada eixo fornece às portas conversoras A/D doArduino valores entre 0 e 1023. Isto se dá pelo fato de estes conversores serem conversoresde 10 bits, neste projeto se utilizará as portas A0 para o eixo x e A1 para o eixo y, suamontagem pode ser vista na figura abaixo.

Figura 3.6 – Módulo Joystick

Fonte: (LELONG, 2017)

Page 58: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 57

Figura 3.7 – Módulo analogicomotor

Fonte: Autor

Com isto pode-se por ora gerar dados pertencentes à dois eixos pertencentes ao projeto.Contudo, ao executar-se o código da figura 3.2 nota-se que o motor move-se conforme oJoystick é movido, porém não fica parado em uma posição diferente da central ao soltar-se o botão analógico. De modo a conseguir-se posicionar o motor em alguma posição edeixa-lo estável nela, elaborou-se a seguinte lógica de programa.

Para entendê-la melhor, deve-se saber como a função write da biblioteca Servo.h fun-ciona. Ela recebe valores inteiros entre 0 e 180. Assim, ao recebê-lo gera uma largurade pulso correspondente à este valor e posiciona o motor neste ângulo. Entretanto, osvalores lidos dos conversores analógico digital são entre 0 e 1023. Para torna-los entre 0e 180 usa-se a função map, que nada mais é que uma regra de três computacional.

De posse destas informações avalia-se uma solução alternativa, o desenvolvimento deuma função de lógica que utilizará a função write da biblioteca Servo.h.

A figura 3.8 representa a área de valores do módulo Joystick juntamente com suarespectiva posição em seu eixo de posicionamento. Já nos motores, o motor do eixo xmoveria-se para a esquerda quando x aproximasse-se de zero e o do eixo y moveria-separa baixo, porém, caso fosse desejado deixá-los nestas posições, ao soltar-se o botão,retornariam para a posição inicial.

Imagine que P1, P2, P3, P4, P5 e P6 representem valores, sendo P5 = 0 e P6 = 1.023.Estes valores são fronteiras de valores que o conversor A/D receberá. Suponha-se que ovalor recebido não seja diretamente passado para a função map e nem para o movimento

Page 59: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 58

Figura 3.8 – Representação de Regiões de dados do módulo Joystick

Fonte: AUTOR

direto write do motor. Esses valores agora farão parte de zonas de seleção de ângulo. Nãomais necessitar-se-á da função map.

Para isso cria-se uma variável a fim de se armazenar o valor do ângulo obtido doprocesso de zoneamento. Esta variável se chamará pont. Para que se tenha uma sub-rotina eficiente se usará ponteiros para passagem de valores. Esta variável pont sofreráalterações dentro do programa dependendo dos valores lidos pelo leitor A/D. Escolheu-seportanto, a zona marrom entre P1 e P2, será a zona que não alterará o valor dos ângulos,a zona amarela entre P3 P1 e P2 P4 será a zona que aumentará ou diminuirá o ângulode forma menos veloz, por fim, as zonas remanescentes entre P5 P3 e P6 P4 aumentarãoou diminuirão o valor do ângulo dependendo do valor lido.

Após a alteração do valor do ângulo, a função passará por ponteiro o valor atual doângulo à variável, e por fim o programa executará a função escrevendo o valor atual doângulo no motor. Os valores escolhidos para as fronteiras foram P1 = 480; P2 = 544; P3= 220; P4 = 804; P5 = 0 e P6 = 1.023 A função pronta é mostrada a seguir:

1 void Movimento_Servo (Servo *estrutura , int *pont , int *portax

, uint8_t velo)

2

Page 60: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 59

3 int val;

4 val = * portax ;

5 if (( val > 220) && (val <= 480)) //P1 = 480 e P3 = 220

6

7 if (* pont <= 0) // Trecho Amarelo

8

9 *pont = 0;

10

11 else

12 *pont = *pont - (21/ velo);

13

14

15 if (( val >= 0) && (val <= 220)) //P3 = 220 e P5 = 0

16

17 if (* pont <= 0) // Trecho Azul

18

19 *pont = 0;

20

21 else

22

23 *pont = *pont - (35/ velo);

24

25

26 if (( val >= 544) && (val < 804)) //P2 = 544 e P4 = 804

27

28 if (* pont >= 180) // Trecho amarelo

29

30 *pont = 180;

31

32 else

33

34 *pont = *pont + (21/ velo);

35

36

37 if (( val >= 804) && (val <= 1023)) //P4 = 804 e P5 = 1023

38

39 if (* pont >= 180) // Trecho Azul

40

41 *pont = 180;

42

43 else

Page 61: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 60

44

45 *pont = *pont + (35/ velo);

46

47

48 else

49

50 *pont = *pont + 0; // Trecho Marrom

51

52 estrutura ->write (* pont);

53

Esta função executa e compara os valores lidos do conversor A/D, caso estejam dentrode alguma dessa áreas incrementa ou decrementa o valor o ângulo. Caso este valor chegueem zero e por algum motivo vá para negativo, a função compara e vê se o valor for menorou igual a zero, passa o valor zero à variável pont. Isto vale também para valores maioresque 180, assim evita-se que o motor trave por erros de valores passados.

É interessante notar-se que, esta função já acionará o Servo-Motor, pois contém umavariável da classe Servo passada por parâmetro. Esta variável funciona como uma estru-tura de dados, a qual também possuí funções. Passando-a por parâmetro, tem-se acessoà todas elas, inclusive a função de escrita de ângulo no motor write.

Vê-se também a existência de uma variável chamada velo. Esta variável é um con-trole de velocidade do incremento de ângulos, quanto maior ela for, menor será o ânguloadicionado ou retirado. Por fim, além do controle preciso dos motores, agora tem-se ocontrole de velocidade de operação deles.

Função Travada ao Analógico

Para se poder ter mais de uma opção de movimento, pensou-se em uma alternânciade modos. O usuário poderá escolher tanto uma função livre de movimentos, quanto umafunção que seguirá a posição do Joystick. Pode-se pensar em utilizar somente as funçõesassociadas map e write para o motor, porém, o motor se moverá muito rápido, sendodifícil seu controle.

Para facilitar seu manuseio criou-se uma função de coeficiente angular. Tal funçãobaseia-se no princípio matemático de uma reta. É calculado um coeficiente angular quenesta função significa a velocidade com que a os valores crescerão ou decrescerão.

Sua lógica é baseada no valor de sua posição atual, e o valor recebido do conversorA/D. Pode-se fazer a seguinte analogia com a cinemática: Seu ponto atual S0, seu pontofinal de chegada S, cada processo da função finalizado t e consequentemente a velocidadecom que se se move V . Cada componente desta equação pode relacionar-se com a funçãode movimento desejada. Sua posição inicial S0 será chamada de valor_atual, a posiçãofinal S será chamada de val, a velocidade é chamada de delta e o tempo seria uma medida

Page 62: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 61

omitida, entretanto, existente. Pois ela é dependente apenas do clock da operação. Assim,monta-se o seguinte corpo de função:

1 void Controle_Alternativo (Servo *motor , int * valor_atual , int

* portax )

2

3 int val = * portax ;

4 int delta = val -* valor_atual ;

5 if(delta != 0) // Compara caso delta seja diferente de zero

6

7 * valor_atual = * valor_atual + (delta /8); // soma o valor de

delta ao atual

8

9 motor ->write(map (* valor_atual , 0, 1023 , 0, 180)); // escreve no

motor atraves da funcao map

10

Para testar e verificar a função de teste, copie e cole o código abaixo em seu ArduinoIDE juntamente com as funções supracitadas, e faça a montagem da figura 3.7.

1 # include <Servo.h> // Biblioteca do motor

2

3 Servo motor;

4 int LEITURA_ADC , valores [2];

5 int eix = A0;

6 velocidade = 5;

7 void setup

8

9 motor. attach (2);

10

11

12 void loop

13

14 LEITURA_ADC = analogRead (eix); //Le o joystick

15 Movimento_Servo (& motor , & valores [0], & LEITURAS_ADC , velocidade )

; // primeira funcao

16 // Controle_Alternativo (& motor ,& valores [1] ,& LEITURAS_ADC );

Funcao posterior a ser testada

17 // para trocá -las , comente e descomente -as

18 delay (30);

19

Page 63: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 62

Função de Movimento Garra

Prontas as funções de movimento dos motores, deve-se implementar uma função demovimento de uma garra. A princípio, deseja-se controla-la por pressionamento de botões.Assim, ao pressionar e segurar um botão, a garra abrirá, caso seja outo botão, fechará.Portanto, este movimento de abrir e fechar será simplesmente feito pelo valor lido econvertido vindo do controle. Portanto, segue-se a função de movimento, cujos valorescompreendem entre 0 e 1.023.

1 void movimento_garra (Servo *motor , int *val , int * portag )

2

3

4 *val = * portag ;

5 *val = map (*val , 0, 1023 , 0, 180);

6 motor ->write (* val);

7

3.3 Parte II - Desenvolvimento da Lógica de Opera-ção

Um controlador deve ser o dispositivo o qual recebe dados e operações do usuário,processa-as e as enviar ao executor. É interessante notar que o envio direto de informaçõese a execução continua do motor dispendem de muita energia elétrica. Assim, cria-se modosonde os motores seriam desativados torna-se uma boa opção.

Tendo em vista a utilização dos dois modos de operação já feitos, tem-se que criaruma maneira de alterná-los via usuário. Uma boa maneira é criando estados de operação.Um estado de operação define o que ocorrerá caso o sistema encontre-se naquele estado.Um exemplo simples disto é a função pause de jogos eletrônicos. Quando este estado estáativo, o usuário tem acesso somente às opções alocadas dentre dele, portanto, o decorrerdo jogo fica à espera. Caso o usuário retorne ao jogo, trocando-se o estado da máquina,ele tem acesso novamente à suas operações.

Compreendendo-se o conceito de máquina de estados, cria-se a lógica geral do sistema,a qual se subdividirá entre controlador e garra (receptor).

Utiliza-se botões para a chamada troca de estados de uma máquina de estados, bo-tões estes que ao serem pressionados executam alguma função, normalmente eles são osresponsáveis por fazer a troca dos estados.

Page 64: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 63

3.3.0.1 Funcionamento dos Botões

Divide-se o sistema controlado por três botões de operação. Cada botão influirá emalguma parte do sistema geral. Para tanto, escolheu-se as seguintes função para cadabotão: Desligamento e Ligamento dos Motores; Troca de modo de operação; Troca develocidade de operação. Como a figura 3.9 mostra, os botões são posicionados nos pinos7, 6 e 4 do Arduino.

Figura 3.9 – Montagem esquemática para uso dos botões

Fonte: AUTOR

Para que se consiga reconhecer os botões apertados, se fará o uso das funções dedetecção de borda previamente explanadas no desenvolvimento experimental. Assim, aoreconhecer a borda de determinado botão, o sistema executará alguma ação.

Se criará dois estados, modo_economia, modos_motor, ambos acionados porbotões distintos. O outro botão será usado para incrementar a variável velocidade. Ocódigo à seguir mostra como ficará configurado as ações dos botões.

1 typedef enum

2

3 loose = 0,

4 push

5 Typedef_estados ;

6 typedef struct

Page 65: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 64

7

8 Typedef_estados ant;

9 Typedef_estados atu;

10

11 Tipo_onda ;

12 BOT [5] = 2 ,3 ,4 ,5 ,6

13 Tipo_onda BORDAS [3];

14 int modo_economia = 0, modos_motor = 0;

15 int velocidade = 2;

16 void setup

17

18 inicia_detecta (& BORDAS [0]); inicia_detecta (& BORDAS [1]);

inicia_detecta (& BORDAS [2]);

19

20

21 void loop

22

23 if( Detecta_Borda (BOT [4], & BORDAS [1]) == true)

24

25 modo_economia = modo_economia ^1; //Usa -se a porta NOT

neste Byte

26

27

28 if( modo_economia == 1) //A cada pressionamento do botao ,

inverte -se o valor de zero a 1

29 // E vice versa

30 if( Detecta_Borda (BOT [3], & BORDAS [2]) == true)

31

32 if( modos_motor == 0)

33

34 modos_motor = 1;

35

36 else modos_motor = 0;

37

38 Controle_Velocidade (BOT [0], & BORDAS [0], & velocidade );

39

40

41

42 void Controle_Velocidade (int Push , Tipo_onda *onda ,

uint8_t *velo)

43

Page 66: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 65

44 if( Detecta_Borda (Push , onda)) // Esta funcao , a cada vez que o

botao e pressionado

45 // Incrementa em tres sua contagem , ao chegar ao valor 11

46 if(*velo >=9) //o proximo pressionamento o mudara para 2

47

48 *velo = 2;

49

50 else

51 *velo =* velo +3;

52

53

54

Configurando-se os botões, pode-se trabalhar com os estados da máquina. Cada botãorepresenta a mudança do valor de uma variável específica.

Através do diagrama de estados da figura 3.10, compreende-se o funcionamento dosistema como um todo. Vislumbra-se não detalhar plenamente todas as ações envolvidasem cada estado, mas simplesmente mostrar o funcionamento pleno. Funções e códigosestão por ora omitidos dentro destes estados. A princípio, os botões são todos indepen-dentes, isto é, pode-se alterar qualquer parâmetro de velocidade, modo_economia emodos_motor independentemente do estado atual da máquina.

Figura 3.10 – Diagrama de estados Geral do Sistema

Fonte: AUTOR

Contudo, deve-se entender algumas notações usadas no diagrama de fluxo. Omodo_economia

Page 67: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 66

está ativado, ou seja, sinaliza o desligamento dos motores e LEDs, quando seu valor é iguala zero, caso contrário significa que o sistema está operando. Para o caso dos modos deoperação dos motores, escolhidos pelos valores da variável modos_motor, quando seuvalor é igual a um, ativa-se o modo de operação de controlador alternado, caso contrárioutiliza o de movimentação livre. Seu funcionamento lógico é extremamente simples, aopressionar-se um botão de mudança de modos, o valor contido nele sofrerá uma opera-ção lógica chamada de not, ou seja, caso seja 1 se torna 0, caso seja 0 torna-se 1. Jáa velocidade tem um funcionamento diferente, ela inicia-se com valor de duas unidades,ao ser pressionado, o botão compara se este valor é menor ou igual a nove, se for eleincrementará em três unidades o valor atual da variável, caso contrário voltará a ser dois.

Para a sinalização dos estados, usar-se-á dois LEDS de cores diferentes. O sistemaestando desligado, ambos LEDS desligarão. Caso esteja no modo de motor Livre, o sistemaativará o LED amarelo, piscando-o conforme a velocidade de operação do sistema. E porfim, caso estena no modo travado, o LED azul acenderá.

3.3.0.2 Implementação dos LEDS

Para o acionamento dos LEDS, deve-se associar um resistor em série à eles. Nesteprojeto, a fim de se viabilizar a identificação de estados da máquina, usar-se-á LEDS.Inicialmente, deve-se monta-los como mostra a figura 3.11.

Figura 3.11 – Montagem básica Arduino e LEDS

Fonte: AUTOR

Após montados, usa-se o código mostrado a seguir para setar o modo dos pinos ondeestão alocados, e por fim através do digital output, escolher para que eles acendam ou

Page 68: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 67

apaguem. No entanto, quer-se que um LED pisque ao mesmo tempo que se executeoutras ações. Para que o processamento não seja travado por funções bloqueantes, deve-se criar uma função de delay não bloqueante, e através dela criar a função de piscarLED.

Para isso usa-se a função millis(). Esta função lê um registrador de tempo imerso noprocessador. Por ser diretamente ligada ao Hardware é não bloqueante, permitindo queao mesmo tempo que ela execute, possa-se executar outras ações na máquina.

Para tanto, cria-se um código o qual compara os valores de uma variável que armazenao tempo anteriormente medido, e a função millis(), caso este tempo alcance determinadovalor, inverter-se-á a tensão de saída para os LEDS, fazendo com que pisquem. O corpoda função é apresentada a seguir juntamente com a declaração dos LEDS no ArduinoIDE.

1 LEDS [2] = 5 ,6; vetor LEDS pinos 5 e 6

2 uint16_t tempoAtual , tempoInicial = 0;

3 void setup

4

5 pinMode (LEDS [0], OUTPUT ); pinMode (LEDS [0], OUTPUT );

6

7 void loop

8

9 pisca_led (& tempoInicial , 120, LED [0]); pisca_led (&

tempoInicial , 240, LED [1]);

10

11 // Funcao pisca LED

12 void pisca_led ( uint16_t * tempoInicial , uint16_t tempo ,

uint8_t pin)

13

14 tempoAtual = millis ();

15 if ( tempoAtual - * tempoInicial >= tempo)

16

17 // Sala o ultimo tempo que o LED piscou

18 * tempoInicial = tempoAtual ;

19 digitalWrite (pin , digitalRead (pin)^1);

20

21

Ao executar-se tal função, nota-se que ambos LEDS piscam de forma alternada e comvelocidades diferentes, sem a interferência de um no outro.

Page 69: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 68

3.4 Parte III - Criação de uma Placa de Acionamentodos Servo-Motores

Como já visto, motores de forma geral consomem muita energia para seu funciona-mento. Assim, ao liga-los diretamente à alimentação de um microcontrolador, como porexemplo, Atmega328p do Arduino UNO, estes exigirão muita corrente elétrica, podendocomprometer o funcionamento do sistema e até queimá-lo. Tendo em vista a solução desteproblema, deve-se isolá-los de forma a serem alimentados diretamente com uma bateria.

Entretanto, mesmo que o motores não estejam ativados pelo PWM, só de estaremligados demandam energia. Como forma de solução à este problema, usar-se-á o princípiode chaveamento de transistores para sua alimentação.

Este princípio usa os modos de corte e saturação dos transistores para fornecer correntede coletor ao sistema, passando por uma carga resistiva, se terá queda de tensão com valorpróximo ao da alimentação. Para este caso se usará baterias de 9V. Conforme o estudofeito por Zamaia (2016), estes Servo-Motores necessitam de tensão de alimentação entre4 V e 5 V, assim, trabalhará numa faixa segura considerando-se a queda de tensão docoletor ao emissor do transistor.

Através do modo de operação do nosso sistema de estados modo_economia, aoestar ativo, não emitirá sinais de PWM ao motores. Agora, pretende-se de alguma formachavear os transistores utilizando-se sinais oriundos do controlador. Para tanto, ao ativaro modo de economia sinais de digital output serão enviados de forma a deixar o transistorem modo de corte.

Por se tratar do uso de três motores, se usará três pinos digitais. Ao enviar sinal HIGHem sua saída, essa tensão de 5V entrará na base do transistor e assim fará com que odispositivo opere em saturação, conduzindo corrente. Caso contrário, seu sinal emitidoserá de zero volts, fazendo com que o dispositivo corte a condução de corrente.

Por fim, deseja-se também sinalizar que os transistores realmente estejam desativadose também isolar a saída digital do microcontrolador ao transistor. Para isto, usa-se LEDSpara a sinalização e o Amplificador Operacional como Buffer para que se isole as correntesvindas da placa às que vão à base do transistor.

É interessante dizer que, por possuírem uma limitação de corrente de saída de 20mA,não se usará resistores na saída do amplificador à entrada da base do transistor, de modoa induzir esta corrente ao limite. Contudo, este método força o amplificador operacionala conduzir correntes máximas enquanto em saturação, podendo prejudicar o sistema.

Assim, montou-se o esquemático elétrico básico deste circuito, o qual é mostrado nafigura a seguir:

Ao entrar 5V vindo da saída da porta digital do Arduino, o potencial na porta deentrada do AmpOp será de 5V. Consequentemente, o LED acenderá, e a tensão de 5Vserá aplicada à base do transistor. Assim, entrará em modo saturação conduzindo corrente

Page 70: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 69

Figura 3.12 – Esqumático Elétrico do circuito de acionamento do Motor

Fonte: AUTOR

no emissor passando pelo resistor de 220Ω gerando uma tensão elétrica, a qual será a usadapara referência do motor.

3.5 Parte IV - Elaboração da Comunicação ControleGarra

Terminadas as partes prévias de desenvolvimento, deve-se elaborar um protocolo decomunicação entre o controle (transmissor de dados) e a garra (receptor de dados). Con-tudo, vislumbrando-se a eficiência energética e evitar a transmissão de dados redundantes,faz-se necessário um trabalho mais aprofundado em relação ao dados adquiridos pelo con-trole.

Para envio de dados, necessitou-se avaliar quais aquisições seriam importantes aosistema. Como proposto anteriormente, nosso controle receberia a leitura de dados de trêsconversores distintos, o valor da variável velocidade de operação e o valor das variáveisdos modos de controle, totalizando cinco.

Com a finalidade de organização destas, criou-se uma estrutura de dados chamadaestruturaDadosRF, contendo todas informações pertinentes ao sistema. Adicionalmente,criou-se dentro desta estrutura, uma variável de controle de fluxo que será explicadaposteriormente. O formato da estrutura é mostrado a seguir:

1 typedef struct

2

3 boolean pedido ;

Page 71: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 70

4 uint16_t valores_adc [3] // Todas as variaveis contidas nesta

struct sao necessarias para que as

5 uint8_t velocidade = 2; // funcoes feitas neste codigo operem

de maneira correta . Assim

6 boolean modo_economia = 0; // VELOCIDADE INICIAL INDICADA EM 2

7 uint8_t modos_motor = 0;

8 estruturaDadosRF ;

9

10 // Variaveis a serem enviadas

11 estruturaDadosRF meusDados , dadosEnviados , meusDados_ant ;

Inicialmente pensou-se no envio intermitente de dados do controlador para a garra.Entretanto, caso não houvesse alteração dos dados pelo usuário, o controlador continuariaa enviar dados desnecessariamente. Os conversores analógico digitais utilizados, mesmoque não variando-se a posição do analógico manualmente, os valores lidos pelos conversoreseram inconstantes, ou seja, variavam em algumas unidades sem que se ordenasse isto.

Desta forma, elaborou-se uma função de histerese para este controle. Os valores lidospelo conversor eram comparados com os valores antigos lidos, caso houvesse uma variaçãomaior que duas unidades, esses novos valores lidos seriam assumidos pelas variáveis dedados do sistema. Este efeito fez com que os dados flutuantes gerados pela incerteza deaferências fossem eliminados e só se alteraria os dados caso realmente houvesse alteraçõesreais, causadas pelo usuário.

A função resultante é exemplificada a seguir. Vale citar que quanto maior a faixa dehisterese colocada, menos sensível o sistema ficará. Portanto, escolheu-se valores de +-2em relação ao anterior.

1 void histerese (void)

2

3 if(( analogRead ( CONVERSORES [0]) >= meusDados_ant . valores_adc

[0] -2) &&( analogRead ( CONVERSORES [0]) <= meusDados_ant .

valores_adc [0]+2) )

4

5 meusDados . valores_adc [0] = meusDados_ant . valores_adc [0]+0;

6

7 else meusDados . valores_adc [0] = analogRead ( CONVERSORES [0]) ;

8

9 if(( analogRead ( CONVERSORES [1]) >= meusDados_ant . valores_adc

[1] -2) &&( analogRead ( CONVERSORES [1]) <= meusDados_ant .

valores_adc [1]+2) )

10

11 meusDados . valores_adc [1] = meusDados_ant . valores_adc [1]+0;

12

Page 72: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 71

13 else meusDados . valores_adc [1] = analogRead ( CONVERSORES [1]) ;

14

15 meusDados . valores_adc [2] = leitura_botao (& meusDados .

valores_adc [2]);

16

Ao passo do controle de variáveis já feito, cria-se então um enumerate para controlaro estado de envio de dados. Caso haja efetivamente alteração nos dados pelo usuário, osistema comparará o valor das variáveis antigas com os atuais, confirmando isto, mudará oestado de envio do rádio de desligado para ligado, assim, fazendo o envio das informações.

3.5.1 Protocolo Controle Garra

Sabendo-se da necessidade de comunicação e sincronismo por parte da garra e docontrole, deve-se elaborar algum tipo se sequência de comunicação. Para este projeto,pensou-se e executou-se diversos tipos de protocolo, sendo a maioria bem sucedido. Ini-cialmente, quis-se deixar o controlador como emissor somente e a garra como receptor.

Entretanto, caso perdesse-se o sincronismo o controlador travava, necessitando-se doreboot do sistema. Vindo como solução a este infortúnio, pensou-se em trabalhar comambos os rádio de modo receptor e emissor. Assim, ao passo do uso de uma variável decontrole boolean pedido fez-se a seguinte lógica.

A garra executará as funções de movimento dos motores, portanto ela é que sempre de-cidirá se precisa ou não de mais dados. O rádio NRF24L01 não funciona com comunicaçãofull duplex, isto é, não consegue simultaneamente transmitir e receber informações. As-sim, ao início do processamento da execução, a garra lerá os dados previamente enviadosao sistema, os executará e só ao fim de seu loop fará o pedido de mais dados.

Deste modo, o sistema é dependente somente do desejo da garra. Este método nãoé muito eficiente, no entanto, como já fez-se o controle severo de dados adquiridos, casofizesse-se um protocolo mais severo de comunicação, se enviaria poucos dados.

Já o controle, trabalha em dois estados distintos: Envio de dados; Espera do pedidode envio. Em outras palavras, ele só enviará dados caso receba o pedido da garra. Casocontrário, aguardará este pedido chegar enquanto adquire e processa mais dados.

Visando uma melhor compreensão desta lógica, fez-se a seguinte ilustração da figura3.13.

A variável boolean pedido é iniciada em true, deste modo, a garra recebe os primeirosdados ao início do processo. Assim, após seu envio o controle muda automaticamente ovalor desta variável para false. Enquanto isto, a garra processa os dados e faz o movimentodos motores. Após o término da execução, pede novamente dados ao controle alterando-seo valor da variável boolean pedido para true. Este ciclo executa-se intermitentemente.

Page 73: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 72

Figura 3.13 – Diagrama de Fluxo do protocólo de transferência de dados do Controle àGarra

Fonte: AUTOR

3.5.2 Montagem do Controle e Funções de Aquisição de Dados

Com base no que fra executado, deve-se setorizar agora as partes de controle e garra.Monta-se portanto a parte física do controle contendo, 5 botões, 1 analógico Joystick, 1Rádio NRF24L01, 2 LEDS, 5 Resistores de 1KΩ e 1 Capacitor. A figura 3.14 demonstraas ligações feitas no Arduino UNO. Os LEDS utilizam os pinos 7 e 8, os botões pinos de2 a 6, o módulo de rádio os pinos 13 à 9 e o Joystick os conversores A0 e A1.

Deve-se trabalhar agora na função de aquisição de dados dos botões que moverão ummotor. A ideia é: ao pressionar um determinado botão, o motor abrirá, caso contráriofechara. Assim, tem-se dois novos botões adicionados. Para seu efeito criou-se a seguintesub-rotina.

1 uint16_t leitura_botao ( uint16_t * valor_base )

2

3 int valor_retornado = * valor_base ;

4 if( digitalRead (BOT [1]) == LOW)

5

6 if( valor_retornado <1023)

7

Page 74: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 73

Figura 3.14 – Montagem final do controlador utilizando-se de materiais avulsos.

Fonte: AUTOR

8 valor_retornado = valor_retornado +5;

9

10 else valor_retornado = 1023;

11

12

13 else if( digitalRead (BOT [2]) == LOW)

14

15 if( valor_retornado >0)

16

17 valor_retornado = valor_retornado -5;

18

19 else valor_retornado = 0;

20

21 else * valor_base = valor_retornado ; return valor_retornado ;

22

O único parâmetro a ser passado nesta função é o endereço da variável de armazena-mento dos dados. Tendo-se todas as funções já prontas, trabalha-se na lógica do controle.Para isso cria-se uma variável de um enumerate modo_envio, posteriormente, compara-setodos os valores pertinentes à envio. Caso haja alteração, o estado muda para modo_envio

Page 75: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 74

= Ligado, e verifica se o pedido da garra foi feito, se sim envia a mensagem. O códigoencontra-se abaixo.

1 // **** Controle de envio de dados ******

2 if( meusDados . pedido == true)

3

4 if( modo_envio == LIGADO )

5

6 dadosEnviados = meusDados ;

7 radio. stopListening ();

8 radio.write (& dadosEnviados , sizeof ( dadosEnviados ));

9

10 meusDados . pedido = false;

11 modo_envio = DESLIGADO ;

12

13

14

15 // ***** Controle de alteracao de dados ****

16 if( modo_envio == DESLIGADO )

17

18 if( meusDados_ant . velocidade != meusDados . velocidade )

19

20 meusDados_ant . velocidade = meusDados . velocidade ;

21 modo_envio = LIGADO ;

22

23 else if( meusDados_ant . valores_adc [0]!= meusDados . valores_adc [0])

24

25 meusDados_ant . valores_adc [0] = meusDados . valores_adc [0];

26 modo_envio = LIGADO ;

27

28 else if( meusDados_ant . valores_adc [1]!= meusDados . valores_adc [1])

29

30 meusDados_ant . valores_adc [1] = meusDados . valores_adc [1];

31 modo_envio = LIGADO ;

32

33 else if( meusDados_ant . valores_adc [2]!= meusDados . valores_adc [2])

34

35 meusDados_ant . valores_adc [2] = meusDados . valores_adc [2];

36 modo_envio = LIGADO ;

37

38 else if( meusDados_ant . modo_economia != meusDados . modo_economia )

39

Page 76: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 75

40 meusDados_ant . modo_economia = meusDados . modo_economia ;

41 modo_envio = LIGADO ;

42

43 else if( meusDados_ant . modos_motor != meusDados . modos_motor )

44

45 meusDados_ant . modos_motor = meusDados . modos_motor ;

46 modo_envio = LIGADO ;

47

48

3.5.3 Montagem da Garra

Para finalização das montagens, necessitava-se construir a estrutura do braço robó-tico, a garra e juntá-las ao circuito de acionamento. Por falta de componentes e da nãopraticidade em fazê-lo, montou-se um esquemático aproximado do que seria a montagemreal em protoboard. A figura 3.15 ilustra brevemente de como isto tomaria espaço.

Trata-se somente de uma ilustração, entretanto, vale citar suas entradas e saídas ecomo fora montada. A bateria de 9V alimenta todos os componentes, tanto o amplificadoroperacional como os transistores. As entradas são as entradas digitais dadas pelos pinosda placa Arduino UNO 8, 7 e 6. Tais pinos serão utilizados para o chaveamento dostransistores. Alocado a cada pino individual encontra-se o circuito da figura 3.12. Assaídas representam a alimentação do motor que cai sobre o resistor de coletor. O rádioNRF24L01 segue a mesma montagem do controle e a mesma que fora explicada no capítulode introdução teórica.

Page 77: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 76

Figura 3.15 – Montagem final do receptor utilizando-se de materiais avulsos.

Fonte: AUTOR

3.6 Acabamentos e Considerações

Após montados e terminados ambas partes do sistema, deve-se considerar alguns as-suntos. Deve-se pensar em uma estrutura física capaz de conter ambos motores e imitarum braço robótico com uma garra em sua dianteira. Para fazê-lo utiliza-se de materiaisrecicláveis como papelão, papel alumínio entre outros. Assim, barateia-se o custo totaldo projeto.

Como mostrado no trabalho precedente a este, a garra compreenderia nos movimen-tos horizontal, vertical e o movimento de abrir e fechar de uma garra. Tal projetodenominaria-se garra robótica. Para elucidar sua movimentação, visualiza-se a figura3.16

Para cumprir com tais exigências, pensou-se em um modelo de braço robótico baseadoem braços utilizados em processos de automação de fábrica. Os resultados obtidos serãomostraos na próxima sessão.

Por ocuparem muito espaço, ao invés de utilizar circuitos em protoboard, fez-se asplacas de circuito impresso com a finalidade de acabamento e melhoria da utilização.Portanto, para o controlador, comprou-se um módulo Joystick da marca Funduino, oqual imita a aparência de um controle remoto, adicionalmente suporta entradas diretaspara módulos de transmissão sem fio, como, wi-fi e o usado aqui NRF24L01.

Assim, terminou-se o projeto das principais partes relacionadas à montagem do projetocompleto: Controlador; Braço Robótico; Circuito de Acionamento; Lógica de Programa-ção.

Page 78: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 3. DESENVOLVIMENTO 77

Figura 3.16 – Eixos de Rotação do Braço Robótico (Garra).

Fonte:(PRADO, 2017)

Page 79: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

4 Resultados e Análise

Assim como o experimento, a análise e resultados serão apresentados como feito nametodologia e programação, dividindo-se em capítulos, estes correspondentes à sua ordemde execução.

4.1 Análise e Resultados Parte I

Consistindo-se da construção de funções de movimento para os motores utilizadosneste projeto, sucedeu-se como esperado. Ambas funções projetadas funcionaram comopensado, no caso da função de movimento livre, consegue-se posicionar o braço robóticoem qualquer posição alcançável pelos Servo-Motores.

Entretanto é valido notar que, todas as funções de movimento dos motores necessita-ram de um acréscimo de delay após sua execução. Este atraso deve ser bloqueante, casocontrário as funções de resposta do motor não funcionariam corretamente. Este fato seda pela velocidade de clock do microcontrolador utilizado. Em sua configuração, possuiclock de 16 MHz. para efeitos de cálculo de tempo de 1 ciclo de máquina, faz-se

t = 1fclock

= 116MHz

= 62, 5ns

Este tempo é bastante rápido e não é notado por nossos sentidos. Assim, ao incremen-tar 1 grau do ângulo do motor a cada execução do código, supondo-se aproximadamente20 ciclos de clock para seu término de execução, ter-se-ia aproximadamente 1 grau a cada1.25µs. Nota-se que isto não é alcançado pelo motor, o qual tem um tempo de rotaçãomáximo de 1.67 ms por grau. Rotacionando-se a esta velocidade, qualquer variação decomandos enviados ocasionaria o movimento extremo de seu motor.

Contudo, utilizando-se deste delay pós execução, tem-se sucesso em seu uso, tornando-se portanto, necessário.

4.2 Análise e Resultados Parte II

Para desenvolver-se a lógica de operação do sistema, encontrou-se alguns problemasrelativos ao uso dos botões. No início, conforme a figura 3.10, ambos botões de alteraçãode estados estavam independentes do estado que se encontravam. Em outras palavras,mesmo o sistema estando desligado, ou seja no modo_economia, o usuário poderia alteraros outros modos como também a velocidade de operação.

A fim de evitar-se este problema simples, alterou-se as condições de uso dos botões.Primeiramente, ao desligar-se o sistema o único botão que poderá ser acionado é o que o

Page 80: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 79

ligará. Quando estiver ligado (confirmação através dos LEDS acesos), o botão de trocade modos poderá ser utilizado. Caso encontre-se no modo de movimento livre, o LEDamarelo piscará de acordo com a velocidade atual de operação, assim, o botão de controlede velocidade poderá ser utilizado. Caso contrário, ficam disponíveis somente o botão detroca de modos ou de desligamento do aparelho.

Um novo diagrama de fluxo foi gerado para exemplificar o resultado final desta mu-dança, mostrado na figura 4.1

Figura 4.1 – Diagrama de fluxo lógico final

Fonte: Autor

Observa-se neste diagrama de fluxo lógico que os botões fazem a mudança de estadode execução sistema. Assim, ao pressionar determinado botão, caso o sistema esteja commodo_economia==1, alterna-se o estado entre os modos do motor através da operaçãológica not da variável modos_motor. Apenas o botão de mudança do valor da variávelmodo_economia pode ser alterada em qualquer estado de execução do sistema. O bo-tão de alteração do valor da variável velocidade pode ser alterada somente se as variáveismodo_economia==1 e modos_moto==0.

Código principal do controle:

Page 81: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 80

1 // ******** Botoes *********

2 if( Detecta_Borda (BOT [4], & BORDAS [1]) == true)

3

4 meusDados . modo_economia = meusDados . modo_economia ^1;

5

6

7

8 if( meusDados . modo_economia == 1)

9

10 if( Detecta_Borda (BOT [3], & BORDAS [2]) == true)

11

12 if( meusDados . modos_motor == 0)

13

14 meusDados . modos_motor = 1;

15

16 else meusDados . modos_motor = 0;

17

18 if( meusDados . modos_motor == 0)

19

20 Controle_Velocidade (BOT [0], & BORDAS [0], & meusDados .

velocidade );

21

22

23 // ******* Funcao Principal *******

24

25 if( meusDados . modo_economia == 1)

26

27 histerese ();// Recebe dados dos conversores

28 if( meusDados . modos_motor == 0)

29

30 digitalWrite (LED [1], LOW); // Apaga o LED Azul

31 if( meusDados . velocidade == RAPIDO )

32

33 pisca_led (& tempoInicial , 120, LED [0]); //

LED VERDE pisca Rapidamente , indicando

que o movimento do motor esta rapido

34

35 if( meusDados . velocidade == MEDIO)

36

37 pisca_led (& tempoInicial ,240 , LED [0]); // LED

VERDE pisca mais lento que o anterior ,

Page 82: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 81

indicando que sua velocidade esta

reduzida

38

39 if( meusDados . velocidade == LENTO)

40

41 pisca_led (& tempoInicial ,360 , LED [0]); // LED

VERDE pisca ainda mais lento que

ateriormente , indicando que sua

velocidade diminuiu

42

43 if( meusDados . velocidade == MUITO_LENTO )

44

45 pisca_led (& tempoInicial ,480 , LED [0]); // LED

VERDE pisca com mais demora , indicando

seu estado minimo de velocidade

46

47

48 else

49

50 digitalWrite (LED [1], HIGH);// Acende LED azul

51 digitalWrite (LED [0], LOW);// Apaga Amarelo

52

53

54 else

55

56 digitalWrite (LED [1], LOW);// Apaga Ambos

57 digitalWrite (LED [0], LOW);

58

59 delay (9);

Função Principal do Braço robótico (Garra):

1 // ******** Funcao Principal *********

2 if( meusDados . modo_economia == 1)

3

4 digitalWrite ( DIGITAL_GATE [0], HIGH); digitalWrite ( DIGITAL_GATE

[1], HIGH); digitalWrite ( DIGITAL_GATE [2], HIGH);// Acende os

tres LEDS Verdes

5 if( meusDados . modos_motor == 0)

6

7 Movimento_Servo (& motor [0], & valores [0], & LEITURAS_ADC [0],

meusDados . velocidade );

8 Movimento_Servo (& motor [1], & valores [1], & LEITURAS_ADC [1],

Page 83: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 82

meusDados . velocidade );

9 movimento_garra (& motor [2], & valores [2], & LEITURAS_ADC [2]);

10 delay (35);

11

12 else

13

14 Controle_Alternativo (& motor [0] ,& valores [3] ,& LEITURAS_ADC

[0]);

15 Controle_Alternativo (& motor [1] ,& valores [4] ,& LEITURAS_ADC

[1]);

16 movimento_garra (& motor [2], & valores [2] ,& LEITURAS_ADC [2]);

17 delay (30);

18

19

20 else

21

22 digitalWrite ( DIGITAL_GATE [0], LOW); digitalWrite ( DIGITAL_GATE

[1], LOW); digitalWrite ( DIGITAL_GATE [2], LOW);

23

4.3 Análise e Resultados Parte III

Para validar o funcionamento do circuito acionador do motor, fez-se uma simulaçãoda corrente e tensão de queda em cima do resistor de coletor do transistor. Tal simulação,levou como parâmetro o valor da resistência, medindo os valores de tensão e corrente quepassavam por ela.

Utilizou-se de um software gratuito encontrado no site <https://www.circuitlab.com/>.Tal site oferece simulações de análise no tempo, frequência e análise DC gratuitamente.Embora não possua tantas configurações tampouco opções, foi extremamente útil e efici-ente para demonstrar o funcionamento do circuito.

O circuito montado no site é representado na figura 4.2.Como esperado, ao passo do envio de um nível lógico alto do microcontrolador, o sinal

lógico entra na entrada não inversora do amplificador operacional, sendo posteriormentereplicado à entrada da base do transistor. Assim, o transistor entra em saturação, con-duzindo corrente pelo seu coletor e emissor e fazendo uma tensão de alimentação dosmotores no resistor de referência.

De modo a avaliar as corrente e tensões fornecidas pelos dispositivos eletrônicos evalidar se o sistema teria uma resposta suficiente aos motores, através de uma análise notempo do circuito da figura 4.2, obteve-se os seguintes valores de tensão e corrente noemissor do transistor mostrados na figura 4.3.

Page 84: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 83

Figura 4.2 – Circuito acionador simulado

Fonte: Autor

Figura 4.3 – Simulação de Tensão (Superior) Corrente (Inferior) do transistor BC550 emSaturação ao passo da variação resistiva em seu coletor.

Fonte: Autor

Usando-se dos dados desta simulação, a tensão sobre o resistor, ou tensão de alimen-tação do motor, é aproximadamente 4.3 V para um valor resistivo de 220 Ω no emissor.Sabe-se que o Servo-Motor necessita de tensão acima de 4 V para funcionar corretamentee sua carga máxima comportada varia de acordo com a corrente que a alimentação podefornecê-lo. Assim, avalia-se a corrente de emissor fornecida à carga, vê-se que seu va-lor é aproximadamente 20 mA, o que garante uma movimentação boa dos motores, comexceção ao levantamento de cargas muito pesadas.

Embora tenha funcionado, este circuito de chaveamento do transistor não deve ser

Page 85: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 84

replicado sem a adição de resistor na base do coletor. Caso não houvesse um amplificadoroperacional na limitação de corrente fornecida à base do transistor, haveria mal funciona-mento do circuito ou possivelmente sua queima, devido ao curto circuito feito entre a saídado amplificador operacional e a base do transistor. Esta topologia deve ser modificada deforma a executar a função de chaveamento com menos riscos e mais eficiência.

Uma alternativa a esta montagem é a utilização de um transistor FET (Field EffectTransistor) que ao contrário do BJT, utiliza de tensão em seu gate (referente à base doBJT), para alternância de estado de saturação ou corte. Deste modo, se evitaria um riscomaior de queima de componentes ou de mau funcionamento.

Visando-se compactar sua estrutura, montou-se uma placa PCI (placa de circuitoimpresso) para acoplar todos os componentes deste circuito. Além disso, pensou-se emum Design para a saída do PWM alimentação e terra para os motores, sem que ficassemdiversos fios dispersos na placa. O resultado é mostrado nas figuras 4.4 e 4.5

Figura 4.4 – TopLayer e BottomLayer da placa PCB de acionamento dos Motores

Fonte: AUTOR

4.4 Análise e Resultados Parte IV

Inicialmente, desejava-se criar um protocolo de comunicação simples, utilizando-seapenas de um receptor constante e de um transmissor.

No entanto, ao decorrer do experimento, utilizando-se da mesma lógica de programa-ção aqui apresentada, este tipo de comunicação apresentava problemas, estes não podendoserem explicados. Isto se da pelo fato de que, o Arduino IDE não possui a opção de debug-ging, fazendo-se a análise mais precisa de códigos e possíveis bugs, complicada. Também,por as bibliotecas não terem sido feitas para um propósito específico e sim para uso geral.

Contudo, o projeto inicialmente funcionava sem problemas, mas, com o passar dealguns segundos o sistema controlador parava, devendo-se resetá-lo. Após inúmeras ten-tativas, pelo fato de querer utilizar um controlador alimentado a bateria, trocou-se de

Page 86: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 85

Figura 4.5 – Placa de circuito impresso PCB de acionamento dos Motores

Fonte: AUTOR

Arduino. Previamente, pensava-se em utilizar um Arduino Nano para o controle e umArduino UNO para a garra robótica, porém, por fazer-se o uso de rádios que necessitama alimentação de 3.3V, o Arduino Nano passava a ser descartável.

Após a troca de placas, comprou-se o módulo Joystick da Funduino. Este módulosubstituiu o primeiro projeto de PCB feito para o controlador. Este projeto, apresentoudefeitos em sua construção não podendo ser utilizado. Contudo, mostra-se uma foto deseu formato na figura 4.6.

Figura 4.6 – Primeira versão do Controle PCB

Fonte: Autor

Page 87: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 86

Visando-se evitar qualquer tipo de problemas com comunicação, ou condição de cor-rida ineperada, elaborou-se o protocolo de comunicação mostrado no desenvolvimentoexperimental. Este protocolo apresentou-se eficiente e não travou. Entretanto, teve-sede adicionar um delay no controlador após o envio de dados, pois, como o braço robó-tico alternaria seu estado de emissor para transmissor repetidamente, seu modo receptordeveria estar ativo de tal sorte a sincronizar-se com os do envio do controlador.

Contudo, calculou-se um tempo médio de demora para a troca de modo e a execuçãodo programa de aproximadamente 10 ms. Ou seja, adicionando-se um atraso de 10 ms àfunção do controlador conseguiu-se transmitir e receber dados.

O código de comunicação do controlador e do braço robótico são mostrados à seguir.Vale se dizer que estes códigos apresentam somente a parte da lógica de envio e recepçãode dados.

Código do transmissor (Controle):

1 // *************** Recepcao dos sinais do radio Mestre

**********

2 radio. startListening ();

3

4 if( radio. available ())

5

6 while(radio. available ())

7

8 radio.read (& meusDados , 1);

9

10 dadosEnviados = meusDados ;

11

12

13

14 // ************** Condicao de Envio ***********

15 if( meusDados . pedido == true)

16

17 if( modo_envio == LIGADO )

18

19 dadosEnviados = meusDados ;

20 radio. stopListening ();

21 radio.write (& dadosEnviados , sizeof ( dadosEnviados ));

22

23 meusDados . pedido = false;

24 modo_envio = DESLIGADO ;

25

26

Page 88: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 87

O controlador aguarda sempre a mensagem do mestre (Braço Robótico) para poderenviar informação. Após enviá-la, retorna a esperar mais pedidos do mestre. Caso não setenha mais conexão entre eles, o controle não enviará dados até que consiga novamentese conectar. A variável de controle é posicionada como primeira variável da estruturade dados. Deste moto, por necessitar apenas desta variável de verificação para envio edados, o controlador, lê somente a primeira posição de dados da struct, assim, verificandoa permissão para enviar mais dados.

Código do Receptor (Garra Robótica):

1 // Comeco do codigo , radio escuta os dados enviados

2 radio. startListening ();

3 delay (12);

4

5 if(radio. available ())

6

7 while(radio. available ())

8

9 radio.read (& meusDados , sizeof ( meusDados ));

10

11 LEITURAS_ADC [0]= meusDados . valores_adc [0];

12 LEITURAS_ADC [1]= meusDados . valores_adc [1];

13 LEITURAS_ADC [2] = meusDados . valores_adc [2];

14

15

16 // Final do codigo , radio transmite o pedido para mais dados

novos

17 radio. stopListening ();

18 dadosEnviados . pedido = true;

19 radio.write (& dadosEnviados , 1);

Naturalmente, existem diversas maneiras de comunicá-los. No entanto, pelas diver-sas condições previamente feitas para controle de dados, caso fosse feito qualquer outrocontrole a mais, dados ficariam limitados, não funcionando corretamente.

4.5 Acabamentos e Considerações

Após realizados todos os processos de análise e testes, fez-se um protótipo de estruturaimitando um braço robótico industrial. Este braço possui dois graus de liberdade e umagarra, comandados por um controle sem fio. Os resultados finais de ambos serão mostradosem suas correspondentes sessões.

Page 89: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 88

4.5.1 Controle sem Fio

Como exemplificado anteriormente, a montagem do controle sem fio deu-se pelo usode um módulo pronto de Joystick da marca Funduino. Este módulo proporcionou um usocompacto e simples do dispositivo, pois, já incluso em sua estrutura acomoda o módulode rádio juntamente com a placa de Arduino UNO. A figura final do aspecto do controleé mostrado na figura 4.7:

Figura 4.7 – Versão Final do Controle sem Fio

Fonte: Autor

Juntamente com o controle, mostra-se seu código final com comentários pertinentes àdeclaração de variáveis e afins. Este código pode ser copiado e adicionado ao seu ArduinoIDE para testes e modificações e encontra-se no Apêndice.

4.5.2 Braço Robótico

A montagem de sua estrutura física deu-se através do uso de materiais recicláveis ebaratos, a qual comporta a a garra robótica. Esta estrutura é ilustrada na figura 4.8.Vê-se que é uma estrutura simples, porém, eficiente e facilmente montável.

Ilustrou-se a figura de forma a ver-se também o circuito de ativação alocado na traseirada garra. Deste modo facilitou as conexões dos cabos dos Servo-Motores. Assim, o braçoconsegue mover-se sem que os fios limitem seu movimento. Além disso, a versão final docódigo gerado para este braço robótico encontra-se no apêndice.

Page 90: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 89

Figura 4.8 – Versão Final do Braço Robótico

Fonte: Autor

A versão final da garra juntamente com seu circuito de acionamento é mostrado nafigura 4.9. Não contém sua capa de enfeite, por questões de demonstração da construçãoda placa PCB1.

Figura 4.9 – Versão Final do Braço Robótico e Circuito de acionamento acoplados

Fonte: Autor

1 Printed Circuit Board - Placa de Circuito Impresso

Page 91: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 4. RESULTADOS E ANÁLISE 90

4.5.3 Valores Despendidos

É interessante avaliar gastos durante a realização do projeto. Notavelmente, algumascoisas tiveram custo nenhum, entretanto, por dificuldades de se encontrar produtos noBrasil, foi necessário realizar pedidos de importação da China para alguns casos.

Os componentes eletrônicos foram encontrados na cidade de Londrina, por isso, seupreço não é tão barato quanto deveria. Contudo, pela praticidade vale-se o gasto. Aplaca de PCB foi produzida na Universidade Estadual de Londrina - UEL no laboratóriode Engenharia Elétrica pelo técnico Luís Mathias.

O restante dos materiais foi pedido pelo Mercado Mivre e Dealxtreme. Para umaavaliação final de custos, montou-se a tabela 4.5.3:

Tabela 4.1 – Tabela de Valores Despendidos para o Projeto Com preços de compras noBrasil e da China convertidos para Reais

Peça Quantidade Preço Unidade Total (Reais)Arduino UNO 2 32,9 65,8Módulo Rádio 4 4,25 17Transistores 3 0,6 1,8Capacitores 2 0,3 0,6Resistores 8 0,1 0,8Baterias 3 10 30Módulo Controle 1 26,9 26,9Motores 3 19,8 59,4LEDS 5 0,8 4Cabos Diversos 15 15AmpOP 1 0,7 0,7PCB 1 19,9 19,9Extras x 30 30Total 271,9

Os componentes eletrônicos da china como, capacitor, resistor, transistor, não puderamser computados pois sua venda é feita somente em quantidades grandes. No entanto,mostra-se mais barato o investimento feito fora do país, embora o tempo de espera para achegada da encomenda, para frete grátis, seja de quase três meses. No caso, por não poderesperar tanto tempo, teve-se de pedir grande partes das coisas em território nacional.

Page 92: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

5 Conclusões e Sugestões

5.1 Conclusões

Sabendo-se da importância que o ensino de robótica e programação significam noaprendizado de crianças e jovens, iniciou-se este projeto com o intuito de disponibilizar estedocumento como um tutorial auto-explicável sobre a construção de uma garra robóticasem fio controlada por Arduinos. Estas plataformas são excelentes maneiras de integraro campo da engenharia elétrica às pessoas mais jovens, estimulando seu raciocínio, lógicae as instigando a seguir nesta área de estudo.

O produto final deste trabalho, foi definido como um tutorial a ser utilizado em projetosde extensão e ensino. Dado o início do projeto, fundamentou-se teoricamente sobre osmateriais que foram utilizados. Posteriormente, integrou-se o conhecimento teórico como prático gerando resultados que quando combinados gerariam o resultado final, o braçorobótico.

Contudo, no decorrer da realização do projeto problemas aparecerem. Inicialmente,desejava-se apenas desenvolver funções de lógica de programação capazes de movimentaro motor de maneira distinta das funções já existentes nas bibliotecas do Arduino IDE. Istose deu de maneira satisfatória. Entretanto, na parte de comunicação entre as duas partesdo sistema, Controle e Braço, teve-se problemas de sincronismo e alguns bugs indefinidoscom a utilização dos rádios.

As possíveis soluções surgiram ao passo de tentativas, isto é, por não possuir as ferra-mentas de debugging neste ambiente e programação, não pode-se ver o que afetava ou nãoo sistema, deixando-o susceptível a erros passivos. Assim, fez-se um protocolo fechadode comunicação para evitar erros de sincronismo, o qual sucedeu-se muito bem, emboraalgumas vezes não seja eficiente por deixar passar informações.

Outro infortúnio encontrado foi a dificuldade de achar componentes e materiais neces-sários, haja visto que o custo do projeto também foi levado em consideração. Todavia,ao passo de erros e acertos, o protótipo chegou a sua versão final juntamente com oscódigos de programação. Obviamente, há muito o que melhorar tanto na parte estruturaldo projeto quanto na parte de lógica de programação do firmware.

Por fim, embora ainda haja alguns problemas, tem-se uma noção muito boa do funci-onamento e criação de funções através deste trabalho. Com ele, pode-se entender melhora programação e o uso de partes eletrônicas, cumprindo assim seu propósito de ensinocom uma linguagem acessível.

Page 93: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 5. CONCLUSÕES E SUGESTÕES 92

5.2 Sugestões

Como sugestões, pode-se melhorar o sistema de comunicação entre Braço Robótico eControle. Não obstante, deve-se melhorar sua estrutura móvel, bem como, adaptá-la à umcarro ou algo móvel. É de se notar também que possíveis trabalhos utilizando interfacesgráficas de controle como Processing podem ser usadas como forma de controlá-la semvê-la. Ou também, o uso de um microcontrolador DSP capaz de processar imagens e fazera transferência de vídeos.

Por último, pensando em um sistema de automação fabril, como garras e motoresutilizam memória de execução de movimento, pode-se integrar esta garra a um sistemaminiaturizado de um processo produtivo utilizando-se de memórias para fazer a execuçãode seus movimentos. Para tanto, deve-se estudar maneiras de tornar a programação maisaprofundada, necessitando-se alterar o objetivo do trabalho que é de ensino de robóticaaplicado para outro científico ou prático.

Page 94: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Referências

ARDUINO. https://www.arduino.cc/en/guide/introduction. Acessado em 30/12/2017.2015. 19, 20

BOYLESTAD, L. N. R. L. Dispositivos Eletrônicos e Teoria de Circuitos Elétricos. [S.l.]:Pearson Education do Brasil Ltda., 2013. 40, 41, 42, 43, 44, 45

BRAGA, N. C. http://www.facta.art.br/ciencia-do-apocalipse/gambiarras-com-leds/acessado em 23/12/2017. 2017. 41, 42

CALEGARI, P. F. AplicaÇÃo da robÓtica no ensino-aprendizagem de lÓgica deprogramaÇÃo para crianÇas. 2015. 16

CAMPBELL-KELLY, e. a. M. Computer: A History of information Machine ThirdEdition. [S.l.: s.n.], 2013. 21

CAMPOS, G. O outro inventor do rádio. revista superinteressante. Julho 2007. 33

CERUZZI, P. E. A History of Modern Computing. [S.l.: s.n.], 2002.<https://doc.lagout.org/science/0Computeracessadoem28/12/2017.21

CUNHA, A. O que são sistemas embarcados. saber eletrônica. 2007. 17

DATASHEET. Datasheet. 2014. Obtido em<http://akizukidenshi.com/download/ds/towerpro/SG90.pdf>. 48, 49

DERSHEM, H. L. e. a. Programming Languages. Structures and models (em inglês) 2a

ed. Boston: PWS. [S.l.: s.n.], 1995. 21

DICIONáRIO. Dicionário online. 2017. Obtido em<https://www.dicio.com.br/programacao/> acessado em 28/12/2017. 20

FERNANDES, C. A. Comunicação sem fio. 2015. 32, 33

FILHO, P. P. R. Microcontroladores PIC - Linguagem C utilizando CCS para leigos.[S.l.: s.n.], 2014. 17, 18

GALLASSI, T. Um estudo exploratório sobre sistemas operacionais embarcados. 2016.Faculdade de Tecnologia Americana. 17

GONcALVES, J. Mecanismos de interrupção. 2010.<https://inf.ufes.br/ zegonc/material/SistemasOperacionais/Mecanismoacessadoem29/12/2017.29

HAYKIN S.; MOHER, M. Sistemas modernos de comunicação wireless. 2008. 34, 35

LELONG. Site de vendas. <https://www.lelong.com.my/analog-joystick-module-arduino-raspberry-pi-enewground-174692715-2019-03-Sale-P.htm> acessado em31/12/2017. 2017. 54

LILA, F. Protocolos de comunicação aplicados à usinas. 2012. 35

Page 95: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

REFERÊNCIAS 94

MATOS, N. M. R. Análise do funcionamento de um servomotor de corrente alternadacom Ímãs permanentes. trabalho de conclusão de curso - universidade regional deblumenal. 2012. 47

MELONI, T. Servomotor.<https://www.trabalhosgratuitos.com/exatas/engenharia/servomotor-350671.html>.acessado 19/11/2017. 2014. 47

MORELATO, L. A. e. a. Avaliando diferentes possibilidades de uso da robÓtica naeducaÇÃo. 2011. 16

NORDIC. nrf24l01 single chip 2.4 ghz transceiver product spe-cification.http://www.nordicsemi.com/eng/products/2.4ghz-rf/ nrf24l01 acessado em 22/12/2017.2007. 35

NORDIC. Especificações nrf24l01 n. 2015. Obtido emhttp://www.andraka.com/cordic.htm. Acessado em: 22/12/2017. 33

PEREIRA, F. PIC programação em C. [S.l.: s.n.], 2003. 18

PIAI, J. e. a. O processo de inserÇÃo da robÓtica em um nÚcleo de atividades de altashabilidades/superdotaÇÃo. 2014. 16

PIERCE, J. F. Dispositivos de junção semicondutores. [S.l.]: Edgard Blücher, 1972. 40,42, 43, 46

PINHO, M. S. Subalgoritmos (funções). 2015. <http://www.inf.pucrs.br/ pinho/La-proI/Funcoes/AulaDeFuncoes.htm> acessado em 27/12/2017. 24

PRADO, S. Carnielli do. Estudo orientado de programação aplicada à robótica. 2017.16, 75

REZENDE, S. M. Materiais e Dispositivos Eletrônicos. [S.l.: s.n.], 2004. 39, 40, 43, 45

SACCO, F. Buffers e seguidores de tensão; obtido em:https://www.embarcados.com.br/buffers-e-seguidores-de-tensao/. acessado em24/12/2017. 2016. 46

SANTOS, A. Servomotores. 2007. 47, 49

SEDRA S.; SMITH, K. Microeletrônica. [S.l.]: Pearson Makron Books, 1996. 43, 44, 45

SEIXAS, F. J. M. e. a. Máquinas Elétricas II. [S.l.: s.n.], 2012. 47

SILVEIRA P. SANTOS, W. E. Automação e controle discreto. Editora:Erica, v. 7a

edição, 2006. 35

TERRA, P. Construir robôs em aulas é tendência no ensino infantil.2014. 2014.Disponível em: < http://noticias.terra.com.br/educacao/construir-robos-em-aulas-e-tendenciano-ensino-infantil,bb90aa70a9da5410VgnVCM4000009bcceb0aRCRD.html >.Acesso em 31/12/2017. 16

TOWERPRO. Servo motor. 2014. Obtido em<http://akizukidenshi.com/download/ds/towerpro/SG90.pdf> acessado em 18/11/2017.48

Page 96: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

REFERÊNCIAS 95

TUTTLEBEE, W. Software defined radio. [s.l]: Wiley. 2002. 33

WIKIPEDIA. Junção pn <https://pt.wikipedia.org/wiki/junacessado em: 23/12/2017.2017. 40, 41

ZAMAIA, J. F. P. Protótipo robótico de mão mecânica para reprodução de música empiano. 2016. 66

Page 97: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

6 Apêndice A - Código do Controle

1 # include <nRF24L01 .h>

2 # include <printf .h>

3 # include <RF24.h>

4 # include <RF24_config .h>

5

6 // ******** Defines / Macros ******

7 # define CE 9

8 # define CSN 10

9 # define RAPIDO 2

10 # define MEDIO 5

11 # define LENTO 8

12 # define MUITO_LENTO 11

13 // *******************

14 // ******** Variaveis de botoes e LEDS *******

15

16 int BOT [5] = 2 ,3 ,4 ,5 ,6; // BOTOES CIMA DIREITA BAIXO ESQUERDA

START ABCDE

17 int LED [2] = 7 ,8; // LED AMARELO E AZUL

18

19 // *********************

20 // *** Declaracoes de Estruturas de dados e enumarates necessarios

****

21 typedef enum

22

23

24 DESLIGADO = 0,

25 LIGADO

26

27 estados ;

28

29 estados modo_envio = DESLIGADO ;// variavel controle de estados

30

31 typedef enum

32

33 loose = 0,

34 push

35 Typedef_estados ;

Page 98: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 97

36

37 typedef struct

38

39 Typedef_estados ant;

40 Typedef_estados atu;

41

42 Tipo_onda ;

43

44 // estrutura de dados a serem enviados

45 typedef struct

46

47 boolean pedido ;

48 uint16_t valores_adc [3];

49 uint8_t velocidade = 2;

50 boolean modo_economia = 0;

51 uint8_t modos_motor = 0;

52 estruturaDadosRF ;

53

54

55 // Variaveis a serem enviadas

56 estruturaDadosRF meusDados , dadosEnviados , meusDados_ant ;

57

58

59 Tipo_onda BORDAS [3]; // usadas para push buttons

60

61 uint8_t CONVERSORES [2]=A0 , A1;// eixo X e Y do controle

62

63 // variaveis para o controle do pisca dos LEDS

64 uint16_t tempoAtual , tempoInicial = 0;

65 // **********************

66 // ******* Declaracao variavel do radio nrf24l01 ********

67

68 RF24 radio(CE ,CSN);// Pinos 9 e 10 correspondem aos pinos CE E CSN

69 const uint8_t pipe = 0xFF , pipe2 = 0xFE;//Cria -se os enderecos

dos canais de comunicacao

70 int valor; uint16_t valor_base ;

71 void setup ()

72

73 for(int i = 0; i <5; i++)

74

75 if(i <=1)

Page 99: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 98

76

77 pinMode (LED[i], OUTPUT );

78

79 pinMode (BOT[i], INPUT);

80

81 inicia_detecta (& BORDAS [0]); inicia_detecta (& BORDAS [1]);

inicia_detecta (& BORDAS [2]);

82 Serial .begin (9600) ;

83 delay (100);

84 radio.begin ();// inicia o radio

85 radio. openWritingPipe (pipe);// Endereco de escrita em 0xFF

86 radio. openReadingPipe (1, pipe2);// Endereco de recebimento ,

canal 0xFE

87 radio. setChannel (100);// Escolhe o numero do canal a ser

utilizado

88 radio. setDataRate ( RF24_250KBPS );// seta a taxa de envio de

dados para 250 kBPS

89 radio. setPALevel ( RF24_PA_MAX );// Seleciona -se a potencia de

envio aqui max

90 radio. setPayloadSize (32);

91 radio. setRetries (15 ,15);// tenta conectar 15 vezes

92 // ********* Aqui passa parametros

93 meusDados = dadosEnviados ;

94 radio. startListening ();

95 meusDados . modo_economia = 0;

96 meusDados . valores_adc [2] = 0;

97 meusDados . valores_adc [1] = 324;

98 meusDados . valores_adc [0] = 324;

99 meusDados . pedido = false;

100 valor_base = 0;

101

102

103 void loop ()

104

105 // ****** Recepcao dos sinais do radio Mestre *******

106 radio. startListening ();

107 if( radio. available ())

108

109 while(radio. available ())

110

111 radio.read (& meusDados , 1);

Page 100: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 99

112

113 dadosEnviados = meusDados ;

114

115

116 // ******************************

117

118 // ******* Controle do acionamento dos botoes *******

119 if( Detecta_Borda (BOT [4], & BORDAS [1]) == true)

120

121 meusDados . modo_economia = meusDados . modo_economia ^1;

122

123 if( meusDados . modo_economia == 1)

124

125 if( Detecta_Borda (BOT [3], & BORDAS [2]) == true)

126

127 if( meusDados . modos_motor == 0)

128

129 meusDados . modos_motor = 1;

130

131 else meusDados . modos_motor = 0;

132

133 if( meusDados . modos_motor == 0)

134

135 Controle_Velocidade (BOT [0], & BORDAS [0], & meusDados .

velocidade );

136

137

138 // ******* Corpo da funcao principal ********

139

140 if( meusDados . modo_economia == 1)

141

142 histerese ();// aquisicao de dados

143 if( meusDados . modos_motor == 0)

144

145 digitalWrite (LED [1], LOW); // Apaga o LED Azul

146 if( meusDados . velocidade == RAPIDO )

147

148 pisca_led (& tempoInicial , 120, LED [0]);

// LED VERDE pisca Rapidamente

149

150 if( meusDados . velocidade == MEDIO)

Page 101: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 100

151

152 pisca_led (& tempoInicial ,240 , LED [0]);

// LED VERDE pisca medio

153

154 if( meusDados . velocidade == LENTO)

155

156 pisca_led (& tempoInicial ,360 , LED [0]); //

LED VERDE pisca lento

157

158 if( meusDados . velocidade == MUITO_LENTO )

159

160 pisca_led (& tempoInicial ,480 , LED [0]); //

LED VERDE pisca mto lento

161

162

163 else

164

165 digitalWrite (LED [1], HIGH);

166 digitalWrite (LED [0], LOW);

167

168

169 else

170

171 digitalWrite (LED [1], LOW);

172 digitalWrite (LED [0], LOW);

173

174 delay (9);

175 // *********************************

176 // ****** Condicao de Envio ********

177 if( meusDados . pedido == true)

178

179 if( modo_envio == LIGADO )

180

181 dadosEnviados = meusDados ;

182 radio. stopListening ();

183 radio.write (& dadosEnviados , sizeof ( dadosEnviados ));

184

185 meusDados . pedido = false;

186 modo_envio = DESLIGADO ;

187

188

Page 102: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 101

189 // **************************

190

191 // **** Controle de alteracao de dados ********

192 if( modo_envio == DESLIGADO )

193

194 if( meusDados_ant . velocidade != meusDados . velocidade )

195

196 meusDados_ant . velocidade = meusDados . velocidade ;

197 modo_envio = LIGADO ;

198

199 else if( meusDados_ant . valores_adc [0]!= meusDados . valores_adc [0])

200

201 meusDados_ant . valores_adc [0] = meusDados . valores_adc [0];

202 modo_envio = LIGADO ;

203

204 else if( meusDados_ant . valores_adc [1]!= meusDados . valores_adc [1])

205

206 meusDados_ant . valores_adc [1] = meusDados . valores_adc [1];

207 modo_envio = LIGADO ;

208

209 else if( meusDados_ant . valores_adc [2]!= meusDados . valores_adc [2])

210

211 meusDados_ant . valores_adc [2] = meusDados . valores_adc [2];

212 modo_envio = LIGADO ;

213

214 else if( meusDados_ant . modo_economia != meusDados . modo_economia )

215

216 meusDados_ant . modo_economia = meusDados . modo_economia ;

217 modo_envio = LIGADO ;

218

219 else if( meusDados_ant . modos_motor != meusDados . modos_motor )

220

221 meusDados_ant . modos_motor = meusDados . modos_motor ;

222 modo_envio = LIGADO ;

223

224

225

226 // ******* Funcoes ********

227

228 uint16_t leitura_botao ( uint16_t * valor_base )

229

Page 103: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 102

230 int valor_retornado = * valor_base ;

231 if( digitalRead (BOT [1]) == LOW)

232

233 if( valor_retornado <1023)

234

235 valor_retornado = valor_retornado +5;

236

237 else valor_retornado = 1023;

238

239 else if( digitalRead (BOT [2]) == LOW)

240

241 if( valor_retornado >0)

242

243 valor_retornado = valor_retornado -5;

244

245 else valor_retornado = 0;

246

247 else * valor_base = valor_retornado ; return valor_retornado ;

248

249

250 boolean Detecta_Borda ( uint8_t pinos , Tipo_onda * maquinas )

251

252 // funcao nao bloqueante de deteccao de borda de subida

253 // ele retorna 1

254 maquinas ->ant = maquinas ->atu;

255 if( digitalRead (pinos)==0)

256

257 maquinas ->atu = loose;

258

259 if( digitalRead (pinos)==1)

260

261 maquinas ->atu= push;

262

263 if(( maquinas ->ant == push)&&( maquinas ->atu == loose)) return

true ;

264 else return false;

265

266

267 // funcao de inicializacao de estados anteriores e atuais de

botoes

268 void inicia_detecta ( Tipo_onda * maquina )

Page 104: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 103

269

270 maquina ->ant = push;

271 maquina ->atu = push;

272

273

274 void Controle_Velocidade (int Push , Tipo_onda *onda , uint8_t *

velo)

275

276 if( Detecta_Borda (Push , onda))

277

278 if(*velo >=9)

279

280 *velo = 2;

281

282 else

283 *velo =* velo +3;

284

285

286

287

288 void pisca_led ( uint16_t * tempoInicial , uint16_t tempo , uint8_t pin

)

289

290 tempoAtual = millis ();

291 if ( tempoAtual - * tempoInicial >= tempo)

292

293 // save the last time you blinked the LED

294 * tempoInicial = tempoAtual ;

295 digitalWrite (pin , digitalRead (pin)^1);

296

297

298

299 void histerese (void)

300

301 if(( analogRead ( CONVERSORES [0]) >= meusDados_ant . valores_adc

[0] -2) &&( analogRead ( CONVERSORES [0]) <= meusDados_ant .

valores_adc [0]+2) )

302

303 meusDados . valores_adc [0] = meusDados_ant . valores_adc [0]+0;

304

305 else meusDados . valores_adc [0] = analogRead ( CONVERSORES [0]) ;

Page 105: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 6. APÊNDICE A - CÓDIGO DO CONTROLE 104

306

307 if(( analogRead ( CONVERSORES [1]) >= meusDados_ant . valores_adc

[1] -2) &&( analogRead ( CONVERSORES [1]) <= meusDados_ant .

valores_adc [1]+2) )

308

309 meusDados . valores_adc [1] = meusDados_ant . valores_adc [1]+0;

310

311 else meusDados . valores_adc [1] = analogRead ( CONVERSORES [1]) ;

312

313 meusDados . valores_adc [2] = leitura_botao (& meusDados .

valores_adc [2]);

314

Page 106: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

7 Apêndice B - Código do BraçoRobótico

1 # include <nRF24L01 .h>

2 # include <printf .h>

3 # include <RF24.h>

4 # include <RF24_config .h>

5 # include <Servo.h>

6

7 // ******* INPUTS e OUTPUTS ********

8 Servo motor [3]; // Declara uma variavel da classe servo

9 uint8_t DIGITAL_GATE [3] = 8 ,7 ,6; // Declara os botoes para

acionamento dos LEDS

10

11 typedef struct

12

13 boolean pedido ;

14 uint16_t valores_adc [3];

15 uint8_t velocidade ;

16 uint8_t modo_economia = 0;

17 uint8_t modos_motor = 0;

18 estruturaDadosRF ;

19

20 estruturaDadosRF meusDados , dadosEnviados ;// Variavel da

estruturaDadosRF a serem transmitidos

21

22 int LEITURAS_ADC [3] = 1024 ,1024 ,512; // String que recebe os

valores recebidos dos leitores ADC

23 int valores [6] = 90 ,90 ,0 ,90 ,90; // String que salva valores

alterados pelos ponteiros nas funcoes de movimento

24

25

26 RF24 radio (9 ,10); // PINOS CE E CSN

27 const uint8_t pipe = 0xFF , pipe2 = 0xFE; // Enderecos de PIPES

para enlace no radio

28 int valor;

29 // *****

30 void setup ()

31

Page 107: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 7. APÊNDICE B - CÓDIGO DO BRAÇO ROBÓTICO 106

32

33 // ****** Set Up ********

34 Serial .begin (9600) ;

35 delay (100);

36 radio.begin ();

37 radio. openReadingPipe (1, pipe); // Canal 0xFF recebe

38 radio. openWritingPipe (pipe2); // Canal 0xFE envia

39

40 radio. setChannel (100); // Seta o canal

numero 100

41 radio. setDataRate ( RF24_250KBPS ); // seta a taxa de

envio de dados para 250 kBPS

42 radio. setPALevel ( RF24_PA_MAX ); // Potencia Maxima de

transmissao

43 radio. setPayloadSize (32);

44 radio. setRetries (15 ,15);

45 radio. startListening ();

46 meusDados = dadosEnviados ;

47 // ********** Set UP Motores ***********

48 motor [0]. attach (5); // Motor 1 pino 5

49 motor [1]. attach (4); // Motor 2 Pino 4

50 motor [2]. attach (2); // Motor 3 Pino 2

51

52 pinMode ( DIGITAL_GATE [0], OUTPUT );

53 pinMode ( DIGITAL_GATE [1], OUTPUT );

54 pinMode ( DIGITAL_GATE [2], OUTPUT ); // Digital OUTPUTS

55 // *******

56

57 void loop ()

58

59 radio. startListening ();

60 delay (12);

61 // ******* Recepcao Radio *********

62 if(radio. available ())

63

64 while(radio. available ())

65

66 radio.read (& meusDados , sizeof ( meusDados ));

67

68 LEITURAS_ADC [0]= meusDados . valores_adc [0];

69 LEITURAS_ADC [1]= meusDados . valores_adc [1];

Page 108: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 7. APÊNDICE B - CÓDIGO DO BRAÇO ROBÓTICO 107

70 LEITURAS_ADC [2] = meusDados . valores_adc [2];

71

72

73 // ****************************

74 // ******* Corpo funcao principal ***********

75 if( meusDados . modo_economia == 1)

76

77 digitalWrite ( DIGITAL_GATE [0], HIGH); digitalWrite ( DIGITAL_GATE

[1], HIGH); digitalWrite ( DIGITAL_GATE [2], HIGH);

78 if( meusDados . modos_motor == 0)

79

80 Movimento_Servo (& motor [0], & valores [0], & LEITURAS_ADC [0],

meusDados . velocidade );

81 Movimento_Servo (& motor [1], & valores [1], & LEITURAS_ADC [1],

meusDados . velocidade );

82 movimento_garra (& motor [2], & valores [2], & LEITURAS_ADC [2]);

83 delay (35);

84

85 else

86

87 Controle_Alternativo (& motor [0] ,& valores [3] ,& LEITURAS_ADC

[0]);

88 Controle_Alternativo (& motor [1] ,& valores [4] ,& LEITURAS_ADC

[1]);

89 movimento_garra (& motor [2], & valores [2] ,& LEITURAS_ADC [2]);

90 delay (30);

91

92

93 else

94

95 digitalWrite ( DIGITAL_GATE [0], LOW);

96 digitalWrite ( DIGITAL_GATE [1], LOW);

97 digitalWrite ( DIGITAL_GATE [2], LOW);

98

99 // ****** Pedido de mais Dados ******

100 radio. stopListening ();

101 dadosEnviados . pedido = true;

102 radio.write (& dadosEnviados , 1);

103

104 // ********** Funcoes ***************

105 void Movimento_Servo (Servo *estrutura , int *pont , int *portax ,

Page 109: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 7. APÊNDICE B - CÓDIGO DO BRAÇO ROBÓTICO 108

uint8_t velo)

106

107 int val; // pega o valor lido pelo conversor A/D

108 val = * portax ;

109 if (( val > 75) && (val <= 315))

110

111 if (* pont <= 0)

112

113 *pont = 0;

114

115 else

116 *pont = *pont - (21/ velo);

117

118

119 if (( val >= 0) && (val <= 75))

120

121 if (* pont <= 0)

122

123 *pont = 0;

124

125 else

126

127 *pont = *pont - (35/ velo);

128

129

130 if (( val >= 375) && (val < 600))

131

132 if (* pont >= 180)

133

134 *pont = 180;

135

136 else

137

138 *pont = *pont + (21/ velo);

139

140

141 if (( val >= 600) && (val <= 1023))

142

143 if (* pont >= 180)

144

145 *pont = 180;

Page 110: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

CAPÍTULO 7. APÊNDICE B - CÓDIGO DO BRAÇO ROBÓTICO 109

146

147 else

148

149 *pont = *pont + (35/ velo);

150

151

152 else

153

154 *pont = *pont + 0;

155

156 estrutura ->write (* pont);

157

158

159 void Controle_Alternativo (Servo *motor , int * valor_atual , int *

portax )

160

161 int val = * portax ;

162 int delta = val -* valor_atual ;

163 if(delta != 0)

164

165 * valor_atual = * valor_atual + (delta /16);

166

167 motor ->write(map (* valor_atual , 0, 677, 0, 180));

168

169

170 void movimento_garra (Servo *motor , int *val , int * portag )

171

172

173 *val = * portag ;

174 *val = map (*val , 0, 1023 , 0, 180);

175 motor ->write (* val);

176

Page 111: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

8 ANEXO A. Datasheet BC550

Page 112: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

DATA SHEET

Product specificationSupersedes data of 1997 Jun 20

1999 Apr 22

DISCRETE SEMICONDUCTORS

BC549; BC550NPN general purpose transistors

book, halfpage

M3D186

Page 113: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1999 Apr 22 2

Philips Semiconductors Product specification

NPN general purpose transistors BC549; BC550

FEATURES

• Low current (max. 100 mA)

• Low voltage (max. 45 V).

APPLICATIONS

• Low noise stages in audio frequency equipment.

DESCRIPTION

NPN transistor in a TO-92; SOT54 plastic package.PNP complements: BC559 and BC560.

PINNING

PIN DESCRIPTION

1 emitter

2 base

3 collector

Fig.1 Simplified outline (TO-92; SOT54)and symbol.

handbook, halfpage1

32

MAM182

3

2

1

LIMITING VALUESIn accordance with the Absolute Maximum Rating System (IEC 134).

Note

1. Transistor mounted on an FR4 printed-circuit board.

SYMBOL PARAMETER CONDITIONS MIN. MAX. UNIT

VCBO collector-base voltage open emitter

BC549 − 30 V

BC550 − 50 V

VCEO collector-emitter voltage open base

BC549 − 30 V

BC550 − 45 V

VEBO emitter-base voltage open collector − 5 V

IC collector current (DC) − 100 mA

ICM peak collector current − 200 mA

IBM peak base current − 200 mA

Ptot total power dissipation Tamb ≤ 25 °C; note 1 − 500 mW

Tstg storage temperature −65 +150 °CTj junction temperature − 150 °CTamb operating ambient temperature −65 +150 °C

Page 114: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1999 Apr 22 3

Philips Semiconductors Product specification

NPN general purpose transistors BC549; BC550

THERMAL CHARACTERISTICS

Note

1. Transistor mounted on an FR4 printed-circuit board.

CHARACTERISTICSTj = 25 °C unless otherwise specified.

Notes

1. VBEsat decreases by about 1.7 mV/K with increasing temperature.

2. VBE decreases by about 2 mV/K with increasing temperature.

SYMBOL PARAMETER CONDITIONS VALUE UNIT

Rth j-a thermal resistance from junction to ambient note 1 250 K/W

SYMBOL PARAMETER CONDITIONS MIN. TYP. MAX. UNIT

ICBO collector cut-off current IE = 0; VCB = 30 V − − 15 nA

IE = 0; VCB = 30 V; Tj = 150 °C − − 5 µA

IEBO emitter cut-off current IC = 0; VEB = 5 V − − 100 nA

hFE DC current gain

BC549C; BC550C IC = 10 µA; VCE = 5 V; see Fig.2 − 270 −IC = 2 mA; VCE = 5 V; see Fig.2 420 520 800

VCEsat collector-emitter saturation voltage IC = 10 mA; IB = 0.5 mA − 90 250 mV

IC = 100 mA; IB = 5 mA − 200 600 mV

VBEsat base-emitter saturation voltage IC = 10 mA; IB = 0.5 mA; note 1 − 700 − mV

IC = 100 mA; IB = 5 mA; note 1 − 900 − mV

VBE base-emitter voltage IC = 2 mA; VCE = 5 V; note 2 580 660 700 mV

IC = 10 mA; VCE = 5 V; note 2 − − 770 mV

Cc collector capacitance IE = ie = 0; VCB = 10 V; f = 1 MHz − 1.5 − pF

Ce emitter capacitance IC = ic = 0; VEB = 0.5 V; f = 1 MHz − 11 − pF

fT transition frequency IC = 10 mA; VCE = 5 V;f = 100 MHz

100 − − MHz

F noise figure IC = 200 µA; VCE = 5 V;RS = 2 kΩ; f = 10 Hz to 15.7 kHz

− − 4 dB

IC = 200 µA; VCE = 5 V;RS = 2 kΩ; f = 1 kHz; B = 200 Hz

− − 4 dB

Page 115: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1999 Apr 22 4

Philips Semiconductors Product specification

NPN general purpose transistors BC549; BC550

Fig.2 DC current gain; typical values.

handbook, full pagewidth

0

600

200

400

MBH725

10−2 10−1

hFE

1 IC (mA)10 103102

VCE = 5 V

BC549C; BC550C.

Page 116: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1999 Apr 22 5

Philips Semiconductors Product specification

NPN general purpose transistors BC549; BC550

PACKAGE OUTLINE

UNIT A

REFERENCESOUTLINEVERSION

EUROPEANPROJECTION ISSUE DATE

IEC JEDEC EIAJ

mm5.25.0

b

0.480.40

c

0.450.40

D

4.84.4

d

1.71.4

E

4.23.6

L

14.512.7

e

2.54

e1

1.27

L1(1)

2.5

b1

0.660.56

DIMENSIONS (mm are the original dimensions)

Note

1. Terminal dimensions within this zone are uncontrolled to allow for flow of plastic and terminal irregularities.

SOT54 TO-92 SC-43 97-02-28

A L

0 2.5 5 mm

scale

b

c

D

b1 L1

d

E

Plastic single-ended leaded (through hole) package; 3 leads SOT54

e1e

1

2

3

Page 117: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1999 Apr 22 6

Philips Semiconductors Product specification

NPN general purpose transistors BC549; BC550

DEFINITIONS

LIFE SUPPORT APPLICATIONS

These products are not designed for use in life support appliances, devices, or systems where malfunction of theseproducts can reasonably be expected to result in personal injury. Philips customers using or selling these products foruse in such applications do so at their own risk and agree to fully indemnify Philips for any damages resulting from suchimproper use or sale.

Data Sheet Status

Objective specification This data sheet contains target or goal specifications for product development.

Preliminary specification This data sheet contains preliminary data; supplementary data may be published later.

Product specification This data sheet contains final product specifications.

Limiting values

Limiting values given are in accordance with the Absolute Maximum Rating System (IEC 134). Stress above one ormore of the limiting values may cause permanent damage to the device. These are stress ratings only and operationof the device at these or at any other conditions above those given in the Characteristics sections of the specificationis not implied. Exposure to limiting values for extended periods may affect device reliability.

Application information

Where application information is given, it is advisory and does not form part of the specification.

Page 118: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

1999 Apr 22 7

Philips Semiconductors Product specification

NPN general purpose transistors BC549; BC550

NOTES

Page 119: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Internet: http://www.semiconductors.philips.com

Philips Semiconductors – a worldwide company

© Philips Electronics N.V. 1999 SCA63

All rights are reserved. Reproduction in whole or in part is prohibited without the prior written consent of the copyright owner.

The information presented in this document does not form part of any quotation or contract, is believed to be accurate and reliable and may be changedwithout notice. No liability will be accepted by the publisher for any consequence of its use. Publication thereof does not convey nor imply any licenseunder patent- or other industrial or intellectual property rights.

Netherlands: Postbus 90050, 5600 PB EINDHOVEN, Bldg. VB,Tel. +31 40 27 82785, Fax. +31 40 27 88399

New Zealand: 2 Wagener Place, C.P.O. Box 1041, AUCKLAND,Tel. +64 9 849 4160, Fax. +64 9 849 7811

Norway: Box 1, Manglerud 0612, OSLO,Tel. +47 22 74 8000, Fax. +47 22 74 8341

Pakistan: see Singapore

Philippines: Philips Semiconductors Philippines Inc.,106 Valero St. Salcedo Village, P.O. Box 2108 MCC, MAKATI,Metro MANILA, Tel. +63 2 816 6380, Fax. +63 2 817 3474

Poland: Ul. Lukiska 10, PL 04-123 WARSZAWA,Tel. +48 22 612 2831, Fax. +48 22 612 2327

Portugal: see Spain

Romania: see Italy

Russia: Philips Russia, Ul. Usatcheva 35A, 119048 MOSCOW,Tel. +7 095 755 6918, Fax. +7 095 755 6919

Singapore: Lorong 1, Toa Payoh, SINGAPORE 319762,Tel. +65 350 2538, Fax. +65 251 6500

Slovakia: see Austria

Slovenia: see Italy

South Africa: S.A. PHILIPS Pty Ltd., 195-215 Main Road Martindale,2092 JOHANNESBURG, P.O. Box 7430 Johannesburg 2000,Tel. +27 11 470 5911, Fax. +27 11 470 5494

South America: Al. Vicente Pinzon, 173, 6th floor,04547-130 SÃO PAULO, SP, Brazil,Tel. +55 11 821 2333, Fax. +55 11 821 2382

Spain: Balmes 22, 08007 BARCELONA,Tel. +34 93 301 6312, Fax. +34 93 301 4107

Sweden: Kottbygatan 7, Akalla, S-16485 STOCKHOLM,Tel. +46 8 5985 2000, Fax. +46 8 5985 2745

Switzerland: Allmendstrasse 140, CH-8027 ZÜRICH,Tel. +41 1 488 2741 Fax. +41 1 488 3263

Taiwan: Philips Semiconductors, 6F, No. 96, Chien Kuo N. Rd., Sec. 1,TAIPEI, Taiwan Tel. +886 2 2134 2886, Fax. +886 2 2134 2874

Thailand: PHILIPS ELECTRONICS (THAILAND) Ltd.,209/2 Sanpavuth-Bangna Road Prakanong, BANGKOK 10260,Tel. +66 2 745 4090, Fax. +66 2 398 0793

Turkey: Talatpasa Cad. No. 5, 80640 GÜLTEPE/ISTANBUL,Tel. +90 212 279 2770, Fax. +90 212 282 6707

Ukraine : PHILIPS UKRAINE, 4 Patrice Lumumba str., Building B, Floor 7,252042 KIEV, Tel. +380 44 264 2776, Fax. +380 44 268 0461

United Kingdom: Philips Semiconductors Ltd., 276 Bath Road, Hayes,MIDDLESEX UB3 5BX, Tel. +44 181 730 5000, Fax. +44 181 754 8421

United States: 811 East Arques Avenue, SUNNYVALE, CA 94088-3409,Tel. +1 800 234 7381, Fax. +1 800 943 0087

Uruguay: see South America

Vietnam: see Singapore

Yugoslavia: PHILIPS, Trg N. Pasica 5/v, 11000 BEOGRAD,Tel. +381 11 62 5344, Fax.+381 11 63 5777

For all other countries apply to: Philips Semiconductors,International Marketing & Sales Communications, Building BE-p, P.O. Box 218,5600 MD EINDHOVEN, The Netherlands, Fax. +31 40 27 24825

Argentina: see South America

Australia: 34 Waterloo Road, NORTH RYDE, NSW 2113,Tel. +61 2 9805 4455, Fax. +61 2 9805 4466

Austria: Computerstr. 6, A-1101 WIEN, P.O. Box 213,Tel. +43 1 60 101 1248, Fax. +43 1 60 101 1210

Belarus: Hotel Minsk Business Center, Bld. 3, r. 1211, Volodarski Str. 6,220050 MINSK, Tel. +375 172 20 0733, Fax. +375 172 20 0773

Belgium: see The Netherlands

Brazil: see South America

Bulgaria: Philips Bulgaria Ltd., Energoproject, 15th floor,51 James Bourchier Blvd., 1407 SOFIA,Tel. +359 2 68 9211, Fax. +359 2 68 9102

Canada: PHILIPS SEMICONDUCTORS/COMPONENTS,Tel. +1 800 234 7381, Fax. +1 800 943 0087

China/Hong Kong: 501 Hong Kong Industrial Technology Centre,72 Tat Chee Avenue, Kowloon Tong, HONG KONG,Tel. +852 2319 7888, Fax. +852 2319 7700

Colombia: see South America

Czech Republic: see Austria

Denmark: Sydhavnsgade 23, 1780 COPENHAGEN V,Tel. +45 33 29 3333, Fax. +45 33 29 3905

Finland: Sinikalliontie 3, FIN-02630 ESPOO,Tel. +358 9 615 800, Fax. +358 9 6158 0920

France: 51 Rue Carnot, BP317, 92156 SURESNES Cedex,Tel. +33 1 4099 6161, Fax. +33 1 4099 6427

Germany: Hammerbrookstraße 69, D-20097 HAMBURG,Tel. +49 40 2353 60, Fax. +49 40 2353 6300

Hungary: see Austria

India: Philips INDIA Ltd, Band Box Building, 2nd floor,254-D, Dr. Annie Besant Road, Worli, MUMBAI 400 025,Tel. +91 22 493 8541, Fax. +91 22 493 0966

Indonesia: PT Philips Development Corporation, Semiconductors Division,Gedung Philips, Jl. Buncit Raya Kav.99-100, JAKARTA 12510,Tel. +62 21 794 0040 ext. 2501, Fax. +62 21 794 0080

Ireland: Newstead, Clonskeagh, DUBLIN 14,Tel. +353 1 7640 000, Fax. +353 1 7640 200

Israel: RAPAC Electronics, 7 Kehilat Saloniki St, PO Box 18053,TEL AVIV 61180, Tel. +972 3 645 0444, Fax. +972 3 649 1007

Italy: PHILIPS SEMICONDUCTORS, Piazza IV Novembre 3,20124 MILANO, Tel. +39 2 6752 2531, Fax. +39 2 6752 2557

Japan: Philips Bldg 13-37, Kohnan 2-chome, Minato-ku,TOKYO 108-8507, Tel. +81 3 3740 5130, Fax. +81 3 3740 5077

Korea: Philips House, 260-199 Itaewon-dong, Yongsan-ku, SEOUL,Tel. +82 2 709 1412, Fax. +82 2 709 1415

Malaysia: No. 76 Jalan Universiti, 46200 PETALING JAYA, SELANGOR,Tel. +60 3 750 5214, Fax. +60 3 757 4880

Mexico: 5900 Gateway East, Suite 200, EL PASO, TEXAS 79905,Tel. +9-5 800 234 7381, Fax +9-5 800 943 0087

Middle East: see Italy

Printed in The Netherlands 115002/00/03/pp8 Date of release: 1999 Apr 22 Document order number: 9397 750 05678

Page 120: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

9 ANEXO B. Datasheet LM324

Page 121: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902Low power quad op amps

11995 Nov 27 853-0929 16050

DESCRIPTIONThe LM124/SA534/LM2902 series consists of four independent,high-gain, internally frequency-compensated operational amplifiersdesigned specifically to operate from a single power supply over awide range of voltages.

UNIQUE FEATURESIn the linear mode, the input common-mode voltage range includesground and the output voltage can also swing to ground, eventhough operated from only a single power supply voltage.

The unity gain crossover frequency and the input bias current aretemperature-compensated.

FEATURES• Internally frequency-compensated for unity gain

• Large DC voltage gain: 100dB

• Wide bandwidth (unity gain): 1MHz (temperature-compensated)

• Wide power supply range Single supply: 3VDC to 30VDC or dualsupplies: ±1.5VDC to ±15VDC

• Very low supply current drain: essentially independent of supplyvoltage (1mW/op amp at +5VDC)

• Low input biasing current: 45nADC (temperature-compensated)

• Low input offset voltage: 2mVDC and offset current: 5nADC

• Differential input voltage range equal to the power supply voltage

• Large output voltage: 0VDC to VCC-1.5VDC swing

PIN CONFIGURATION

D, F, N Packages

1

2

3

4

5

6

7 8

14

13

12

11

10

9

– +1 –+

4

– +2 –+

3

OUTPUT 1

–INPUT 1

+INPUT 1

V +

+INPUT 2

–INPUT 2

OUTPUT 2

OUTPUT 4

–INPUT 4

+INPUT 4

GND

+INPUT 3

–INPUT 3

OUTPUT 3

TOP VIEWSL00065

Figure 1. Pin Configuration

ORDERING INFORMATIONDESCRIPTION TEMPERATURE RANGE ORDER CODE DWG #

14-Pin Plastic Dual In-Line Package (DIP) -55°C to +125°C LM124N SOT27-1

14-Pin Ceramic Dual In-Line Package (CERDIP) -55°C to +125°C LM124F 0581B

14-Pin Plastic Dual In-Line Package (DIP) -25°C to +85°C LM224N SOT27-1

14-Pin Ceramic Dual In-Line Package (CERDIP) -25°C to +85°C LM224F 0581B

14-Pin Plastic Small Outline (SO) Package -25°C to +85°C LM224D SOT108-1

14-Pin Plastic Dual In-Line Package (DIP) 0°C to +70°C LM324N SOT27-1

14-Pin Ceramic Dual In-Line Package (CERDIP) 0°C to +70°C LM324F 0581B

14-Pin Plastic Small Outline (SO) Package 0°C to +70°C LM324D SOT108-1

14-Pin Plastic Dual In-Line Package (DIP) 0°C to +70°C LM324AN SOT27-1

14-Pin Plastic Small Outline (SO) Package 0°C to +70°C LM324AD SOT108-1

14-Pin Plastic Dual In-Line Package (DIP) -40°C to +85°C SA534N SOT27-1

14-Pin Ceramic Dual In-Line Package (CERDIP) -40°C to +85°C SA534F 0581B

14-Pin Plastic Small Outline (SO) Package -40°C to +85°C SA534D SOT108-1

14-Pin Plastic Small Outline (SO) Package -40°C to +125°C LM2902D SOT108-1

14-Pin Plastic Dual In-Line Package (DIP) -40°C to +125°C LM2902N SOT27-1

Page 122: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902

Low power quad op amps

1995 Nov 27 2

ABSOLUTE MAXIMUM RATINGSSYMBOL PARAMETER RATING UNIT

VCC Supply voltage 32 or ±16 VDC

VIN Differential input voltage 32 VDC

VIN Input voltage -0.3 to +32 VDC

PDMaximum power dissipation, TA=25°C (still-air)1

N package 1420 mW

F package 1190 mW

D package 1040 mW

Output short-circuit to GND one amplifier2Continuous

VCC<15VDC and TA=25°CContinuous

IIN Input current (VIN<-0.3V)3 50 mA

TA Operating ambient temperature range

LM324/A 0 to +70 °CLM224 -25 to +85 °CSA534 -40 to +85 °CLM2902 -40 to +125 °CLM124 -55 to +125 °C

TSTG Storage temperature range -65 to +150 °CTSOLD Lead soldering temperature (10sec max) 300 °C

NOTES:1. Derate above 25°C at the following rates:

F package at 9.5mW/°CN package at 11.4mW/°CD package at 8.3mW/°C

2. Short-circuits from the output to VCC+ can cause excessive heating and eventual destruction. The maximum output current is approximately40mA, independent of the magnitude of VCC. At values of supply voltage in excess of +15VDC continuous short-circuits can exceed thepower dissipation ratings and cause eventual destruction.

3. This input current will only exist when the voltage at any of the input leads is driven negative. It is due to the collector-base junction of theinput PNP transistors becoming forward biased and thereby acting as input bias clamps. In addition, there is also lateral NPN parasitictransistor action on the IC chip. This action can cause the output voltages of the op amps to go to the V+ rail (or to ground for a largeoverdrive) during the time that the input is driven negative.

Page 123: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902

Low power quad op amps

1995 Nov 27 3

DC ELECTRICAL CHARACTERISTICSVCC=5V, TA=25°C unless otherwise specified.

SYMBOL PARAMETER TEST CONDITIONSLM124/LM224 LM324/SA534/LM2902

UNITSYMBOL PARAMETER TEST CONDITIONSMin Typ Max Min Typ Max

UNIT

VOS Offset voltage1RS=0Ω ±2 ±5 ±2 ±7

mVVOS Offset voltage1RS=0Ω, over temp. ±7 ±9

mV

∆VOS/∆T Temperature drift RS=0Ω, over temp. 7 7 µV/°C

IBIAS Input current2IIN(+) or IIN(-) 45 150 45 250

nAIBIAS Input current2IIN(+) or IIN(-), over temp. 40 300 40 500

nA

∆IBIAS/∆T Temperature drift Over temp. 50 50 pA/°C

IOS Offset currentIIN(+)-IIN(-) ±3 ±30 ±5 ±50

nAIOS Offset currentIIN(+)-IIN(-), over temp. ±100 ±150

nA

∆IOS/∆T Temperature drift Over temp. 10 10 pA/°C

VCM

Common-mode voltage VCC≤30V 0 VCC-1.5 0 VCC-1.5VVCM

range3 VCC≤30V, over temp. 0 VCC-2 0 VCC-2V

CMRRCommon-mode rejectionratio

VCC=30V 70 85 65 70 dB

VOUT Output voltage swingRL=2kΩ, VCC=30V,

over temp.26 26 V

VOH Output voltage highRL≤10kΩ, VCC=30V,

over temp.27 28 27 28 V

VOL Output voltage lowRL≤10kΩ,over temp.

5 20 5 20 mV

ICC Supply current

RL=∞, VCC=30V,over temp.

1.5 3 1.5 3

mAICC Supply currentRL=∞,

over temp.0.7 1.2 0.7 1.2

mA

AVOL Large-signal voltage gain

VCC=15V (for large VOswing), RL≥2kΩ 50 100 25 100

V/mVAVOL Large-signal voltage gain VCC=15V (for large VOswing), RL≥2kΩ,

over temp.25 15

V/mV

Amplifier-to-amplifiercoupling5

f=1kHz to 20kHz, input referred

-120 -120 dB

PSRR Power supply rejection ratio RS≤0Ω 65 100 65 100 dB

IOUT

Output currentsource

VIN+=+1V, VIN-=0V,VCC=15V

20 40 20 40

mAIOUT

VIN+=+1V, VIN-=0V,VCC=15V, over temp.

10 20 10 20

mA

IOUT Output currentVIN-=+1V, VIN+=0V,

VCC=15V10 20 10 20

mA

sinkVIN-=+1V, VIN+=0V,

VCC=15V, over temp.5 8 5 8

VIN-=+1V, VIN+=0V,VO=200mV

12 50 12 50 µA

ISC Short-circuit current4 10 40 60 10 40 60 mA

GBW Unity gain bandwidth 1 1 MHz

SR Slew rate 0.3 0.3 V/µs

VNOISE Input noise voltage f=1kHz 40 40 nV/√Hz

VDIFF Differential input voltage3 VCC VCC V

Page 124: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902

Low power quad op amps

1995 Nov 27 4

DC ELECTRICAL CHARACTERISTICS (Continued)VCC=5V, TA=25°C unless otherwise specified.

SYMBOL PARAMETER TEST CONDITIONSLM324A

UNITSYMBOL PARAMETER TEST CONDITIONSMin Typ Max

UNIT

VOS Offset voltage1RS=0Ω ±2 ±3

mVVOS Offset voltage1RS=0Ω, over temp. ±5

mV

∆VOS/∆T Temperature drift RS=0Ω, over temp. 7 30 µV/°C

IBIAS Input current2IIN(+) or IIN(-) 45 100

nAIBIAS Input current2IIN(+) or IIN(-), over temp. 40 200

nA

∆IBIAS/∆T Temperature drift Over temp. 50 pA/°C

IOS Offset currentIIN(+)-IIN(-) ±5 ±30

nAIOS Offset currentIIN(+)-IIN(-), over temp. ±75

nA

∆IOS/∆T Temperature drift Over temp. 10 300 pA/°CVCM Common-mode voltage range3 VCC≤30V 0 VCC-1.5 V

VCC≤30V, over temp. 0 VCC-2 V

CMRR Common-mode rejection ratio VCC=30V 65 85 dB

VOUT Output voltage swingRL=2kΩ, VCC=30V,

over temp.26 V

VOH Output voltage high RL≤10kΩ, VCC=30V, over temp. 27 28 V

VOL Output voltage lowRL≤10kΩ,over temp.

5 20 mV

ICC Supply current RL=∞, VCC=30V, over temp. 1.5 3 mA

RL=∞, over temp. 0.7 1.2 mA

AVOL Large-signal voltage gain VCC=15V (for large VO swing), RL≥2kΩ 25 100 V/mV

VCC=15V (for large VO swing), RL≥2kΩ,over temp.

15 V/mV

Amplifier-to-amplifier coupling5 f=1kHz to 20kHz, input referred

-120 dB

PSRR Power supply rejection ratio RS≤0Ω 65 100 dB

Output currentsource

VIN+=+1V, VIN-=0V, VCC=15V 20 40 mA

VIN+=+1V, VIN-=0V, VCC=15V, over temp. 10 20 mA

IOUT Output current VIN-=+1V, VIN+=0V, VCC=15V 10 20 mA

sink VIN-=+1V, VIN+=0V, VCC=15V, over temp. 5 8 mA

VIN-=+1V, VIN+=0V, VO=200mV 12 50 µA

ISC Short-circuit current4 10 40 60 mA

VDIFF Differential input voltage3 VCC V

GBW Unity gain bandwidth 1 MHz

SR Slew rate 0.3 V/µs

VNOISE Input noise voltage f=1kHz 40 nV/√Hz

NOTES:1. VO ≈ 1.4VDC, RS=0Ω with VCC from 5V to 30V and over full input common-mode range (0VDC+ to VCC -1.5V).2. The direction of the input current is out of the IC due to the PNP input stage. This current is essentially constant, independent of the state of

the output so no loading change exists on the input lines.3. The input common-mode voltage or either input signal voltage should not be allowed to go negative by more than 0.3V. The upper end of the

common-mode voltage range is VCC -1.5, but either or both inputs can go to +32V without damage.4. Short-circuits from the output to VCC can cause excessive heating and eventual destruction. The maximum output current is approximately

40mA independent of the magnitude of VCC. At values of supply voltage in excess of +15VDC, continuous short-circuits can exceed thepower dissipation ratings and cause eventual destruction. Destructive dissipation can result from simultaneous shorts on all amplifiers.

5. Due to proximity of external components, insure that coupling is not originating via stray capacitance between these external parts. Thistypically can be detected as this type of coupling increases at higher frequencies.

Page 125: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902

Low power quad op amps

1995 Nov 27 5

EQUIVALENT CIRCUIT

v+

6µA 100µA

Q2 Q3

Q1 Q4

INPUTS

+

Q8 Q9

CC

Q10

6µA

Q5

Q7

Q6

RSC

OUTPUT

Q13

Q12

Q11

50µA

SL00066

Figure 2. Equivalent Circuit

Page 126: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902

Low power quad op amps

1995 Nov 27 6

TYPICAL PERFORMANCE CHARACTERISTICS

OP05450S OP05460S OP05470S

OP05480S OP05490S OP05500S

SU

PP

LY C

UR

RE

NT

DR

AIN

(m

Adc

)

TA = 0oC to +125oC

TA = -55oC

4

3

2

1

00 10 20 30 40

SUPPLY VOLTAGE (V DC)

V

– O

UT

PU

T V

OLT

AG

E

RE

FE

RE

NC

E T

O V

+ (V

)D

C

∆+V+ /2

V+

V2

IO

INDEPENDENT OF V+TA = +25oC

8

7

6

5

4

3

2

10.001 0.01 0.1 1 10 100

IO+ – OUTPUT SOURCE CURRENT (mA DC)

+

OU

TP

UT

CU

RR

EN

T (

mA

dc)

90

80

70

60

50

40

30

20

10

055 35 –15 5 25 45 65 85 105 125

TEMPERATURE (oC)

A

VO

LTA

GE

GA

IN (

dB)

VO

L

VO

LTA

GE

GA

IN (

dB)

–+

V+10M

VO

0.1µf

V+/2

VIN

V+ = 30 VDC AND–55oC < TA < +125oC

V+ = 10 to 15 VDC AND–55oC < TA < +125oC

140

120

100

80

60

40

20

01 10 100 1K 10K 100K 1M 10M

FREQUENCY (Hz)

160

120

80

40

00 10 20 30 40

SUPPLY VOLTAGE (V DC)

RL + 20 KΩ

RL + 2 KΩ

V

– O

UT

PU

T V

OLT

AG

E (

V

)O

DC

V+ /2

V+

IO

TA = +25oC

V+ = +5 VDCV+ = +15 VDCV+ = +30 VDC

10

1

0.1

0.010.001 0.01 0.1 1 10 100

IO – OUTPUT SINK CURRENT (mA DC)

VO

+

Supply CurrentOutput Characteristics

Current Sourcing Current Limiting

Voltage GainOutput Characteristics

Current SinkingOpen–Loop Frequency

Response

SL00067

Figure 3. Typical Performance Characteristics

Page 127: PROTOBOT-ProtótipodeBraçoRobótico … · 5 SPI:Serial Peripheral Interface Protocol - Protocolo de Interface Serial Periférico 6 Pulse Width Modulation - Modulação por Largura

Philips Semiconductors Product specification

LM124/224/324/324A/SA534/LM2902

Low power quad op amps

1995 Nov 27 7

TYPICAL PERFORMANCE CHARACTERISTICS (Continued)

E

– O

UT

PU

T V

OLT

AG

E (

mV

)O

EO50pF

INPUT

OUTPUT

500

450

400

350

300

2500 1 2 3 4 5 6 7 8

L — TIME (µS)

TA = +25oCV+ = +30 VDC

I –

INP

UT

CU

RR

EN

T (

nA

)

BD

C

VCM = 0 VDC

V+ = +30 VDC

V+ = +15 VDC

V+ = +5 VDC

90

80

70

60

50

40

30

20

10

0–55 –35 –15 5 25 45 65 85 105 125

TA — TEMPERATURE (Co)

Input Current

V

— O

UT

PU

T S

WIN

G (

Vp–

p)O

OU

TP

UT

VO

LTA

GE

(V

)IN

PO

UT

VO

LTA

GE

(V

)–+

VDC100K

VO

1K

+7VDC

VIN 2K

20

15

10

5

01K 10K 100K 1M

FREQUENCY (Hz)

RL < 2K V+ = 15 VDC

4

3

2

1

0

3

2

1

00 10 20 30 40

TIME (µS)

+V

— IN

PU

T V

OLT

AG

E (

V

)IN

DC

+

15

10

5

NEGATIVE

POSITIVE

0 5 10 15

— POWER SUPPLY VOLTAGE (+ VDC)V+ OR V–

Input Voltage RangeLarge-Scale

Frequency ResponseVoltage-FollowerPulse Response

Voltage-Follower PulseResponse (Small–Signal)

CM

RR

— C

OM

MO

N–M

OD

E R

EJE

CT

ION

RA

TIO

(dB

)

100

100

100k 7.5 VDC

VO

100k

–++

VIN

+7.5 VDC

120

100

80

60

40

20

0100 1k 10k 100k 1M

f — FREQUENCY (Hz)

Common-Mode Rejection Ratio

VIN

SL00068

Figure 4. Typical Performance Characteristics (cont.)

TYPICAL APPLICATIONS

+

V+

8

VOVIN

+

4

V+

10K

10k

RF

BLOCKSDC.GAIN R1

RF

V+

8

RL

VO

RINVIN –

+4

V+

2 V+

8

VOVIN

– 4

V+

10K

10k

Single Supply Inverting Amplifier Non–Inverting Amplifier Input Biasing Voltage–Follower

V+

2

+

SL00069

Figure 5. Typical Applications