sexta-feira, 23 de maio de 2008

Robô sobe em qualquer superfície vertical com tecnologia de eletroadesão

Redação do Site Inovação Tecnológica

23/05/2008

A equipe do professor Harsha Prahlad encontrou uma solução para fazer com que seus robôs consigam não apenas subir pelas paredes, mas subir por superfícies verticais em geral, feitas com qualquer tipo de material, de paredes de concreto ou tijolos até janelas de vidro.

Eletroadesão

A solução encontrada é a eletroadesão, que está sendo utilizada pela primeira vez em robôs. O robô se sustenta na superfície por meio de cargas eletrostáticas, geradas a partir de suas baterias e aplicadas na superfície através de sapatas especiais, desenvolvidas pela equipe do laboratório SRI, dos Estados Unidos.

Ao contrário dos adesivos tradicionais, secos ou não, utilizados em outros robôs escaladores, a eletroadesão pode ser desativada, ampliando a gama de utilização dos robôs que a utilizam.

Este é também o principal diferencial entre a eletroadesão e os sistemas eletrostáticos passivos já testados em outros robôs, que se baseiam na força de Van der Waals.

Robôs robustos

Os testes mostraram que a eletroadesão permite que os robôs se sustentem em virtualmente qualquer tipo de superfície, de paredes de concreto e de tijolos expostos a janelas de vidro. Poeira, pequenas sujeiras e até mesmo trincas nas superfícies também não são problema.

"Eventos recentes, como desastres naturais [...] e ameaças à segurança pública têm mostrado uma necessidade cada vez maior de robôs robustos - especialmente daqueles que podem se mover em três dimensões," diz o professor Prahlad, que apresentará seus robôs pela primeira vez em público nesta sexta-feira, durante a Conferência Internacional de Robótica e Automação (ICRA 2008).

Atração eletrostática

Segundo o trabalho apresentado pelo pesquisador, a eletroadesão, ou atração eletrostática eletricamente controlada, é uma solução com baixo consumo de energia, operação silenciosa e que requer uma estrutura extremamente simples e leve.

As sapatas, ou almofadas, por meio das quais a carga eletrostática é aplicada à superfície, conseguem se moldar às irregularidades das superfícies, para que o robô ande por cantos e quinas.

O consumo de energia de um robô utilizando a eletroadesão é de cerca de 20 microwatts por Newton de carga sustentada. As sapatas apresentam pressões entre 0,5 e 1,5 N por centímetro quadrado de área da sapata, dependendo da superfície.

quinta-feira, 8 de maio de 2008

Como instalar o model-checking em sistema operacional LINUX, distribuição Debian/GNU Etch

1) Baixe o arquivo no link: http://www.fmi.uni-stuttgart.de/szs/tools/mckit/mckit-bin_linux-040921.tar.gz
2) Como root descompacte o arquivo em: /usr/local
# cd /usr/local
# tar -zxvf
mckit-bin_linux-040921.tar.gz
3) Inclui o diretório bin do kit no PATH:
#export PATH=/usr/local/mckit/bin:${PATH}
4) Para rodar utilize:
# ./check

OBS.: Indo na pasta examples terá um arquivo com o nome test.pl, ao executar esse arquivo, ele fará um teste em todas as ferramentas que compõem o model-checking, mas será observado que não encontrará a ferramenta spin e nem a pep, que necessitam que seja instaladas separadamente.

Como acrescentar a ferramenta SPIN no model-checking

1) Baixe o arquivo do spin no site: http://spinroot.com/spin/Src/spin515.tar.gz
2) Como root descompacte o arquivo em: /usr/local
3) Entre no diretorio, /usr/local/Spin/Src, e altere:
Primeiro a main.c
Onde tem a "include <io.h>" colocar "include </usr/include/sys/io.h>"
Segundo o makefile
Onde tem "CC=cc -DNXT" colocar "CC=cc -DNXT -DPC"
4) Instalar o pacote bison para obter yacc
5) Dar um make na pasta
6) Depois de feito o dito acima edite o arquivo make_pc
7) No arquivo make_pc na linha que tem "mv spin.exe /usr/bin" mude para "mv spin /usr/bin"
8) Pronto, feito tudo basta dar um ./make_pc

Pronto o model-checking já está com o spin, para testar entre em /usr/local/mckit/examples
Depois dê um ./test.pl, verá que ele encontrará as ferramentas spin.

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

A explicação sobre como instalar a ferramenta PEP ainda não está pronta, pois ainda estou tendo problemas, caso alguém que leia isto já tenha conseguido instalar, por favor me envie e-mail. Espero ter ajudado.

quarta-feira, 7 de maio de 2008

Tutorial de Instalação do BrickOS no Cygwin, para embarcar programas no Lego Mindstorm RCX 2.0

Primeiro Passo: Instalação do Cygwin

Instalar o Cygwin, que pode ser baixado do site:
http://www.cygwin.com/.

Depois de baixado basta dar dois cliques e abrirá uma tela onde basta dar Next até chegar a uma tela como a representada na figura acima, escolha a opção de Install from Internet, depois de escolhida essa opção abrirá uma tela (representada na figura abaixo), basta manter como está, clicando em Next.

Depois de clicado em Next abrirá uma tela pedindo que seja escolhido o diretório onde será salvo os pacotes que serão baixados, escolha o diretório de sua preferência e clique em Next, então abrirá uma tela perguntando sobre sua conexão (se é cabo, se há proxy, etc), escolha a opção que represente sua conexão e clique em Next e irá para a tela seguinte que será a escolha do espelho para o download (representada na figura abaixo).

OBS.: O melhor espelho, com relação a velocidade e pacotes, é o da UOL.

Depois de escolhido o espelho, será mostrado uma lista de pacotes como a figura abaixo.

Dica: Depois de aberto esta lista, clique em View, essa opção fará com que mostre todos os pacotes em ordem alfabética, facilitando assim a procura dos pacotes necessários, que estão apresentados abaixo:


ash

autoconf
automake
bash
binutils
cpio
cygwin
diffstat
diffutils
file
findutils
flex
gcc
grep
less
login
make
mingw
patch
sed
tar
time
w32api

OBS.: Encontrado o pacote na lista, basta clicar em Skip, que aparecerá no canto esquerdo.

Depois de escolhido os pacotes e marcá-los para instalação, basta clicar em Next, ele iniciará o download e depois a instalação dos pacotes solicitados.

Segundo Passo: Compilando a Hitachi-H8 cross-compiler

Depois de baixado e instalado, abra o Cygwin Bash Shell.

Crie um novo diretório:
$ mkdir /build

Faça o download dos seguintes arquivos:
gcc 2.95.2, no link: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-2.95.2.tar.gz
binutils 2.10.1, no link: ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.10.1.tar.gz
legos-buildgcc, no link: http://legos.sourceforge.net/cygwin/download/legos-buildgcc.zip

Depois de realizado o download, pegue os três arquivos e coloque na pasta que acabou de ser criada (/build).
Entre na pasta e descompacte o arquivo
legos-buildgcc.zip, após descompactado aparecerá três arquivos, dois *.diff e um *.sh, entre no Cygwin e faça:

$ cd /build
$ ./buildgcc.sh

OBS.: Ele iniciará a compilação, esse passo demorará um pouco.
OBS.: Ignore possíveis warnings que apareça.

Terceiro Passo: Instalação do BrickOS

Baixe os arquivos do BrickOS, o utilizado por mim foi o brickos-0.9.0.tar, mas procure versões atualizadas, no link: http://sourceforge.net/projects/brickos.

Coloque o arquivo dentro de C:\cygwin, abra o cygwin e faça:

$ cd /
$ tar xvfz
brickos-0.9.0.tar

Aparecerá os arquivos que estão sendo descompactados e será criada uma pasta
com o seguinte nome brickos-0.9.0.

Quarto Passo: Criando link e configurando o BrickOS

Abra o cygwin e faça:

$ ln -s
brickos-0.9.0 brickos
$ cd /brickos
$ ./configure; make
$ cd util
$ make strip

Quinto Passo: Ligando a Torre Infra-vermelho

Instale o driver da torre para que o windows reconheça a torre.
Depois de instalado ligue a torre e posicione juntamente com o RCX 2.0 de forma que os infras se comuniquem.
Lembre-se o RCX 2.0 deverá estar ligado no momento da transferência.
Faça:

$ ./firmdl3 ../boot/brickOS.srec (comando que embarca o brickOS no RCX)
$ ./dll ../demo/helloworld.lx (comando que envia o programa desejado)

Sexto Passo: Possíveis problemas

Primeiro problema: O padrão do software instalado é que a torre se comunica via COM1, então se sua torre for conectada pela USB, dará um Error 2: Opening COM1, é necessário mudar os comandos:

$ ./firmdl3 --tty=usb ../boot/brickOS.srec (comando que embarca o brickOS no RCX)
$ ./dll --tty=usb ../demo/helloworld.lx (comando que envia o programa desejado)


Segundo problema: Ao iniciar a transferência o PC travar. Se ocorrer isso, siga os passos abaixo:

Pode ocorrer isso devido a capacidade do Hyper-Threading do seu processador. Isso é um problema que ocorreu com o driver da torre, mas tem uma atualização que corrigi isso, que pode ser baixada em:

http://www.lego.com/eng/service/downloads/patches/Tower164.zip

Sétimo Passo: Criando os seus programas

Após tudo pronto e instalado é só aproveitar, na pasta /demo tem alguns exemplos de programas para o RCX, mas se você quiser criar os seus próprios programas é bem simples, mas só precisa ser lembrado que o padrão do RCX é a extensão *.lx, então todo programa criado em C, precisa ser compilado para lx. Como fazer isso?

Primeiro passo: Basta verificar que dentro da pasta /demo tem um arquivo que se chama Makefile, o primeiro passo é criar o seu programa em C e colocar dentro da mesma pasta onde se encontra o Makefile.

Segundo passo: Abra o Makefile para ser editado (WordPad, pois em Notepad ficará tudo em código), dentro do arquivo terá uma linha que começa com PROGRAMS=, na frente do igual provavelmente terá nomes de programas que vão como exemplo, o que terá que ser feito é nessa linha adicionar o nome do programa que está sendo feito por você. Lembre-se o nome do programa colocado na linha PROGRAMS terá que ser o mesmo nome do *.c, ou seja, se eu criei o arquivo teste.c, quando eu for editar o Makefile eu terei que escrever PROGRAMS=teste.lx.

Terceiro passo: Depois de ser editado e salvo o Makefile abra o Cygwin e faça:

$ cd /
$ cd brickos/demo/
$ make all

Depois de feito isso ele irá compilar o seu arquivo *.c para *.o e depois transformar para *.lx, agora basta seguir o Sexto passo para enviar o programa para o RCX e é só aproveitar.

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

Espero que esse tutorial ajude, ele foi a união de um tutorial e uma pesquisa em forum que usei quando precisei embarcar programas para o RCX.

Referências:

http://brickos.sourceforge.net/docs/INSTALL-cygwin.html

http://www.lego.com/eng/service/faqs.asp?section=ConsumerService-FAQ-TechSupport&tech=true&catid=87BC4CA6-D8CD-4BF1-8307-6B52AB45AF02

quarta-feira, 20 de fevereiro de 2008

Controlador de velocidade em motores DC utilizando modulação por largura de pulso (PWM)

O trabalho realizado foi à construção de um controlador para a velocidade de um motor DC utilizando modulação em pulso (PWM). O controle da velocidade dos motores pode ser muito importante em várias áreas de atuação, por exemplo, uma impressora ao puxar o papel necessita de precisão na velocidade do motor tanto para recolher o papel quanto para imprimir, para que não haja falhas na impressão; um scanner precisa ter controle de velocidade do motor que faz passar o feixe óptico durante a captura da imagem.
Na realização do projeto foi necessário identificar quais as variáveis que interferem no funcionamento do motor, no caso do controlador projetado: a tensão de entrada, que tem que ser uma onda pulsante; a largura do pulso, que vai determinar a velocidade do motor.
A utilização da modulação por largura de pulso foi escolhida por ser amplamente utilizada em controladores de servo-motor, por ser de fácil implementação e baixo custo. A PWM é realizada utilizando-se um potenciômetro que quando tem sua resistência variada modifica a corrente na carga e, portanto, a potência aplicada a ela.
Para que se entenda como funciona esta tecnologia no controle de potência, partimos de um circuito simples formado por um interruptor de ação muito rápida e uma carga que deve ser controlada. Quando o interruptor está aberto não há corrente na carga e a potência aplicada é nula. No instante em que o interruptor é fechado, a carga recebe a tensão total da fonte e a potência aplicada é máxima. Como pode-se observar esse processo de chaveamento gera uma onda quadrada. Se quisermos obter, uma potência intermediária de 50% entregue a carga, pode-se fazer com que a chave seja aberta e fechada rapidamente de modo a ficar metade do tempo aberta e metade do tempo fechada, fazendo com que passe 50% da potência inicial. Variando-se a largura do pulso e também o intervalo, de modo a termos ciclos ativos (a razão entre o tempo de pulso e a duração de um ciclo completo) diferentes, podemos controlar a potência média aplicada a uma carga. Assim, quando a largura do pulso varia de zero até o máximo, a potência também varia na mesma proporção. Este é o principio associado ao controle PWM: modular a largura do pulso de modo a controlar o ciclo ativo do sinal aplicado a uma carga e, com isso, a potência aplicada a ela.
No projeto para implementar esse sistema de chaveamento foi utilizado o CI NE555N e a carga citada é o motor DC. O motor DC é conhecido pelo controle preciso de velocidade e por seu ajuste fino. O funcionamento básico do motor DC está fundamentado na Força de Lorentz aplicada em uma carga em movimento dentro de um campo magnético (F=qvB). Consideremos uma espira de corrente inserida em um campo magnético criado por um imã permanente, em que há corrente criada por uma bateria (fonte DC). De uma forma simplificada, a simples passagem desta corrente faz com que apareçam duas forças de sentidos contrários, aplicadas uma em cada lado da espira. Estas forças criam um torque que, obviamente, faz a espira girar, transformando a energia elétrica da corrente em energia cinética num eixo acoplado às espiras. A direção da rotação depende da polaridade da bateria e da direção das linhas de campo magnético criadas pelo imã. Os motores DC são utilizados, por exemplo, em aplicações como o posicionamento do braço de um robô.
O circuito da Figura ao lado foi o circuito montado para o controlador. Durante o projeto estava sendo utilizado uma fonte de entrada de 12V, mas para a melhor funcionalidade das especificações do problema foi utilizada uma fonte de 14V.
A especificação principal do problema era que a onda de saída ficasse o mais uniforme possível, ao utilizar uma entrada de 14V isso foi conseguido. Quando se utilizava 12V era encontrado um pico no topo da onda. Abaixo serão apresentadas fotos do projeto montado no protoboard e da forma de onda obtida no osciloscópio.
A foto ao lado mostra como o circuito apresentado acima foi montado no protoboard. Essa foto foi tirada no laboratório de Eletrônica Digital da Universidade Federal do Amazonas durante a montagem do projeto. Depois da montagem do circuito no protoboard ele foi ligado ao osciloscópio para análise da forma de onda e verificar se atendia as especificações do projeto, depois de visto se atendia ou não é que foi montada a placa. A próxima foto a ser mostrada é a foto do osciloscópio. A figura exatamente abaixo, com a forma de onda mais estreita é a figura que representa o motor quando está com velocidade minima. A figura ao lado, com forma de onda mais larga é a figura que representa o motor com velocidade máxima.


Criado por: César Vieira Rocha
Claudio Eduardo Marques Gomes
Mauro Lopes de Freitas