Manual de Robótica

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 95

ROBÓTICA EDUCACIONAL NO

ESTADO DO CEARÁ

Sandro Jucá

FORTALEZA – CEARÁ

2013
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 2

ÍNDICE

1 INTRODUÇÃO À LINGUAGEM C E MICROCONTROLADORES PIC .........................9


1.1 ASSEMBLY X LINGUAGEM C..................................................................................... 9
1.2 VANTAGENS X DESVANTAGENS DA LINGUAGEM C PARA
MICROCONTROLADORES....................................................................................................... 9
1.3 COMPONENTES E INSTRUMENTOS ........................................................................ 10
1.8 FONTES DE ALIMENTAÇÃO ..................................................................................... 12
2 PROTOCOLO DE COMUNICAÇÃO USB........................................................................12
3 MÉTODOS DE COMUNICAÇÃO USB ............................................................................13
4 INTRODUÇÃO À ROBÓTICA ..........................................................................................14
4.1 PRINCIPAIS EVENTOS................................................................................................ 15
4.2 CLASSIFICAÇÃO CRONOLÓGICA ........................................................................... 16
4.3 AS TRÊS LEIS FUNDAMENTAIS DA ROBÓTICA ................................................... 17
4.4 O QUE É UM ROBÔ? .................................................................................................... 17
5 DESAFIOS DA ROBÓTICA EDUCACIONAL .................................................................22
6 INSTRUÇÕES EM LINGUAGEM C .................................................................................23
6.1 FUNÇÕES SanUSB........................................................................................................ 23
6.2 FUNÇÕES BÁSICAS DA APLICAÇÃO DO USUÁRIO ............................................ 23
6.3 FUNÇÕES DO CONVERSOR ANALÓGICO DIGITAL (A/D) .................................. 28
6.4 FUNÇÕES DA COMUNICAÇÃO SERIAL RS-232 .................................................... 29
7 FERRAMENTA SanUSB ....................................................................................................31
7.1 UTILIZANDO A FERRAMENTA SanUSB ................................................................. 32
7.2 GRAVANDO O MICROCONTROLADOR VIA USB NO WINDOWS ..................... 36
7.3 GRAVANDO O MICROCONTROLADOR VIA USB NO LINUX ............................. 37
7.4 GRAVAÇÃO WIRELESS DE MICROCONTROLADORES ...................................... 39
7.5 SanUSB CDC – EMULAÇÃO DE COMUNICAÇÃO SERIAL NO WINDOWS ....... 45
8 PRÁTICAS INTRODUTÓRIAS .........................................................................................51
8.1 PRÁTICA 1 – PISCA LED ............................................................................................ 51
8.2 PRÁTICA 2 – PISCA 3 LEDS ....................................................................................... 53
8.3 PRÁTICA 3 – BOTÕES ................................................................................................. 56
8.4 PRÁTICA 4 – SEMÁFORO - DESAFIO....................................................................... 59
8.5 PRÁTICA 5 – SOLENÓIDES E MICRORRELÉS........................................................ 62
8.6 MULTIPLEXAÇÃO COM DISPLAY 7 SEGMENTOS ............................................... 66
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 3

8.7 DISPLAY LCD – ALFANUMÉRICO ........................................................................... 69


9 PRÁTICAS ESPECÍFICAS .................................................................................................71
9.1 SENSORES..................................................................................................................... 71
9.2 SENSORES ANALÓGICOS .......................................................................................... 74
9.2.1 CONVERSOR A/D .................................................................................................... 74
9.2.2 AJUSTE DE RESOLUÇÃO DO SENSOR E DO CONVERSOR AD DE 8 BITS ... 75
9.2.3 CONVERSOR AD DE 10 BITS ................................................................................. 75
9.3 SENSOR INFRAVERMELHO ...................................................................................... 76
9.4 SENSOR DE TEMPERATURA LM35 ......................................................................... 79
9.5 SENSOR DE LUMINOSIDADE ................................................................................... 81
10 ATUADORES APLICADOS EM ROBÓTICA EDUCACIONAL ....................................84
11 CONSIDERAÇÕES FINAIS ...............................................................................................93
12 LINKS DE APOIO E REPORTAGENS .............................................................................94
13 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................94
14 SUGESTÃO DE LIVROS ...................................................................................................95
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 4

ÍNDICE DE FIGURAS

Figura 1. 1: Protoboard. ............................................................................................................................... 11


Figura 1. 3: Código de cores de resistores. ................................................................................................... 11
Figura 3. 1: Drivers e comunicação. .............................................................................................................. 14
Figura 4. 2: Robô Unimates. ......................................................................................................................... 15
Figura 4. 3: Ciclo de interação. ..................................................................................................................... 18
Figura 4. 4: Classificação segundo a anatomia.............................................................................................. 19
Figura 4. 5: Exemplos de robôs com rodas. .................................................................................................. 19
Figura 4. 6: Classificação segundo a funcionalidade. .................................................................................... 20
Figura 4. 7: Robô lixeira. .............................................................................................................................. 21
Figura 4. 8: Exemplos de robô pessoal: cãozinho AIBO e MIO (Sony). .......................................................... 21
Figura 4. 9: Exemplo de robô móvel educacional com a Ferramenta SanUSB. .............................................. 22
Figura 7. 1: Esquemático do sistema de gravação. ....................................................................................... 32
Figura 7. 2: Esquemático de montagem do circuito com PIC 18F2550. ......................................................... 33
Figura 7. 3: Esquemático de montagem do circuito com PIC 18F4x5x. ......................................................... 33
Figura 7. 4: Montagem do circuito com PIC em protoboard e sequência da USB. ......................................... 34
Figura 7. 5: PCI (Placa de Circuito Impresso) da ferramenta SanUSB. ........................................................... 35
Figura 7. 6: PCI da Ferramenta SanUSB. ....................................................................................................... 35
Figura 7. 7: Tela do software de gravação do programa em linguagem C no PIC– Windows. ....................... 37
Figura 7. 8: Tela do software de gravação do programa em linguagem C no PIC – Linux. ............................. 38
Figura 7. 9: Circuito de Gravação com Modem Zig Bee Xbee ........................................................................ 39
Figura 7. 10: Circuito de Gravação com Módulo Bluetooth .......................................................................... 42
Figura 7. 11: Instalação do driver CDC (1). .................................................................................................... 46
Figura 7. 12: Instalação do driver CDC (2). ................................................................................................... 47
Figura 7. 13: Instalação do driver CDC (3). .................................................................................................... 47
Figura 7. 14: Instalação do driver CDC (4). .................................................................................................... 48
Figura 7. 15: Instalação do driver CDC (5). .................................................................................................... 48
Figura 7. 16: Figura 2. 8: Verificação de porta COM instalada. ..................................................................... 49
Figura 7. 17: Utilização da porta COM pelo CCS. .......................................................................................... 49
Figura 7. 18: Visualização de textos via porta serial emulada. ...................................................................... 50
Figura 7. 19: Interface em Java de comunicação serial. ................................................................................ 51
Figura 8. 1: Esquemático prática 1. .............................................................................................................. 52
Figura 8. 2: Prática 1 - Pisca LED, montada em protoboard. ......................................................................... 53
Figura 8. 3: Esquemático Prática 2. .............................................................................................................. 54
Figura 8. 4: Prática 2 - Pisca 3LEDs, montada em protoboard. ...................................................................... 54
Figura 8. 5: Esquemático Prática 3. .............................................................................................................. 57
Figura 8. 6: Prática 3 – Botões, montada em protoboard. ............................................................................ 57
Figura 8. 7: Esquemático Prática 4 – Desafio - Semáforo. ............................................................................. 60
Figura 8. 8: Bobina solenóide. ...................................................................................................................... 62
Figura 8. 9: Microrrelés. ............................................................................................................................... 63
Figura 8. 10: Acionamento de motor 12Vcc com relé 5V e driver ULN2803. ................................................. 63
Figura 8. 11: Esquemático interno de um relé e seu acionamento. .............................................................. 64
Figura 8. 12: Ligação interna do ULN2803. ................................................................................................... 64
Figura 8. 13: Esquemático Prática 5.............................................................................................................. 65
Figura 8. 14: Prática 5 – Microrrelés, montada em protoboard. ................................................................... 65
Figura 8. 15: Esquemático Prática 6 – Multiplexação display 7 segmentos. .................................................. 67
Figura 8. 16: Prática 6 – Multiplexação display 7 segmentos, montada em protoboard. .............................. 68
Figura 8. 17: Esquemático Prática 7 – Display LCD Alfanumérico.................................................................. 69
Figura 8. 18: Prática 6 – Display LCD, montada em protoboard. ................................................................... 70
Figura 9. 1: Comparação homem com robô.................................................................................................. 72
Figura 9. 2: Exemplo de amortecedor táctil. ................................................................................................. 73
Figura 9. 3: Uso de periféricos no conversor A/D. ........................................................................................ 74
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 5

Figura 9. 4: Sensor Ótico Oposto. ................................................................................................................. 76


Figura 9. 5: Sensor ótico retro-reflector. ...................................................................................................... 76
Figura 9. 6: Sensor ótico difuso. ................................................................................................................... 77
Figura 9. 7: Esquemático de montagem do par de sensor infravermelho. .................................................... 77
Figura 9. 8: Par infravermelho. ..................................................................................................................... 79
Figura 6. 12:Prática 8 – Sensor Infravermelho, montada em protoboard. .................................................... 79
Figura 9. 9: Prática 9 – Sensor de temperatura LM35, montada em protoboard. ......................................... 80
Figura 9. 10: Esquemático Prática 9 – Sensor de temperatura LM35. ........................................................... 80
Figura 9. 11: Esquemático Prática 10 - Sensor luminosidade LDR. ................................................................ 82
Figura 9. 12: Prática 10 – Sensor de luminosidade LDR, montada em protoboard........................................ 82
Figura 10. 1: Acionamento Bidirecional de motores. .................................................................................... 84
Figura 10. 2: Exemplos de motores CC. ........................................................................................................ 85
Figura 10. 3: Exemplos de motores CC de automóveis. ................................................................................ 85
Figura 10. 4: Comparação entre os raios de engrenagens. ........................................................................... 86
Figura 10. 5: Parafuso com rosca sem-fim. ................................................................................................... 86
Figura 10. 6: Diagrama de ponte H para motor CC. ...................................................................................... 87
Figura 10. 7: Driver L293D (ponte H). ........................................................................................................... 88
Figura 10. 8: Comandos de movimento. ....................................................................................................... 88
Figura 10. 9: Ponte H de motor CC com micro-relés e ULN2803. .................................................................. 89
Figura 10. 10: Exemplos de servo-motor utilizado em robótica. ................................................................... 90
Figura 10. 11: Robô montado com 2 servo-motores de parabólica (abaixo da bateria). ............................... 91
Figura 10. 12: Ligação do servo-motor e partes internas. ............................................................................. 92

Competências:
1. Compreender o princípio de operação de um microcontrolador PIC;
2. Conhecer e utilizar programas compiladores aplicados em microcontroladores;
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 6

3. Conhecer e aplicar a gravação de microcontroladores em Windows e Linux através


da porta USB com a ferramenta SanUSB;
4. Compreender o princípio de clock, temporização e reset de um microcontrolador;
5. Programar um microcontrolador utilizando declaração de variáveis e conjunto de
instruções da linguagem C para PIC 18F;
6. Projetar utilizando as portas de entrada e saída do microcontrolador;
7. Diferenciar grandezas analógicas e digitais e aplicar o conversor analógico-digital;
8. Utilizar os dispositivos de interrupções, temporização e emulação de comunicação
serial dos microcontroladores;
9. Projetar, analisar e manter sistemas eletrônicos microcontrolados.
10. Estudar periféricos entre eles: driver de potência ULN 2803, microrrelés, displays
de 7 segmentos e LCD, sensores de temperatura, luminosidade e infravermelho,
buzzer, botões;
11. Montar diversos circuitos na área de automação, domótica e robótica em
protoboard e em placas de circuito impresso utilizando os periféricos citados no
item anterior.
12. Compreender os conceitos básicos da Robótica e suas vantagens edesvantagens;
13. Desafios da Robótica Educacional;
14. Aplicar a Robótica Educacional;
15. Compreender o princípio de operação de um robô educacional;
16. Programar robôs educacionais em linguagem C;
17. Entender a estrutura e controle de um robô, especialmente os educacionais;
18. Conhecer e aplicar os principais atuadores e sensores utilizados em robótica;
19. Desenvolver robôs educacionais com diversas aplicações.
20. Classificação dos Robôs EducacionaisEducacionais;
21. Projetar, analisar e manter sistemas eletrônicos aplicados em robótica educacional.
22. Atuadores e sensores aplicados em Robótica;
23. Implementação de comportamentos com introdução aos princípios de desvio de
obstáculos, seguidor de labirinto, seguidor de linha, entre outros.

Bases Científicas e Tecnológicas:


1. Conceitos básicos relativos aos microcontroladores PIC;
2. Tipos de aplicações;
3. Arquitetura e descrição dos pinos dos microcontroladores PIC 18F;
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 7

4. Memória de dados e memória de programa;


5. Ferramentas de compilação e gravação do programa através da porta USB com a
ferramenta SanUSB;
6. Introdução à Linguagem C;
7. Instruções lógicas e aritméticas;
8. Clock, ciclos de temporização e reset;
9. Conversor analógico-digital;
10. Interrupções;
11. Temporizadores/Contadores;
12. Sistema de comunicação e emulação serial através da porta USB;
13. Exemplos e projetos práticos utilizando microcontroladores e periféricos.
14. Introdução à Robótica Educacional;
15. Conceitos de Robótica e classificações de robôs;
16. Comparação e conceitos de sistemas robóticos, de automação e domótica;
17. As três leis fundamentais da Robótica;
18. Atuadores aplicados em Robótica;
19. Tipos de sensores utilizados em Robótica.
20. Compreender o princípio de operação de um robô educacional;

Conteúdo Programático
1. Introdução aos Microcontroladores PIC 18F;
2. Princípio de funcionamento dos componentes eletrônicos;
3. Introdução à Linguagem C;
4. Exemplos práticos de projetos microcontrolados com a ferramenta SanUSB;
5. Introdução à robótica educacional;
6. Conceitos de robótica;
7. Classificação dos robôs educacionais;
8. Desafios da robótica educacional;
9. Atuadores aplicados em robótica;
10. Acionamento de motores cc (corrente contínua) de baixa tensão;
11. Acionamento de motores de passo;
12. Servo-motores;
13. Tipos de sensores utilizados em robótica educacional;
14. Sensores de proximidade;
15. Transmissores e receptores infravermelhos;
16. Programação de robôs educacionais nos sistemas operacionais Linux,
Windows e Mac OSX;
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 8

17. Construção de robôs educacionais de baixo custo aplicados em robótica


educacional.

Objetivos da Aprendizagem

Ao final do estudo deste instrumento facilitador o aluno deve ser capaz de:

1. Desenvolver projetos de Automação, Domótica e Robótica com


Microcontroladores PIC;
2. Programar em linguagem C utilizando instruções lógicas através da
ferramenta SanUSB;
3. Conhecer compiladores aplicados em microcontroladores utilizados em
robótica educacional;
4. Compreender o princípio de operação de um robô educacional;
5. Realizar a programação de robôs educacionais nos sistemas operacionais
Linux, Windows e Mac OSX.
6. Conhecer os principais sensores utilizados em robótica educacional;
7. Diferenciar grandezas analógicas e digitais e aplicar o conversor analógico-
digital;
8. Projetar, analisar e manter sistemas eletrônicos aplicados em robótica
educacional.
9. Conhecer os principais motores utilizados em robótica educacional;
10. Construir robôs educacionais microcontrolados.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 9

1 INTRODUÇÃO À LINGUAGEM C E MICROCONTROLADORES PIC

Um microcontrolador é um sistema computacional completo, no qual estão


incluídos internamente uma CPU (Central Processor Unit), memórias RAM (dados),
flash (programa) e E2PROM, pinos de I/O (Input/Output), além de outros periféricos
internos, tais como, osciladores, canal USB, interface serial assíncrona USART,
módulos de temporização e conversores A/D, entre outros, integrados em um
mesmo componente (chip).

O microcontrolador PIC® (Periferal Interface Controler), da Microchip


Technology Inc. (empresa de grande porte, em Arizona, nos Estados Unidos da
América), possui uma boa diversidade de recursos, capacidades de
processamento, custo e flexibilidade de aplicações.

1.1 ASSEMBLY X LINGUAGEM C


A principal diferença entre uma linguagem montada (como assembly) e a
linguagem de programação C está na forma como o programa objeto (HEX) é
gerado. Em assembly, o processo usado é a montagem, portanto devemos utilizar
um MONTADOR (assembler), enquanto que em linguagem C o programa é
compilado. A compilação é um processo mais complexo do que a montagem. Na
montagem, uma linha de instrução é traduzida para uma instrução em código de
máquina. Já em uma linguagem de programação, não existem linhas de instrução,
e sim estruturas de linguagem e expressões. Uma estrutura pode ser condicional,
incondicional, de repetição, etc...

As expressões podem envolver operandos e operadores mais complexos.


Neste caso, geralmente, a locação dos registros de dados da RAM é feita pelo
próprio compilador. Por isso, existe a preocupação, por paret do compilador, de
demonstrar, após a compilação, o percentual de memória RAM ocupado, pois neste
caso é relevante, tendo em vista que cada variável pode ocupar até8 bytes (tipo
double).

Para edição e montagem (geração do código HEX) de um programa em


assembly, os softwares mais utilizados são o MPASMWIN (mais simples) e o
MPLAB. Para edição e compilação em linguagem C (geração do código HEX), o
programa mais utilizado é o PIC C Compiler CCS®.

Mas em linguagem C é possível se utilizar o operador de multiplicação (*),


de forma simples e prática. Ao compilar, a linguagem gerada irá converter a
multiplicação em somas sucessivas sem que o programador se preocupe com
isso.

1.2 VANTAGENS X DESVANTAGENS DA LINGUAGEM C PARA


MICROCONTROLADORES

- O compilador C irá realizar o processo de tradução, permitindo uma programação


mais amigável e mais fácil para desenvolvimento de aplicações mais complexas
como, por exemplo, uso do canal USB e aplicações com o protocolo I2C.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 10

- A linguagem C permite maior portabilidade, uma vez que um mesmo programa


pode ser recompilado para um microcontrolador diferente, com o mínimo de
alterações, ao contrário do ASSEMBLY, onde as instruções mudam muito entre os
diversos modelos de microcontroladores existentes como PIC e 8051.

- Em C para microcontroladores PIC, não é necessário se preocupar com a


mudança de banco para acessar os registros especiais da RAM como, por
exemplo, as portas de I/O e os registros TRIS de comando de I/O dos pinos, isto é
executado pelo próprio compilador através das bibliotecas.

- É possível incluir, de forma simples e padronizada, outro arquivo em C (biblioteca)


para servir como parte do seu programa atual como, por exemplo, incluir o arquivo
LCD (#include <lcd.c>), desenvolvido por você anteriormente.

- O ponto fraco da compilação em C é que o código gerado, muitas vezes, é maior


do que um código gerado por um montador (assembler), ocupando uma memória
maior de programa e também uma memória maior de dados. No entanto, para a
maioria das aplicações sugeridas na área de automação industrial, a linguagem C
para PIC se mostra a mais adequada, tendo em vista que a memória de programa
tem espaço suficiente para estas aplicações.

- Outra desvantagem é que o programador não é “forçado” a conhecer as


características internas do hardware, já que o mesmo se acostuma a trabalhar em
alto nível, o que compromete a eficiência do programa e também o uso da
capacidade de todos os periféricos internos do microcontrolador. Isso provoca, em
alguns casos, o aumento do custo do sistema embarcado projetado com a
aquisição de novos periféricos externos.

1.3 COMPONENTES E INSTRUMENTOS

1.3.1 MATRIZ DE CONTATOS OU PROTOBOARD

Para desenvolver os projetos e exercícios propostos nessa apostila será


necessário a utilização de uma Matriz de Contatos (ou Protoboard em inglês),
mostrada na figura abaixo, que é uma placa com diversos furos e conexões
condutoras para montagem de circuitos eletrônicos. A grande vantagem do
Protoboard na montagem de circuitos eletrônicos é a facilidade de inserção de
componentes (não necessita soldagem).
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 11

Figura 1. 1: Protoboard.

Em alguns pontos do circuito é necessário limitar a intensidade da corrente


elétrica. Para fazer isso utilizamos um componente chamado resistor. Quanto maior
a resistência, menor é a corrente elétrica que passa num condutor.

1.7.1 RESISTORES
1.7.2
Os resistores geralmente são feitos de carbono. Para identificar qual a
resistência de um resistor específico, comparamos ele com a seguinte tabela:

Figura 1. 2: Código de cores de resistores.

1.7.3 RESUMO DESCRITIVO DOS COMPONENTES BÁSICOS

DIODOS Retificam tensão, protegem contra corrente


reversa.

TRANSISTORES Funcionam como chaves


Limita corrente, dá referência ao pino do
RESISTOR
microcontrolador.

CAPACITOR Armazena energia, filtra tensão.

LED Diodo emissor de luz


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 12

1.8 FONTES DE ALIMENTAÇÃO

As fontes mais comuns em sistemas embarcados com microcontroladores


são baterias recarregáveis ou conversores CA-CC como carregadores de celulares.

As baterias ou pilhas são dispositivos que armazenam energia química e a torna


disponível na forma de energia elétrica.

A capacidade de armazenamento de energia de uma bateria é medida


através da multiplicação da corrente de descarga pelo tempo de autonomia, sendo
dado em ampére-hora (1 Ah= 3600 Coulombs). Deve-se observar que, ao contrário
das baterias primárias (não recarregáveis), as baterias recarregáveis não podem
ser descarregadas até 0V pois isto leva ao final prematuro da vida da bateria. Na
verdade elas têm um limite até onde podem ser descarregadas, chamado de tensão
de corte. Descarregar a bateria abaixo deste limite reduz a vida útil da bateria.

As baterias ditas 12V, por exemplo, devem operar de 13,8V (tensão a plena
carga), até 10,5V (tensão de corte), quando 100% de sua capacidade terá sido
utilizada, e é este o tempo que deve ser medido como autonomia da bateria.

Como o comportamento das baterias não é linear, isto é, quando maior a corrente
de descarga menor será a autonomia e a capacidade, não é correto falar em uma
bateria de 100Ah. Deve-se falar, por exemplo, em uma bateria 100Ah padrão de
descarga 20 horas, com tensão de corte 10,5V. Esta bateria permitirá descarga de
100 / 20 = 5A durante 20 horas, quando a bateria irá atingir 10,5V.

Outro fator importante é a temperatura de operação da bateria, pois sua


capacidade e vida útil dependem dela. Usualmente as informações são fornecidas
supondo T=25°C ou T=20°C, que é a temperatura ideal para maximizar a vida útil.

2 PROTOCOLO DE COMUNICAÇÃO USB

A USB, sigla para Universal Serial Bus, é o padrão de interface para periféricos
externos ao computador provavelmente mais popular dos já criados. Um sistema
USB é composto por hardware mestre e escravo. O mestre é chamado de host e o
escravo denomina-se dispositivo ou simplesmente periférico. Todas as
transferências USB são administradas e iniciadas pelo host. Mesmo que um
dispositivo queira enviar dados, é necessário que o host envie comandos
específicos para recebê-los.

A fase de preparação, conhecida como enumeração, acontece logo depois de


quando o dispositivo USB é fisicamente conectado ao computador. Nesse
momento, o sistema operacional realiza vários pedidos ao dispositivo para que as
características de funcionamento sejam reconhecidas. O sistema operacional, com
a obtida noção do periférico USB, atribui-lhe um endereço e seleciona a
configuração mais apropriada de acordo com certos critérios. Com mensagens de
confirmação do dispositivo indicando que essas duas últimas operações foram
corretamente aceitas, a enumeração é finalizada e o sistema fica pronto para o uso.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 13

3 MÉTODOS DE COMUNICAÇÃO USB

Os métodos mais comuns de comunicação USB, também utilizados pela


ferramenta SanUSB, são:

Human Interface Device (HID) - O dispositivo USB é reconhecido


automaticamente pelo sistema operacional windows ou linux como um Dispositivo
de Interface Humana (HID), não sendo necessário a instalação de driver especiais
para a aplicação. Este método apresenta velocidade de comunicação de até 64
kB/s e é utilizado pelo gerenciador de gravação da ferramenta SanUSB no linux.
Mais detalhes na video-aula disponível em
http://www.youtube.com/watch?v=h6Lw2qeWhlM .

Communication Devices Class (CDC) – Basicamente o driver emula uma


porta COM, fazendo com que a comunicação entre o software e o firmware seja
realizada como se fosse uma porta de comunicação serial padrão. É o método mais
simples de comunicação bidirecional com velocidade de comunicação é de até 115
kbps, ou seja, aproximadamente 14,4 kB/s. Mais detalhes em uma aplicação
Windows com protocolo Modbus RTU
http://www.youtube.com/watch?v=KUd1JkwGJNk e em uma aplicação de
comunicação bidirecional no Linux
http://www.youtube.com/watch?v=cRW99T_qa7o.

Mass StorageDevice (MSD) - Método customizado paradispositivos de


armazenamento em massa que permite alta velocidade de comunicação USB,
limitado apenas pela própria velocidade do barramento USB 2.0 (480 Mbps). Este
método é utilizado por pen-drives,scanners, câmeras digitais. Foi utilizado
juntamente com a ferramenta SanUSB para comunicação com software de
supervisão programado em Java. Mais detalhes na video-aula disponível em
http://www.youtube.com/watch?v=Ak9RAl2YTr4.

Como foi visto, a comunicação USB é baseada em uma central (host), onde o
computador enumera os dispositivos USB conectados a ele. Existem três grandes
classes de dispositivos comumente associados a USB: dispositivos de interface
humana (HID), classe de dispositivos de comunicação (CDC) e dispositivos de
armazenamento em massa (MSD). Cada uma dessas classes já possui um driver
implementado na maioria dos sistemas operacionais. Portanto, se adequarmos o
firmware de nosso dispositivo para ser compatível com uma dessas classes, não
haverá necessidade de implementar um driver.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 14

Figura 3. 1: Drivers e comunicação.


Nos sitemas operacionais Windows e Linux, o modo mais fácil de comunicar
com o PIC USB é o CDC, por uma razão simples, os programas para PCs são
baseados na comunicação via porta serial, o que torna o processo ainda mais
simples. O método CDC no Linux e o HID no Windows são nativos, ou seja, não é
necessário instalar nenhum driver no sistema operacional para que o PC reconheça
o dispositivo.

4 INTRODUÇÃO À ROBÓTICA

No mundo globalizado, a necessidade de se realizar tarefas com eficiência e


precisão é cada vez maior. Existem também tarefas a serem realizadas em lugares onde a
presença humana se torna difícil, arriscada e até mesmo impossível. Para realizar essas
tarefas se faz necessária a presença de dispositivos ou equipamentos, que as faça sem
risco de vida. A ROBÓTICA é a área que se preocupa com o desenvolvimento destes
dispositivos. Robótica é multidisciplinar e busca o desenvolvimento e a integração de
técnicas e algoritmos para a criação de ROBÔS.

A Robótica envolve áreas como Engenharia Mecânica, Engenharia Elétrica,


Informática, Inteligência Artificial, entre outras, com uma perfeita harmonia, que se faz
necessária para se projetar essas máquinas. Não é errado afirmar que todo aquele que
trabalha com Automação Industrial (independente do nível) é, na essência, um
INTEGRADOR de tecnologias.

A ideia de se construir robôs começou a tomar força no início do século XX com a


necessidade de aumentar a produtividade e melhorar a qualidade dos produtos. Foi nesta
época que o robô industrial encontrou suas primeiras aplicações (George Devol –
considerado o pai da robótica industrial). Atualmente, devido aos inúmeros recursos que os
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 15

sistemas de microcomputadores nos oferecem, a Robótica atravessa uma época de


contínuo crescimento que permitirá, em um curto espaço de tempo, o desenvolvimento de
robôs inteligentes fazendo assim a ficção do homem antigo se tornar a realidade do
homem atual.

O primeiro robô industrial foi o Unimates (ver Figura 1.2), desenvolvido por George
Devol e Joe Engleberger, no final da década de 50, início da década de 60. As primeiras
patentes de máquinas transportadoras pertenceram a Devol, máquinas essas que eram
robôs primitivos que removiam objetos de um local para outro.

Figura 4. 1: Robô Unimates.


4.1 PRINCIPAIS EVENTOS
SÉCULO XVIII

 Bonecos encenavam peças musicais.


 O controle era rudimentar. Feito através de cabos e outrosdispositivos
mecânicos.

ANO DE 1923

 KarelCapek – Peça RUR.

ANO DE 1939

 Isaac Asimov – Eu Robô (livro), postulando as três leis fundamentais da


robótica.

ANO DE 1943
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 16

 Colossus – 1º Computador Eletrônico (Inglaterra).

ANO DE 1951

 1º Computador em Tempo Real.

ANO DE 1952

 Construção da 1ª Máquina Operatriz com NC (MIT).

ANO DE 1954

 1ª Teoria com Auxílio da Eletrônica.


 Patente do 1º Robô Industrial Automático.

ANO DE 1958

 Manipulador Copiador com Câmera na Garra.

A PARTIR DE 1959...

 A automatização dos Sistemas.


 O Homem Passa a Executar Tarefas menos Repetitivas.
 Robôs “invadem” o Parque Industrial Mundial.
 Sistemas Robóticos são Utilizados na Medicina.
 Robôs na Exploração Espacial.
 Robôs Resgatam de Vítimas de Catástrofes.
 Robôs operados via internet.

4.2 CLASSIFICAÇÃO CRONOLÓGICA

O avanço da tecnologia permitiu o surgimento e desenvolvimento de várias


estruturas, necessitando classificá-los de acordo com a época de aparecimento, situando-
os cronologicamente no tempo.

Devido a várias diferenças em função de características e propriedades, existem


diversas classes de robôs que se diferenciam em suas aplicações e formas de trabalhar.

1ª Geração- são incapazes de obter qualquer informação sobre o meio. Podem


realizar apenas movimentos pré-programados e as informações que eles retornam sobre o
ambiente de operação é mínima.

 São dotados apenas de sensores (percebem apenas estados internos do


robô).
 Requerem um ambiente estruturado (objetos bem posicionados).
 Têm sequência fixa (repetem a mesma tarefa).
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 17

 Precisam ser reprogramados para outras tarefas.


 Dotados de pequeno poder computacional.

Ex: “Braços” para coleta de amostras submarinas.

2ª Geração- possui todas as características da 1ª Geração, acrescentando uma


detalhada comunicação com seu ambiente. Esta comunicação é atingida através de
sistemas de sensoriamento e identificação. Necessita de computadores mais velozes, com
maior memória, e também um grande avanço na capacidade de sensoriamento.

 São dotados com sensores internos e externos (percebemos estados do


ambiente).
 Podem atuar em um ambiente parcialmente estruturado.
 Seus atuadores são pneumáticos, hidráulicos ou elétricos.

Ex: Manipuladores Industriais.

3ª Geração- podem interagir com o ambiente e “aprender” funções.

 Fazem uso intensivo de sensores.


 Algoritmos de percepção.
 Algoritmos de controle inteligente.
 Comunicação com outras máquinas.
 Tomam decisões autônomas diante de situações não previstas.
 Podem atuar em um ambiente não estruturado.
 Uso incipiente na indústria.

Ex: Robôs utilizados em missões espaciais (exploradores).

4.3 AS TRÊS LEIS FUNDAMENTAIS DA ROBÓTICA


Segundo Isaac Asimov.

1ª- Um robô não pode causar dano a um ser humano nem, por omissão, permitir que
um ser humano sofra;

2ª- Um robô deve obedecer às ordens dadas por seres humanos, exceto quando
essas ordens entrarem em conflito com a Primeira Lei;

3ª - Um robô deve proteger sua própria existência, desde que essa proteção não se
choque com a Primeira nem com a Segunda Lei da robótica.

4.4 O QUE É UM ROBÔ?


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 18

Um robô é um dispositivo mecânico montado sobre uma base fixa ou não que age
sob o controle de um sistema computacional, equipado com sensores e atuadores que o
permitem interagir com o ambiente.

Este sistema computacional pode ser um microcontrolador, semelhante ao que


vamos estudar neste curso de Robótica Industrial e Educacional; e que possui
internamente os mesmos componentes que integram um computador: uma CPU (Central
Processor Unit), memórias RAM (dados), flash (programa) e E2PROM, pinos de I/O
(Input/Output), além de outros periféricos internos, tais como, osciladores, canal USB,
interface serial assíncrona USART, módulos de temporização e conversores A/D, entre
outros, integrados em um mesmo componente (chip).

A interação com o ambiente se dá através de ciclos de percepção-ação que


consistem em três passos fundamentais: obtenção de informações acerca do ambiente
através dos sensores; processamento das informações obtidas e seleção de ações que
serão executadas; execução das ações planejadas por uma pré-programação gravada no
chip, através dos atuadores (ex. motores).

O robô realiza diversos ciclos de percepção-ação (ver Figura 1.4) modificando o


estado do ambiente em busca da realização da tarefa.

Figura 4. 2: Ciclo de interação.

4.5 CLASSIFICAÇÃO DOS ROBÔS EDUCACIONAIS

Diversas taxonomias têm sido utilizadas para classificar robôs educacionais,


contudo, não há ainda nenhuma que seja definitiva. De uma forma geral, podemos agrupar
os robôs existentes de acordo com três aspectos: anatomia, tipo de controle e
funcionalidade.

4.5.1 SEGUNDO A ANATOMIA

Quanto à anatomia, os robôs podem ser classificados em três grandes grupos: os


robôs aéreos, aquáticos e terrestres (ver Figura 1.5).
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 19

Figura 4. 3: Classificação segundo a anatomia.


Os robôs terrestres são os mais populares e podem utilizar três tipos diferentes de
locomoção: por rodas, por esteiras ou por pernas. Vamos enfatizar os robôs terrestres com
rodas, pois estes são o nosso foco neste curso.

Robôs com rodas: estes são os mais simples, pois não necessitam de um hardware
tão complexo quanto os robôs com esteiras e pernas, além disso, torna-se fácil transformar
brinquedos em robôs. A principal desvantagem no uso de rodas é que em terrenos
irregulares, o desempenho pode não ser satisfatório. Em geral, a roda do robô deve
possuir raio igual ou maior que os obstáculos que ele irá transpor.

Nas figuras a seguir podemos observar exemplos de robôs com rodas e a sua
colocação nas competições. Estes foram desenvolvidos por alunos do IFCE Campus
Maracanaú do curso de Automação Industrial e integrantes do Grupo SanUSB e também
foram montados por alunos de Eletrônica da Escola Técnica CEPEP na disciplina de
Microcontroladores, no intuito de disputar competições de robótica de desvio de
obstáculos, seguidor de labirinto e participação em Feiras Tecnológicas, como, por
exemplo, a 1ª Feira Tecnológica CEPEP. Este último apresentado na feira consistiu de um
Robô Bombeiro dotado de sensores para desvio de obstáculos e um sensor de
luminosidade que ao identificar um foco de incêndio aciona um cooler para apagar o fogo
(ver Figura 1.6).

Figura 4. 4: Exemplos de robôs com rodas.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 20

4.5.2 SEGUNDO O TIPO DE CONTROLE

Quando classificados segundo o tipo de controle, os robôs podem ser separados


em três categorias:

Tele-operados: onde o operador realiza todos os movimentos que o robô deve


fazer;

Semi-autônomos: o operador indica o macro comando a ser executado e o robô o


faz sozinho;

Autônomos: o robô realiza a tarefa sozinho tomando suas próprias decisões


baseando-se nos dados obtidos do ambiente.

4.5.3 SEGUNDO A FUNCIONALIDADE

Ao agruparmos os robôs segundo a funcionalidade, percebemos 5 grupos: robôs


industriais, robôs de serviço, robôs de campo, robôs pessoais e robôs
educacionais. Contudo, há uma sobreposição entre os três primeiros (ver Figura
1.7), devido à diferença dos ambientes onde atuam e a necessidade de maior
autonomia.

Figura 4. 5: Classificação segundo a funcionalidade.

Robôs Industriais: são os robôs utilizados em linhas de produção. Estes robôs


recebem tarefas determinadas a priori na forma de uma sequência explícita de ações e
executam este programa automaticamente. O ambiente é completamente estruturado e
ajustado para a execução da tarefa. Neste ambiente, o robô tem conhecimento exato da
sua posição e da localização dos objetos. Em geral, os robôs educacionais industriais são
plataformas educacionais utilizadas para tarefas pesadas, como transporte de materiais e
produtos finais em sistemas de manufatura. Estes são denominados AGVs
(AutomatedGuidedVehicles) e são programados para seguir linhas desenhadas no chão.

Robôs de serviço industrial: este tipo de robô possui as características de um robô


de serviço, porém atua em um ambiente completamente estruturado.

Robôs de serviço: são os robôs educacionais utilizados para serviços gerais. O


ambiente é estruturado e o robô possui um modelo deste ambiente, que é conhecido
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 21

previamente, porém possui certa autonomia, pois processa informação sensorial para atuar
em situações imprevistas, como desviar de uma pessoa ou objeto. São utilizados em
serviços de limpeza (ver Figura 1.8), de vigilância e no transporte de materiais leves
(correspondências internas, material hospitalar, etc.).

Figura 4. 6: Robô lixeira.


Robôs de serviço de campo: atuam em ambientes externos que podem ser
previamente modelados ou não. Em geral, caso haja um modelo, este é precário e há a
necessidade do processamento sensorial para complementar o modelo existente.
Utilizados em tarefas agrícolas e navegação em autoestradas.

Robôs de campo: trabalham em ambientes não estruturados, pouco conhecidos e


geralmente perigosos. São responsáveis por exploração espacial ou de cavernas,
mineração e limpeza de acidentes nucleares.

Robôs pessoais: são robôs vendidos em prateleiras, que não desenvolvem tarefas
específicas, mas interagem comos humanos e aprendem a localizar-se no ambiente (ver
Figura 1.9).

Figura 4. 7: Exemplos de robô pessoal: cãozinho AIBO e MIO (Sony).


Robôs educacionais: apresentam características semelhantes aos robôs pessoais
e, além disso, são utilizados como ferramenta educacional no intuito de ajudar no ensino
de disciplinas como física, matemática, informática e eletrônica. São desmontáveis e
reprogramáveis de forma que na execução destas duas tarefas, o usuário aprende como
funciona todo o sistema eletrônico de controle e pode alterar parâmetros de programação e
de sensoriamento, observando assim o desempenho do robô mediante as ações pré-
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 22

programadas. Veremos mais a frente o passo a passo da montagem de um robô móvel


educacional (ver Figura 1.10).

Figura 4. 8: Exemplo de robô móvel educacional com a Ferramenta


SanUSB.

5 DESAFIOS DA ROBÓTICA EDUCACIONAL

Construir um robô educacional envolve uma série de problemas. É necessário lidar


com erros de posição, de orientação, ruídos nas leituras dos sensores, problemas
com a carga das baterias, erros de programação, entre outros problemas que,
quando o robô passa de protótipo em laboratório, para produto funcional, encontra
no ambiente; pois há variação de luminosidade, interferências de outros sistemas
eletrônicos, entre outros.

Quando desenvolvemos robôs, procuramos nos espelhar em nossas habilidades; e


essa busca pelo desenvolvimento de máquinas com características humanas nos
apresenta uma série de desafios.

Reconhecimento

Fazer com que o robô reconheça o ambiente no qual está inserido é bastante
complexo. Deve-se trabalhar bem o processamento de imagens e dados, além das
dificuldades encontradas ao tratar diferenças de luminosidade e ruído nos dados
advindos dos sensores.

Aprendizado

Ao tornar o robô mais complexo, adicionando a ele novos sensores e atuadores,


estamos também acrescentando mais complexidade ao trabalho de programação
de ações do robô, além de dificultar a tarefa de calibração dos sensores e
coordenação dos movimentos. O desenvolvimento de algoritmos de aprendizado
permite que o robô calibre seus sensores e desempenhe a sua tarefa de forma
mais autônoma e adaptável.

Cognição
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 23

O maior de todos os desafios é explorar os limites da inteligência artificial. Até que


ponto podemos criar novas formas para armazenar conhecimento e utilizar este
conhecimento para a tomada de decisões, dotando o robô de capacidades
cognitivas de alto nível que o permitam total autonomia com relação ao meio.

Notas:

Automação: Qualquer sistema automático que executa operações sem a interferência do


homem. Um robô pode ser considerado um sistema automático.

Domótica: Tipo de automação destinada a residências (Automação Residencial). Ex:


controle temporal de cargas, sistemas de alarme em geral.

A sequência metodológica de práticas abordadas para construção dos robôs


educacionais, utilizando o software SanUSB, é abordada de acordo com o seguinte
conteúdo teórico e prático:

 Comparação e conceitos de sistemas robóticos, de automação e domótica;


 Atuadores aplicados em robótica;
 Principais motores utilizados em robótica educacional (servo-motor, motor
CC em ponte H com micro-relés e motor de passo);
 Sistema microcontrolado de programação e controle de robôs educacionais;
 Principais sensores utilizados em robótica;
 Construção de robôs educacionais;
 Implementação de comportamentos com introdução aos princípios de desvio
de obstáculos e de labirinto.

6 INSTRUÇÕES EM LINGUAGEM C

6.1 FUNÇÕES SanUSB


Este capítulo descreve todas as funções em português da biblioteca SanUSB no
C18. É importante salientar que além dessas funções, são válidas as funções
padrões ANSI C e também as funções do compilador C18 detalhadas na pasta
instalada C:\MCC18\doc. A fim de facilitar o entendimento, as funções SanUSB
foram divididas em oito grupos, definidos por sua utilização e os periféricos do
hardware que estão relacionadas.

6.2 FUNÇÕES BÁSICAS DA APLICAÇÃO DO USUÁRIO


Este grupo de funções define a estrutura do programa uma vez que o usuário deve
escrever o programa.c de sua aplicação inserindo o arquivo #include<SanUSB.h>.

O microcontrolador possui um recurso chamado watchdog timer (wdt) que nada mais
é do que um temporizador cão-de-guarda contra travamento do programa. Caso seja
habilitado habilita_wdt() na função principal main(), este temporizador está configurado
para contar aproximadamente um intervalo de tempo de 16 segundos. Ao final deste
intervalo, se a flaglimpa_wdt() não for zerada, ele provoca um reset do microcontrolador e
conseqüentemente a reinicialização do programa. A aplicação deve permanentemente
zerar a flaglimpa_wdt() dentro do laço infinito (while(1)) na função principal main() em
intervalos de no máximo 16 segundos. Este recurso é uma segurança contra qualquer
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 24

possível falha que venha travar o programa e paralisar a aplicação. Para zerar o wdt, o
usuário pode também utilizar a função ClrWdt() do compilador C18.

A seguir estão as características detalhadas destas funções.

clock_int_4MHz()

Função: Habilita o clock para a processador do oscilador interno de 4MHz.


Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: O clock padrão proveniente do sistema USB interno do PIC é de 48MHz
gerado a partir do cristal de 20 MHz. Isto é possível através de um multiplicador interno de
clock do PIC. A função _int_4MHz() habilita, para o processador do microcontrolador, o
oscilador RC interno em 4 MHz que adéqua o período de incremento dos temporizadores
em 1us. É aconselhável que seja a primeira declaração da função principal
main().Exemplo:

#include<SanUSB.h>

void main (void) {

clock_int_4MHz();

nivel_alto()

Função: Força nível lógico alto (+5V) em uma saída digital.


Argumentos de entrada: Nome da saída digital que irá para nível lógico alto. Este nome é
construído pelo inicio pin_ seguido da letra da porta e do número do pino. Pode ser
colocado também o nome de toda a porta, como por exemplo, portb.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:

nivel_alto(pin_b7); //Força nível lógico 1 na saída do pino B7

nivel_alto(portb); //Força nível lógico 1 em toda porta b

nivel_baixo()

Função: Força nível lógico baixo (0V) em uma saída digital.


Argumentos de entrada: Nome da saída digital que irá para nível lógico baixo. Este nome é
construído pelo inicio pin_ seguido da letra da porta e do número do pino. Pode ser
colocado também o nome de toda a porta, como por exemplo, portc.

Argumentos de saída: Não há.


Observações: Não há.
Exemplo:

nivel_baixo(pin_b7); //Força nível lógico 0 na saída do pino B7

nivel_baixo(portc); //Força nível lógico 0 em toda porta c


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 25

saída_pino(pino,booleano)

Função: Acende um dos leds da placa McData.


Argumentos de entrada: Pino que irá receber na saída o valor booleano, valor booleano 0
ou 1.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:

ledpisca=!ledpisca; // ledpisca é igual ao inverso de ledpisca

saida_pino(pin_b0,ledpisca); // b0 recebe o valor de ledpisca

tempo_us()

Função: Tempo em múltiplos de 1us.


Argumentos de entrada: Tempo de delay que multiplica 1 us.
Argumentos de saída: Não há.
Observações: Esta instrução só é finalizada ao final do tempo determinado, ou seja, esta
função “paralisa” a leitura do programa durante a execução. Exemplo:

tempo_us(200); //Delayde 200 us

tempo_ms()

Função: Tempo em múltiplos de 1ms.


Argumentos de entrada: Tempo de delay que multiplica 1 ms.
Argumentos de saída: Não há.
Observações: Esta instrução só é finalizada ao final do tempo determinado, ou seja, esta
função “paralisa” a leitura do programa durante a execução. Exemplo:

tempo_ms(500); //Delay de 500 ms

entrada_pin_xx

Função: Lê nível lógico de entrada digital de um pino.


Argumentos de entrada: Não há.
Observações: Este nome é construído pelo inicio entrada_pin_ seguido da letra da porta e
do número do pino.
Exemplo:

ledXOR = entrada_pin_b1^entrada_pin_b2; //OU Exclusivo entre as entradas dos


pinos b1 e b2

habilita_interrupcao()
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 26

Função: Habilita as interrupções mais comuns do microcontrolador na função main().


Argumentos de entrada: Tipo de interrupção: timer0, timer1, timer2, timer3, ext0, ext1, ext2,
ad e recep_serial.
Argumentos de saída: Não há.
Observações: As interrupções externas já estão habilitadas com borda de descida. Caso
se habilite qualquer interrução deve-se inserir o desvio _asm goto interrupcao _endasmna
função void _high_ISR (void){ } da biblioteca SanUSB.h
Exemplo:

habilita_interrupcao(timer0);

habilita_interrupcao(ext1);

if(xxx_interrompeu)

Função: Flag que verifica, dentro da função de tratamento de interrupções, se uma


interrupção específica ocorreu.
Complemento: timer0, timer1, timer2, timer3, ext0, ext1, ext2, ad e serial.
Argumentos de saída: Não há.
Observações: A flag deve ser zerada dentro da função de interrupção.
Exemplo:

#programa interruptinterrupcao

voidinterrupcao()

if (ext1_interrompeu) { //espera a interrupção externa 1 (em B1)

ext1_interrompeu = 0; //limpa a flag de interrupção

PORTBbits.RB0 =! PORTBbits.RB0;} //inverte o LED em B0

if (timer0_interrompeu) { //espera o estouro do timer0

timer0_interrompeu = 0; //limpa a flag de interrupção

PORTBbits.RB0 =! PORTBbits.RB0; //inverte o LED em B7

tempo_timer16bits(0,62500); } }

liga_timer16bits(timer,multiplicador)

Função: Liga os timers e ajusta o multiplicador de tempo na função main().


Argumentos de entrada: Timer de 16 bits (0,1ou 3) e multiplica que é o valor do prescaler
para multiplicar o tempo.
Argumentos de saída: Não há.
Observações: O timer 0 pode ser multiplicado por 2, 4, 6, 8, 16, 32, 64, 128 ou 256. O
Timer 1 e o Timer 3 podem ser multiplicados por 1, 2, 4 ou 8.
Exemplo:
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 27

liga_timer16bits(0,16); //Liga timer 0 e multiplicador de tempo igual a 16

liga_timer16bits(3,8); //Liga timer 0 e multiplicador de tempo igual a 8

tempo_timer16bits(timer,conta_us)

Função: Define o timer e o tempo que será contado em us até estourar.


Argumentos de entrada: Timer de 16 bits (0,1ou 3) e tempo que será contado em us (valor
máximo 65536).
Argumentos de saída: Não há.
Observações: O Não há.
Exemplo:

habilita_interrupcao(timer0);

liga_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 16

tempo_timer16bits(0,62500); //Timer 0 estoura a cada 16 x 62500us = 1 seg.

habilita_wdt()

Função: Habilita o temporizador cão-de-guarda contra travamento do programa.


Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: O wdt inicia como padrão sempre desabilitado. Caso seja habilitado na
função principal main(), este temporizador está configurado para contar aproximadamente
um intervalo de tempo de 16 segundos. Ao final deste intervalo, se a flaglimpa_wdt() não
for zerada, ele provoca um reset do microcontrolador e conseqüentemente a reinicialização
do programa. Exemplo:

#include<SanUSB.h>

void main (void) {

clock_int_4MHz();

habilita_wdt(); //Habilita o wdt

limpaflag_wdt()

Função: limpa a flag do wdt


Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: Caso o wdt seja habilitado, a flag deve ser limpa em no máximo 16
segundos para que não haja reinicializaçção do programa. Geralmente esta função é
colocada dentro do laço infinito while(1) da função principal main(). É possível ver detalhes
no programa exemplowdt.c e utilizar também a função ClrWdt() do compilador C18 .
Exemplo:

#include<SanUSB.h>
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 28

void main (void) {

clock_int_4MHz();

habilita_wdt();

while(1) { limpaflag_wdt();

.....

.....

tempo_ms(500);

escreve_eeprom(posição,valor)

Função: Escrita de um byte da memória EEPROM interna de 256 bytes do


microcontrolador.
Argumentos de entrada: Endereço da memória entre 0 a 255 e o valor entra 0 a 255.
Argumentos de saída: Não há.
Observações: O resultado da leitura é armazenado no byte EEDATA.
Exemplo:

escreve_eeprom(85,09); //Escreve 09 na posição 85

le_eeprom()

Função: Leitura de um byte da memória EEPROM interna de 256 bytes do


microcontrolador.
Argumentos de entrada: Endereço da memória entre 0 a 255.
Argumentos de saída: Não há.
Observações: O resultado da leitura é armazenado no byte EEDATA.
Exemplo:

dado=le_eeprom(85);

6.3 FUNÇÕES DO CONVERSOR ANALÓGICO DIGITAL (A/D)

As funções a seguir são utilizadas para a aquisição de dados utilizando as entradas


analógicas.

habilita_canal_AD()

Função: Habilita entradas analógicas para conversão AD.


Argumentos de entrada: Número do canal analógico que irá ser lido. Este dado habilita um
ou vários canais AD epode ser AN0, AN0_a_AN1 , AN0_a_AN2 , AN0_a_AN3,
AN0_a_AN4, AN0_a_AN8, AN0_a_AN9, AN0_a_AN10, AN0_a_AN11, ou AN0_a_AN12.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:

habilita_canal_AD(AN0); //Habilita canal 0


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 29

le_AD8bits()

Função: Leitura de uma entrada analógica com 8 bits de resolução.


Prototipagem: unsigned char analog_in_8bits(unsigned char).
Argumentos de entrada: Número do canal analógico que irá ser lido. Este número pode ser
0, 1 , 2 , 3, 4, 8, 9, 10, 11 ou 12.
Argumentos de saída: Retorna o valor da conversão A/D da entrada analógica com
resolução de 8 bits.
Observações: Não há.
Exemplo:

PORTB = le_AD8bits(0); //Lê canal 0 da entrada analógica com resolução de 8 bits e


coloca na porta B

le_AD10bits()

Função: Leitura de uma entrada analógica com 8 bits de resolução.


Prototipagem: unsigned char analog_in_8bits(unsigned char).
Argumentos de entrada: Número do canal analógico que irá ser lido. Este número pode ser
0, 1 , 2 , 3, 4, 8, 9, 10, 11 ou 12.
Argumentos de saída: Retorna o valor da conversão A/D da entrada analógica com
resolução de 10 bits.
Observações: Não há.
Exemplo:

resultado = le_AD10bits(0);//Lê canal 0 da entrada analógica com resolução de 10


bits

6.4 FUNÇÕES DA COMUNICAÇÃO SERIAL RS-232

As funções a seguir são utilizadas na comunicação serial padrão RS-232 para enviar
e receber dados, definir a velocidade da comunicação com o oscilador interno 4MHz.
As configurações da comunicação são: sem paridade, 8 bits de dados e 1 stop bit. Esta
configuração é denominada 8N1 e não pode ser alterada pelo usuário.

taxa_rs232();

Função: Configura a taxa de transmissão/recepção (baud rate) da porta RS-232


Argumentos de entrada: Taxa de transmissão/recepção em bits por segundo (bps)
Argumentos de saída: Não há.
Observações: O usuário deve obrigatoriamente configurar taxa_rs232() da comunicação
assíncrona antes de utilizar as funções le_rs232 e escreve_rs232. As taxas programáveis
são 1200 bps, 2400 bps, 9600 bps, 19200 bps.
Exemplo:

voidmain() {

habilita_interrupcao(recep_serial);

taxa_rs232(2400); // Taxa de 2400 bps


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 30

while(1); //programa normal parado aqui }

le_rs232();

Função: Lê o primeiro caractere recebido que está no buffer de recepção RS-232.


Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: Quando outro byte é recebido, ele é armazenado na próxima posição livre
do buffer de recepção, cuja capacidade é de 16 bytes. Exemplo:

#pragmainterruptinterrupcao

voidinterrupcao()

{ unsigned char c;

if (serial_interrompeu) {

serial_interrompeu=0;

c = le_rs232();

if (c >= '0' && c <= '9') { c -= '0'; PORTB = c;} }}

escreve_rs232();

Função: Transmite um byte pela RS-232.


Argumentos de entrada: O dado a ser transmitido deve ser de 8 bits do tipo char.
Argumentos de saída: Não há.
Observações: A função escreve_rs232 não aguarda o fim da transmissão do byte. Como
não existe um buffer de transmissão o usuário deve garantir a transmissão com a função
envia_byte( ) para enviar o próximo byte.
Exemplo:

escreve_rs232(PORTC); //escreve o valor da porta C

while (envia_byte());

escreve_rs232('A'); // escreve A

while (envia_byte());
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 31

7 FERRAMENTA SanUSB

O sistema de desenvolvimento SanUSB é uma ferramenta composta de software e


hardware básico da família PIC18Fxx5x com interface USB. Esta ferramenta livre se
mostra eficiente no desenvolvimento rápido de projetos reais, pois não há necessidade de
remover omicrocontrolador para a atualização do firmware.

Além disso, esta ferramenta se mostra eficaz no ensino e na difusão de


microcontroladores, bem como em projetos de eletrônica e informática, pois todos os
usuários podem desenvolver projetos reais no ambiente de ensino ou na própria residência
sem a necessidade de um equipamento para gravação de microcontroladores.

Dessa forma, ela é capaz de suprimir:

Um equipamento específico para gravação de um programa no microcontrolador;

Conversor TTL - EIA/RS-232 para comunicação serial bidirecional emulado através


do protocolo CDC;

Fonte de alimentação, já que a alimentação do PIC provém da porta USB do PC. É


importante salientar que cargas indutivas como motores de passo ou com corrente acima
de 400mA devem ser alimentadas por uma fonte de alimentação externa.

Conversor analógico-digital (AD) externo, tendo em vista que ele dispõe


internamente de 10 ADs de 10 bits;

Software de simulação, considerando que a simulação do programa e do hardware


podem ser feitas de forma rápida e eficaz no próprio circuito de desenvolvimento ou com
um protoboard auxiliar.

Utilizaremos esta ferramenta como circuito de controle do robô educacional que


aprenderemos a desenvolver neste curso.

Além de todas estas vantagens, os laptops e alguns computadores atuais não


apresentam mais interface de comunicação paralela e nem serial EIA/RS-232, somente
USB.

Como pode ser visto, esta ferramenta possibilita que a compilação, a gravação e
simulação real de um programa, como também a comunicação serial através da emulação
de uma porta COM virtual, possam ser feitos de forma rápida e eficaz a partir do momento
em o microcontrolador esteja conectado diretamente a um computador através de um cabo
USB.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 32

Figura 7. 1: Esquemático do sistema de gravação.

7.1 UTILIZANDO A FERRAMENTA SanUSB

A transferência de programas para os microcontroladores é normalmente efetuada


através de um hardware de gravação específico. Através desta ferramenta, é possível
efetuar a descarga de programas para o microcontrolador diretamente de uma porta USB
de qualquer PC, bem como gerar uma porta de comunicação serial virtual utilizando
qualquer microcontrolador PIC com interface USB (18F2550, 18F2455, 18F4550, 18F4455,
etc.).

Para que todas essas funcionalidades sejam possíveis, é necessário gravar,


anteriormente e somente uma vez, com um gravador específico para PIC, o gerenciador de
gravação pela USB GerenciadorLinux.hex disponível na pasta completa da ferramenta no
link abaixo, onde também é possível baixar periodicamente as atualizações dessa
ferramenta e a inclusão de novos programas:
http://www.4shared.com/file/sIZwBP4r/100727SanUSB.html

Para que os programas em C possam ser gravados no microcontrolador via USB, é


necessário compilá-los, ou seja, transformá-los em linguagem de máquina hexadecimal
(.hex). Existem diversos compiladores que podem ser utilizados por esta ferramenta, entre
eles o SDCC, o C18, o Hi-Tech, Mplab X e o CCS.

Devido à didática das funções e bibliotecas disponíveis para emulação serial,


diversos periféricos e multitasking, o compilador mais utilizado nos projetos é o CCS. Uma
versão demo funcional do compilador utilizado com bibliotecas de suporte a USB é
possível baixar em: http://www.4shared.com/file/Mo6sQJs2/100511Compilador.html

Para instalar o CCS também no Linux através do Wine basta seguir as seguintes
instruções da seguinte vídeo-aula: http://www.youtube.com/watch?v=5-kigedbfxg. Caso
grave o novo gerenciador de gravação pela USB “GerenciadorLinux.hex”, não esqueça de
colar o novo arquivo cabeçalho SanUSB.h e as outras bibliotecas disponível na pasta
ExemploseBibliotecas para a pasta Drivers localizada dentro da pasta instalada do
compilador ( C:\Arquivos de programas\PICC\Drivers ).
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 33

A representação básica do circuito SanUSB montado em protoboard com um


microcontrolador de 28 pinos é mostrada a seguir:

Figura 7. 2: Esquemático de montagem do circuito com PIC 18F2550.


Para um microcontrolador de 40 pinos, o circuito é mostrado abaixo:

Figura 7. 3: Esquemático de montagem do circuito com PIC 18F4x5x.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 34

Os componentes básicos do circuito são:

 1 microcontrolador da família PIC USB (18F2550, 18F2455, 18F4550, etc.);


 1 cristal de 20MHz;
 capacitores de 22pF;
 capacitores de 1uF (um no pino 14 Vusb e outro entre o +5V e o Gnd ) ;
 leds e 3 resistores de 390R ( é necessário pelo menos um led com resistor no pino
B7);
 1 resistor de 2k2 e um botão ou fio para gravação no pino 1;
 1 diodo qualquer entre o +5V e o o pino Vdd;
 1 Cabo USB qualquer.

Note que, ao conectar o cabo USB e alimentar o microcontrolador, com o pino 1 no


Gnd (0V), através do botão ou de um simples fio, é Estado para Gravação via USB (led no
pino B7 aceso) e que, após o reset com o pino 1 no Vcc (+5V através do resistor fixo de
2K2 sem o jump) é Estado para Operação do programa aplicativo (firmware) que foi
compilado.

O cabo USB apresenta normalmente quatro fios, que são conectados ao circuito do
microcontrolador nos pontos mostrados na figura acima, onde normalmente, o fio Vcc
(+5V) do cabo USB é vermelho, o Gnd (Vusb-) é marron ou preto, o D+ é azul ou verde e o
D- é amarelo ou branco.

Note que a fonte de alimentação do microcontrolador nos pinos 19 e 20 e dos


barramentos vermelho (+5V) e azul (Gnd) do circuito provêm da própria porta USB do
computador. Para ligar o cabo USB no circuito é possível cortá-lo e conectá-lo direto na
protoboard, com fios rígidos soldados, como também é possível conectar sem cortá-lo, em
um protoboard ou numa placa de circuito impresso, utilizando um conector USB fêmea. O
diodo de proteção colocado no pino 20 entre o Vcc da USB e a alimentação do
microcontrolador serve para proteger contra corrente reversa caso a tensão da porta USB
esteja polarizada de forma inversa.

A figura abaixo mostra a ferramenta SanUSB montada em protoboard seguindo o


circuito anterior e a posição de cada terminal no conector USB a ser ligado no PC. Cada
terminal é conectado diretamente nos pinos do microcontrolador pelos quatro fios
correspondentes do cabo USB.

Figura 7. 4: Montagem do circuito com PIC em protoboard e sequência


da USB.
É importante salientar que, para o perfeito funcionamento da gravação via USB, o
circuito desta ferramenta deve conter um capacitor de filtro entre 0,1uf e 1uF na
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 35

alimentação que vem da USB, ou seja, colocado entre os pinos 20 (+5V) e 19 (Gnd). Caso
o sistema microcontrolado seja embarcado como, por exemplo, um robô, um sistema de
aquisição de dados ou um controle de acesso, ele necessita de uma fonte de alimentação
externa, que pode ser uma bateria comum de 9V ou um carregador de celular. A figura
abaixo mostra o PCB, disponível nos Arquivos do Grupo SanUSB, e o circuito para esta
ferramenta com entrada para fonte de alimentação externa.

Figura 7. 5: PCI (Placa de Circuito Impresso) da ferramenta SanUSB.


Se preferir confeccionar a placa, é possível também imprimir, em folha de
transparência, o PCB e o silkconfigurado em tamanho real, como mostra a figura
2.6, transferir para a placa de cobre, corroer, furar e soldar os componentes. Mais
no vídeo disponível em: http://www.youtube.com/watch?v=Xm8YJ_XaGA8.

Figura 7. 6: PCI da Ferramenta SanUSB.


Para obter vários programas-fonte e vídeos deste sistema livre de gravação,
comunicação e alimentação via USB, basta se cadastrar no grupo de acesso livre
www.tinyurl.com/SanUSB e clicar no item Arquivos.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 36

Durante a programação do microcontrolador basta inserir, no inicio do programa em


C, a biblioteca cabeçalho SanUSB (#include <SanUSB.h>) contida dentro da pasta
SanUSB_User\Exemplos_SanUSB e que você já adicionou dentro da Drivers localizada
na pasta instalada do compilador ( C:\Arquivos de programas\PICC\Drivers). Essa
biblioteca contém instruções do PIC18F2550 para o sistema operacional, configurações de
fusíveis e habilitação do sistema Dual Clock, ou seja, oscilador RC interno de 4 MHz para
CPU e cristal oscilador externo de 20 MHz para gerar a frequência de 48MHz da
comunicação USB, através de prescaler multiplicador de frequência.

Como a frequência do oscilador interno é de 4 MHz, cada incremento dos


temporizadores corresponde a um microssegundo. O programa “exemplo1.hex” a seguir
comuta umled conectado no pino B7 a cada 0,5 segundo.

#include <SanUSB.h>//biblioteca de instruções

void main() { //programa principal

while (1) { //laço infinito

output_toggle(pin_B7); // comuta Led no pino b7

delay_ms(500);//aguarda 0,5 segundos

}// fim while

}//fim main

Os arquivos compilados.hex assim como os firmwares estão disponíveis na pasta


100727SanUSB disponível nos arquivos do grupo SanUSB: www.tinyurl.com/SanUSB .

7.2 GRAVANDO O MICROCONTROLADOR VIA USB NO WINDOWS


Para executar a gravação com a ferramenta SanUSB, é importante seguir os
seguintes passos:

1. Baixe o a pasta da ferramenta de desenvolvimento SanUSB, para um diretório raiz


C ou D, obtida no link http://www.4shared.com/file/sIZwBP4r/100727SanUSB.html.

2. Grave no microcontrolador, somente uma vez, com um gravador específico para


PIC ou com um circuito simples de gravação ICSP mostrado nas próximas seções, o novo
gerenciador de gravação pela USB GerenciadorPlugandPlay.hex disponível na pasta
Gerenciador, compatível com os sistemas operacionais Windows, Linux e Mac OSX.

3. Pressione o botão ou conecte o jump de gravação do pino 1 no Gnd para a


transferência de programa do PC para o microcontrolador.

4. Conecte o cabo USB, entre o PIC e o PC, e solte o botão ou retire o jump. Se o
circuito SanUSB estiver correto acenderá o led do pino B7.

5. Caso o computador ainda não o tenha o aplicativo Java JRE ou SDK instalado
para suporte a programas executáveis desenvolvidos em Java, baixe a Versão Windows
disponível em: http://www.4shared.com/file/WKDhQwZK/jre-6u21-windows-i586-s.html ou
através do link: http://www.java.com/pt_BR/download/manual.jsp e execute o aplicativo
SanUSB da pasta SanUSBwinPlugandPlay. Surgirá a seguinte tela:
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 37

Figura 7. 7: Tela do software de gravação do programa em linguagem C


no PIC– Windows.
6. Clique em Abrir e escolha o programa.hex que deseja gravar, como por exemplo,
o programa compilado exemplo1.hex da pasta ExemploseBibliotecasSanUSB e clique em
Gravar. Este programa pisca o led conectado no pino B7;

7. Após a gravação do programa, lembre-se de soltar o botão ou retirar o jump do


pino de gravação e clique em Resetar. Pronto o programa estará em operação. Para
programar novamente, repita os passos anteriores a partir do passo 3.

Note que, este sistema multiplataforma pode ser implementado também em qualquer
placa de desenvolvimento de microcontroladores PIC, pois utiliza o botão de reset, no pino
1, como botão de gravação via USB. Ao conectar o cabo USB e alimentar o
microcontrolador, com o pino 1 no Gnd (0V), através do botão ou de um simples fio, o
microcontrolador entra em Estado para Gravação via USB (led no pino B7 aceso) e que,
após o reset com o pino 1 no Vcc (+5V através do resistor fixo de 2K2 sem o jump), entra
em Estado para Operação do programa aplicativo (firmware) que foi compilado.

7.3 GRAVANDO O MICROCONTROLADOR VIA USB NO LINUX

Esta aplicação substitui a gravação via USB pelo terminal do Linux, pois é uma forma
mais simples e direta de gravação. Com apenas dois cliques no instalador automático
“SanUSB.deb” é possível instalar este aplicativo em qualquer máquina com Linux (Ubuntu
10.04, equivalente ou posterior).

Depois de instalado, a interface de gravação é localizada em Aplicativos ->


acessórios. Se você já tem o Java instalado (JRE ou SDK) baixe o instalador
“automático.deb” atualizado disponível no link:
http://www.4shared.com/file/RN4xpF_T/sanusb_Linux.html contido também na pasta que
se encontra neste link http://www.4shared.com/file/sIZwBP4r/100727SanUSB.html.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 38

Se ainda não tem o Java (JRE ou SDK), baixe o instalador SanUSB configurado
com o Java JRE disponível em: http://www.4shared.com/file/3mhWZS5g/sanusb.html. A
figura abaixo mostra a interface gráfica desenvolvida para gravação direta de
microcontroladores via USB:

Figura 7. 8: Tela do software de gravação do programa em linguagem C


no PIC – Linux.
Neste aplicativo, estão disponíveis botões para Abrir o programa em hexadecimal
compilado, para Gravar o programa hexadecimal no microcontrolador via USB e para
Resetar o microcontrolador no intuito de colocá-lo em operação. A interface apresenta
ainda um botão para gravar e resetar automaticamente.

É importante salientar que para utilizar esta ferramenta no Linux é necessário estar
logado com permissão para acessar a porta USB como, por exemplo, super-usuário
(sudosu), e que para estabelecer comunicação com o microcontrolador é necessário
gravar anteriormente no microcontrolador, somente uma vez, com qualquer gravador
específico para PIC, o gerenciador de gravação pela USB “GerenciadorLinux.hex”,
disponível na pasta SanUSB ou em
http://www.4shared.com/file/HGrf9nDz/Gerenciador.html.

Após gravar o “GerenciadorLinux.hex” com um gravador convencional para PIC,


coloque o circuito SanUSB em modo de gravação pela USB (pino 1 ligado ao Gnd (0V)
através de botão, jump ou fio ) e conecte o cabo USB do circuito no PC. Se o circuito
SanUSB estiver correto, acenderá o led do pino B7. Pronto, o sistema já está preparado
para gravar no microcontrolador, de forma simples e direta, quantos programas.hex você
desejar utilizando a interface USB. Para programar novamente, basta pressionar o botão
de gravação no pino 1, conectar o jump ou fio e em seguida desconectar e conectar o cabo
USB de alimentação, selecionar o programa.hex desejado em Abrir e pressione o botão
Gravar&Resetar.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 39

7.4 GRAVAÇÃO WIRELESS DE MICROCONTROLADORES


7.4.1 ZIG BEE

A gravação wireless é realizada com dois módulos XBee da Série 1 (S1). De um


lado, um módulo é conectado a um PC coordenador conectado ao PC via USB do PC
através do chip FTDI FT232RL ou através de uma porta serial real com o MAX-232 e, do
outro lado da rede, um módulo Zigbee é conectado ao microcontrolador do dispositivo final.
Esta conexão permite a programação sem fio no microcontrolador PIC. Programas
disponíveis em: http://www.4shared.com/get/aP17n4FT/sanusbee.html

Abaixo uma ilustração para realizar gravação de microcontrolador de forma wireless


com tensão de alimentação de 3,3V.

Figura 7. 9: Circuito de Gravação com Modem Zig Bee Xbee


Para mais detalhes basta acompanhar os vídeos PIC wireless Zigbeeprogramming
http://www.youtube.com/watch?v=_Pbq2eYha_c e PIC wireless Zigbeeprogramming II:
http://www.youtube.com/watch?v=BlRjKbXpepg. Procedimento para gravação wireless:

1- Circuito básico: Conecte o módulo Xbee ao microcontrolador da placa SanUSB


(www.tinyurl.com/SanUSB), com alimentação entre 3V e 3,6V e apenas 4 fios: Vcc (3,3V),
Gnd, Tx e Rx, como mostra a figura abaixo. Na figura, o fio vermelho é ligado ao pino 20
(Vcc) do microcontrolador e ao pino 1 (Vcc) do modem Zigbee, o fio azul é ligado ao 19
(Gnd) do microcontrolador e ao pino 10 (Gnd) do modem Zigbee, o fio laranja é ligado ao
pino 18 (Rx) do microcontrolador e ao pino 2 (DOUT) do modem Zigbee, e o fio amarelo é
ligado ao 17 (Tx) do microcontrolador e ao pino 3 (DIN) do modem Zigbee.

2- Configuração dos Módulos: A gravação wireless só vai acontecer se os módulos


Xbee da série 1 (coordenador e dispositivo final) estiverem configurados com o mesmo
baud rate do microcontrolador (19200 bps). Para o coordenador, basta conectar, o módulo
coordenador ao microcontrolador, ver circuito básico acima, gravar via USB e examinar em
qual firmware (ConfigCoord9600to19200.hex ou ConfigCoord19200to19200.hex) o led no
pino B7 irá piscar intermitentemente. Se o lednão piscar, provavelmente existe um erro na
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 40

ligação do circuito. Após a configuração, coloque o módulo Coordenador no conversor


USB-serial e conecte ao PC.

Faça posteriormente o mesmo para o módulo Dispositivo final, gravando o firmware


(ConfigDispFinal9600to19200.hex ou ConfigDispFinal19200to19200.hex) e deixe-o
conectado ao microcontrolador. Quando o led do pino B7 estiver piscando, significa que os
módulos estão conectados corretamente e estão aptos para gravação wireless.

3- Adaptador Wireless: Agora grave, novamente via USB, o firmware


AdaptadorSerial.hexda pasta AdaptadorWireless. Se, após a gravação do Adaptador,
apresentar o erro Odd addressatbeginningof HEX file error, como na figura abaixo, é
necessário gravar novamente o gerenciador.hex, com qualquer gravador especifico (ver
tutorial), e em seguida, realizar novamente a gravação via USB do firmware aplicativo
AdaptadorSerial.hex. Após a transferência deste firmware, o microcontrolador está apto
para gravação wireless.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 41

Agora basta acessar a pasta sanusbee pelo Prompt do Windows (Iniciar -> Pesquisar
->Prompt de Comando), como na figura abaixo, e digitar, como mostrado no vídeo PIC
wireless Zigbeeprogramming II, as linhas de comando, para transferir os programas
aplicativos.hex como o Exemplo1wireless.hex contido na pasta sanusbee.

Exemplo:

sanusbee Exemplo1Wireless.hex –p COM2

7.4.2 BLUETOOTH

A gravação wireless Bluetooth pode ser realizada com apenas um módulo Bluetooth
conectado ao microcontrolador, pois normalmente no PC coordenador, como em laptops e
desktops, já existe um módulo bluetooth interno. A tensão do módulo Bluetooth
encapsulado, mostrado na figura abaixo, suporta até 6V, diferentemente do módulo Xbee
que suporta 3,3V. Dessa forma, pode-se conectar o módulo Bluetooth diretamente ao
microcontrolador alimentado pela tensão da porta USB de 5V.

De um lado um PC coordenador e, do outro lado da rede, um módulo bluetooth é


conectado ao microcontrolador do dispositivo final. Esta conexão permite a programação
sem fio no microcontrolador PIC. Os Programas estão disponíveis em:
http://www.4shared.com/get/aP17n4FT/sanusbee.html. Neste link em anexo: http://sanusb-
laese.wix.com/robotica#!produtos/productsstackergalleryv20=1, pode ser adquirido o
modem Bluetooth mostrado neste tutorial.

Abaixo uma ilustração para realizar gravação de microcontrolador de forma wireless


Bluetooth com tensão de alimentação de 5V.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 42

Figura 7. 10: Circuito de Gravação com Módulo Bluetooth

Para mais detalhes basta acompanhar os vídeos PIC wireless


Zigbeeprogramminghttp://www.youtube.com/watch?v=_Pbq2eYha_c e PIC wireless
Zigbeeprogramming II: http://www.youtube.com/watch?v=BlRjKbXpepg. Procedimento
para gravação wireless:

1- Circuito básico: Conecte o módulo bluetooth ao microcontrolador da placa


SanUSB (www.tinyurl.com/SanUSB), com alimentação entre 3V e 6V e apenas 4 fios: Vcc
(3,3V), Gnd, Tx e Rx, como mostra a figura acima do circuito. Na figura, o fio vermelho é
ligado ao pino 20 (Vcc) do microcontrolador e ao pino Vcc do modem bluetooth, o fio azul é
ligado ao 19 (Gnd) do microcontrolador e ao pino Gnd do modem bluetooth, o fio verde é
ligado ao pino 18 (Rx) do microcontrolador e ao pino Tx modem bluetooth, e o fio amarelo
é ligado ao 17 (Tx) do microcontrolador e ao pino Rx do modem bluetooth.

2- Parear o modem Bluetooth:Após alimentar o modem bluetooth com 3,3V ou 5V,


conectado ao microcontrolador, realizar o pareamento com o PC indo em:

2.1- Iniciar-> Painel de controle -> Adicionar um dispositivo de bluetooth ->linvor ->
senha padrão: 1234;

2.2- Após o pareamento, clique em Iniciar ->Painel de controle -> exibir impressoras
e dispositivos. Irá aparecer o modem pareado, como, por exemplo, o linvor.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 43

2.3- Clicar em cima, por exemplo, do modem de linvor, e verificar qual porta criada
pelo modem Bluetooth, em Hardware, que será utilizada para a gravação wireless.

O número da porta Serial Padrão por Link Bluetooth (COM37) pode ser modificada,
por exemplo, para COM9 como neste tutorial, através do Gerenciador de Dispositivos,
clicando com o botão direito em cima da porta -> propriedades -> Configuração de Porta ->
Avançado -> Número da Porta COM.

3- Configuração do módulo bluetooth: A gravação wireless só vai acontecer se o


módulo Bluetooth estiver configurado com o mesmo baud rate do microcontrolador (19200
bps). Para isto, basta conectar, o módulo bluetooth ao microcontrolador, ver circuito básico
acima, gravar via USB o firmware Configbluetotth9600to19200.hex e verificar seo led no
pino B7 irá piscar intermitentemente. Se o led não piscar, provavelmente existe um erro na
ligação do circuito.

Quando o led do pino B7 estiver piscando, significa que os módulos estão


conectados corretamente e estão aptos para gravação wireless.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 44

4- Adaptador Wireless: Agora grave, novamente via USB, o firmware


AdaptadorSerial.hexda pasta AdaptadorWireless. Se, após a gravação do Adaptador,
apresentar o erro Odd addressatbeginningof HEX file error, como na figura abaixo, é
necessário gravar novamente o gerenciador.hex, com qualquer gravador especifico (ver
tutorial), e em seguida, realizar novamente a gravação via USB do firmware aplicativo
AdaptadorSerial.hex. Após a transferência deste firmware, o microcontrolador está apto
para gravação wireless.

Agora basta acessar a pasta sanusbee pelo Prompt do Windows (Iniciar -> Pesquisar
->Prompt de Comando), como na figura abaixo, e digitar, como mostrado no vídeo PIC
wireless Zigbeeprogramming II, as linhas de comando, para transferir os programas
aplicativos.hex como o Exemplo1wireless.hex contido na pasta sanusbee.

Exemplo:sanusbee Exemplo1Wireless.hex –p COM9


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 45

As vantagens do modem Bluetooth em relação ao Zigbee, são o preço e a


disponibilidade de modems Bluetooth já disponíveis em vários sistemas computacionais
como computadores e celulares. A desvantagem em relação ao Zigbee é a distância para
gravação de microcontroladores máxima de 10 metros.

7.5 SanUSB CDC – EMULAÇÃO DE COMUNICAÇÃO SERIAL NO


WINDOWS
Neste tópico é mostrado um método de comunicação serial bidirecional através do
canal USB do PIC18F2550. Uma das formas mais simples, é através do protocolo
Communications DevicesClass (CDC), que emula uma porta COM RS-232 virtual, através
do canal USB 2.0. Dessa forma, é possível se comunicar com caracteres ASCII via USB
através de qualquer software monitor serial RS-232 como o HyperTerminal, o SIOW do
CCS® Compiler ou o ambiente de programação Delphi®. O driver CDC instalado no PC e
o programa aplicativo gravado no PIC, com a biblioteca CDC (#include <usb_san_cdc.h>),
são os responsáveis por esta emulação da porta RS-232 virtual através da USB.

A biblioteca CDC para o programa.c do microcontrolador está dentro da pasta de


exemplos, a qual deve estar na mesma pasta onde está o programa.c a ser compilado
para a emulação da comunicação serial RS-232. Além disso, o programa.c deve inserir a
biblioteca usb_san_cdc.h, como mostra a o exemplo de leitura e escrita em um buffer da
EEPROM interna do microcontrolador. As funções CDC mais utilizadas contidas na
biblioteca usb_san_cdc.h para comunicação com a COM virtual são:

usb_cdc_putc() – o microcontrolador envia caracteres ASCII emulados via USB.

Ex.:printf(usb_cdc_putc, "\r\nEndereco para escrever: ");

usb_cdc_getc() – retém um caractere ASCII emulado pela USB.

Ex.:dado = usb_cdc_getc(); //retém um caractere na variável dado

gethex_usb() – retém um número hexadecimal digitado no teclado.

Ex.:valor = gethex_usb();//retém um número hexadecimal na variável valor

usb_cdc_kbhit( ) – Avisa com TRUE (1) se acabou de chegar um novo caractere no buffer
de recepção USB do PIC.

Ex.: if (usb_cdc_kbhit()) {dado = usb_cdc_getc();}


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 46

Após gravação de um programa que utilize comunicação serial CDC no


microcontrolador pelo SanUSB e resetar o microcontrolador, vá, se for o Windows 7, em
propriedades do sistema -> Configurações avançadas do sistema -> Hardware ->
Gerenciador de dispositivos e clique com botão direito no driver CDC do microcontrolador e
atualizar Driver, apontando para a pasta DriverCDCwinSerial.

No Windows XP,após a gravação de um programa que utilize comunicação serial


CDC no microcontrolador pelo SanUSB e resetar o microcontrolador, o sistema vai pedir a
instalação do driver CDC (somente na primeira vez).

Figura 7. 11: Instalação do driver CDC (1).

Escolha a opção Instalar de uma lista ou local especifico (avançado). Após Avançar,
selecione a opção Incluir este local na pesquisa e selecione a pasta DriverSanWinCDC,
onde está o driver CDC.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 47

Figura 7. 12: Instalação do driver CDC (2).

Após Avançar, clique em Continuar assim mesmo.

Figura 7. 13: Instalação do driver CDC (3).

Aguarde enquanto o Driver CDC é instalado no Windows.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 48

Figura 7. 14: Instalação do driver CDC (4).


Clique em Concluir para terminar a instalação.

Figura 7. 15: Instalação do driver CDC (5).

Vá em painel de controle -> sistema -> Hardware -> Gerenciador de dispositivos -> Portas
(COM & LPT) e confira qual é a porta COM virtual instalada.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 49

Figura 7. 16: Figura 2. 1: Verificação de porta COM instalada.


Abrindo qualquer programa monitor de porta serial RS-232, como o SIOW do CCS
ou o Java-SanUSB, direcionando para a COM virtual instalada (COM3,COM4,COM5,etc.).
No CCS clique em Tools-> Serial port Monitor ->configuration -> set portoptions para que o
computador entre em contato com o PIC através da emulação serial via USB.

Figura 7. 17: Utilização da porta COM pelo CCS.


Para utilizar uma função que necessite de atendimento imediato quando um
caractere for digitado como, por exemplo o caractere L ou D, é necessário inserir no
firmware do microcontrolador a condição para verificar de forma constante e reter o
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 50

caractere emulado que chegou pela USB 50S (50SB_cdc_kbhit( ))


{dado=usb_cdc_getc();} no laço infinito da função principal. O comando
(50SB_cdc_kbhit( )) evita que o programa fique parado no usb_cdc_getc (que fica
esperando um caractere para prosseguir o programa).

Veja o programa abaixo, que pisca um LED na função principal (pino B6) e
comanda o estado de outro led (pino B7) pelo teclado de um PC via USB:

--------------------------------------------------------------------------------------------------------------------

#include <SanUSB.h>

#include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual

BYTE comando;

void main() {

usb_cdc_init(); // Inicializa o protocolo CDC

usb_init(); // Inicializa o protocolo USB

usb_task(); // Une o periférico com USB do PC

while (TRUE)

if (usb_cdc_kbhit( )) //avisa se chegou dados do PC

{ //verifica se tem um novo byte no buffer de recepção, depois o kbhit é zerado para
//próximo byte

comando=usb_cdc_getc(); //se chegou, retém o caractere e compara com ‘L’ ou ‘D’ em


//ASCII //Se comando igual a L, liga LED no pino b7, Se comando igual a D, desliga.

if (comando==’L’) {output_high(pin_b7); printf(usb_cdc_putc, “\r\nLed Ligado\r\n”);}

if (comando==’D’) {output_low(pin_b7); printf(usb_cdc_putc, “\r\nLed Desligado\r\n”);}}

output_high(pin_B6); // Pisca Led na função principal

delay_ms(500);

output_low(pin_B6);

delay_ms(500);} }

Figura 7. 18: Visualização de textos via porta serial emulada.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 51

Para utilizar o programa de comunicação Java-SanUSB para emulação serial virtual


entre o computador e o microcontrolador, é necessário baixá-lo através do link disponível
em http://www.4shared.com/file/1itVIv9s/101009SoftwareComSerial_Window.html .

Após executar o programa de comunicação serial Java-SanUSB, verifique a porta


COM virtual gerada (COM3,COM4,COM11,etc.) no Windows, em Painel de
Controle\Todos os Itens do Painel de Controle\Sistema e altere no programa serial Java-
SanUSB em Dispositivos e depois clique em Conectar, como mostra a figura abaixo.

Figura 7. 19: Interface em Java de comunicação serial.

8 PRÁTICAS INTRODUTÓRIAS

8.1 PRÁTICA 1 – PISCA LED

Após montar o circuito da Ferramenta SanUSB (ver Figura 8.1), deve-se iniciar a
sequência de práticas.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 52

Figura 8. 1: Esquemático prática 1.


Neste exemplo o objetivo é piscar um LED de forma temporizada a cada 0,5
segundos, sem o auxílio de chaves ou botões. Para isso utiliza-se uma única saída do
PIC18F2550, que pode ser, por exemplo, o pino 28 (referência B7). Esta saída por sua vez
está ligada ao Anodo de um LED com um resistor no valor de 100 ohm a 1k em série,
como mostrado na Figura xx. O catodo do LED deve ser aterrado como na Figura xx b.

Programação em Linguagem C:

#include <SanUSB.h>//biblioteca de instruções SanUSB

voidmain()//programa principal
{

while (1){//laço infinito


output_high(pin_b7); //coloca a saída B7 em nível lógico alto, ou seja, acende LED
delay_ms(500);//aguarda 500 milissegundos = 0,5 segundos
output_low(pin_b7); //coloca a saída B7 em nível lógico baixo, ou seja, apaga LED
delay_ms(500); //aguarda 500 milissegundos = 0,5 segundos
}//fim while
} }//fim main
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 53

Figura 8. 2: Prática 1 - Pisca LED, montada em protoboard.

Para modificar o tempo de pisca do LED é necessário alterar o valor 500 entre
parênteses na função delay, como por exemplo para: delay_ms(1000);
Com esta nova programação, o LED piscará a cada 1 segundo, considerando que o
comando está em milissegundos.

OBS: para inserir comentários no programa, deve-se inserir antes: //

Pode-se reduzir o programa em linguagem C substituindo as funções:

output_high(pin_b7); //coloca a saída B7 em nível lógico alto, ou seja, acende LED


delay_ms(500);//aguarda 500 milissegundos = 0,5 segundos
output_low(pin_b7); //coloca a saída B7 em nível lógico baixo, ou seja, apaga LED
delay_ms(500); //aguarda 500 milissegundos = 0,5 segundos

Pelas funções:

output_toggle(pin_b7); //alterna pino B7 entre nível lógico baixo e alto: pisca o LED
delay_ms(500); //aguarda 500 milissegundos = 0,5 segundos

8.2 PRÁTICA 2 – PISCA 3 LEDS


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 54

Considerando o aprendizado das funções da prática 1, o professor deve solicitar aos


alunos que insiram mais 2 LEDs ao circuito SanUSB (pinos b6 e b5, por exemplo) e
programem o PIC para piscar os 3 LEDs em sequência.

Figura 8. 3: Esquemático Prática 2.

Figura 8. 4: Prática 2 - Pisca 3LEDs, montada em protoboard.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 55

O código abaixo é uma sugestão:

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES

main(){//PROGRAMA PRINCIPAL

while (1) { //LAÇO INFINITO

output_high(pin_b7);//SAIDA ALTA NO PINO B7 - LED ACENDE


delay_ms(500);//ATRASO 0,5 SEG
output_low(pin_b7);//SAIDA BAIXA NO PINO B7 - LED APAGA
delay_ms(500);//ATRASO 0,5 SEG

output_high(pin_b6);//SAIDA ALTA NO PINO B6 - LED ACENDE


delay_ms(500);//ATRASO 0,5 SEG
output_low(pin_b6);//SAIDA BAIXA NO PINO B6 - LED APAGA
delay_ms(500);//ATRASO 0,5 SEG

output_high(pin_b5);//SAIDA ALTA NO PINO B5 - LED ACENDE


delay_ms(500);//ATRASO 0,5 SEG
output_low(pin_b5);//SAIDA BAIXA NO PINO B5 - LED APAGA
delay_ms(500);//ATRASO 0,5 SEG
}}

O professor deve solicitar aos alunos que alterem a frequência de pisca do LED.

Como exercício para avaliar o aprendizado, deve ser solicitado que elaborem um
programa para piscar o LED do pino b7 uma vez a cada 1 segundo, o LED do pino b6 duas
vezes a cada 0,5 segundos e o LED do pino b5 três vezes a cada 0,1 segundos, utilizando
apenas as funções vistas até o momento.

Após isto deve ser passado aos alunos o conceito de laço de repetição finito, como o
exemplo a seguir que usa a função FOR.

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES


int x;// declaração de variável auxiliar de nome 'x' do tipo inteiro
main(){//PROGRAMA PRINCIPAL
while (1)//LAÇO INFINITO
{
output_high(pin_b7);//SAIDA ALTA NO PINO B7 - LED ACENDE
delay_ms(1000);//ATRASO 0,5 SEG
output_low(pin_b7);//SAIDA BAIXA NO PINO B7 - LED APAGA
delay_ms(1000);//ATRASO 0,5 SEG

for (x=0;x<2;x++)//LAÇO DE REPETIÇÃO POR 2 VEZES


{
output_high(pin_b6);//SAIDA ALTA NO PINO B6 - LED ACENDE
delay_ms(500);//ATRASO 0,5 SEG
output_low(pin_b6);//SAIDA BAIXA NO PINO B6 - LED APAGA
delay_ms(500);//ATRASO 0,5 SEG
}
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 56

for (x=0;x<3;x++)//LAÇO DE REPETIÇÃO POR 3 VEZES


{
output_high(pin_b5);//SAIDA ALTA NO PINO B5 - LED ACENDE
delay_ms(100);//ATRASO 0,5 SEG
output_low(pin_b5);//SAIDA BAIXA NO PINO B5 - LED APAGA
delay_ms(100);//ATRASO 0,5 SEG
} }}

Também é possível utilizar a função WHILE, como no exemplo xx:

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES


int x=0,y=0;// declaração de variáveis auxiliares de nome 'x' e ‘y’ do tipo inteiro
main(){//PROGRAMA PRINCIPAL
while (1)//LAÇO INFINITO
{
int x=0,y=0;//reseta variáveis para iniciar a contagem

output_high(pin_b7);//SAIDA ALTA NO PINO B7 - LED ACENDE


delay_ms(1000);//ATRASO 0,5 SEG
output_low(pin_b7);//SAIDA BAIXA NO PINO B7 - LED APAGA
delay_ms(1000);//ATRASO 0,5 SEG

while (x<2) //enquanto a variável x for menor que 2, repete o ciclo


{
output_high(pin_b6);//SAIDA ALTA NO PINO B6 - LED ACENDE
delay_ms(500);//ATRASO 0,5 SEG
output_low(pin_b6);//SAIDA BAIXA NO PINO B6 - LED APAGA
delay_ms(500);//ATRASO 0,5 SEG
x++;//INCREMENTA VARIÁVEL x DE UM EM UM

while (y<3)//enquanto a variável y for menor que 3, repete o ciclo


{
output_high(pin_b5);//SAIDA ALTA NO PINO B5 - LED ACENDE
delay_ms(100);//ATRASO 0,5 SEG
output_low(pin_b5);//SAIDA BAIXA NO PINO B5 - LED APAGA
delay_ms(100);//ATRASO 0,5 SEG
y++;//INCREMENTA VARIÁVEL y DE UM EM UM
} }}

8.3 PRÁTICA 3 – BOTÕES

Nesta prática será possível ligar/desligar um LED através de botões, ou seja, de


entradas. Duas novas funções serão utilizadas neste exemplo. Serão adicionadas 2
chaves tácteis nos pinos b0 e b1 do microcontrolador. Ao pressionar o botão conectado no
pino b0, o LED no pino b7 acende; ao pressionar o pino b1, o mesmo apaga.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 57

Figura 8. 5: Esquemático Prática 3.

Figura 8. 6: Prática 3 – Botões, montada em protoboard.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 58

Segue código exemplo:

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES


main()//PROGRAMA PRINCIPAL
{
while (1)//LAÇO INFINITO
{
if (input(pin_b0)==0)// SE BOTÃO NO PINO B0 FOR ATERRADO
{
output_high(pin_b7);// LIGA LED NO PINO B7
}
if (input(pin_b1)==0)// SE BOTÃO NO PINO B1 FOR ATERRADO
{
output_low(pin_b7); // APAGA LED NO PINO B7
}}}

Após a prática ser efetuada com sucesso, o professor deve solicitar aos alunos que
ao pressionar o botão do pino b0 o LED do pino b7 pisque a cada 500 ms e ao pressionar
o botão do pino b1, o mesmo LED pisque a cada 100 ms.

Sugestão de código:

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES

main() { //PROGRAMA PRINCIPAL

while (1) { //LAÇO INFINITO

if (input(pin_b0)==0){// SE BOTÃO NO PINO B0 FOR ATERRADO


while(input(pin_b1)==1){//ENQUANTO O OUTRO NÃO FOR ATERRADO...
output_toggle(pin_b7);// LIGA LED NO PINO B7
delay_ms(500);
}}
if (input(pin_b1)==0){// SE BOTÃO NO PINO B1 FOR ATERRADO
while(input(pin_b0)==1){//ENQUANTO O OUTRO NÃO FOR ATERRADO...
output_toggle(pin_b7);
delay_ms(50);
} }}}

O professor pode trabalhar também com 3LEDs (pinos b7, b6 e b5) piscando, de
acordo com o programa abaixo:

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES


main()//PROGRAMA PRINCIPAL
{
while (1)//LAÇO INFINITO
{
if (input(pin_b0)==0){// SE BOTÃO NO PINO B0 FOR ATERRADO
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 59

while(input(pin_b1)==1){

output_high(pin_b7);// LIGA LED NO PINO B7


delay_ms(500);
output_low(pin_b7);// LIGA LED NO PINO B7
delay_ms(500);

output_high(pin_b6);// LIGA LED NO PINO B6


delay_ms(500);
output_low(pin_b6);// LIGA LED NO PINO B6
delay_ms(500);

output_high(pin_b5);// LIGA LED NO PINO B5


delay_ms(500);
output_low(pin_b5);// LIGA LED NO PINO B5
delay_ms(500);
} }
if (input(pin_b1)==0){// SE BOTÃO NO PINO B1 FOR ATERRADO
while(input(pin_b0)==1){

output_high(pin_b7);// LIGA LED NO PINO B7


delay_ms(50);
output_low(pin_b7);// LIGA LED NO PINO B7
delay_ms(50);

output_high(pin_b6);// LIGA LED NO PINO B6


delay_ms(50);
output_low(pin_b6);// LIGA LED NO PINO B6
delay_ms(50);

output_high(pin_b5);// LIGA LED NO PINO B5


delay_ms(50);
output_low(pin_b5);// LIGA LED NO PINO B5
delay_ms(50);
} } }}

8.4 PRÁTICA 4 – SEMÁFORO - DESAFIO

Nesta prática, o aluno deve utilizar os conceitos da prática PISCA LED e de


BOTÕES aprendidos nas aulas anteriores.

Para exercitar a junção dos dois programas, este novo exercício será desenvolver
um semáforo com botão para pedestre.

Para isso será necessário 5LEDs e 1 botão, ou seja, serão 5 saídas e 1 entrada. A
tabela abaixo sugere pinos para conectar os LEDs e o botão.

Aproveite os esquemáticos montados nas aulas anteriores.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 60

LED VERMELHO
Pino b7
Saídas LED AMARELO
Pino b6 SEMÁFORO CARROS
LED VERDE
Pino b5
Pino a1 SEMÁFORO PEDESTRES LED VERMELHO
Pino a0 LED VERDE
Entrada Pino b0 BOTÃO PEDESTRE --

Figura 8. 7: Esquemático Prática 4 – Desafio - Semáforo.

O programa Abaixo funciona da seguinte forma:


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 61

O Semáforo dos carros permanece em verde e o dos pedestres em vermelho até que
o pedestre pressione o botão. Após isto, o semáforo dos carros fica amarelo, em seguida
vai para vermelho, só então libera para o pedestre, acendendo o LED verde do semáforo
dos pedestres. Após o tempo programado, o ciclo reinicia e aguarda que o botão seja
pressionado novamente. Grave o código abaixo no PIC e verifique o funcionamento.

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES

main()//PROGRAMA PRINCIPAL
{
while (1)//LAÇO INFINITO
{
output_high(pin_b5);// LIGA LED NO PINO B7 - VERDE CARROS
output_high(pin_a1);// LIGA LED NO PINO A1 - VERMELHO PEDESTRE

if (input(pin_b0)==0)// SE BOTÃO NO PINO B0 FOR ATERRADO


{
output_low(pin_b5);// DESLIGA LED NO PINO B5 - VERDE CARROS

output_high(pin_b6);// LIGA LED NO PINO B6 - AMARELO CARROS


delay_ms(2000); //AGUARDA 2 SEGUNDOS
output_low(pin_b6);// LIGA LED NO PINO B6 - AMARELO CARROS

output_high(pin_b7);// LIGA LED NO PINO B7 - VERMELHO CARROS


delay_ms(1000);

output_low(pin_a1);// DESLIGA LED NO PINO A1 - VERMELHO PEDESTRE


output_high(pin_a0);// LIGA LED NO PINO A0 - VERDE PEDESTRE
delay_ms(4000);
output_low(pin_a0);// DESLIGA LED NO PINO A0 - VERMELHO PEDESTRE
output_low(pin_b7);// LIGA LED NO PINO B7 - VERMELHO CARROS
}}}

O código abaixo mantém o LED do pedestre piscando por 8 vezes antes de abrir
para os carros, no intuito de avisar o pedestre que resta pouco tempo para este atravessar
a rua.

#include <SanUSB.h>//BIBLIOTECA DE INSTRUÇÕES


int x=0;//DECLARAÇÃO DE VARIÁVEL X TIPO INTEIRO INICIANDO COM VALOR 0
main()//PROGRAMA PRINCIPAL
{
while (1)//LAÇO INFINITO
{
output_high(pin_b5);// LIGA LED NO PINO B7 - VERDE CARROS
output_high(pin_a1);// LIGA LED NO PINO A1 - VERMELHO PEDESTRE

if (input(pin_b0)==0)// SE BOTÃO NO PINO B0 FOR ATERRADO


{
output_low(pin_b5);// DESLIGA LED NO PINO B5 - VERDE CARROS
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 62

output_high(pin_b6);// LIGA LED NO PINO B6 - AMARELO CARROS


delay_ms(2000); //AGUARDA 2 SEGUNDOS
output_low(pin_b6);// LIGA LED NO PINO B6 - AMARELO CARROS

output_high(pin_b7);// LIGA LED NO PINO B7 - VERMELHO CARROS


delay_ms(1000);

output_low(pin_a1);// DESLIGA LED NO PINO A1 - VERMELHO PEDESTRE


output_high(pin_a0);// LIGA LED NO PINO A0 - VERDE PEDESTRE
delay_ms(4000);
output_low(pin_a0);// LIGA LED NO PINO A0 - VERDE PEDESTRE

for (x=0;x<8;x++)//PISCA LED POR 8 VEZES


{
output_toggle(pin_a1);
delay_ms(500);
}
output_low(pin_a0);// DESLIGA LED NO PINO A0 - VERDE PEDESTRE
output_low(pin_b7);// LIGA LED NO PINO B7 - VERMELHO CARROS
}}}

8.5 PRÁTICA 5 – SOLENÓIDES E MICRORRELÉS

Uma solenóide consiste num êmbolo de ferro colocado no interior de uma bobina
(indutância) elétrica, enrolada em torno de um tubo. Quando se alimenta eletricamente a
bobina, cria-se um campo magnético que atrai o êmbolo (núcleo educacional) para dentro
da bobina como é mostrado na figura abaixo. No caso de um relé, fecha um contato para
circulação de outro nivel maior de corrente.

Figura 8. 8: Bobina solenóide.


Os relés são dispositivos comutadores eletromagnéticos. A estrutura simplificada de
um relé é mostrada na figura abaixo e a partir dela é explicado o seu princípio de
funcionamento.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 63

Figura 8. 9: Microrrelés.
O controle de uma solenóide ou relé pode ser feito pelo chaveamento de um
transistor Darlington ou de um MOSFET.

O relé é um tipo de interruptor acionado eletricamente que permite o isolamento


elétrico de dois circuitos. O relé é formado por um eletroímã (uma bobina enrolada sobre
um núcleo de material ferromagnético) que quando acionado, através da atração
eletromagnética, fecha os contatos de um interruptor. Normalmente o interruptor de um
relé tem duas posições, com isso existem dois tipos, os NF(normalmente fechado) e NA
(normalmente aberto), como mostra a figura abaixo. A bobina do relé é acionada por uma
tensão contínua que é especificada de acordo com o fabricante, bobinas de 5, 6, 12 e 24
Volts são as mais comuns.

Para acionar o relé basta executar o mesmo programa pisca LED no pino b7.

Figura 8. 10: Acionamento de motor 12Vcc com relé 5V e driver


ULN2803.
Uma das características do relé é que ele pode ser energizado com correntes muito
pequenas em relação à corrente que o circuito controlado exige para funcionar. Isso
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 64

significa a possibilidade de controlar circuitos de altas correntes como motores, lâmpadas e


máquinas industriais, diretamente a partir de microcontroladores.

Figura 8. 11: Esquemático interno de um relé e seu acionamento.


Driver de potência ULN2803

Um driver de potência é utilizado sempre quando se necessita acionar um hardware


específico de maior potência. Esse driver pode ser usado para controlar motores de
passos, solenóides, relés, motores CC e vários outros dispositivos. Ele contém
internamente 8 transistores Darlington NPN de potência, oito resistores de base de 2K7 e
oito diodos de roda livre, para descarregar no Vcc (pino 10) a corrente reversa da força
contra-eletromotriz gerada no chaveamento dos transistores, protegendo os mesmos.

Quando o microcontrolador coloca +5V (nível lógico 1) no pino 1 do driver ULN2803,


ele conecta o pino 18 do outro lado, onde está ligado um pólo do motor, ao Gnd (nível
lógico 0, por isso a simbologia de porta inversora na figura abaixo). Como o outro lado da
bobina (o comum) ou do motor deve estar ligado ao Vcc da fonte de até 30V, esse
comando irá energizar a bobina ou o motor.

Figura 8. 12: Ligação interna do ULN2803.


Nesta prática será possível ligar/desligar cargas de tensões mais elevadas que a do
circuito, que é 5V da USB. Se estiver sendo utilizado um relé 5Vcc/220Vca, é possível ligar
lâmpadas e até eletrodomésticos, como ventiladores, televisores, rádios; sendo necessário
apenas conectar 220Vca ao comum do relé. É necessário apenas acrescentar um driver de
potência, o ULN 2803, que dispõe de 8 transistores internos, ou seja, com ele é possível
acionar até 8 relés, consequentemente, 8 cargas.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 65

Figura 8. 13: Esquemático Prática 5.


Inicialmente serão utilizados 2LEDs conectados aos contatos NA e NF do
relé apenas para testar seu funcionamento. Enquanto um LED acender, o outro
estará apagado. Para alimentar o LED, será utilizada a tensão de 5V da própria
USB do circuito SanUSB. A Figura 8.14 mostra detalhes da montagem.

Figura 8. 14: Prática 5 – Microrrelés, montada em protoboard.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 66

8.6 MULTIPLEXAÇÃO COM DISPLAY 7 SEGMENTOS


Faça jumps entre os pinos:

a1 e a2 --- b1 e b2 --- c1 e c2 --- d1 e d2 --- e1 e e2 --- f1 e f2 --- g1 e g2

Complete a ligação do display 7 segmentos ao PIC conectando da seguinte


forma:

B0 B1 B2 B3 B4 B5 B6 B7

Segmento Segmento Segmento Segmento Segmento Segmento Segmento Segmento

a b c d e f g ponto

Insira um resistor de 100 R a 1000 R em cada pino comum e conecte: Comum 1


no pino a0 e Comum 2 no pino a1 de acordo com a programação.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 67

Figura 8. 15: Esquemático Prática 6 – Multiplexação display 7


segmentos.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 68

Figura 8. 16: Prática 6 – Multiplexação display 7 segmentos, montada


em protoboard.
Segue o programa em linguagem C.

#include <SanUSB.h>
#byte port_b = 0xf81//Atribuição do nome portb para o registro da porta B localizado na
//posição 0xf81 da memória de dados
//Vetor com 10 elementos que desenham de 0 a 9 ANODO COMUM:
intsetseg[10] = {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78,
0x00, 0x10};
//intsetseg[10]={0b01000000,0b01111001,0b00100100,0b00110000,0b00011001,
//0b00010010,0b00000010,0b01111000,0b00000000,0b00010000};
int i, z, dezena, unidade; //índice dezena,unidade (ponteiro)

void main () {
set_tris_b(0b00000000);// Define os pinos da porta B como saída
while(1) {
for (i=0;i<=99;i++) { //laço de contagem de 00 a 99

for(z=0;z<15;z++){//laço de repetição para manter o tempo de visualização do //número

dezena=i/10; //dezena recebe o número inteiro da divisão por 10


unidade=i%10; //unidade recebe o resto da divisão por 10
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 69

output_high(pin_a0); //pin_a0 aciona transistor do comum das dezenas


output_low(pin_a1); //pin_a1 aciona transistor do comum das unidades

port_b = setseg[dezena]; //A porta B recebe o desenho do número das dezenas apontado
pela variável dezena
delay_ms(5);

output_high(pin_a1); // acionaunidade
output_low(pin_a0);
port_b = setseg[unidade]; //a porta B recebe o desenho do número das unidades apontado
pela variável unidade
delay_ms(5);
}} }}

8.7 DISPLAY LCD – ALFANUMÉRICO

O LCD, ou seja, display de cristal líquido, é um dos periféricos mais utilizados como
dispositivo de saída em sistemas eletrônicos. Ele contém um microprocessador de
controle, uma RAM interna que mantém escritos no display (DDRAM) os dados enviados
pelo microcontrolador e uma RAM de construção de caracteres especiais (CGRAM).
Os displays mais comuns apresentam 16 colunas e duas linhas. Eles têm
normalmente 14 pinos ou 16 pinos. Destes, oito pinos são destinados para dados ou
instrução, seis são para controle e alimentação do periférico e dois para backlight. O LED
backlight (iluminação de fundo) serve para facilitar as leituras durante a noite. Neste caso,
a alimentação deste led faz-se normalmente pelos pinos 15 e 16, sendo o pino 15 para
ligação ao anodo e o pino 16 para o catodo. A ferramenta SanUSB tem uma biblioteca em
C para este periférico que utiliza somente o nibble superior do barramento de dados (D7,
D6, D5 e D4), como é o caso da biblioteca mod_lcd_sanusb.c com a seguinte
configuração:

Figura 8. 17: Esquemático Prática 7 – Display LCD Alfanumérico.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 70

Figura 8. 18: Prática 6 – Display LCD, montada em protoboard.

Utilizando as instruções do LCD:

Para rolar o conteúdo do LCD um caractere para a direita, utilize o comando


lcd_envia_byte(0, instrução), por exemplo, lcd_envia_byte(0,0x1C) e para rolar o
conteúdo do LCD um caractere para a esquerda, utilize o comando
lcd_envia_byte(0,0x18).
Exemplo de uso do recurso de rolagem do display:
A seguinte seqüência de comandos, gera o efeito de uma mensagem rolando no
display. Para isso, será necessário declarar uma variável do tipo INT x.Para ativar o cursor,
utilize o comando lcd_envia_byte(0,0x0E). Para ativar o cursor piscante, utilize o
comando lcd_envia_byte(0,0x0F), e para desativar o cursor, use
lcd_envia_byte(0,0x0C); .

O programa abaixo escreve 2 textos pré-programados no display LCD.

#include <SanUSB.h>
#include <MOD_LCD_SANUSB.c>// RB0-RS, RB1-EN, RB2-D4, RB3-D5, RB4-D6, RB5-D7

int1 led;//variável led


main() {
lcd_ini(); // Configuração inicial do LCD
while (1) {
lcd_pos_xy(1,1); // Posiciona primeira linha
printf(lcd_escreve,"** Teste LCD **");//Exibe texto '** Teste LCD **' na linha superior
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 71

lcd_pos_xy(1,2); // Posiciona segunda linha


printf(lcd_escreve," SanUSB"); //Exibe texto 'SanUSB' na linha inferior
lcd_envia_byte(0,0x0C); //Apaga o cursor

led=!led; output_bit(pin_b7,led);//inverte LED no pino b7


delay_ms(500);//aguarda 0,5 segundos
}}

Para posicionar o cursor no LCD, podemos usar a função lcd_pos_xy(x,y), onde x e


y são, respectivamente, a coluna e a linha onde o cursor deve ser reposicionado.
Desta forma, caso deseje escrever algo na primeira linha do display, sem apagar a
segunda linha, basta inserir o comando lcd_pos_xy(1,1). Isso irá posicionar o cursor na
primeira linha, e primeira coluna. No entanto, tome cuidado, pois uma vez que o display
não foi apagado, as informações antigas permanecerão na primeira linha, a menos que
você as sobrescreva.

9 PRÁTICAS ESPECÍFICAS

9.1 SENSORES

Sensores são dispositivos cuja finalidade é obter informações sobre o ambiente em


que se encontram, e são utilizados como componentes do sistema de controle de
realimentação do robô. Há diversos tipos de sensores que podem ser classificados de
acordo com os princípios físicos sobre os quais eles estão baseados. São estes tipos de
sensores que funcionam como os órgãos da “visão”, “audição” e “tato” dos robôs, e
permitem que estes se orientem no mundo.

Os principais problemas enfrentados no desenvolvimento da robótica educacional


surgem diretamente da necessidade de interação com objetos físicos e entidades do
ambiente. Esta interação consiste principalmente na localização e identificação destas
entidades e objetos enquanto o robô move-se (navega) neste meio ambiente. Este
processo precisa ser realizado rapidamente, e com a máxima precisão e acurácia.

No projeto de tais sensores, deve-se levar em conta as seguintes considerações:

Campo de visão: deve ser amplo o bastante e com suficiente profundidade para
adequar-se à sua aplicação;

Range Capability(Capacidade de Alcance): o alcance mínimo de detecção, bem


como o alcance máximo efetivo, devem ser adequados ao uso pretendido do sensor;

Acurácia e Resolução: devem estar de acordo com as necessidades da tarefa


dada;

Habilidade para detectar todos os objetos no ambiente: várias condições


ambientes podem interferir e acrescentar ruído às informações captadas pelos sensores.
Os mesmos devem ser capazes de minimizar tais interferências;
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 72

Operação em tempo-real: o sensor deve ser capaz de fornecer dados em tempo


real a velocidades que sejam compatíveis com a velocidade de sua plataforma receptora
(robô educacional, veículo-robô, etc.);

Dados concisos e de fácil interpretação: o formato de saída de um sensor deve


ser realístico do ponto de vista dos requisitos de processamento, visando reduzir ao
máximo o pré-processamento da informação fornecida pelo sensor.

Redundância: o sistema sensor deve sofrer uma degradação lenta e suave; e não
ficar totalmente incapacitado devido à perda de um elemento sensor;

Simplicidade: o sistema deve ser de baixo custo e modular, para facilitar a


manutenção e permitir atualizações revolucionárias, portanto, não deve estar restrito a um
tipo de hardware específico;

Consumo de força: o consumo de força deve ser mínimo para poder ser mantida
uma boa relação com os recursos limitados a bordo de robôs educacionais e veículos-
robôs.

Tamanho e peso: devem ser o menor possível, de acordo com os objetivos


pretendidos para o robô.

Estas considerações não apresentam regras rígidas, mas o projetista deve sempre
tê-las em mente antes de iniciar o projeto de um novo sistema sensor para um robô
educacional.

Figura 9. 1: Comparação homem com robô.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 73

9.1.1 SENSOR DE TOQUE

O sensor de toque fornece um sinal binário de saída que indica se houve ou não
contato com o objeto. Um dos modelos mais simples é feito com duas chapas de metal que
devem ser tocadas ao mesmo tempo pelos dedos de uma pessoa. A resistência dos dedos
é suficiente para acionar um circuito sensível.

Sensores tácteis (ou de contato) são geralmente empregados em veículos guiados


automaticamente (Automated Guided Vehicle - AVGs) e em robôs educacionais para
fornecer uma indicação de colisão de último recurso com obstruções em torno do robô. O
processo de detecção deste tipo de sensor envolve contato físico direto entre o sensor e o
objeto de interesse.

Amortecedores Tácteis: consistem, geralmente, de uma placa de metal presa por


uma por uma ponta e curvada para fora na outra, formando um amortecedor protetor na
frente do veículo. Esta placa está restrita a um único grau de liberdade de movimento, e
quando ela sofre pressão externa provoca a ativação de alguma chave de contato.

Figura 9. 2: Exemplo de amortecedor táctil.

9.1.2 SENSOR DE PROXIMIDADE

Servem para indicar ao robô se ele está próximo de algum objeto do mundo. Este
conceito de proximidade geralmente está relacionado a algum intervalo de distância
especificado.São divididos em sensores de contato e de não-contato.

Atualmente várias tecnologias têm sido aplicadas na construção dos chamados


esquemas sensíveis tácteis. Entre essas tecnologias de sensores, destacamos os
seguintes como mais representativos:

Chaves de contato, Magnéticos, Piezoelétricos, Capacitivos, Fotoelétricos, Magneto-


resistivos, Piezo-resistivos, Ultrasônicos.

São utilizados para determinar a presença de objetos próximos. Foram


desenvolvidos para extender a faixa sensitiva além daquela permitida pelos sensores de
contato. A sua principal vantagem é evitar o contato direto entre o robô e os objetos
circundantes. Costumam ser classificados de acordo com as suas propriedades
específicas que são usadas para disparar a ação, nas seguintes categorias:

Magnéticos Microondas

Indutivos Óticos

Ultrasônicos Capacitivos
9.2 SENSORES ANALÓGICOS
9.2.1 CONVERSOR A/D

O objetivo do conversor analógico-digital (AD) é converter um sinal


analógico, geralmente de 0 a 5V, em equivalentes digitais. Como pode ser
visto, algumas configurações permitem ainda que os pinos A3 e A2 sejam
usados como referência externa positiva e negativa, fazendo com que uma
leitura seja feita em uma faixa de tensão mais restrita como, por exemplo, de 1
a 3 Volts.

Em C, o conversor AD pode ser ajustado para resolução de 8 bits


(#deviceadc=8 armazenando o resultado somente no registro ADRESH) ou 10
bits (#deviceadc=10).

Para um conversor A/D com resolução de 10 bits e tensão de referência padrão


de 5V, o valor de cada bit será igual a 5/(210 - 1) = 4,8876 mV, ou seja, para um
resultado igual a 100 (decimal), teremos uma tensão de 100* 4,8876 mV =
0,48876 V. Note que a tensão de referência padrão (Vref) depende da tensão
de alimentação do PIC que normalmente é 5V. Se a tensão de alimentação for
4V, logo a tensão de referência (Vref) também será 4V.

Para um conversor A/D com resolução de 10 bits e tensão de referência de 5V,


o valor de cada bit será igual a 5/(28 - 1) = 19,6078 mV, ou seja, para um
resultado igual a 100 (decimal), é necessário uma tensão de 100 * 19,6078 mV
= 1,96078 V, quatro vezes maior.

É comum se utilizar o conversor AD com sensores de temperatura (como o


LM35), luminosidade (como LDRs), pressão (STRAIN-GAGE), tensão,
corrente, humidade, etc..

Figura 9. 3: Uso de periféricos no conversor A/D.

Para utilizar este periférico interno, basta:

setup_adc_ports (AN0_TO_AN2); //(Seleção dos pinos analógicos 18F2550)

setup_adc(ADC_CLOCK_INTERNAL ); //(selecionar o clock interno)


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 75

Veja a nomenclatura dos canais analógicos de cada modelo, dentro da


biblioteca do CCS na pasta Device. Depois, no laço infinito, basta selecionar o
canal para leitura, esperar um tempo para a seleção física e então ler o canal
AD.

set_adc_channel(0); //Seleciona qual canal vai converter

delay_ms (1); // aguarda um milisegundo para comutar para o canal 0

valor = read_adc(); // efetua a leitura da conversão A/D e guarda na variável


valor

9.2.2 AJUSTE DE RESOLUÇÃO DO SENSOR E DO CONVERSOR AD DE 8


BITS
O ajuste da resolução do conversor AD se dá aproximando a tensão de
fundo de escala do sensor (VFS) à tensão de referencia do conversor (VREF).
Para isso existem duas técnicas de ajuste por Hardware:

Para este tópico é utilizado como exemplo de ajuste da resolução do


conversor AD, o sensor de temperatura LM35 que fornece uma saída de
tensão linear e proporcional com uma resolução de 10mV a cada °C.

9.2.3 CONVERSOR AD DE 10 BITS

Para conversores de 10 bits, com maior resolução (4,89 mV), o ajuste


(escalonamento) é realizado geralmente por software, em linguagem C, que possui um
elevado desempenho em operações aritméticas.

OBS.: O ganho de tensão de um circuito poderia ser simulado por software com
os comandos: Int32 valorsensor= read_adc();

Int32 VFS = 4 * Valorsensor;

A fórmula utilizada pelo programa no PIC para converter o valor de tensão


fornecido pelo sensor LM35 em uma temperatura é:
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 76

ANALÓGICO DIGITAL

5V = 5000mV -> 1023

T(°C)* 10mV/°C -> (int32)read_adc()

T (ºC) = 500 * (int32)read_adc()/1023

Onde (int32)read_adc() é o valor digital obtido a partir da temperatura (T(ºC))


analógica medida. Esta variável é configurada com 32 bits (int32), porque ela recebe
os valores dos cálculos intermediários e pode estourar se tiver menor número de bits,
pois uma variável de 16 bits só suporta valores de até 65.535. A tensão de referência
do conversor é 5V e como o conversor possui 10 bits de resolução, ele pode medir
1023 variações.

9.3 SENSOR INFRAVERMELHO


Sensores de proximidade óticos: opostos, retroreflectivos e difusos.

Sensores Óticos Opostos: conhecidos como “olhos elétricos”, surgiram nos


anos 1950,e foram muito utilizados emuma grande variedade de aplicações, como
abertura automática de portas, sistemas de segurança, etc. Consiste basicamente de
duas unidades separadas - umemissor e um receptor - colocadas na região de
interesse (emissor) e em alguma parte do robô educacional (receptor).

Figura 9. 4: Sensor Ótico Oposto.


O emissor emite um facho de luz (geralmente através de umLED) que é captado
pelo receptor (no robô) indicando assim a presença do referido objeto (que possui o
emissor). Geralmente tem pouca aplicabilidade em robótica educacional devido à sua
configuração geométrica, ou seja, a necessidade de pares opostos e separados de
emissor e receptor.

Sensores Óticos Retro-reflectivos: podem ser considerados uma evolução dos


sensores óticos opostos, pois também possui um par transmissor/receptor, porém
estes não estão mais colocados em partes opostas,mas sim apenas em uma única
parte (no caso da robótica educacional, o robô).

Figura 9. 5: Sensor ótico retro-reflector.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 77

O nome Retro-reflectivo deve-se ao uso de um retro-refletor (como um espelho)


colocado de maneira oposta a um par transmissor/receptor. A percepção de um objeto
dá-se então pela reflexão de um raio de luz emitido pelo emissor (instalado no robô) e
refletido pelo retro-refletor (fixado no objeto de interesse). São usados em robótica
educacional no auxílio à navegação, sendo os retro-refletores utilizados como
marcações de posição que são identificadas pelo robô enquanto este se desloca no
ambiente.

Sensores óticos difusos: operam de forma similar aos retro-reflectivos, com a


diferença de que no caso dos sensores difusos não há a presença de uma contra-
parte retro-reflectiva, assim, a energia retornada pelo objeto é a difusão da luz na
própria superfície do objeto. Estudaremos e aprenderemos a montar mais adiante este
tipo de sensor aplicado na prática em um robô educacional.

Figura 9. 6: Sensor ótico difuso.

Os transmissores e receptores IR (infra-red ou Infravermellhos) são muito


utilizados como sensor ótico por reflexão difusa para registro de posição. A figura
abaixo mostra o circuito do sensor e um gráfico do sinal de saída (em mV) do receptor
IR em função da distância perceptível pelo receptor IR com resistor de elevação de
tensão para 5V (pull-up 2K2). O vídeo XXX mostra essa variação, com o acionamento
de um led pela queda do sinal analógico atarvés da condução do receptor IR.

Figura 9. 7: Esquemático de montagem do par de sensor


infravermelho.
Para ter um maior alcance e perceber uma maior variação de posição com esse
sensor, é aconselhável utilizar o conversor AD de 10 bits do microcontrolador para
identificar variações de até 5mV no sinal do sensor. A distância ótima é a distância em
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 78

que incide no receptor a maior parte do feixe de luz emitido pelo transmissor. Nessa
distância ocorre a maior variação (queda) do sinal de saída analógico do receptor IR.

Utilizando o princípio on/off, só há identificação de posição quando o sinal do


receptor for menor ou igual a 2,5V (nível lógico baixo), o que torna o sensoriamento
muito limitado.

Durante os testes desse circuito foi verificado que, devido a resistência de 390 Ω
em paralelo com 2K2 Ω, quando o led é conectado no circuito, há uma diminuição na
variação do sinal de saída analógico do receptor IR. O programa a seguir mostra a
leitura em mV do sensor ótico via emulação serial.

//Leitura de tensão em mV com infravermelho

#include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual

int32tensao;

main() {

usb_cdc_init(); // Inicializa o protocolo CDC

usb_init(); // Inicializa o protocolo USB

usb_task(); // Une o periférico com a usb do PC

setup_adc_ports(AN0); //Habilita entrada analógica - A0

setup_adc(ADC_CLOCK_INTERNAL);

while(1){ //ANALÓGICO DIGITAL(10 bits)

set_adc_channel(0); // 5000 mV 1023

delay_ms(10); // tensaoread_adc()

tensao= (5000*(int32)read_adc())/1023;

printf (usb_cdc_putc,"\r\nA tensao e' = %lu mV\r\n",tensao); // Imprime pela serial //virtual

output_toggle(pin_b7);

delay_ms(500);}}

Deve-se atentar que no receptor infravermelho o catodo e o anodo são


invertidos, ou seja, no TIL 78, o terminal que vai para o GND é o Anodo.
Se o receptor não for escuro, preto ou azul, mas sim transparente, deve-se
diferenciar como mostra a Figura a seguir. O Emissor visto frontalmente apresenta
contato circular, enquanto o receptor, quadrado.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 79

TIL 78
TIL 32
receptor
emissor

Figura 9. 8: Par infravermelho.

Figura 6. 1:Prática 8 – Sensor Infravermelho, montada em


protoboard.

9.4 SENSOR DE TEMPERATURA LM35

Para este tópico será utilizado como exemplo de ajuste da resolução do


conversor AD, o sensor de temperatura LM35 que fornece uma saída de tensão linear
e proporcional com uma resolução de 10 mV a cada °C. A precisão nominal é de 0,5°C
a 25°C.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 80

Figura 9. 9: Prática 9 – Sensor de temperatura LM35, montada em


protoboard.

Figura 9. 10: Esquemático Prática 9 – Sensor de temperatura LM35.


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 81

Este programa em linguagem C monitora a temperatura do ambiente e exibe no


monitor serial do compilador CCS.

#include <SanUSB.h>

#include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual

int32 temperatura;

main() {

usb_cdc_init(); // Inicializa o protocolo CDC

usb_init(); // Inicializa o protocolo USB

usb_task(); // Une o periférico com a USB do PC

setup_adc_ports(AN0); //Habilita entrada analógica - A0

setup_adc(ADC_CLOCK_INTERNAL);//Habilita clock interno

while(1){

set_adc_channel(0);

delay_ms(10);

temperatura=(430*(int32)read_adc())/1023; //Vref = 4,3V devido à queda no diodo,


//então (430*temp)

printf (usb_cdc_putc,"\r\nTemperatura do LM35 = %lu C\r\n",temperatura);

output_toggle(pin_b7); // Pisca Led em operação normal

delay_ms(1000);

}}

9.5 SENSOR DE LUMINOSIDADE

LDR significa Light Dependent Resistor, ou seja, Resistor Variável Conforme


Incidência de Luz. Esse resistor varia sua resistência conforme a intensidade de
radiação eletromagnética do espectro visível que incide sobre ele.
Um LDR é um transdutor de entrada (sensor) que converte a (luz) em valores
de resistência. É feito de sulfeto de cádmio (CdS) ou seleneto de cádmio (CdSe).
Sua resistência diminui quando a luz é intensa, e quando a luz é baixa, a
resistência no LDR aumenta.
Um multímetro pode ser usado para encontrar a resistência na escuridão
(geralmente acima de 1MΩ) ou na presença de luz intensa (aproximadamente
100Ω).O LDR é muito frequentemente utilizado nas chamadas fotocélulas que
controlam o acendimento de poste de iluminação e luzes em residências. Também
é utilizado em sensores foto-elétricos.O LDR é muito frequentemente utilizado nas
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 82

chamadas fotocélulas que controlam o acendimento de poste de iluminação e


luzes em residências. Também é utilizado em sensores foto-elétricos.

Figura 9. 11: Esquemático Prática 10 - Sensor luminosidade LDR.

Figura 9. 12: Prática 10 – Sensor de luminosidade LDR, montada em


protoboard.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 83

O programa a seguir monitora a luminosidade do ambientee exibe no monitor


serial do compilador CCS.

#include <SanUSB.h>

#include <usb_san_cdc.h>// Biblioteca para comunicação serial

floattens,lux;//variáveis

main(){

usb_cdc_init(); // Inicializa o protocolo CDC

usb_init(); // Inicializa o protocolo USB

usb_task(); // Une o periférico com a usb do PC

setup_adc_ports(AN0_TO_AN1);//habilita canais analógicos A0 e A1

setup_adc(ADC_CLOCK_INTERNAL);

while(1)

set_adc_channel(1);

delay_ms(20);

tens=5*(float)read_adc()/1023;//calcula valor de tensão do AD1

if (tens>2 && tens<2.8) { lux=(3936.4-(1249*tens))/0.8; }

if (tens>=2.8 && tens<=3.8) { lux=2057.2-494*tens; }

if (tens>3.8) { lux=(900-180*tens)/1.2; }

if (tens>2) { //Leituraválida

printf (usb_cdc_putc,"%.0f",lux);

delay_ms(50);

printf (usb_cdc_putc,"L");

if (tens<=2) //Leitura não válida

printf (usb_cdc_putc,"Erro");

delay_ms(50);

printf (usb_cdc_putc,"L");

delay_ms(800);//pisca LED no pino b7


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 84

output_high(pin_b7);

delay_ms(200);

output_low(pin_b7); }}}

10 ATUADORES APLICADOS EM ROBÓTICA EDUCACIONAL

Os motores mais utilizados com sistemas microcontrolados são os motores CC,


motores de passo e servo-motores. A figura abaixo mostra a disposição dos
transistores de potência para atuação bidirecional de motores de passo e motores CC.

Figura 10. 1: Acionamento Bidirecional de motores.

10.2.1 ACIONAMENTO DE MOTORES CC (CORRENTE CONTÍNUA) DE


BAIXA TENSÃO

Motores de equipamentos eletrônicos

São abundantes no mercado em função da ampla gama de utilização,


conseqüentemente, existem em várias dimensões, tensões, pesos, características e
são fáceis de encontrar em sucatas como videocassete, brinquedos, impressoras, etc.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 85

Figura 10. 2: Exemplos de motores CC.

Motores elétricos utilizados em automóveis

Os motores utilizados em autoeducacionais são todos com tensão nominal a 12


volts, são robustos e normalmente projetados para condições extremas, tais como
poeira, calor, variações de tensão e corrente, entre outros. Algumas opções são ideais
para aplicação no robô por serem compactos, fortes, alta rotação e leves, além de
serem muito fáceis de conseguir em oficinas e empresas do ramo. Os motores mais
usados em projetos em geral são de trava elétrica das portas, bomba do limpador de
pára-brisa e de gasolina, bomba de combustível, motor do vidro-elétrico, motor da
ventoinha, motor do ventilador interno, limpador de pára-brisa dianteiro e traseiro,
bomba hidráulica do freio ABS, de carros de brinquedo.

Figura 10. 3: Exemplos de motores CC de automóveis.


Além do acionamento elétrico, os motores CC de baixa potência utilizados em
automação e robótica, apresentam geralmente uma caixa de redução, que é um
equipamento composto por engrenagens, com o intuito de reduzir a velocidade de
rotação do eixo (ou angular) e aumentar o torque do motor. O torque varia em função
da força aplicada (F) e do raio de giro (nas engrenagens é a metade do diâmetro
primitivo), segundo a equação T = F xr.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 86

Sendo: F = força (em Newtons), r = raio de giro (em metros) e T = torque (em
N.m).

Figura 10. 4: Comparação entre os raios de engrenagens.


Já que o motor imprime uma força constante, a variação do torque entre
engrenagens ocorre devido ao raio de giro. Na prática em um sistema de
engrenagens, comprovada pelas equações abaixo, quanto maior o diâmetro da
engrenagem movida (D2), maior o torque (T2) proporcional e menor a velocidade de
rotação (n2). Considerando a engrenagem 1 com motora e a engrenagem 2 como
movida, tem-se:

Fconst -> T1/r1 = T2/r2 -> T1/D1 = T2/D2

T2 .D1 = T1 .D2

n2. D2 = n1. d1

Coroa e o parafuso com rosca sem-fim

A coroa e o parafuso com rosca sem-fim compõem um sistema de transmissão


muito utilizado principalmente nos casos em que é necessária elevada redução de
velocidade ou um elevado aumento de força, como nos redutores de velocidade.

Figura 10. 5: Parafuso com rosca sem-fim.


O número de entradas do parafuso tem influência no sistema de transmissão. Se
um parafuso com rosca sem-fim tem apenas uma entrada (mais comum) e está
acoplado a uma coroa de 60 dentes, em cada volta dada no parafuso a coroa vai girar
apenas um dente. Como a coroa tem 60 dentes, será necessário dar 60 voltas no
parafuso para que a coroa gire uma volta. Assim, a rpm da coroa é 60 vezes menor
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 87

que a do parafuso. Se, por exemplo, o parafuso com rosca sem-fim está girando a
1.800 rpm, a coroa girará a 1.800 rpm, divididas por 60, que resultará em 30 rpm.

Suponhamos, agora, que o parafuso com rosca sem-fim tenha duas entradas e a
coroa tenha 60 dentes. Assim, a cada volta dada no parafuso com rosca sem-fim, a
coroa girará dois dentes. Portanto, será necessário dar 30 voltas no parafuso para que
a coroa gire uma volta.

Assim, a rpm da coroa é 30 vezes menor que a rpm do parafuso com rosca sem-
fim. Se, por exemplo, o parafuso com rosca sem-fim está girando a 1.800 rpm, a coroa
girará a 1.800 divididas por 30, que resultará em 60 rpm. A rpm da coroa pode ser
expressa pela equação:

i = Nc .Zc =Np. Zp

Nc= (Np.Zp) /Zc

Onde:

Nc = número de rotações da coroa (rpm)

Zc = número de dentes da coroa

Np = número de rotações do parafuso com rosca sem-fim (rpm)

Zp= número de entradas do parafuso

Ponte H

O acionamento da ponte H permite o movimento do motor nos dois sentidos. A


ponte H pode ser feita com transistores MOSFETs (mais aconselhável devido à baixa
queda de tensão)ou transistores de potência Darllington TIP ou BD.

Figura 10. 6: Diagrama de ponte H para motor CC.

Driver ponte H L293D

Uma das soluções mais simples e barata em atuação de robôs móvéis consiste
utilizar um integrado motor driver como o L293D. Este integrado possibilita o controle
de dois motores CC, utilizando quatro pinos de saída do microcontrolador.

O circuito integrado L293D deve ter duas alimentações. Uma para comando
(5V) no pino 16 e outra para potência (por exemplo 9,6 V ou 5V) no pino 8. Os
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 88

motores percebem uma queda de 0,7V em relação à tensão da fonte externa.As


entradas nos pinos 2 e 7 são para acionar o motor A e entradas nos pinos 10 e 15 são
para acionar o motor B. O pino 8 é conectado à fonte de alimentação dos motores que
tem o mesmo Gnd do circuito de controle.

Figura 10. 7: Driver L293D (ponte H).


A mudança dos sinais nos pinos de entrada tem o efeito de produzir a alteração
do sentido da corrente no enrolamento do motor, logo do seu sentido de rotação. A
Tabela permite programar o movimento em qualquer direção (conjugando 2 motores).

Figura 10. 8: Comandos de movimento.


Se a primeira entrada alta, segunda entrada baixa , então o motor se desloca
para frente, se a primeira entrada baixa e a segunda entrada alta , o motor se
movimenta para trás. Se ambas as entradas baixas ou altas, o motor pára.

10.2.2 SOLENÓIDES E RELÉS

Ponte H com micro-relés

Como foi visto, o acionamento da ponte H permite o movimento do motor nos


dois sentidos. A ponte H pode ser feita também com apenas dois micro-relés. Neste
caso, pode-se utilizar também o driver ULN2803 para a energização das bobinas, pois
já contém internamente oito transistores com resistores de base e oito diodos de roda
livre. Esse tipo de ponte H, mostrada na figura abaixo, não causa queda de tensão na
fonte de alimentação do motor, porque as fontes de energização da bobina do micro-
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 89

relé e de alimentação do motor devem ser diferentes, ou seja, isoladas uma da outra,
para que seja possível o chaveamento do relé.

Figura 10. 9: Ponte H de motor CC com micro-relés e ULN2803.


O programa abaixo reverte o sentido de giro de um motor de forma
temporizada. Os relés em ponte H estão conectador aos pinos b7 e b6.

#include <SanUSB.h>

main(){

while (TRUE){

//gira esquerda

output_high(pin_b7);

output_low(pin_b6);

delay_ms(2000);//aguarda 2 segundos

//giradireita

output_low(pin_b7);

output_high(pin_b6);

delay_ms(2000);

}}
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 90

Note que inicialmente os dois relés estão conectados ao V-Motor. Ao energizar a


bobina do relé da esquerda, conectando o V+Motor, a corrente da fonte passa pelo
motor no sentido da esquerda para a direita o que determina o sentido de rotação do
motor. Ao desligar o relé da esquerda e acionar o relé da direita ocorre o sentido de
rotação inverso do motor.

Quando se utiliza motor CC em ponte H para atuadores robóticos, como rodas


de veículos ou braços mecânicos, o que determina o torque e a velocidade do atuador
é a relação de transmissão da caixa de engrenagens conectada ao motor.

10.2.3 SERVOMOTORES

Servomotores são compostos por motores DC e um redutor de velocidades,


junto comum sensor de posição e um sistema de controle realimentado. Em outras
palavras, os servomotorespodem ser considerados como sendo motores comandados
em posição (angular oulinear), já que, do ponto de vista de quem os utiliza, o controle
interno em malha fechada é irrelevante. Os servomotores são pequenos, com ampla
variação de torques. O mecanismo deposicionamento ajusta a posição angular por
meio de um sinal codificado que lhe é enviado.

Enquanto esse código estiver na entrada, o servo irá manter a sua posição
angular. Em geral osinal é do tipo PWM (Pulse WidthModulation), ou seja, a posição
angular irá depender dalargura do pulso enviado.Há dois tipos de servos: os de
posição, com giro de 180º, e o de rotação, que possui o giro contínuo. O Servo de
Posição é utilizado em antenas parabólicas, em braços robóticos, na robótica
educacional terrestre com o controle de pernas mecânicas e no controle de câmeras.
O Servo de Rotação é prioritariamente escolhido para a locomoção por rodas.

Figura 10. 10: Exemplos de servo-motor utilizado em robótica.


Trata-se de dispositivos muito precisos que giram sempre o mesmo ângulo para
um dado sinal. Um servo típico possui três fios de ligação, normalmente preto,
vermelho e branco (ou amarelo). O condutor preto é a referência de massa da
alimentação (0 volts), o condutor vermelho é a alimentação e o condutor branco (ou
amarelo) é o sinal de posicionamento, como é mostrado na figura abaixo que é um
carro para desvio de obstáculos, acionado por dois servo-motores de rotação. O sinal
do servo-motor de posição é normalmente um pulso de 1 a 2 milisegundos (ms),
repetido depois de um pulso de 10 a 20ms. Com o pulso de aproximadamente 1 ms o
servo move-se para um sentido e com o impulso de 2 ms para o sentido oposto.
Desse modo, com um impulso de 1,5 ms, o servo roda para a posição central.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 91

Figura 10. 11: Robô montado com 2 servo-motores de parabólica


(abaixo da bateria).
A tensão de alimentação do servomotor é tipicamente de 5V, podendo variar
entre 4,5V e 6V. Devido à alta redução do jogo de engrenagens, o torque que se
obtém de um servo é bastante alto, considerando o seu tamanho reduzido.
Lamentavelmente, os servos consomem correntes elevadas (de 200 mA a 1 A) e
introduzem ruído elétrico nos condutores de alimentação, necessitando a aplicação de
capacitores de filtro. O programa abaixo move um servo-motor de rotação para frente
e um outro para trás. Note que essa operação é utilizada por robôs educacionais que
possuem dois motores em anti-paralelo.

Programa em linguagem C:

#include <SanUSB.h>

#define motor1 pin_b5

#define motor2 pin_b6

int16frente=50;

shortint led;

main(){

while (TRUE)

while (frente>0)

{ output_high(motor2); //Inicializa o pulso do motor 1

output_high(motor1); //Inicializa o pulso do motor 2

delay_ms(1);

output_low(motor1); //Termina o pulso de 1ms do motor1– sentido horário

delay_ms(1);

output_low(motor1);

output_low(motor2); //Termina o pulso de 2ms do motor2 – sentido anti-horário


ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 92

delay_ms(10);

--frente;

frente=50;

led=!led; //pica led a cada 50 ciclos do servo-motor, ou seja a cada 12ms*50 = 600ms

output_bit(pin_b7,led);

}}

Figura 10. 12: Ligação do servo-motor e partes internas.


O programa abaixo move um servo-motor de posição. Com o pulso de
aproximadamente 1 ms, o servo move-se para 0 graus, e com o pulso de 1,2 ms para
90 graus e com o pulso de 2 ms para 180 graus. Note que este motor é utilizado em
antenas parabólicas, em sistemas robóticos e no controle de câmeras.

#include <SanUSB.h> //Servo_motor de parabólica - Apresenta 3 posições definidas 0,


90 e 180 graus

int16 FRENTE=200, TRAS=200; //no servo de teste 200 passos corresponderam a


aprox. 1 volta

void main()

while (1)

while (FRENTE>0)

FRENTE--;

output_high(pin_b0);
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 93

delay_ms(1); // tempo de busca de 0 graus

output_low(pin_b0);

delay_ms(10);

FRENTE=200;

while (TRAS>0)

TRAS--;

output_high(pin_b0);

delay_ms(2); // tempo de busca de 180 graus

output_low(pin_b0);

delay_ms(10);

TRAS=200;

output_toggle(pin_b7);

}}

11 CONSIDERAÇÕES FINAIS

Utilizando os princípios desta apostila, estudantes foram três vezes consecutivas


campeões da Competição de Robótica do IFCE (2007, 2008 e 2009) na categoria
Localização, campeões da Feira Brasileira de Ciências e Engenharia (FEBRACE09)
da USP em São Paulo na Categoria Engenharia (2009), vice-campeões da
Competição de Veículos Mecatrônicos (CVM 2009) na categoria Master, campeões na
IX EXCETEC, como também receberam Prêmio de Inovação em Aplicação
Tecnológica na Feria Explora 2009 em Medelin na Colômbia, campeões no Foro
Internacional de Ciencia e Ingeniería 2010 no Chile na Categoria Supranivel,
campeões e vice-campeões de Robótica na categoria Labirinto da FEMECI 2010
(IFCE Campus Cedro), terceiro lugar no Prêmio de Inovação da I SEMANTEC 2011
(IFCE Fortaleza), campeões da Feira Regional das Escolas do Estado do Ceará
(CREDE 4) em Out/2011 em Horizonte, campeões da V Feira Estadual de Ciências e
Cultura do Estado do Ceará em 2011, Credenciados para Febrace 2012 na USP.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 94

12 LINKS DE APOIO E REPORTAGENS

Grupo SanUSB (2011). Arquivos do Grupo SanUSB. Retirado em 05/05/12, no


World Wide Web: www.tinyurl.com/SanUSB/.

Site Ferramenta SanUSB (2012). Laboratório LAESE e SanUSB Robótica e


Automação. Retirado em 09/05/12, no World Wide Web:
www.wix.com/sanusb_laese/robotica.

Jornal O Povo (2011). Da escola pública para o mundo. Retirado em 07/04/12,


no World
WideWeb:http://www.opovo.com.br/app/opovo/cienciaesaude/2011/01/08/noticiacienci
aesaudejornal2086691/da-escola-publica-para-o-mundo.shtml.

Jornal O Povo (2010). De Maracanaú para Eslováquia. Retirado em 12/03/12, no


World Wide Web: http://publica.hom.opovo.com.br/page,489,109.html?i=2051467.

Diário do Nordeste (2010). Robô cearense. Retirado em 06/05/12, no World


Wide Web: http://diariodonordeste.globo.com/materia.asp?codigo=861891.

TV Diário (2010). Feira do Empreendedorismo SEBRAE. Retirado em 13/02/12,


no World Wide Web: http://www.youtube.com/watch?v=8Y7gOPd_zN4.

TV Verdes Mares (2009). Estudantes competem com robôs. Retirado em


23/04/12, no World Wide Web: http://tvverdesmares.com.br/bomdiaceara/estudantes-
competem-com-robos/.

TV Cidade (2009). Projetos Comsolid/Setapi IFCE. Retirado em 05/05/12, no


World Wide Web: http://www.youtube.com/watch?v=i_waT0_201o.

13 REFERÊNCIAS BIBLIOGRÁFICAS

Bolton, W. Engenharia de controle. São Paulo, SP: Makron Books,1995.

Groover, M. P.; Weiss, M.; Nagel, R. N.; Odrey, N. G. Robótica.Tecnologia e


Programação. McGraw-Hill, São Paulo, 1998.

Jucá, S.C.S. (2012). Apostila de microcontroladores PIC e periféricos. Retirado


em 19/04/12, no World Wide Web: http://www.4shared.com/document/Qst_pem-
/100923Apostila_CPIC.html.
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 95

14 SUGESTÃO DE LIVROS

Groover, M. P.; Weiss, M.; Nagel, R. N.; Odrey, N. G. Robótica.Tecnologia e


Programação. McGraw-Hill, São Paulo, 1989. (Edição esgotada). (1)*

Adade Filho, A. Fundamentos de Robótica: Cinemática, Dinâmica e Controle de


Manipuladores Robóticos. Apostila publicada pelo ITA-CTA. São José dos Campos,
1992.

Groover, M. P.; Weiss, M.; Nagel, R. N.; Odrey, N. G. Industrial Robotics:


Technology, Programming, andApplications. McGraw-Hill Higher Education, 1986.

Craig, J. J. Introduction to Robotics: Mechanics and Control (2nd Edition).


Addison-Wesley, 1989.

Asada, H.; Slotine, J.-J. E. Robot Analysis and Control. John Wiley and Sons,
New York, 1986.

Salant, M. A. Introdução à Robótica. São Paulo, SP: Makron Books, 1988. (1)*
Fu, K. S. Robotics: Control, Sensing, Vision and Inteligence. McGrall-Hill, New York,
1987. (1)*

Bolton, W. Engenharia de controle. São Paulo, SP: Makron Books,1995.

Laus, Luís Paulo - Centro Federal de Educação Tecnológica do Paraná –


DepartamentoAcadêmico de Mecânica - Área de Automação -
http://dexter.damec.cefetpr.br/~laus/

Você também pode gostar