Manual de Robótica
Manual de Robótica
Manual de Robótica
ESTADO DO CEARÁ
Sandro Jucá
FORTALEZA – CEARÁ
2013
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 2
ÍNDICE
ÍNDICE DE FIGURAS
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
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
Objetivos da Aprendizagem
Ao final do estudo deste instrumento facilitador o aluno deve ser capaz de:
Figura 1. 1: Protoboard.
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:
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.
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.
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
4 INTRODUÇÃO À ROBÓTICA
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.
ANO DE 1923
ANO DE 1939
ANO DE 1943
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 16
ANO DE 1951
ANO DE 1952
ANO DE 1954
ANO DE 1958
A PARTIR DE 1959...
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.
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.
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).
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.).
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).
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
Cognição
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 23
Notas:
6 INSTRUÇÕES EM LINGUAGEM C
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.
clock_int_4MHz()
#include<SanUSB.h>
clock_int_4MHz();
nivel_alto()
nivel_baixo()
saída_pino(pino,booleano)
tempo_us()
tempo_ms()
entrada_pin_xx
habilita_interrupcao()
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 26
habilita_interrupcao(timer0);
habilita_interrupcao(ext1);
if(xxx_interrompeu)
#programa interruptinterrupcao
voidinterrupcao()
tempo_timer16bits(0,62500); } }
liga_timer16bits(timer,multiplicador)
tempo_timer16bits(timer,conta_us)
habilita_interrupcao(timer0);
habilita_wdt()
#include<SanUSB.h>
clock_int_4MHz();
limpaflag_wdt()
#include<SanUSB.h>
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 28
clock_int_4MHz();
habilita_wdt();
while(1) { limpaflag_wdt();
.....
.....
tempo_ms(500);
escreve_eeprom(posição,valor)
le_eeprom()
dado=le_eeprom(85);
habilita_canal_AD()
le_AD8bits()
le_AD10bits()
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();
voidmain() {
habilita_interrupcao(recep_serial);
le_rs232();
#pragmainterruptinterrupcao
voidinterrupcao()
{ unsigned char c;
if (serial_interrompeu) {
serial_interrompeu=0;
c = le_rs232();
escreve_rs232();
while (envia_byte());
escreve_rs232('A'); // escreve A
while (envia_byte());
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 31
7 FERRAMENTA SanUSB
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
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
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.
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.
}//fim main
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
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.
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).
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:
É 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.
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:
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.
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.
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.
usb_cdc_kbhit( ) – Avisa com TRUE (1) se acabou de chegar um novo caractere no buffer
de recepção USB do PIC.
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
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
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>
BYTE comando;
void main() {
while (TRUE)
{ //verifica se tem um novo byte no buffer de recepção, depois o kbhit é zerado para
//próximo byte
delay_ms(500);
output_low(pin_B6);
delay_ms(500);} }
8 PRÁTICAS INTRODUTÓRIAS
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
Programação em Linguagem C:
voidmain()//programa principal
{
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.
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
main(){//PROGRAMA PRINCIPAL
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.
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:
O professor pode trabalhar também com 3LEDs (pinos b7, b6 e b5) piscando, de
acordo com o programa abaixo:
while(input(pin_b1)==1){
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.
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 --
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.
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
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.
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. 9: Microrrelés.
O controle de uma solenóide ou relé pode ser feito pelo chaveamento de um
transistor Darlington ou de um MOSFET.
Para acionar o relé basta executar o mesmo programa pisca LED no pino b7.
B0 B1 B2 B3 B4 B5 B6 B7
a b c d e f g ponto
#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
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);
}} }}
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:
#include <SanUSB.h>
#include <MOD_LCD_SANUSB.c>// RB0-RS, RB1-EN, RB2-D4, RB3-D5, RB4-D6, RB5-D7
9 PRÁTICAS ESPECÍFICAS
9.1 SENSORES
Campo de visão: deve ser amplo o bastante e com suficiente profundidade para
adequar-se à sua aplicação;
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;
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.
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.
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.
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.
Magnéticos Microondas
Indutivos Óticos
Ultrasônicos Capacitivos
9.2 SENSORES ANALÓGICOS
9.2.1 CONVERSOR A/D
OBS.: O ganho de tensão de um circuito poderia ser simulado por software com
os comandos: Int32 valorsensor= read_adc();
ANALÓGICO DIGITAL
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.
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.
int32tensao;
main() {
setup_adc(ADC_CLOCK_INTERNAL);
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);}}
TIL 78
TIL 32
receptor
emissor
#include <SanUSB.h>
int32 temperatura;
main() {
while(1){
set_adc_channel(0);
delay_ms(10);
delay_ms(1000);
}}
#include <SanUSB.h>
floattens,lux;//variáveis
main(){
setup_adc(ADC_CLOCK_INTERNAL);
while(1)
set_adc_channel(1);
delay_ms(20);
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");
printf (usb_cdc_putc,"Erro");
delay_ms(50);
printf (usb_cdc_putc,"L");
output_high(pin_b7);
delay_ms(200);
output_low(pin_b7); }}}
Sendo: F = força (em Newtons), r = raio de giro (em metros) e T = torque (em
N.m).
T2 .D1 = T1 .D2
n2. D2 = n1. d1
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
Onde:
Ponte H
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
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é.
#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
10.2.3 SERVOMOTORES
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.
Programa em linguagem C:
#include <SanUSB.h>
int16frente=50;
shortint led;
main(){
while (TRUE)
while (frente>0)
delay_ms(1);
delay_ms(1);
output_low(motor1);
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);
}}
void main()
while (1)
while (FRENTE>0)
FRENTE--;
output_high(pin_b0);
ROBÓTICA EDUCACIONAL - FERRAMENTA SanUSB 93
output_low(pin_b0);
delay_ms(10);
FRENTE=200;
while (TRAS>0)
TRAS--;
output_high(pin_b0);
output_low(pin_b0);
delay_ms(10);
TRAS=200;
output_toggle(pin_b7);
}}
11 CONSIDERAÇÕES FINAIS
13 REFERÊNCIAS BIBLIOGRÁFICAS
14 SUGESTÃO DE LIVROS
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)*