Projeto - Robo Bipede

46
TUTORIAL Robô Bípede Autores: Carlos Magno Feitosa da Silva, Leandro Borini Lone, Luís Fernando Patsko Nível: Avançado Criação: 26/10/2006 Última versão: 19/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br http://www.automato.com.br [email protected] [email protected]

Transcript of Projeto - Robo Bipede

  • TUTORIALRob Bpede

    Autores: Carlos Magno Feitosa da Silva, Leandro Borini Lone, Lus Fernando PatskoNvel: AvanadoCriao: 26/10/2006ltima verso: 19/12/2006

    PdP Pesquisa e Desenvolvimento de Produtos

    http://www.maxwellbohr.com.br http://www.automato.com.br [email protected] [email protected]

  • 1 Introduo

    A robtica uma rea cujo desenvolvimento ao longo dos prximos anos ser relevante. O uso de robs em trabalhos que sejam perigosos ou repetitivos (onde a indstria automobilstica um exemplo da presena da robtica na economia global), na rea de entretenimento (com os robs japoneses que imitam animais) ou at mesmo em servios domsticos (o aspirador de p autnomo um grande exemplo) j cada vez mais intenso.

    O projeto a ser desenvolvido ao longo desse tutorial um bpede, ou seja, um pequeno rob que possui duas pernas, que conectado ao Kit podendo ser controlado atravs de um programa rodando num computador. Atravs da criao de um rob bpede, possvel aplicar os conhecimentos de Eletrnica, Mecnica e Programao adquiridos ao longo do curso num projeto prtico. Alm disso, esse tutorial serve como uma tima base para futuros projetos.

    Um fator importante que no pode ser negligenciado durante a montagem a segurana. indispensvel o uso de equipamentos de proteo individual (EPI's) tais como luvas, culos de

    1

    Figura 1: Humanide Asimo, desenvolvido pela Honda.

  • proteo, jaleco, etc. Tambm essencial tomar cuidados bsicos para a preveno de acidentes, especialmente durante a manipulao de produtos qumicos e ferramentas. Por pura falta de ateno ou excesso de confiana, podem ser causados acidentes graves. E, alm disso, os problemas decorrentes da postura inadequada e da repetio excessiva de movimentos so vrios e muito simples tomar providncias para evit-los. No difcil se conscientizar e realizar pequenas aes que podem prevenir muitos acidentes.

    2 Funcionamento

    O rob bpede um pequeno rob que possui duas pernas, que pode ser controlado pelo usurio atravs de um programa rodando num computador. Ele possui dois servo-motores, que sero utilizados na sua locomoo, que se dar da seguinte forma: um dos servo-motores destinado a inclinar o corpo do bpede para o lado. Desse modo, seu peso fica concentrado sobre uma perna s, possibilitando que a outra seja deslocada. Esse deslocamento realizado pelo segundo servo-motor. Ento o primeiro servo-motor entrar em ao novamente, jogando o peso do bpede para a perna que acabou de ser deslocada, permitindo a movimentao da outra. Para controlar o sentido do movimento do bpede, necessrio inverter a rotao do servo-motor responsvel por deslocar as pernas do bpede, o que pode ser feito nas linhas de cdigo do programa. Tambm podemos fazer com que o bpede vire, bastando que uma das pernas se desloque menos que a outra.

    O nosso projeto constitudo por duas partes principais: a construo do rob e a programao necessria para seu funcionamento. A construo do rob a elaborao da estrutura mecnica e eletrnica. A dedicao nessa etapa indispensvel, uma vez que peas ou circuitos mal

    2

    Figura 2: Viso do bpede pronto, ligado ao MEC1000.

  • feitos podem comprometer o funcionamento de todo o sistema. Mas no basta apenas a estrutura estar perfeita, pois ela deve ser controlada adequadamente. A programao ser responsvel por proporcionar a conexo entre o Kit e o rob e pelo controle preciso da atuao dos servo-motores, de modo que o rob possa se movimentar corretamente, pois cada um desses componentes deve ser acionado num momento exato.

    Seguindo corretamente as instrues a seguir, podemos ter em mos um pequeno rob bpede. Mas nada o impede de usar a criatividade e realizar modificaes e implementar o projeto com outras caractersticas, ou seja, construir o projeto ao seu gosto.

    3 Materiais

    Os materiais utilizados nesta montagem so madeira tipo MDF, perfis de alumnio (barras e cantoneiras), madeirite, plstico (PVC), engrenagens de acrlico, dois servo-motores (adaptados para rotao contnua, mas com potencimetros externos), parafusos de diversos tamanhos, porcas, arruelas, cola branca, cola de secagem instantnea e lubrificante. Alm disso, sero necessrias ferramentas para a montagem tais como paqumetro, caneta de retroprojetor, serra de meia-esquadria. Tais ferramentas estaro disposio nas bancadas de trabalho.

    Optamos pelos materiais utilizados pela acessibilidade, baixo custo, resistncia adequada, e tambm por serem fceis de trabalhar, tentando sempre adequ-los s dificuldades surgidas no desenvolvimento, ou at substituindo-os por outros se necessrio, lembrando-se sempre de que os materiais listados aqui, de forma alguma so padro para as montagens, e que podem ser substitudos tranquilamente por outros semelhantes ou que desempenhem a mesma funo. Deve-se apenas ter em mente que nem todos os materiais tm desempenho semelhante sob uma determinada situao. Por exemplo, a madeira MDF uma boa escolha, pois fcil de trabalhar e no trinca to facilmente como uma chapa de compensado, por exemplo, quando perfurada.

    4 Leituras prvias

    Para a construo do projeto descrito nesse tutorial, recomendada a leitura de outros tutoriais, que nos auxiliaro durante a construo da esteira. Os tutoriais recomendados so: Montagem do Bloco de Servo-motor Padro, Adaptao de Servo-motores e Criao de engrenagens em acrlico. Esses tutoriais esto disposio ao longo do curso de Mecatrnica e Robtica e sero utilizados ou daro suporte a alguns procedimentos ao longo deste tutorial.

    5 Montagem

    O primeiro passo para a montagem de um projeto deve ser a elaborao de um esboo deste num papel, mesmo que se tenha todo projeto em mente. Isto facilitar muito a montagem de qualquer projeto, pois alm de uma melhor visualizao deste, no corremos o risco de esquecermos ou pularmos algum passo.

    3

  • Com o roteiro do projeto em mos, podemos comear a montagem escolhendo os materiais que mais se adequem as montagens de cada parte do projeto, enfatizando principalmente a acessibilidade dos materiais, o custo, para que o projeto no venha a ter um custo muito elevado, e maleabilidade. Por exemplo: perfis de alumnio podem ser encontrados em qualquer loja especializada em alumnio, so relativamente baratos e muito mais fceis de trabalhar do que perfis de ferro, por exemplo.

    O projeto descrito nesse tutorial visa a construo de um rob bpede, fazendo uso de servo-motores e estruturas mecnicas. A parte principal no que se refere ao bom funcionamento desse rob bpede a correta construo dos blocos dos servo-motores. Esses servo-motores devero ser adaptados para rotao contnua, mas devem utilizar um potencimetro externo. Este potencimetro tem exatamente a mesma funo do potencimetro original do servo-motor, s que agora o servo vai transferir seu movimento para uma outra engrenagem, e ela dever ser a referncia para o controle do servo-motor. Por isso, essa engrenagem ser fixada ao potencimetro, que ser o eixo principal do bloco. Deste modo, conseguiremos controlar precisamente a posio da engrenagem. Esta engrenagem faz parte de um conjunto redutor, de modo que o torque disponvel seja maior, para possibilitar uma correta movimentao do bpede.

    Primeiramente, devemos confeccionar engrenagens de acrlico utilizando os moldes de silicone. As engrenagens utilizadas sero de tamanhos diferentes, sendo que a menor deve ser fixada no eixo do motor e a maior ao potencimetro que foi adicionado ao bloco do servo-motor, pois a idia de reduzir ainda mais a velocidade do motor e consequentemente aumentar seu torque. Depois de confeccionadas, iremos tomar a distncia entre seus centros. Esta medio nos informar qual a distncia em que o potencimetro deve ficar em relao ao eixo do servo-motor.

    Nosso prximo passo construir os blocos de fixao dos servo-motores de inclinao e de movimentao, utilizando madeira (MDF com espessura de 1,5 cm) e plstico (PVC com 2 mm de espessura). importante que esses blocos tenham as mesmas dimenses. Em primeiro lugar,

    4

    Figura 3: Medindo a distncia entre os centros das engrenagens.

  • marcaremos os furos a serem feitos para o encaixe do servo-motor e, em seguida, tomando a distncia medida entre os centros das engrenagens, faremos a marcao dos furos para o encaixe do potencimetro, alm de dois furos extras para encaixe de parafusos. O bloco foi dimensionado aleatoriamente, mas dentro dos limites permitidos. Assumimos como padro para nossas montagens tiras de MDF 1,5 cm de espessura cortadas com 5 cm de largura. Por fim, nosso bloco foi dimensionado em um retngulo de 6 cm x 5 cm.

    Os furos podero ento ser feitos, sendo que os furos assinalados na figura abaixo podero ser feitos com certa folga. Como neste caso os parafusos so de 1/8, recomendamos broca de 4 mm. O furo para o eixo do servo-motor pode ser feito com broca de 8 mm na madeira. O eixo do motor deve girar sem atrito com a madeira, por isso feito com um dimetro maior do que o do eixo a ser usado, neste caso 1/4. Mas deve-se ter em vista que no poder ser muito maior do que isto, pois a trava utilizada no eixo deve apoiar-se na madeira como mostrado na figura 8-2). Para o plstico, o furo foi feito com broca de 1/4, o qual deve proporcionar ao eixo um giro livre, sendo necessrio espa-lo um pouco mais, quando o mesmo no o proporcionar. Isso pode ser feito com o auxlio de uma furadeira de bancada, realizando movimentos leves e circulares, sempre tomando cuidado para manter o plstico perpendicular furadeira, pois no desejamos que o furo fique com bordas arredondadas, como explicado no tutorial sobre bloco padro para servo-motor.

    O furo para o potencimetro a ser feito na madeira deve passar por duas etapas: primeiro deve-se fazer um furo guia, e depois utilizar a broca chata para madeira para aument-lo, lembrando-se sempre de utilizar os equipamentos de segurana. No plstico, esse furo ser do dimetro da rosca do potencimetro, podendo ser alargado futuramente se necessrio para um ajuste de relao entre as engrenagens.

    5

    Figura 4: Marcaes feitas no bloco de madeira e no plstico, utilizando a pea de plstico padro ( direita) como referncia.

  • Os furos de fixao para o servo-motor na madeira podem ser de qualquer dimetro que comporte o parafuso a ser utilizado, que no nosso exemplo de 2,9 mm. O furo foi feito com broca de 2,5 mm e para o plstico utilizamos o mesmo tamanho do parafuso.

    Em seguida, iremos utilizar a serra para cortar a madeira onde ser encaixado o potencimetro, j que, devido ao seu formato, no podemos encaix-lo diretamente no furo. Antes de cortar, devemos colocar parafusos nos furos prximos ao local a ser serrado, com o objetivo de evitar que a madeira se abra.

    6

    Figura 5: 1-Peas de madeira e de plstico perfuradas, com indicao dos furos que podem ser feitos com certa folga. 2-Furo para o potencimetro sendo feito com a broca de madeira.

  • O prximo passo consiste na criao de um pino-eixo para o servo-motor. Seu tamanho varia de acordo com o potencimetro usado como eixo externo, sendo o tamanho mnimo mencionado no tutorial sobre bloco padro para servo motor, mais a rea no til do eixo do potencimetro (onde h a rosca para o encaixe de uma porca). No nosso caso utilizamos um pino-eixo de 2,7 cm (os 2,3 mm recomendados mais 4 mm). Este pino tem uma pequena diferena do modelo padro: como a engrenagem utilizada muito pequena para ser perfurada e encaixada no pino-eixo, iremos utilizar um pequeno parafuso para fix-la. Primeiramente, devemos fazer um furo (da mesma dimenso do parafuso a ser usado, no caso 1/8) na engrenagem para o encaixe de um parafuso, com os cuidados necessrios para que ele no saia torto.

    Para fazer isso, precisamos, primeiro, lixar as engrenagens para retirar as rebarbas de acrlico que ficam em volta delas, evitando que fiquem desniveladas quando as apoiarmos para fur-las. Ento, com muito cuidado, devemos fazer os furos nas engrenagens. Uma dica utilizar broca de espessura menor para evitar que o furo saia torto e tambm para melhor direcionar a furao (recomendamos a broca de 1,5 mm para este fim). Depois s furar as engrenagens utilizando a broca adequada. Por motivos de segurana recomendamos que no se segure a engrenagem diretamente com a mo. Sugerimos o uso de um alicate, por exemplo.

    Depois, devemos fazer um furo no centro do pino-eixo, com tamanho suficiente para o encaixe do parafuso (em nossa montagem esse furo foi feito com broca de 1/8). O parafuso neste caso no precisa entrar rosqueando, pois ele ser colado ao pino-eixo. Esse procedimento um pouco mais complicado, pois precisamos de um suporte para o pino-eixo. Utilizamos pedao de madeira qualquer. Foi feito um furo para o encaixe do pino-eixo, servindo assim de base para que possamos segurar o pino com segurana. O pino-eixo deve entrar com relativa presso na madeira para que fique bem firme, podendo ser necessrio utilizar um martelo para que o pino entre na madeira, tomando cuidado para no amass-lo. Como o pino-eixo utilizado possui um dimetro de 1/4, o furo na madeira tambm foi feito com broca de 1/4. Aps introduzir o pino-eixo na madeira, basta ento fur-lo. importante tomar cuidado para que o furo no seja torto nem muito profundo. Para retirar o pino-eixo do suporte, utilize um martelo, batendo no suporte para fazer a madeira abrir, tomando cuidado para no acertar o pino-eixo.

    Com o furo pronto, parte-se para o processo convencional que adotamos para a criao de um pino para o motor, como o corte para o encaixe no servo-motor e o vinco para a colocao da

    7

    Figura 6: Finalizando as peas do bloco do servo-motor. 1-Corte do bloco de madeira para o encaixe do potencimetro. 2-Bloco de madeira e de plstico prontos.

  • trava. Com o pino pronto para ser encaixado no servo-motor, colamos o parafuso engrenagem e depois o parafuso ao pino, ambos com a cola de secagem instantnea.

    8

    Figura 7: Criao do pino-eixo 1-Pequeno bloco de madeira para o encaixe do pino-eixo. Ele deve se manter firmemente preso esse bloco. 2-Marcao no pino-eixo do furo para o encaixe do parafuso. 3-Pino-eixo sendo perfurado com a broca de 1/8. importante que o furo no seja torto nem muito profundo. 4-Pino-eixo j perfurado. 5-Para retirar o pino-eixo do bloco de madeira, deve-se martelar esse bloco at que ele se abra. 6-O parafuso com a engrenagem pode ento ser colado ao furo do pino-eixo com a cola de secagem instantnea.

  • interessante tambm lubrificar o eixo, na regio que ficar apoiada no plstico do bloco do servo-motor, preferencialmente com graxa. O servo-motor, ento, dever ser fixado no bloco por meio de parafusos para madeira e a parte de plstico que servir para sustentao do pino-eixo e do potencimetro dever ser parafusada madeira por meio de parafusos e porcas.

    O potencimetro externo servir para informar a posio da engrenagem maior. Isso ser essencial, pois o Kit controlar sua posio de modo a fazer com que o bpede se incline e desloque. Devemos observar bem a forma com que os fios do potencimetro devem ser soldados aos terminais onde estava o potencimetro original, j que estamos utilizando um servo-motor adaptado para rotao contnua. Seguindo o exemplo, com os terminais do potencimetro voltados para o lado de fora do bloco, os fios so soldados de maneira espelhada ao potencimetro original, ou seja, com os fios das extremidades invertidos. Isso deve ser feito pois a engrenagem a qual est preso o potencimetro gira no sentido contrrio da engrenagem presa ao eixo original do servo-motor.

    9

    Figura 8: Bloco do servo-motor, j com o pino-eixo . 1- Viso superior. Observe que os dois furos que sobram sero destinados fixao do servo-motor 2- Viso inferior. 3-Lubrificando o pino-eixo na regio que estar em contato com o plstico.

  • O prximo passo ser preparar a engrenagem grande antes de encaix-la ao potencimetro. Deve ser feito um furo no seu centro cujo tamanho seja suficiente para o encaixe do eixo do potencimetro. Alm disso, devemos fazer furos em dois pontos da extremidade, alinhados com o centro no pino do potencimetro. Esses furos devem ser da espessura do parafuso a ser utilizado como futura base para a transferncia de movimento do servo-motor para as pernas do bpede. Utilizamos arruelas dentadas para que o parafuso fique travado na engrenagem. Se necessrio, reforce com cola de secagem instantnea. Esses procedimentos devero ser feitos nas duas engrenagens. No servo-motor de inclinao, encaixaremos uma barra de alumnio, enquanto que no servo-motor de deslocamento, cada parafuso ser preso a uma barra de plstico.

    10

    Figura 9: Servo-motor com o potencimetro externo.

    Figura 10: Engrenagem responsvel pela reduo e transferncia do movimento para as pernas.

  • Iremos agora encaixar o potencimetro por meio da sua prpria porca e colocar a engrenagem grande de modo que os seus parafusos tenham suas cabeas voltadas para o bloco do servo-motor. Para o correto encaixe da engrenagem, devemos primeiro definir a posio central do potencimetro. Ligaremos o servo-motor na sada do Kit destinada a servo-motores, atravs do programa de controle de servo-motores faremos com que o que o motor v para a posio central, e depois, girando o potencimetro com a mo, podemos achar a posio central de referncia do potencimetro externo. Isso se d quando o motor pra de girar por completo. Ento, poderemos colar a engrenagem, utilizando cola de secagem instantnea, tomando o cuidado para que ela no escorra para dentro do potencimetro.

    Sempre que possvel deixe para colar as peas no final das montagens, s vezes pode ser necessrio ter de desmontar algumas peas. Ao colar a engrenagem no potencimetro, por exemplo, deve-se ter em mente que no ser mais necessrio alterar o bloco, pois, ao tentar descolar a engrenagem do potencimetro, podemos vir a danificar alguma dessas peas.

    Com os dois blocos dos servo-motores prontos, passaremos a confeco do corpo. Faremos o corpo do bpede utilizando madeirite, pois um material leve e com resistncia adequada, mas outros materiais tambm podem ser utilizados, como plsticos, acrlicos, at mesmo papis mais resistentes. Devemos, primeiramente, definir qual ser o tamanho destas peas, que nesse exemplo foram feitas com dimenses de 16 cm x 8 cm. Em seguida, temos apenas de transferir essas medidas para o madeirite e cort-lo com a serra. Para que o corte saia reto, deve-se traar uma linha sobre o madeirite e segui-la corretamente, apoiando a pea sobre uma mesa para que fique bem firme, j que ele bem malevel. Desse modo teremos certeza de que cada pea ter as dimenses corretas. Em seguida, devemos dimensionar nestas peas as furaes a serem feitas para o encaixe dos blocos dos servo-motores.

    11

    Figura 11: Finalizando o bloco do servo-motor. 1- Servo-motor fixado ao bloco. 2- Engrenagem grande fixada ao eixo do potencimetro.

  • Fizemos os furos nestas peas de modo que os furos nos blocos dos servo-motores ficassem 1 cm da borda, procurando atingir o centro da madeira do bloco do servo-motor, para assim evitar possveis rachaduras no mesmo. O bloco responsvel pela movimentao dever estar com a face de suas engrenagens voltadas para baixo, enquanto que o outro bloco, responsvel pela inclinao, deve ter sua face com engrenagens voltada para frente, como pode ser observado na figura 11. Prximo aos furos para encaixar o bloco do servo-motor responsvel pela movimentao, faremos furos para colocar as pernas do bpede, bem nos cantos das peas de madeirite. Todos os furos devem estar perfeitamente alinhados, para evitar uma possvel angulao inadequada nas peas mveis, prejudicando assim o movimento. Neste caso os furos para a fixao das pernas foram feitos a 5 mm das laterais da madeira, estando cada um a 7 cm de distncia do outro. Todos os furos foram feitos com broca 1/8.

    12

    Figura 13: Confeco do corpo do bpede. 1- Definindo o tamanho. 2- Peas de madeirite j perfuradas.Observe os furos extras feitos para a fixao das pernas.

    Figura 12: Madeirite sendo cortado com o arco de serra.

  • Em seguida, iremos usar estas peas para marcar os furos a serem feitos nos blocos dos servo-motores, para podermos parafus-los. Devemos, ento, furar os blocos dos servo-motores utilizando uma broca com espessura adequada para o parafuso utilizado. Como utilizamos parafusos autoatarraxantes de 2,9 mm, o bloco do motor foi perfurado com a broca de 2,5 mm. Tome muito cuidado para que o potencimetro no seja perfurado.

    Em seguida iremos confeccionar as pernas para o bpede, com 4 barras (perfis) de alumnio quadradas de 1/4. Optamos pela quadrada por ser mais fcil de ser perfurada, mas a barra circular pode ser considerada esteticamente melhor. O comprimento destas pernas dependem do tamanho do corpo, para que no tenhamos uma estrutura desproporcional. No exemplo, as pernas do bpede tm 15 cm de comprimento. Aps cort-las, devemos lixar as rebarbas para um melhor acabamento e tambm para evitar possveis ferimentos.

    13

    Figura 14: Finalizao do corpo do bpede. 1- Marcando o bloco do servo-motor para fur-lo. 2- Corpo do bpede pronto.

    Figura 15: Cortando a barra de alumnio quadrada na serra de meia-esquadria.

  • Em seguida, em cada barra, faremos a marcao de um furo a ser feito a 5 mm de uma das extremidades. Recomendamos caneta para retroprejetor, sempre que forem feitas marcaes em alumnio. Estes furos serviro para fixar as pernas ao corpo do bpede. Devemos fazer mais um furo em cada perna para podermos, depois, encaixar os ps. Este furo ser feito na outra extremidade e do lado perpendicular ao furo feito para o encaixe do corpo. Alm disso, este furo deve ser um pouco modificado: encaixaremos a perna na broca e a moveremos para cima e para baixo para que a abertura do furo seja espaada externamente, com o intuito de formar junto com o parafuso, um p articulado. necessrio fazer esse procedimento nos dois lados do furo, para que as pernas do bpede possam se movimentar para frente e para trs. Sem isso, os ps do bpede ficariam travados, impedindo que o movimento ocorresse. Porm deve-se tomar cuidado para no aumentar o dimetro do furo, e tentar manter uma angulao igual para as quatro pernas.

    Vale lembrar que a maioria dos metais quando perfurados, iro ficar com rebarbas, e isso, alm de prejudicar os movimentos, pode nos ferir. Isso pode ser resolvido com o auxlio de uma broca um pouco maior do que o furo que foi feito, girando de leve como na imagem abaixo, tomando cuidado para no arredondar demais as beiradas dos furos.

    14

    Figura 16: Procedimentos para a criao das pernas do bpede. 1-Deve ser feito um furo a 5 mm da extremidade. 2-Furo sendo feito. 3 e 4-Para espaas a abertura do furo, a barra de alumnio dever ser movida para cima e para baixo.

  • As pernas recebero parafusos, que se tornaro uma espcie de eixo, para prend-las aos ps e ao corpo do bpede. Isso se d da seguinte forma: com os furos preparados, j sem rebarbas, pega-se uma arruela, coloca-se ela no parafuso, coloca-se o parafuso na perna, adiciona-se outra arruela e depois mais duas porcas. As arruelas normalmente possuem dois lados diferentes, um liso e o outro com rebarba. O lado liso neste caso deve ficar voltado para a barra de alumnio, pois a idia gerar o menor atrito possvel. Rosqueie as porcas at o final e quando encostar no alumnio, solte-as um pouco (mas no muito pois necessrio que haja uma folga suficiente para que o parafuso gire com o menor atrito possvel, porm, se houver uma folga muito grande o movimento ser prejudicado). Verifique se no h atrito entre o parafuso e a perna e ento aperte uma porca contra a outra. Essa uma forma simples de se obter um tipo de eixo. Pode-se tambm, utilizar apenas uma porca, colando-a ao parafuso. No entanto recomendamos que seja utilizado o processo que envolve o uso das duas porcas, para evitar problemas futuros.

    15

    Figura 17: Para retirar as rebarbas, basta utilizar uma broca maior que o furo feito e gir-la levemente.

    Figura 18: Colocando parafusos e porcas na perna do bpede. 1-Enquanto uma das porcas presa com uma chave de boca, outra regulada atravs de um alicate de bico. 2-Porcas e arruelas colocadas.

  • No furo articulado a diferena que a folga mantida entre a perna e as arruelas e porcas dever ser igual angulao mxima obtida com o movimento. O tamanho dos parafusos utilizados pode variar de projeto para projeto e deve-se ter em mente o que ser feito depois que se concluiu o eixo. Neste caso, esta perna ser fixada no corpo do bpede, ou seja, utilizaremos mais duas arruelas, uma porca, e ainda devemos levar em considerao a largura do material utilizado para estrutura do corpo (que no caso de 3 mm). Para o eixo que vai preso ao corpo utilizamos um parafuso de 7/8 de comprimento, e para o eixo articulado um com 1 de comprimento, sendo ambos de 1/8 de dimetro.

    Estes so pontos que devem ser lubrificados com leo, mas precisamos ter cuidado para no exagerar na quantidade de lubrificante. necessrio tomar bastante cuidado para no deixar que o leo atinja pontos indesejveis, como as duas porcas que foram travadas umas nas outras, pois isso facilitar com que as porcas se soltem com o esforo realizado com a movimentao. Assim como nas colagens (como no caso das engrenagens em potencimetros), recomendamos que esta etapa fique para o final do processo de montagem.

    Aps as pernas estarem prontas, criaremos pequenas hastes para transformar o movimento giratrio do eixo do servo-motor de deslocamento em movimento retilneo, para que o bpede possa caminhar. Estas hastes serviro para transferir o movimento do motor para as pernas do bpede.

    16

    Figura 19: 1 e 2-Exemplificando o movimento a ser realizado pela perna atravs dos eixos articulados. 3-Medindo o espao disponvel para a movimentao. 4-Perna pronta.

  • Elas foram feitas com plstico de PVC com 2 mm de espessura da seguinte maneira: cortamos quatro tiras do PVC com cerca de 5 cm x 1 cm cada uma, e fizemos um vinco em uma extremidade de cada pea, encaixando uma na outra, formando dois pares. Utilizamos cola de secagem instantnea, para fixar uma outra. Este vinco pode ser feito com um estilete ou at mesmo com o disco de corte de microrretfica.

    Em seguida, fizemos um pequeno furo numa das extremidades das tiras de plstico para podermos encaix-las nos parafusos que foram fixados anteriormente na engrenagem. No fixe estas hastes agora, pois elas ainda recebero mais um furo. Assim podemos medir, com a ajuda de um paqumetro, por exemplo, o ponto em que a perna do bpede receber um novo furo. Nesse furo, ser encaixado um parafuso que interligar a perna com a engrenagem atravs das peas de plstico. Agora tambm possvel determinar a localizao do outro furo que receber a pea de plstico responsvel pela transmisso do movimento. Todos os furos foram feitos com broca 1/8, pois foram utilizados parafusos de 1/8. Os furos nas hastes plsticas foram levemente espaados para no gerarem atrito durante a movimentao, o que pode vir a prejudicar a movimentao.

    Depois de furados, encaixaremos as tiras nos parafusos e ajustaremos o espao mvel para elas por meio de duas porcas. Essas porcas podero ser coladas com cola de secagem instantnea, para evitar que se movimentem. Na fixao das hastes nos parafusos da engrenagem precisamos

    17

    Figura 20: Criao das tiras de plstico, destinadas a deslocar as pernas do bpede para frente. 1-Marcando os vincos a serem feitos. 2-Vincos feitos nas peas. 3-Colando as peas com cola de secagem instantnea.

  • levar em conta que elas estaro se movimentando, portanto nunca se deve fix-las diretamente com uma porca. Mantm-se uma pequena folga para que as hastes possam se movimentar livremente. O processo realizado foi o seguinte: colocamos primeiramente uma arruela com seu lado liso voltado para a haste que ser encaixada, colocamos outra arruela (tambm com o lado liso voltado para o plstico), e depois duas porcas que sero apertadas uma contra a outra de forma semelhante a j realizada com os eixos das pernas do bpede.

    18

    Figura 21: Colocando as pernas no corpo do bpede. 1 e 2-Encontrando a posio onde ser feito o furo na perna do bpede, para o encaixe das hastes de plstico. 3-Pernas j com os parafusos para o encaixe das hastes. 4-Colando as porcas que ajustam o espao livre para o movimento da haste. 5-Pernas presas ao corpo do bpede.

  • O passo seguinte se refere a confeco de ps e sapatos para o bpede. Sero utilizados para isso quatro retngulos de madeirite e cantoneiras de alumnio. As dimenses do exemplo so de 15 cm x 8,5 cm para os ps e 17 cm x 8,5 cm para os sapatos. Utilizamos cantoneiras de alumnio de 5/8 para que sirvam de relao entre a fixao das pernas e dos a ps. Estas cantoneiras (quatro no total) foram cortadas com 8,5 cm, ou seja, a mesma largura dos ps. Cada uma delas recebeu trs furos, dois deles para a sua fixao nos ps e um terceiro onde sero fixados os eixos das pernas. As cantoneiras que ficaro voltadas para frente ainda recebero um quarto furo feito na extremidade externa da cantoneira. Explicaremos este furo mais adiante. Os furos que prendem as cantoneiras aos ps podem ser escolhidos aleatoriamente, dando preferncia para deix-los mais nas extremidades. Os furos que serviro para fixar os ps s pernas devem manter uma certa distncia da base do p para que a perna no entre em contato com a estrutura do p quando o bpede estiver em movimento. Este furo no deve ficar muito distante da parte interna do p do bpede por motivos de equilbrio do rob. No exemplo, o furo foi feito com 0,8 cm de altura em relao a base do p, e 1 cm para dentro.

    Fixaremos primeiramente as cantoneiras da parte de trs do bpede, utilizando o seguinte procedimento: colocaremos a cantoneira bem na borda do p de madeirite, marcaremos os furos a serem feitos e, depois de fur-los, utilizaremos parafusos, arruelas e porcas para fixar esta cantoneira ao p.

    19

    Figura 22: Construndo os ps do bpede. 1-Definindo a localizao das cantoneiras. 2-Cantoneira sendo posicionada no p. 3-Marcando o furo a ser feito no p, para o encaixe da cantoneira.

  • Em seguida, para podermos colocar a cantoneira da parte da frente, mediremos a distncia entre as duas pernas e utilizaremos estas medidas para podermos marcar a distncia que a cantoneira da frente ficar da cantoneira anterior. Antes de fazer os furos nos ps de madeirite, podemos apenas apoiar a segunda cantoneira e verificar se com isso as pernas ficaro exatamente paralelas. Assim, podemos fazer os furos nos ps do bpede e parafusar as cantoneiras, colocando os parafusos da parte de baixo para cima e rosqueando-o com a porca. O passo seguinte se refere confeco dos sapatos para evitar que os parafusos toquem diretamente no cho. Retiraremos os ps do bpede para podermos marcar os furos a serem feitos nos sapatos, da seguinte maneira: apoiaremos o p sobre o sapato deixando 1 cm de borda, ento faremos as marcaes. Em seguida, s fur-lo e colar este sapato ao p do bpede, utilizando cola branca.

    20

  • 21

    Figura 23: Finalizando a construo dos ps do bpede. 1-Cantoneiras presas aos ps atravs de parafusos. 2-Dimenses dos ps e dos sapatos do bpede. 3-Os sapatos podem ser colados aos ps com cola branca. 4-Fixando os ps s pernas do bpede. 5-Bpede com os ps completos.

  • Para podermos levantar os ps, inclinando o bpede, utilizaremos um sistema composto por uma barra e duas hastes. Neste exemplo, a barra foi feita com um pequeno pedao de alumnio, que deve ser fixada engrenagem do servo-motor de inclinao. Esta barra foi criada no intuito de aumentar o ngulo de inclinao do bpede quando o servo-motor estiver em movimento. Foram feitos dois furos para encaix-la aos parafusos da engrenagem e mais um furo em cada lateral para podermos colocar as hastes que erguero os ps.

    Estas hastes foram feitas com arame, mas podem ser substitudas por algum outro material, porm, note que devem ser rgidas o suficiente para aguentarem o peso do corpo do bpede, pois elas trabalharo de duas formas diferentes: ou empurrando o bpede, ou segurando o peso do corpo. Estas hastes ficaro presas em parafusos, que devero ser colocados nos furos feitos na barra que foi fixada na engrenagem, e nos dois furos feitos nas extremidades das cantoneiras dos ps, como mostrado na figura.

    O comprimento destas hastes foi medido sobre o prprio arame. necessrio desentortar os arames antes de encaix-los nos furos, para que a distncia entre as tiras seja uniforme. Isso pode ser feito com o auxlio de um martelo e uma base resistente, como uma morsa, ou a base da furadeira de bancada. Em suas extremidades fizemos dois ganchos, os quais devero ser fechados, e devem possuir um dimetro que permita com que o parafuso passe sem gerar atrito, porm, no

    22

    Figura 24: Barra destinada a fixar as hastes que erguero os ps.

  • pode haver uma folga muito grande. Fazer estes ganchos pode vir a ser um pouco trabalhoso. Por usarmos um arame relativamente grosso (2 mm), fizemos uso de um alicate de bico para tal. Estas hastes devem possuir o mesmo comprimento. Elas devero ser encaixadas nos parafusos apropriados e devero ter uma folga para poderem trabalhar, pois o movimento realizado pelo bpede ira gerar uma angulao e esta angulao quem vai nos informar qual ser a folga necessria. Esta folga foi mantida com a utilizao de duas porcas apertadas uma contra outra (como j visto anteriormente). Pode-se utilizar cola de secagem instantnea como opo para travar na posio ideal se for utilizada apenas uma porca.

    23

  • 24

    Figura 25: Colocando as hastes que erguero os ps. 1-Definindo o tamanho. 2-As hastes devero estar perfeitamente retas, o que pode ser feito com um martelo. 3-Fazendo o gancho com alicate de bico. 4-Verificando se o gancho est correto. 5-Hastes prontas. 6-Detalhe da fixao da haste barra de alumnio.

  • Desta forma, se encerra por aqui o projeto mecnico do rob bpede. Passamos, neste instante, ao desenvolvimento da parte eletrnica e programao.

    6 Eletrnica

    A eletrnica envolvida com o bpede simples. Sero descritos apenas alguns detalhes em relao conexo do bpede, sua alimentao e o potencimetro externo dos servo-motores.

    Para conectar o bpede ao KDR5000, dever ser utilizado o Mdulo de Entradas, Sadas e Servo-Motores. recomendado utilizar o primeiro conector de servo-motores disponvel, tendo em vista que o MEC1000 possui uma quantidade de portas menor e o programa dever ser compatvel com os dois.

    25

    Figura 26: Bpede pronto.

  • Para conectar o servo-motor de inclinao, recomendado utilizar a porta Servo 0, enquanto que para o servo-motor de deslocamento, recomendado a porta Servo 1. possvel ligar os servo-motores em outras portas, mas a conexo descrita acima foi padronizada para facilitar a programao. Caso haja dvidas sobre a conexo, basta consultar os manuais desses equipamentos.

    No necessria uma fonte de alimentao externa para o bpede, pois ele possui apenas dois servo-motores, consumindo uma corrente que pode ser suportada pela fonte prpria do MEC1000 ou do KDR5000. Os servos podem ser ligados atravs das sadas de alimentao disponveis nos conectores destinados ao seu controle.

    Para conectar o bpede ao Kit, recomendado utilizar um cabo de grande extenso, para que ele possa andar livremente. Tambm interessante usar um conector (DB-9, por exemplo) para ligar esse cabo ao bpede, para facilitar o transporte do rob. Alm disso, esse cabo pode ser utilizado para conectar o rob inseto ao Kit.

    O potencimetro externo dos servo-motores dever ter seus terminais ligados de forma invertida em relao ao potencimetro original, tendo em vista que a engrenagem a qual ele est ligado gira no sentido inverso ao eixo do servo-motor.

    7 Programao

    Para que o bpede funcione perfeitamente, ele dever ser controlado de modo adequado. Sendo assim, devemos criar um programa que faa com que o Kit acione os servo-motores de modo que o bpede possa se deslocar.

    Atravs do programa a ser criado aqui, o Kit acionar os servo-motores de inclinao do corpo e deslocamento das pernas do bpede. De acordo com o modo que os servo-motores forem acionados, o bpede poder ir para frente ou para trs ou virar para a direita ou esquerda. Tambm adicionaremos um comando extra para que ele mantenha-se na posio de repouso, o que til antes de deslig-lo.

    O nosso programa ser criado atravs do Delphi, utilizando o Projeto Base, que nos permite a comunicao com o Kit atravs de uma porta serial, como ponto de partida para a elaborao do programa, que dever apresentar a seguinte interface.

    26

    Figura 27: Programa de controle do bpede.

  • Nosso primeiro passo criar a interface grfica do programa. Como vamos utilizar o projeto criado no tutorial Base como ponto de partida, copiamos o projeto daquele tutorial e em cima dele vamos adicionar alguns componentes grficos extras.

    A primeira coisa que modificaremos no projeto a propriedade Caption do Form principal, que possui o texto Projeto Base. Vamos modific-la para Bpede. Com isso j podemos comear a adicionar os componentes grficos ao Form.

    A interface grfica composta por dois Button e cinco SpeedButton. Os botes comuns sero destinados a iniciar e parar o funcionamento do bpede. J os SpeedButton sero destinados a controlar a movimentao do Bpede. O primeiro passo ser adicionar os componentes SpeedButton, que podem ser encontrados na aba Additional.

    O componente SpeedButton possui o seguinte cone nessa barra.

    Devemos adicionar cinco desses componentes no nosso Form e modificaremos as seguintes propriedades de cada um deles:

    Name = SpeedButtonFrenteCaption = FrenteWidth = 57AllowAllUp = TrueGroupIndex = 1

    Name = SpeedButtonTrasCaption = TrsWidth = 57AllowAllUp = TrueGroupIndex = 1

    Name = SpeedButtonDireitaCaption = DireitaWidth = 57

    27

    Figura 28: Aba "Additional" da barra de componentes.

    Figura 29: cone do componente SpeedButton.

  • AllowAllUp = TrueGroupIndex = 1

    Name = SpeedButtonEsquerdaCaption = EsquerdaWidth = 57AllowAllUp = TrueGroupIndex = 1

    Name = SpeedButtonRepousoCaption = RepousoWidth = 57AllowAllUp = TrueGroupIndex = 1

    Desse modo, nosso Form ficar da seguinte maneira. Observe o modo como os SpeedButton foram colocados.

    Nosso prximo passo ser adicionar os componentes para iniciar e parar a movimentao do bpede. Isso ser feito atravs de componentes Button, que se encontram na aba Standard da barra de componentes.

    O componente Button possui o seguinte cone.

    28

    Figura 31: Aba "Standard" da Barra de componentes.

    Figura 30: Form aps a adio dos SpeedButton para controle do bpede.

  • Vamos adicionar dois componentes desses e modificar as seguintes propriedades do boto para iniciar o bpede.

    Name = ButtonIniciarCaption = IniciarFont/Style/fsBold = true

    Em seguida as propriedades do boto para parar o bpede.

    Name = ButtonPararCaption = PararFont/Style/fsBold = true

    Com isso, o nosso Form apresentar o seguinte aspecto.

    Sendo assim, finalizamos a interface grfica do nosso programa e podemos partir para a implementao de suas linhas de cdigo. Aqui, desenvolveremos o cdigo responsvel pelo controle dos servo-motores, possibilitando a movimentao do bpede. Para facilitar a criao do programa, recomendado seguir as instrues de ligao dos servo-motores descritas no trecho referente Eletrnica.

    Devido s caractersticas da prpria estrutura do bpede, os parmetros utilizados nesse tutorial para a movimentao dos servo-motores no sero definitivos, mas devem ser estabelecidos de acordo com a sua construo. Deve-se tomar cuidado para que eles no girem demais, o que pode danific-los. Como eles esto presos s estruturas de movimentao do bpede, no ser possvel que eles faam o movimento completo, o que foraria o servo-motor.

    29

    Figura 32: cone do componente Button.

    Figura 33: Form aps a adio dos componentes para ligar e desligar o bpede.

  • O programa funcionar da seguinte forma: criaremos uma funo chamada SleepAndTest e uma varivel chamada Stop, sendo que os dois podero ter apenas os valores True (verdadeiro) e False (falso). Quando a varivel Stop for True, a funo SleepAndTest ser falsa e vice-versa. A funo SleepAndTest ter dois objetivos: gerar um delay (pausa na execuo do programa). Essa pausa ser muito clara durante o funcionamento do bpede, pois enquanto ele desloca o seu corpo para o lado, o programa estar nessa pausa, e s depois ele desloca sua perna.

    O outro objetivo dessa funo ser verificar se o boto Parar foi pressionado. Isso feito verificando o estado da varivel Stop. Quando apertamos o boto Iniciar, o valor dessa varivel definido como False. Sendo assim, a funo SleepAndTest retornar um valor verdadeiro, o que um requisito para a execuo do programa. Ao apertar o boto Parar, a varivel Stop definida como verdadeira, o que acarretar na interrupo da execuo do programa.

    O nosso primeiro passo ento ser criar a varivel Stop. Isso ser realizado da seguinte forma: apertamos F12, mudando do Form para a Unit Main. Na parte superior dessa Unit, antes do cdigo que foi criado no Tutorial Base, temos a declarao das variveis globais da Unit. A nica varivel global presente no momento a FormMain. Declararemos ento a varivel Stop, que ser do tipo Boolean (True/False). Desse modo, a linha de cdigo do programa ficar assim:

    ... var FormMain: TformMain; Stop: Boolean;implementation...

    Devemos agora criar a funo SleepAndTest. Vamos nos dirigir ao final da Unit, nas linhas de cdigo criadas no Tutorial Base. Antes do end final do programa (end.) criaremos a funo SleepAndTest. Ela ser do tipo Boolean, ou seja, retorna um valor verdadeiro ou falso. Inicialmente, criaremos a funo desse modo:

    ... function SleepAndTest (tempo: integer): Boolean; begin end;

    end.

    Essa funo depende do parmetro Tempo, que ser do tipo Integer, cujo objetivo ser explicado a seguir. Devemos declarar uma varivel e uma constante locais, ou seja, que sero utilizadas apenas nessa funo, chamadas i, que ser do tipo Integer, e Tempobase, cujo valor ser 10.

    ...

    30

  • function SleepAndTest (tempo: integer): Boolean;var i: integer;const Tempobase = 10; begin end;

    end.

    Vamos agora implementar nossa funo SleepAndTest, fazendo com que ela gere o delay e verifique o valor da varivel Stop. Para isso, utilizaremos uma estrutura de repetio for e uma estruturas de comparao if-else, que comparar o valor de Stop com True e False. Deste modo, nossa linha de cdigo ficar assim:

    ... function SleepAndTest (tempo: integer): Boolean;var i: integer;const Tempobase = 10; begin

    for i:=1 to tempo do begin Application.ProcessMessages; if Stop = true then begin // Se o boto Parar foi pressionado, a varivel Stop // ser verdadeira e a funo retornar um valor falso. SleepAndTest := false; end else begin

    // A funo Sleep pausa o programa durante um tempo Sleep(Tempobase); // Se o boto Parar no foi pressionado, a funo re-

    31

  • // tornar um valor verdadeiro SleepAndTest := true; end; end;

    end;

    end.

    Aps criar a funo, vamos analis-la. Primeiramente, adicionamos uma estrutura de repetio for. As instrues contidas nessa estrutura sero executadas at que o valor da varivel i, que foi iniciada com o valor 1, seja igual ao valor da varivel tempo, lembrando-se que a cada repetio o valor da varivel i ser incrementada em uma unidade. Temos ento a funo Application.ProcessMessages. Essa funo processa todas as tarefas pendentes no programa, sendo que nesse caso o principal objetivo atualizar a interface e verificar se algum boto foi pressionado na interface grfica do programa e, caso isso tenha ocorrido, as linhas de cdigo referentes a esse boto sero executadas.

    Temos depois uma estrutura de comparao if-else, que verificar o valor da varivel Stop. Se Stop for verdadeiro, o que acontecer ao pressionar o boto Parar, ento a funo SleepAndTest retornar um valor falso. Mas se a varivel Stop for falsa, ento SleepAndTest ser verdadeiro, o que uma condio essencial para a execuo do programa, como veremos a seguir. Alm disso temos a funo Sleep. Essa funo pausa o programa durante um tempo em milisegundos. Como nossa constante Tempobase foi definida como 10, a cada vez que essa funo Sleep for acionada, haver uma pausa de 10 ms.

    Mas lembre-se de que essa funo Sleep est dentro de um lao for, cujo nmero de repeties definido pelo parmetro tempo. Se declararmos nossa funo dessa maneira: SleepAndTest (100); ento tempo ser 100 e, consequentemente, havero 100 repeties no lao for. Se a varivel Stop for falsa, a funo Sleep ser executada 100 vezes, gerando ento um delay de 1 segundo.

    O prximo passo ser ento implementar o cdigo que ser executado ao pressionarmos o boto Iniciar. Para isso, basta dar um duplo clique sobre ele no nosso Form, o que abrir o seguinte manipulador na nossa Unit:

    ...procedure TformMain.ButtonIniciarClick(Sender: Tobject);

    beginend;

    end.

    Nesse programa utilizaremos uma nica varivel local, chamada de BipedeRepouso que ser utilizada mais adiante para manter o bpede em posio de repouso. Vamos ento declar-la.

    ...

    32

  • procedure TformMain.ButtonIniciarClick(Sender: Tobject);var BipedeRepouso: integer;

    begin

    end;

    end.

    Tambm devemos declarar as constantes locais, que nesse caso sero apenas duas, usadas para identificar os servo-motores. Ser atribudo a elas um valor correspondente a sua posio dos respectivos servo-motores nas suas portas. Sendo assim, para um correto funcionamento do programa, recomendado seguir as instrues de conexo descritas no trecho referente Eletrnica. Caso haja alguma dvida, basta consultar os manuais do MEC1000 ou do KDR5000, onde esto presentes as pinagens das portas de Servo-motores.

    ...procedure TformMain.ButtonIniciarClick(Sender: Tobject);var BipedeRepouso: integer;const ServoInclina = 0; ServoDesloca = 1;

    begin

    end;

    end.

    Agora vamos implementar o cdigo a ser executado quando o boto Iniciar for pressionado. Como utilizaremos a funo SleepAndTest frequentemente, e esta depende da varivel Stop, nosso primeiro passo dever ser atribuir um valor a essa varivel, que dever ser False.

    Tambm devemos inicializar a varivel BipedeRepouso, atribuindo a ela o valor zero. O cdigo ento ficar assim:

    ...procedure TformMain.ButtonIniciarClick(Sender: Tobject);var Repouso: integer;

    33

  • const ServoInclina = 0; ServoDesloca = 1;

    begin // Ao pressionar o boto iniciar, a varivel Stop ser // falsa Stop:= false; // Inicializao da varivel BipedeRepouso BipedeRepouso:= 0;end;

    end.

    Devemos agora nos dedicar ao trecho principal da linha de cdigo do programa, onde sero executados os comandos para a movimentao do bpede de acordo com o SpeedButton selecionado. As aes relacionadas a sua movimentao devem se repetir at que o boto Parar seja pressionado, sendo assim, precisamos de uma estrutura de repetio, que no nosso caso ser um while. Ele depender do valor da funo SleepAndTest, ou seja, o nosso programa estar preso nesse lao while enquanto a funo SleepAndTest retornar um valor verdadeiro. Caso o boto Parar seja pressionado, o que far com que SleepAndTest retorne um valor falso, esse lao while ser encerrado e o programa se encaminhar ao cdigo de finalizao do bpede.

    Criando esse lao while, nosso programa ficar assim:...

    begin // Ao pressionar o boto iniciar, a varivel Stop ser // falsa Stop:= false; // Inicializao da varivel BipedeRepouso BipedeRepouso:= 0;

    while SleepAndTest(1) = true do begin end;end;

    end.

    34

  • Agora que criamos o lao while, devemos implementar o cdigo a ser executado enquanto nosso programa estiver preso nele. O programa dever verificar qual SpeedButton foi pressionado e executar as linhas de cdigo referentes a ele, para realizar a movimentao do bpede. Devemos ento utilizar estruturas de comparao if, sendo cada uma relacionada a um SpeedButton. Vamos criar os blocos if referente aos SpeedButton de direo. O bloco if do SpeedButton Repouso ligeiramente diferente e ser feito depois.

    ... begin

    // Ao pressionar o boto iniciar, a varivel Stop ser // falsa Stop:= false; // Inicializao da varivel BipedeRepouso BipedeRepouso:= 0;

    while SleepAndTest(1) = true do begin // Verifica se o boto Frente foi pressionado

    if (SpeedButtonFrente.Down = true) thenbeginend;

    // Verifica se o boto Trs foi pressionadoif (SpeedButtonTras.Down = true) thenbeginend;

    // Verifica se o boto Esquerda foi pressionadoif (SpeedButtonEsquerda.Down = true) thenbeginend;

    // Verifica se o boto Direita foi pressionadoif (SpeedButtonDireita.Down = true) thenbeginend;

    end;end;

    35

  • end.

    Aps criarmos os bloco acima, vamos nos dedicar a elaborar o cdigo a ser executado quando o SpeedButton Frente estiver pressionado, fazendo com que o bpede desloque-se para a frente. Mas, antes de tudo, devemos analisar como movimentar corretamente os servo-motores.

    Como foi comentado anteriormente, o funcionamento do bpede depende tanto da sua estrutura mecnica como da programao envolvida no seu controle. Para entender o problema a ser descrito aqui, vamos analisar o modo como o bpede foi construdo. Os servo-motores movimentaro as duas engrenagens grandes, sendo que uma responsvel por inclinar o seu corpo e outra por deslocar as pernas, lembrando-se de cada uma est presa a um potencimetro.

    Ambos os servo-motores no podem fazer o movimento total que possvel, sob o risco de danificar tanto a estrutura quanto o prprio motor. Os limites mximos de movimentao dependem muito de como o bpede foi construdo. O servo-motor destinado a inclinar o corpo do bpede dever levantar cada perna de modo que ela fique apenas levemente acima da superfcie. Caso o servo-motor incline demais o corpo, ele pode forar as hastes de arame, danificando tanto elas quanto o prprio motor.

    J o outro servo-motor dever deslocar a perna um pouco para frente. O seu deslocamento mximo depende basicamente da estrutura formada pela engrenagem e pernas dianteiras. No podemos forar essa estrutura, sob o risco de danificar o motor e a estrutura.

    Devemos primeiramente estabelecer os parmetros a serem enviados para o deslocamento dos eixos dos servo-motores. Atravs da funo ServoMotorOn, enviamos um valor que varia entre 0 e 255 que, no caso dos servo-motores originais, serve para controlar a posio do seu eixo. Como estamos utilizando um servo-motor adaptado, cujo potencimetro externo, esse valor tem a funo de controlar a posio da engrenagem presa ao potencimetro.

    No podemos utilizar todos os valores possveis entre 0 e 255 como parmetro para o posicionamento da engrenagem. Como sua movimentao ser limitada, valores muito altos ou muito baixos podem fazer com que o servo-motor force a estrutura. Como os valores limites dependem de como o bpede foi construdo, os valores mximos e mnimos que podemos utilizar sem danificar o servo-motor variam.

    Os valores definidos aqui nesse tutorial devem servir apenas como base na implementao de seu programa. Por isso, esteja atento ao funcionamento do bpede. Caso o movimento de algum servo-motor seja insuficiente ou seja forado (o que pode-se perceber atravs do seu barulho), basta mudar o valor enviado atravs da funo ServoMotorOn.

    Vamos voltar agora a implementao das linhas de cdigo do nosso programa. Dentro do nosso bloco if, a primeira coisa a fazer ser inclinar o corpo do bpede. Para isso, utilizaremos a funo ServoMotorOn, que ter como primeiro parmetro a constante referente ao motor de inclinao. J o segundo parmetro, como foi explicado acima, deve ter um valor suficiente para que a perna seja levantada um pouco acima do solo, sem movimentar demais a engrenagem. Utilizamos o valor 50 como parmetro, mas ele poder ser modificado, caso seja insuficiente ou seja demais.

    ... while SleepAndTest(1) = true do begin

    36

  • // Verifica se o boto Frente foi pressionadoif (SpeedButtonFrente.Down = true) then begin // Inclina o corpo do bpede para um lado kit.ServoMotorOn(ServoInclina,50);end;

    ...

    O prximo passo, aps levantar a perna, ser desloc-la para a frente. Devemos ento movimentar o servo-motor de deslocamento, utilizando novamente a funo ServoMotorOn. O segundo parmetro dessa funo dever ser um valor que suficiente para que a perna seja deslocada para a frente sem danificar o motor ou as estruturas. Aqui, foi utilizado o valor 180, mas convm lembrar que ele pode ser modificado caso no seja adequado.

    Mas antes que essa funo seja utilizada, devemos gerar uma pausa no programa, o que ser feito atravs da funo SleepAndTest. Utilizando o valor 100 como parmetro, geramos um atraso de 1 segundo. Essa pausa extremamente necessria, pois ela ocorrer enquanto o servo-motor estiver inclinando o corpo do bpede. Caso no utilizarmos essa pausa, a inclinao do corpo e o deslocamento da perna ocorrero simultaneamente, causando problemas.

    ... while SleepAndTest(1) = true do begin // Verifica se o boto Frente foi pressionado

    if (SpeedButtonFrente.Down = true) then begin // Inclina o corpo do bpede para um lado kit.ServoMotorOn(ServoInclina,50); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para a frente kit.ServoMotorOn(ServoDesloca,180);end;

    ...

    Agora devemos inclinar o corpo do bpede para o outro lado, concentrando seu peso na perna que acabou de ser deslocada. Antes, geramos uma outra pausa de um segundo, para que a perna possa ser deslocada. Utilizamos ento a funo ServoMotorOn tendo como primeiro parmetro a constante ServoInclina. S que desta vez, utilizamos outro valor como segundo parmetro. Esse valor deve ser suficiente para inclinar o corpo do bpede para o outro lado, deixando uma perna levemente acima do cho. Nesse caso, utilizamos o valor 220.

    37

  • Vamos tambm gerar uma outra pausa de 1 segundo no nosso programa, que ocorrer enquanto o servo-motor de inclinao estiver atuando.

    ... while SleepAndTest(1) = true do begin // Verifica se o boto Frente foi pressionado

    if (SpeedButtonFrente.Down = true) then begin // Inclina o corpo do bpede para um lado kit.ServoMotorOn(ServoInclina,50); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para a frente kit.ServoMotorOn(ServoDesloca,180); // Gera um atraso de 1 segundo SleepAndTest(100); // Inclina o corpo do bpede para outro lado kit.ServoMotorOn(ServoInclina,220); // Gera um atraso de 1 segundo SleepAndTest(100);end;

    ...

    Sendo assim, temos uma perna livre para ser deslocada, o que ser feito utilizando novamente a funo ServoMotorOn. O primeiro parmetro ser ServoDesloca, indicando qual motor ser acionado. J o segundo parmetro dever ser suficiente para que a perna seja movimentada para a frente, lembrando-se novamente de que no podemos forar o servo-motor, utilizando um valor muito alto.

    Depois dessa funo, tambm necessitamos gerar um atraso de um segundo, atravs da funo SleepAndTest.

    ... while SleepAndTest(1) = true do begin // Verifica se o boto Frente foi pressionado

    if (SpeedButtonFrente.Down = true) then begin // Inclina o corpo do bpede para um lado

    38

  • kit.ServoMotorOn(ServoInclina,50); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para a frente kit.ServoMotorOn(ServoDesloca,180); // Gera um atraso de 1 segundo SleepAndTest(100); // Inclina o corpo do bpede para outro lado kit.ServoMotorOn(ServoInclina,220); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para a frente kit.ServoMotorOn(ServoDesloca,120); // Gera um atraso de 1 segundo SleepAndTest(100);end;

    ...

    J temos pronta a programao referente ao movimento do bpede para frente, podendo nos dedicar ao movimento para trs. A sequncia de movimentos extremamente semelhante, tendo como nica diferena o fato de que a perna que estiver livre ser deslocada para trs.

    Um modo muito simples de implementar o cdigo do SpeedButtonTras copiar o que foi feito para deslocar o bpede para a frente e apenas trocar os valores utilizados como segundo parmetro para o controle do servo-motor de deslocamento. O bloco if desse SpeedButton ficar assim.

    ... // Verifica se o boto Trs foi pressionado

    if (SpeedButtonTras.Down = true) then begin // Inclina o corpo do bpede para um lado kit.ServoMotorOn(ServoInclina,50); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para trs kit.ServoMotorOn(ServoDesloca,120); // Gera um atraso de 1 segundo SleepAndTest(100);

    39

  • // Inclina o corpo do bpede para outro lado kit.ServoMotorOn(ServoInclina,220); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para trs kit.ServoMotorOn(ServoDesloca,180); // Gera um atraso de 1 segundo SleepAndTest(100);end;

    ...

    Os prximos cdigos a serem implementados so os comandos para virar esquerda e direita. Os procedimentos adotados para virar o bpede so um pouco diferentes. O primeiro passo ser manter o bpede com as duas pernas no cho, utilizando como segundo parmetro da funo ServoMotorOn algum valor entre 50 e 220 (que foram utilizados para inclin-lo) suficiente para isso. No exemplo descrito nesse tutorial, o valor ideal foi 100.

    Com as duas pernas do bpede no cho, quando acionarmos o servo-motor de deslocamento, ele virar para um lado. A direo para a qual o bpede vira depende do valor utilizado para acionar o servo-motor. Esses valores podem ser os mesmos usados anteriormente. Ao usarmos 120, ele virar para a esquerda e ao usarmos 180, ele virar para a direita.

    Aps realizar esses movimentos, podemos notar que uma das pernas ficou atrs da outra. Para que seja possvel virar o bpede novamente, devemos lev-la para a frente, utilizando os mesmos procedimentos de inclinar e deslocar a perna para a frente.

    A implementao completa do SpeedButtonEsquerda mostrada a seguir. ... // Verifica se o boto Esquerda foi pressionado

    if (SpeedButtonEsquerda.Down = true) then begin // Deixa o bpede com as duas pernas no cho kit.ServoMotorOn(ServoInclina,100); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca o bpede para a esquerda kit.ServoMotorOn(ServoDesloca,120); // Gera um atraso de 1 segundo SleepAndTest(100); // Inclina o corpo do bpede o lado kit.ServoMotorOn(ServoInclina,50);

    40

  • // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para a frente kit.ServoMotorOn(ServoDesloca,180); // Gera um atraso de 1 segundo SleepAndTest(100);end;

    ...

    A implementao do SpeedButtonDireita mostrada a seguir. ... // Verifica se o boto Direita foi pressionado

    if (SpeedButtonDireita.Down = true) then begin // Deixa o bpede com as duas pernas no cho kit.ServoMotorOn(ServoInclina,100); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca o bpede para a direita kit.ServoMotorOn(ServoDesloca,180); // Gera um atraso de 1 segundo SleepAndTest(100); // Inclina o corpo do bpede o lado kit.ServoMotorOn(ServoInclina,220); // Gera um atraso de 1 segundo SleepAndTest(100); // Desloca a perna livre para a frente kit.ServoMotorOn(ServoDesloca,120); // Gera um atraso de 1 segundo SleepAndTest(100);end;

    end;end;

    end.

    41

  • Com os comandos de movimentao feitos, podemos agora implementar o bloco if do SpeedButtonRepouso. Ele ser utilizado para manter o bpede com as duas pernas no cho, sendo um procedimento til para ser feito antes de deslig-lo.

    Esse bloco if ser um pouco diferente dos outros. Como ele s precisa ser feito uma nica vez, devemos utilizar mais uma condio, alm do fato do SpeedButtonRepouso estar pressionado. a que precisamos da varivel BipedeRepouso.

    A outra condio para que esse bloco if seja executado ser de que a varivel BipedeRepouso dever ser diferente de 1, o que pode ser feito atravs do operador . Ao pressionar o boto Iniciar, ser atribudo o valor 0 a essa varivel. Sendo assim, caso o SpeedButtonRepouso estiver pressionado, as linhas de cdigo referentes a ele sero executadas. S que no final do bloco if, vamos atribuir o valor 1 varivel. Sendo assim, teremos certeza de que esse bloco no ser executado novamente, a no ser que o boto Iniciar seja pressionado de novo.

    O cdigo para o SpeedButtonRepouso comear assim:

    ... // Verifica se o boto Repouso foi pressionado e se

    // BipedeRepouso diferente de 1if (SpeedButtonRepouso.Down = true) and (BipedeRepouso 1) thenbeginend;

    end;end;

    end.

    O primeiro passo ser alinhar as pernas do bpede. Devemos ento inclinar seu corpo para um lado e deslocar a perna livre de modo que ela fique ao lado da perna a qual o bpede se apia. Como no nosso exemplo utilizamos os valores 180 e 120 para desloc-la para frente e para trs, o valor adequado dever estar aproximadamente entre eles. O valor 150 foi o mais adequado para a utilizao nesse exemplo. No podemos nos esquecer das pausas de 1 segundo no programa.

    ... // Verifica se o boto Repouso foi pressionado e se

    // BipedeRepouso diferente de 1if (SpeedButtonRepouso.Down = true) and (BipedeRepouso 1) thenbegin // Inclina o corpo do bpede para o lado kit.ServoMotorOn(ServoInclina,50); // Gera um atraso de 1 segundo SleepAndTest(100);

    42

  • // Alinha a perna livre com a qual o bpede se apia kit.ServoMotorOn(ServoDesloca,150); // Gera um atraso de 1 segundo SleepAndTest(100);end;

    end;end;

    end.

    Desse modo, as pernas estaro alinhadas, mas o corpo do bpede ainda estar inclinado. Devemos ento acionar o servo-motor de inclinao novamente, utilizando como parmetro um valor adequado para deix-lo com as duas pernas no cho. Esse valor deve ser o mesmo que foi utilizado para virar o bpede, que no exemplo foi 100.

    Sendo assim, completamos os procedimentos para manter o bpede em posio de repouso. Agora podemos atribuir varivel BipedeRepouso o valor 1, evitando que esses procedimentos se repitam.

    ... // Verifica se o boto Repouso foi pressionado e se

    // BipedeRepouso diferente de 1if (SpeedButtonRepouso.Down = true) and (BipedeRepouso 1) thenbegin // Inclina o corpo do bpede para o lado kit.ServoMotorOn(ServoInclina,50); // Gera um atraso de 1 segundo SleepAndTest(100); // Alinha a perna livre com a qual o bpede se apia kit.ServoMotorOn(ServoDesloca,150); // Gera um atraso de 1 segundo SleepAndTest(100); // Deixa o bpede com as duas pernas no cho kit.ServoMotorOn(ServoInclina,50); // Valor 1 atribudo varivel, evitando que os // procedimentos de repouso se repitam BipedeRepouso:= 1;end;

    end;

    43

  • end;

    end.

    O nosso prximo passo agora ser criar as rotinas para o desligamento do bpede. Essas linhas de cdigo sero escritas depois do end; do lao while principal, aquele ao qual nosso programa estar preso enquanto a funo SleepAndTest for verdadeira. Pode parecer estranho primeira vista, mas elas sero mesmo escritas no procedure do boto Iniciar, mas somente sero executadas quando a funo SleepAndTest for falsa, pois assim o nosso programa sair do lao while principal. Devemos desligar todos os servo-motores atravs da funo ServoMotorOff.

    ... end;

    // As funes a seguir desligaro o bpede e sero execu- // tadas quando o programa sair do loop while principal, // ou seja, quando SleepAndTest retornar um valor falso

    // Desliga os motores kit.ServoMotorOff(ServoInclina); kit.ServoMotorOff(ServoDesloca); end;

    end.Nosso programa est quase pronto. Basta agora implementar o cdigo a ser executado

    quando o boto Parar for pressionado. Voltamos ento ao nosso Form, apertando a tecla F12, e damos um duplo clique sobre esse boto, abrindo o seguinte manipulador.

    ...procedure TformMain.ButtonPararClick(Sender: Tobject);

    beginend;

    end.A nica coisa que precisamos fazer atribuir varivel Stop o valor True, o que far com

    que a funo SleepAndTest retorne um valor falso e, consequentemente, o bpede seja desligada....procedure TformMain.ButtonPararClick(Sender: Tobject);

    begin

    44

  • // Quando o boto for pressionado, a varivel Stop ser ver- // dadeira, consequentemente a funo SleepAndTest ser fal-

    // sa e o funcionamento do bpede ser interrompido Stop := true;

    end;

    end.Chegamos ento ao fim da programao para o funcionamento do bpede. Se todos esses

    passos forem seguidos corretamente, o programa poder ser compilado e executado.

    8 Dicas

    Podemos acrescentar algumas funcionalidades a mais ao do bpede, exercitando assim a criatividade e os conhecimentos de Robtica adquiridos. Em relao ao programa de controle do bpede, pode-se implementar o cdigo para que o movimento do bpede seja modificado automaticamente quando algum SpeedButton for pressionado, sem a necessidade de se apertar o boto Iniciar.

    Tambm possvel fazer com que o bpede fique em posio de repouso automaticamente quando o boto Parar for pressionado.

    O bpede mesmo pode ser incrementado. Com alguns conhecimentos de Eletrnica e Programao, possvel fazer uma verso que siga ou fuja da luz, utilizando LDRs. Com um sensor de distncia possvel fazer coisas bem interessantes tambm, como uma verso que no caia em buracos (caso o bpede esteja em cima de uma mesa), com o sensor apontado para a frente num ngulo de 45 graus.

    45

    1 - Introduo7 - Programao8 - Dicas