Buscar

Introdução a Robótica Linguagem C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

INTRODUÇÃO À ROBÓTICA
Material desenvolvido e organizado pelos alunos Diego Agostini, Douglas Fetter e Wagner de
Oliveira, 2005.
Segundo João Vilhete Viegas d'Abreu, a robótica pedagógica é um ambiente de aprendizagem
onde o professor ensina ao aluno a montagem, automação e controle de dispositivos mecânicos que
podem ser controlados pelo computador. Do ponto de vista da engenharia mecânica, a robótica pode
ser definida como sendo uma forma da automação industrial, um conjunto de conceitos básicos de
Mecânica, Cinemática, Automação, Hidráulica, Informática e Inteligência Artificial, envolvidos no
funcionamento de um robô. Com as ferramentas necessárias para o desenvolvimento de dispositivos
robóticos, alunos e professores interagem entre si e produzem novos e diferentes tipos de
conhecimentos neste novo tipo de ambiente pedagógico ainda inexistente em larga escala na
educação formal.
A utilização da automação e da robótica generaliza-se, de forma acelerada, em todas as
esferas da sociedade moderna. É difícil visualizar os dias atuais sem o emprego da tecnologia da
automação. Há algumas décadas seu uso restringia-se praticamente à área industrial, mas com os
avanços conseguidos, estendeu-se também ao cotidiano das pessoas. Hoje é um dos segmentos da
tecnologia que mais evolui, e na escola, esta realidade também deve se fazer presente.
Foto: http://www.abb.com/br (acessado em 27/abril/2006)
Num mundo em rápida transformação tecnológica, em que as tarefas repetitivas são cada vez
mais relegadas a robôs e softwares, a chamada “alfabetização científica” se torna cada vez mais
importante para a cidadania e a futura inserção sócio-econômica de nossos alunos. A redução
drástica no custo da microeletrônica nos dias de hoje, coloca ao alcance de todos a construção de
robôs com baixo custo. Neste cenário, é fundamental que a educação praticada em nossas
universidades estimule os alunos e professores a explorar novos meios para aprimorar o processo de
ensino-aprendizagem.
A tecnologia dos computadores e dos robôs pode possibilitar novas formas de integração de
trabalhos ainda pouco exploradas ou desconhecidas pelos professores [D’Abreu 1996]. Atualmente
é imprescindível criar espaços para a inclusão de novas práticas no cotidiano escolar. A adoção de
uma metodologia que envolva o lúdico, a pesquisa e novas tecnologias, resulta numa ampliação do
contato dos alunos com novos conceitos e equipamentos e numa maior atração pelo processo
educativo [Bassani 2002]. Nesse contexto, os robôs controlados por computadores surgem como
uma ferramenta relevante para desvelar novas formas de construção do raciocínio, tais como
algoritmos e programação.
Nos trabalhos com robótica, o professor deve assumir a função de criador do ambiente
favorável ao desenvolvimento do aluno, transformando a sala de aula em um ambiente de alta
contaminação tecnológica. Ali o aluno poderá aprender dentro dos mesmos padrões em que o
engenheiro (ou outro profissional) real aprende: de forma auto-suficiente, desenvolvendo seu
próprio método de aprendizagem, fazendo e errando, definindo visões, buscando o conhecimento de
forma pró-ativa, tudo dentro de uma cultura favorável em que o contexto emocional é importante.
[Dolabela 1999].
Foto 1: Robôs utilizados em atividades de robótica educativa na Unisc
Desde a infância, os brinquedos e as brincadeiras constituem os mediadores por excelência
entre a criança e o aprendizado [Fortuna 2001]. Os brinquedos eletrônicos representam uma
atividade lúdica criadora e socializadora, pois transportam crianças e adolescentes para experiências
diversas, abrindo-lhes as portas para o entendimento da realidade e ajudando-os a compreender o
funcionamento detalhado das partes integrantes do sistema eletromecânico.
Os brinquedos eletrônicos também entretêm e isso explica seu sucesso entre crianças, jovens
e adultos. A sua implementação e adaptação na aula prática de programação faz com que o aluno
aprenda os conteúdos da disciplina de forma prazerosa.
Os brinquedos eletrônicos permitem ao aluno experimentar virtualmente as mesmas
aventuras e emoções que são vivenciadas no mundo real. A sala de aula é transformada num espaço
de experimentação e criação, movimentando a imaginação dos alunos e aproximando-os do mundo
tecnológico.
O Que é um Robô ?
Na sociedade atual, há uma crescente necessidade de se realizar tarefas com eficiência e
precisão. Existem também tarefas a serem realizadas em lugares onde a presença humana se torna
difícil, arriscada e até mesmo impossível, como o fundo do mar ou a imensidão do espaço. Para
realizar essas tarefas, se faz cada vez mais necessária a presença de robôs, que executem essas
tarefas sem risco de vida.
Foto 2: Robô Asimo http://world.honda.com
Robótica é uma área multidisciplinar, altamente ativa que busca o desenvolvimento e a
integração de técnicas e algoritmos para a criação de robôs. A robótica envolve matérias como
engenharia mecânica, engenharia elétrica, inteligência artificial, entre outras, com uma perfeita
harmonia, que se faz necessária para se projetar essas tecnologias. Temos hoje robôs em várias
áreas de nossa sociedade: robôs que prestam serviços, como os desarmadores de bomba, robôs com
a finalidade da pesquisa científica e educacional e até mesmo os robôs operários, que se instalaram
em fábricas e foram responsáveis pela “segunda Revolução Industrial”, revolucionando a produção
em série, agilizando os trabalhos e fornecendo maior qualidade aos produtos.
Foto 3: http://www.fanucrobotics.com
Não existe uma definição precisa para um robô, mas podemos defini-lo de modo geral como
uma máquina programável que é capaz de imitar as ações ou a aparência de uma criatura
inteligente, geralmente um ser humano. Para se caracterizar como um robô, a máquina deve ser
capaz de no mínimo duas coisas:
• Obter informações sobre o seu próprio ambiente. Para realizar certas tarefas os robôs
precisam de habilidades sensoriais similares às do homem, mas sua capacidade ainda é
limitada.
• Atuar de alguma forma física neste ambiente, movendo-se ou manipulando objetos.
Décadas atrás, os robôs faziam parte apenas da ficção científica, fruto da imaginação do
homem. No início dos anos 60, os primeiros robôs começaram a ser usados com o objetivo de
substituir o homem em tarefas que ele não podia realizar por envolverem condições desagradáveis,
tipicamente contendo altos níveis de: frio ou calor; ruído; gases tóxicos; esforço físico extremo;
trabalhos monótonos, “estafantes”.
Foto 4: http://www.fanucrobotics.com
Muitos sistemas mecânicos podem ser controlados por operações numérico-aritméticas e as
máquinas CNC (Controle Numérico Computadorizado) são controladas por computadores e cada
vez mais usadas na indústria moderna.
Os robôs didáticos têm sido muito utilizados na orientação de estudantes e operários responsáveis
pela operação e manutenção de robôs. Embora eles possuam algumas das principais características
dos robôs industriais, os robôs didáticos são mais baratos, menores e com menor nível de
desempenho. Similares aos industriais, os robôs didáticos são compostos por:
• Sistema de acionamento: Pode ser pneumático, hidráulico ou elétrico.
• Realimentação: Conjunto de sensores que fornece ao sistema supervisor as informações
sobre o estado de seu movimento.
• Computador: Responsável pelo controle eletrônico do robô.
• Fonte de energia: Providencia energia para o controlador e potência para todos
componentes.
Tipos de Robôs:
1. Robôs Inteligentes: são manipulados por sistemas multifuncionais controlados por computador,
são capazes de interagir com seu ambiente através de sensores e de tomar decisões em tempo
real. Atualmente dedica-se grandes esforços no desenvolvimento desse tipo de robô.
2. Robôs com controle por computador: são semelhantes aos robôs inteligentes, porém não têm a
capacidade de interagir com o ambiente.Se estes robôs forem equipados com sensores e
software adequado, se transformam em robôs inteligentes.
3. Robôs de aprendizagem: limitam-se a repetir uma seqüência de movimentos, realizados com a
intervenção de um operador ou memorizadas.
4. Manipuladores: são sistemas mecânicos multifuncionais, cujo sistema de controle permite
governar o movimento de seus membros das seguintes formas:
a) manual, quando o operador controla diretamente os movimentos;
b) de seqüência variável, quando é possível alterar algumas das características do ciclo de
trabalho.
Também pode-se realizar a classificação dos robôs do ponto de vista do controle de seus
movimentos, admitindo as seguintes configurações:
1. Sem controle-servo: é o programa que controla o movimento dos diferentes componentes do
robô, realizando em um posicionamento “ponto-a-ponto” no espaço.
2. Com controle-servo: este tipo de controle permite duas formas de trabalho:
a) controle dos movimentos dos membros do robô em função de seus eixos. Os movimentos
podem ser realizados ponto-a-ponto ou com trajetória contínua.
b) os movimentos se estabelecem da respectiva posição de seus eixos de coordenada e da
orientação da mão ferramenta do robô.
Esta classificação não pretende ser rígida, também existem sistemas que estão limitados a um
controle misto computador-operário.
Foto 5: Robôs de exploração da Nasa http://ranier.hq.nasa.gov e http://mars.jpl.nasa.gov
O Braço Mecânico
O braço mecânico é um manipulador projetado para realizar diferentes tarefas e ser capaz de
repeti-las. Para realizar determinadas tarefas, o robô move partes, objetos, ferramentas, e
dispositivos especiais segundo movimentos e pontos pré-programados. O computador guarda em
sua memória um programa que detalha o curso que o braço seguirá. Quando o programa está
rodando, o computador envia sinais ativando motores que movem o braço e a carga no final dele,
que é mantida sob controle pelo atuador (“end effector’).
Figura 1: Juntas de robôs http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Dois aspectos importantes do funcionamento de um braço mecânico correspondem ao
sensoriamento do ambiente e como se realiza a programação do mesmo.
Tipos de Juntas
Os braços de robôs podem ser formados por três tipos de juntas: juntas deslizantes, juntas de
rotação e juntas de bola e encaixe. A maioria dos braços dos robôs é formada pelas juntas
deslizantes e de revolução, embora alguns incluam o de bola e encaixe. A seguir será descrito cada
um destes tipos de juntas.
Juntas Deslizantes.
Este tipo de junta permite o movimento linear entre dois vínculos. É composto de dois vínculos
alinhados um dentro do outro, onde um vínculo interno escorrega pelo externo, dando origem ao
movimento linear. Este tipo de junta é mostrada na figura a seguir.
Figura 2: Junta deslizante http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Juntas de Rotação.
Esta conexão permite movimentos de rotação entre dois vínculos. Os dois vínculos são
unidos por uma dobradiça comum, com uma parte podendo se mover num movimento cadenciado
em relação à outra parte, como mostrado na figura a seguir. As juntas de rotação são utilizadas em
muitas ferramentas e dispositivos, tais como tesouras, limpadores de pára-brisa e quebra-nozes.
Figura 3: Junta de rotação http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Juntas de Bola e Encaixe.
Esta conexão se comporta como uma combinação de três juntas de rotação, permitindo
movimentos de rotação em torno dos três eixos, como mostrado na figura.
Figura 4: Junta de bola e encaixe http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Estas juntas são usadas em um pequeno número de robôs, devido à dificuldade de ativação.
De qualquer maneira, para se ter a performance de uma junta do tipo bola e encaixe, muitos robôs
incluem três juntas rotacionais separadas, cujos eixos de movimentação se cruzam em um ponto,
como na figura.
Figura 5: Três juntas rotacionais substituindo a junta de bola e encaixe
http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
GRAUS DE LIBERDADE.
O número de articulações em um braço do robô é também referenciado como grau de
liberdade. Quando o movimento relativo ocorre em um único eixo, a articulação têm um grau de
liberdade. Quando o movimento ocorre por mais de um eixo, a articulação têm dois graus de
liberdade. A maioria dos robôs têm entre 4 a 6 graus de liberdade. Já o homem, do ombro até o
pulso, têm 7 graus de liberdade.
CLASSIFICAÇÃO DOS ROBÔS PELO TIPO DE ARTICULAÇÃO.
É usual classificar os robôs de acordo com o tipo de junta (articulação), ou mais exatamente,
pelas três juntas mais próximas da base do robô. Esta divisão em classes fornece informações sobre
características dos robôs em várias categorias importantes como: Espaço de trabalho, Grau de
rigidez, Extensão de controle sobre o curso do movimento, Aplicações que são adequadas ou
inadequadas para cada tipo de robô.
Robôs Cartesianos.
Os braços destes robôs têm três articulações deslizantes, como na figura.
Figura 6: Robô Cartesiano http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Os robôs cartesianos caracterizam pela pequena área de trabalho, mas com um elevado grau
de rigidez mecânica e são capazes de grande exatidão na localização do atuador. Seu controle é
simples devido ao movimento linear dos vínculos e devido ao momento de inércia da carga ser fixo
por toda a área de atuação.
Robôs Cilíndricos.
Os braços destes robôs consistem de uma junta de revolução e duas juntas deslizantes, como
mostrado na figura.
Figura 7: Robô Cilíndrico http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
A área de trabalho destes robôs é maior que a dos robôs cartesianos, mas a rigidez mecânica
é ligeiramente inferior. O controle é um pouco mais complicado que o modelo cartesiano, devido a
vários momentos de inércia para diferentes pontos na área de trabalho e pela rotação da junta da
base.
Robôs Esféricos.
Estes robôs possuem duas juntas de revolução e uma deslizante, como mostrado na figura.
Figura 8: Robô Esférico http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Estes robôs têm uma área de trabalho maior que os modelos cilíndricos, mas perde na
rigidez mecânica. Seu controle é ainda mais complicado devido os movimentos de rotação.
Robôs com Articulação Horizontal.
Caracterizam-se por possuir duas juntas de revolução e uma deslizante, como na figura.
Figura 9: Robô com Articulação http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
A área de atuação deste tipo de robô é menor que no modelo esférico, sendo apropriados
para operações de montagem, devido ao movimento linear vertical do terceiro eixo.
Robôs com Articulação Vertical.
Estes robôs caracterizam-se por possuir três juntas de revolução, como na figura
Figura 10: Robô com Articulação Vertical http://www.dee.feb.unesp.br/~marcelo/robotica/Robot3.htm
Sua área de atuação é maior que qualquer tipo de robô, tendo uma baixa rigidez mecânica.
Seu controle é complicado e difícil, devido às três juntas de revolução e devido à variações no
momento de carga e momento de inércia.
FUNDAMENTOS DA LINGUAGEM C
Para controlar um robô é necessário fazer a sua programação, o que é feito utilizando uma
linguagem de programação. A seguir são apresentados os conceitos básicos da linguagem C. É uma
das linguagens de programação usadas para programar robôs.
Um programa de computador é um conjunto instruções que representam um algoritmo para
a resolução de algum problema. Estas instruções são escritas através de um conjunto de códigos
(símbolos e palavras). Este conjunto de códigos possui regras de estruturação lógica e sintática
própria. Dizemos que este conjunto de símbolos e regras formam uma linguagem de programação.
DEFINIÇÕES BÁSICAS
Programa - Conjunto de instruções distribuídas de maneira lógica, coma finalidade de
executar satisfatoriamente determinada tarefa .
Linguagem de Programação - Conjunto de instruções utilizadas pelo homem para se
comunicar com a máquina.
Compilador - Programa que traduz programas em linguagem de alto nível para linguagem
de máquina.
Erro de compilação - Erro no programa em linguagem de alto nível que é detectado pelo
compilador.
Erro de execução - Erro cometido em um programa que não é detectado até que o
programa seja executado.
Variável - Símbolo que representa uma posição de memória.
INTRODUÇÃO E COMANDOS BÁSICOS
A linguagem C é uma linguagem de alto nível, genérica. Foi desenvolvida por
programadores para programadores tendo como meta características de flexibilidade e
portabilidade. O C é uma linguagem que nasceu juntamente com o advento da teoria de linguagem
estruturada e do computador pessoal. Assim tornou-se rapidamente uma linguagem “popular” entre
os programadores. O C foi usado para desenvolver o sistema operacional UNIX, e hoje esta sendo
usada para desenvolver novas linguagens, entre elas a linguagem C++ e Java. Uma linguagem é
chamada estruturada quando é formada por blocos chamados de funções. Um programa em C é
formado por uma coleção de funções. Em um programa bem escrito cada função executa apenas
uma tarefa. Cada função tem um nome e uma lista de argumentos que a mesma receberá.
A execução do programa escrito em C sempre começa pela função principal main( ).
EXEMPLO - 1
void main ( ) � especifica o nome e o tipo da função (nesse caso void );
{ � início da função main;
int idade; � declara uma variável de nome idade e tipo inteiro;
clrscr( ); � função predefinida para limpar a tela;
printf (“ Digite sua idade “); � imprime a mensagem entre aspas na tela;
scanf (“ %d”,&idade ); � lê via teclado um valor que e colocado em idade;
} � fim da função main.
VARIÁVEIS
Uma variável é um espaço de memória reservado para armazenar um certo tipo de dado e
tendo um nome para referenciar o seu conteúdo. O nome de uma variável na linguagem C não pode
conter acentuação nem caracteres especiais. Duas variáveis não podem ter o mesmo nome dentro do
mesmo escopo.
TIPOS DE VARIÁVEIS
A tabela a seguir apresenta os principais tipos de variáveis válidas em C.
Tipo Extensão em bits Faixa de valores
Char 8 -128 a 127
Int 16 -32768 a 32767
float 32 3.4E-38 a 3.4E+38
double 64 1.7E-308 a 1.7E+308
INICIALIZANDO VARIAVEIS
Inicializar uma variável significa atribuir um primeiro valor a essa variável. Exemplo:
int k = 5 ;
char op = ‘f’;
float num = 21.5;
char nome[20] = “Fernanda”;
FUNÇAO printf( )
Serve para imprimir um determinado dado na tela. Sua sintaxe é
printf(“string de controle”,variavel);
Exemplo:
int k=25;
printf(“%d”,k);
OPERADORES
C é uma linguagem rica em operadores. Alguns são mais usados do que outros como é o
caso do operador de atribuição e dos operadores aritméticos, a seguir são mostradas tabelas
contendo os operadores aritméticos, relacionais e lógicos.
OPERADORES ARITMÉTICOS
OPERADOR AÇÃO
- subtração
+ adição
* multiplicação
/ divisão
% resto da divisão
-- decremento
++ incremento
OPERADORES LÓGICOS
OPERADOR AÇÃO
&& and
| | or
! Not
OPERADORES RELACIONAIS
OPERADOR AÇÃO
> maior que
< menor que
>= maior ou igual
<= menor ou igual
== igual a
!= diferente de
COMANDOS DE DECISÃO
Os comandos de decisão permitem determinar qual é a ação a ser tomada com base no
resultado de uma expressão condicional.
COMANDO IF-ELSE
O comando if instrui o computador a tomar uma decisão simples.
Forma geral:
if ( condição ) comando ;
else comando ;
Exemplo:
/* programa do número mágico */
#include <stdio.h>
#include <conio.h>
void main( )
{
int magico , entrada;
 magico = random(5); //gera um número entre 0 e 5
 clrscr( );
 printf( “Adivinhe o numero : ”);
 scanf(“%d”,&entrada);
 if (entrada == magico) printf (“ == Você acertou ==”);
 else printf (“ Você não acertou pressione qualquer tecla );
 getch( );
}
LAÇO FOR
O laço for é geralmente usado quando queremos repetir um trecho de programa por um
número fixo de vezes. Utilizamos um laço for quando sabemos de antemão o número de vezes a
repetir.
Forma geral:
for (inicialização; condição; incremento) comando;
Exemplo:
/* programa que imprime os números de 1 a 100 */
#include <stdio.h>
#include <conio.h>
void main ( )
{
 int x;
 for ( x=1;x<=100;x++)
 printf ( “%d”,x);
 getch( ) ;
}
Exemplo2:
void main( )
{
float num;
for (num=1;num<20;num++) raiz(num);
}
void raiz( float n)
{
printf(“\nn = %f raiz quadrada = %f”, n, sqrt(n));
}
A tabela a seguir mostra as funções de leitura de dados via teclado.
FUNÇÃO OPERAÇÃO
getchar ( ) lê um caractere ; espera por <enter>
getch ( ) lê um caractere sem eco ; não espera por <enter>
gets ( ) lê uma string via teclado
puts ( ) imprime uma string na tela
Tabela contendo funções de leitura via teclado.
A tabela a seguir mostra as opções de formatação dos dados que são exibidos pela função
printf.
CÓDIGO PRINTF SCANF
%d imprime um inteiro decimal lê um inteiro decimal
%f ponto decimal flutuante lê um numero com ponto flutuante
%s string de caracteres lê uma string de caracteres
%c Um único caractere lê um único caractere
Tabela contendo código de formatação para PRINTF e SCANF
ACESSANDO A PORTA PARALELA
A porta paralela é uma interface de comunicação existente entre o computador e um
periférico. Quando a IBM criou seu primeiro PC (Personal Computer) ou Computador Pessoal, a
idéia era conectar a essa porta uma impressora, mas atualmente, são vários os periféricos que se
utilizam desta porta para enviar e receber dados para o computador (exemplos: Scanners, Câmeras
de vídeo, Unidade de disco removível e outros).
ENDEREÇOS DA PORTA PARALELA
O computador nomeia as portas paralelas, chamando-as de LPT1, LPT2, LPT3, etc, mas, a
porta física padrão do computador é a LPT1, e seus endereços são: 378h (para enviar um byte de
dados pela porta de dados), 379h (para receber um valor através da porta de estado) e, 37Ah (para
enviar dados para a porta de controle). Às vezes pode está disponível a LPT2, e seus endereços são:
278h, 279h e 27Ah, com as mesmas funções dos endereços da porta LPT1 respectivamente.
Utilizando a Porta Paralela conectada a uma impressora, os endereços terão nomes
sugestivos, como mostrado a seguir:
Nome Endereços LPT1 Descrição
Registro de Dados 378h Envia um byte para a porta
Registro de Status 379h Ler o Status da porta
Registro de Controle 37Ah Envia dados de controle para a porta
O CONECTOR DB25
O DB25 é um conector existente na parte de trás do gabinete do computador e é através
deste que o cabo paralelo se conecta ao computador para poder enviar e receber dados.
No DB25, um pino está em nível lógico 0 quando a tensão elétrica no mesmo está entre 0 à 0,4 V.
Um pino se encontra em nível lógico 1 quando a tensão elétrica no mesmo está acima de 3.1 e até 5
V. A figura abaixo mostra o conector padrão DB25, com 25 pinos, onde cada pino tem um nome
que o identifica:
Foto5: Conector DB25 macho do cabo paralelo http://www.rogercom.com/
Figura 11: Pinagem do conector DB25 localizado atrás do micro http://www.rogercom.com/
ENVIANDO BITS PARA A PORTA PARALELA
Decimal Hexadecimal Binário Pino Comentário
128 80 10000000 9 - D7
64 40 01000000 8 - D6
32 20 00100000 7 - D5
16 10 00010000 6 - D4
8 8 00001000 5 - D3
4 4 00000100 4 - D2
2 2 00000010 3 - D1
1 1 00000001 2 - D0
Cada bit do byte enviado à Porta
Paralela está relacionado com um pino
do DB5, e um fio do cabo paralelo,
fisicamente. Ao enviar um byte, que
o(s) bit(s) esteja(m) ligado(s) ou
desligado(s), os LEDs acende(rão) ou
apaga(rão)conforme os estados dos
bits.
COMANDO PARA ENVIO DE BYTES PARA PORTA PARALELA
outportb (0x378, 1);
outportb (0x378, 2);
outportb (0x378, 4);
outportb (0x378, 8);
outportb (0x378, 16);
outportb (0x378, 32);
outportb (0x378, 64);
outportb (0x378, 128);
Exemplo 1:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void main() {
 clrscr();
 printf(" – Teste – ");
getch();
outportb (0x378, 1);
 getch();
 outportb (0x378, 2);
 getch();
 outportb (0x378, 4);
 getch();
 outportb (0x378, 8);
 getch();
 
printf(" - FIM do teste - ");
 outportb (0x378, 0);
}
Exemplo 2:
Este programa envia à porta paralela oito bytes, um a cada vez, assim que o usuário
pressionar uma tecla.
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define LPT1 0x378
int main (void)
{
 unsigned char Valor=128; //Em binário: 10000000
 while ( Valor > 0 )
 { 
 outportb (LPT1, Valor); // Envia para a Porta LPT1
 printf ("\nPressione uma tecla para ascender o próximo LED...");
 getch ( );
 Valor = Valor >> 1; //A cada passagem, o bit 1 é movido para a direita
 }
}
CONTROLE DE MOTOR DE PASSOS ATRAVÉS DA PORTA PARALELA
Motores de passo são dispositivos mecânicos eletromagnéticos que podem ser controlados
digitalmente através de um hardware específico ou através de softwares. São motores fáceis de
controlar através de pulsos e podem funcionar em baixa rotação. São usados em impressoras,
plotters, scanners, drives de disquetes, discos rígidos e muitos outros aparelhos. Existem vários
modelos de motores de passo disponíveis no mercado que podem ser utilizados para diversos
propósitos. Poderemos utilizá-los para mover robôs, câmeras de vídeo, brinquedos ou mesmo uma
cortina. A foto a seguir mostra alguns tipos de motores de passo.
 
Foto 6: Motores de passo http://www.rogercom.com/
A seguir será explicado o funcionamento básico de um motor de passo.
TRÊS ESTADOS DE UM MOTOR DE PASSO
Desligado:
Não há alimentação suprindo o motor. Nesse caso não existe
consumo de energia, e todas as bobinas estão desligadas.
Na maioria dos circuitos este estado ocorre quando a fonte de
alimentação é desligada.
Parado:
Pelo menos uma das bobinas fica energizada e o motor
permanece estático num determinado sentido. Nesse caso há
consumo de energia, mas em compensação o motor mantém-
se alinhado numa posição fixa.
Rodando:
As bobinas são energizadas em intervalos de tempos
determinados, impulsionando o motor a girar numa direção.
 
MODOS DE OPERAÇÃO DE UM MOTOR DE PASSO
Passo completo 1 (Full-step)
-Somente uma bobina é energizada a cada passo;
-Menor torque;
-Pouco consumo de energia;
-Maior velocidade.
Passo completo 2 (Full-step) 
-Duas bobinas são energizadas a cada passo;
-Maior torque;
-Consome mais energia que o Passo completo 1;
-Maior velocidade.
Meio passo (Half-step)
-A combinação do passo completo1 e do passo completo 2
gera um efeito de meio passo;
-Consome mais energia que os passo anteriores;
-É muito mais preciso que os passos anteriores;
-O torque é próximo ao do Passo completo 2;
-A velocidade é menor que as dos passos anteriores.
A forma com que o motor irá operar dependerá do que se deseja controlar. Há casos em que
o torque é mais importante, em outros, a precisão ou mesmo a velocidade. Essas são características
gerais dos motores de passo, a maioria deles permite trabalhar dessa forma. Ao trabalhar com
motores de passos, precisamos saber algumas características de funcionamento como a tensão de
alimentação, a máxima corrente elétrica suportada nas bobinas, o grau (precisão), o torque além de
outros parâmetros. As características importantes que devemos saber para poder controlar um motor
de passo são a tensão de alimentação e a corrente elétrica que suas bobinas suportam.
Nas tabelas abaixo são mostradas as seqüências para se controlar um motor de passo:
Passo Completo 1 (Full-step)
Nº do
passo
B3 B2 B1 B0 Decimal
1--> 1 0 0 0 8
2--> 0 1 0 0 4
3--> 0 0 1 0 2
4--> 0 0 0 1 1
Passo Completo 2 (Full-step)
Nº do
passo
B3 B2 B1 B0 Decimal
1--> 1 1 0 0 12
2--> 0 1 1 0 6
3--> 0 0 1 1 3
4--> 1 0 0 1 9
Meio passo (Half-step)
Nº do
passo
B3 B2 B1 B0 Decimal
1--> 1 0 0 0 8
2--> 1 1 0 0 12
3--> 0 1 0 0 4
4--> 0 1 1 0 6
5--> 0 0 1 0 2
6--> 0 0 1 1 3
7--> 0 0 0 1 1
8--> 1 0 0 1 9
A PRECISÃO DE UM MOTOR DE PASSO
Suponhamos que temos um motor de passo com passo de 7.5 graus.
Figura 12 - Precisão de 7.5º http://www.rogercom.com/
Na figura acima a distância entre um ponto vermelho e outro é de 7.5º.
Para sabermos quantos passos são necessários para que o motor dê um giro de 360º, faça os
seguintes cálculos:
Passos/Volta = 360º / 7.5º;
Passos/Volta = 48.
Portanto, um motor com precisão de 7.5º, precisa dá 48 passos para completar uma volta.
CONSTRUINDO O HARDWARE PARA CONECTAR O MOTOR DE PASSO
Na figura abaixo são mostradas as pinagens e as características desses CIs.
Figura 13 - Pinagens do CI ULN2803 http://www.rogercom.com/
O CI ULN 2803 tem 8 entradas que podem controlar até 8 saídas. Com ele poderemos
controlar até 2 motores de passo simultaneamente. Tanto o CI ULN2003 como o ULN 2803
trabalham com correntes de 500 mA e tensão de até 50 V. Não se deve utilizar motores de passo
que consumam mais que esse valor, pois poderão queimar os CIs. Deve-se verificar antes qual a
amperagem de trabalho do motor. É recomendado utilizar motores que consumam menos de 500
mA, para não sobrecarregar o CI.
Um fator importante que deve ser levado em consideração é a fonte de alimentação que
deverá fornecer a amperagem necessária. Para isso é necessário usar uma fonte de alimentação que
forneça mais que 500 mA. Por exemplo, para controlar 3 motores de passo no mesmo circuito, cada
um consumindo 340 mA, seria necessário uma fonte de alimentação que fornecesse correntes acima
de 1 A.
Figura 14 - Controle de 1 motor de passo usando o CI ULN 2803 http://www.rogercom.com/
Figura 15 - Entradas e saídas da porta paralela http://www.rogercom.com/
Lei de Ohm
A lei de OHM diz respeito à relação entre corrente, tensão e resistência:
I
V
R =
Onde:
• I é a corrente em ampères
• V é a tensão em volts
• R é a resistência em ohms
A lei de Ohm se baseia na relação linear entre a tensão e a corrente. Entretanto, uma
resistência cujo valor não permanece constante é definida como uma resistência não-linear
(filamento da lâmpada incandescente, por exemplo).
Resistência: é a propriedade de um material se opor ao fluxo de corrente elétrica e dissipar
potência.
Resistor: um componente especificamente projetado para possuir resistência.
As informações técnicas constantes neste material didático constituem os conceitos
fundamentais da robótica e permitem que um estudante mais experiente em eletrônica consiga fazer
o acionamento de motores através do computador. Com este conhecimento podem ser construídos
pequenos robôs para serem utilizados em atividades escolares.
Referências:
[Bassani 2002] BASSANI, P. B. Scherer e Martins, R. Lorenz (2002) “Produção de jogos
interativos: um espaço de construção hipertextual coletiva”, Editora Feevale, Revista Tecnologia
e Tendências, Vol. 1, No 2, Novo Hamburgo, dezembro, p. 45-50.
[D’Abreu 1996] D’ABREU, J. V. Viegas (1996) “Desenvolvimento de Projetos em Parceria
Professor-Aluno na Oficina de Robótica Pedagógica”, VII Congresso Internacional Logo,
Anais..., Porto Alegre, RS, novembro, 1995 e III Congresso Iberoamericano de Informática,
Anais..., Barranquilla, Colômbia, julho,1996.
[Dolabela 1999] DOLABELA, Fernando (1999) “Oficina do empreendedor”, Cultura Editores
Associados, São Paulo.
[Fortuna 2001] FORTUNA, T. Ramos (2001) “Vida e morte do brincar”, In:Seminário
Nacional de Arte e Educação, 2001, Montenegro. Seminário Nacional de Arte e Educação
(Anais). Montenegro: FUNDARTE, p. 38-46.
http://www.nied.unicamp.br
http://www.dee.feb.unesp.br/~marcelo/robotica/conteudo.html#P2 (acessado em 27/abril/2006)
http://ncg.unisinos.br/robotica/ (acessado em 27/abril/2006)
http://www.din.uem.br/ia/robotica/index.htm (acessado em 27/abril/2006)
www.rogercom.com (acessado em 14/março/2005)

Continue navegando