Mesmo numa área complexa como a robótica, pode-se obter resultados satisfatórios, com projetos de fácil implementação. Neste artigo, apresentamos um projeto que permitirá o controle de até 4 motores CC, em 2 sentidos (8 movimentos), usando a interface paralela dos micros MSX e PC's.

De construção bastante simples, com um pequeno módulo de potência para cada motor e um programa BASIC de controle, o projeto permitirá manipular dispositivos mecânicos acoplados diretamente à Interface do micro, com comandos a partir do teclado ou do "joystick', ajuste de precisão dos movimentos, memorização e repetição de até 2048 passos. O artigo também fornece, como sugestão, os detalhes para construção de um braço mecânico de 3 motores, com componentes de fácil obtenção, alimentado à pilha, permitindo uma montagem completa, simples e de resultados imediatos.

O artigo saiu na Revista Saber Eletrônica 215 de 1990. Para os adeptos do MSX, que ainda está em alta, trata-se de um excelente artigo de consulta ou mesmo para montagem, utilizando componentes mais modernos em muitas partes.

 


| Clique na imagem para ampliar |

 

 

A robótica é uma das áreas mais interessantes e promissoras da atualidade. Associando a capacidade de controle e processamento dos computadores à capacidade de movimento de dispositivos eletromecânicos, a robótica se apresenta hoje, como um ramo de realizações sofisticadas, possibilidades quase ilimitadas e desafios constantes. Entretanto, por ser uma atividade multidisciplinar, exigindo do projetista conhecimentos de eletrônica, informática e mecânica, a robótica é, também, uma área que inibe a atuação não profissional, face ao grau de complexidade envolvido e às dificuldades de se obter um projeto funcional e, ao mesmo tempo, viável.

Assim, apesar da atração exercida pelas possibilidades da área, poucos são os que conseguem obter resultados que os anime a continuar atuando e se desenvolvendo principalmente em nosso país, onde, além das dificuldades naturais, o projetista cruza com outras quase que insuperáveis, tais como: a falta de partes e peças mecânicas para venda avulsa, dificuldades de obtenção de componentes eletrônicos mais sofisticados e os custos elevados.

Como veremos a seguir, no entanto, é possível superar essas dificuldades e idealizar projetos de unidades robóticas de fácil construção e implementação, que não se utilizem de componentes (mecânicos ou eletrônicos) de difícil obtenção e alto custo e que, ainda assim, tragam ao projetista resultados bastante compensadores.

O projeto apresentado tem por objetivo introduzir os conceitos básicos da robótica, de forma a permitir que, além da obtenção de resultados imediatos, o leitor possa adquirir conhecimentos que lhe permitam evoluir para projetos mais sofisticados.

 

As principais características do projeto são:

- Controle de unidades robóticas com até 4 motores CC, reversíveis (giro em ambos os sentidos) - 8 movimentos possíveis; interfaceamento direto dos módulos de potência com a saída paralela do micro, dispensando o uso de decodificadores e/ou conversores;

- Interface paralela de entrada padrão Centronics, permitindo o uso com diversos micros, tais como MSX e PC's;

- Módulos de potência de construção simples e grande eficiência, com apenas 4 transistores por módulo, acionamento via sinais digitais CMOS, TTL ou TTL-LS e controle do giro do motor CC nos dois sentidos:

- Controle total de funcionamento por software. O programa fornecido junto com o projeto, em MSX-BASIC, demonstra as possibilidades de controle, permitindo:

- Movimento direto dos motores via teclado ou joystick

- Controle do "passo" (largura do pulso a ser enviado ao motor) individual, por motor, permitindo o uso de motores com diferentes reduções mecânicas e possibilitando o ajuste da amplitude do movimento em cada passo.

- Movimentação alternativa dos motores, através do fornecimento do sentido de rotação e número de passos a executar.

- Memorização de até 2048 passos; - Repetição dos movimentos memorizados.

- Como sugestão, o projeto inclui os detalhes para construção completa de um braço mecânico de 6 movimentos, com motores e caixas de redução reaproveitadas de aparelhos domésticos e brinquedos.

 

 

UNIDADE ROBÓTICA:

 

Podemos dividir, genericamente, a análise de uma unidade robótica em 4 blocos principais, como pode ser visto na figura 1.

 


| Clique na imagem para ampliar |

 

 

O módulo de Lógica e Controle é responsável por todas as atividades de controle da unidade, armazenamento da programação de atuações a serem realizadas e, quando houver, interpretação dos sinais de realimentação. Este módulo é representado, normalmente, por um microprocessador e circuitos de apoio (memória, interfaces, etc.). O módulo de Decodificação decodifica os comandos do Módulo de Lógica e Controle, normalmente palavras binárias, identificando quais módulos mecânicos devem ser acionados. Os Módulos de Potência, quando acionados, geram a energia necessária ao acionamento dos Módulos Mecânicos. Estes, normalmente constituídos por motores elétricos (CC ou de passo), executam, então, o movimento comandado. As funções de realimentação permitem que os sinais gerados por sensores colocados junto ás partes mecânicas informem ao módulo de Controle situações que necessitem ser interpretadas e avaliadas.

Em nosso projeto, em função da simplicidade desejada, foram tomadas as seguintes decisões:

- Funções de lógica e controle implementadas em linguagem BASIC.

- Sem decodificação.

- Sem realimentação.

- Uso de motores CC, e não de passo, já que estes últimos exigem controle mais sofisticado.

Vamos iniciar a análise do projeto pela descrição da interface paralela, já que o funcionamento dos demais módulos está diretamente relacionado à forma como ela foi utilizada.

 

 

INTERFACE PARALELA

 

Os micros MSX e a grande maioria dos PC's, utilizam uma interface paralela de 8 bits, padrão CENTRONICS, para comunicação com a impressora. A interface é dita paralela porque permite a transferência de 8 bits (1 byte) simultaneamente (as interfaces seriais transferem 1 bit por vez). O padrão CENTRONICS determina que os sinais de cada pino serão compatíveis com sinais TTL e estabelece a função de cada um conforme descrito na tabela 1.

 


 

 

 

Apesar do padrão, existem diferenças na saída da interface, no painel dos micros, tanto a nível de tipo de conector quanto a nível de pinagem. Para eliminar a interferência dessas diferenças, o projeto foi feito de forma a usar a interface após o cabo de conexão da impressora. Os cabos disponíveis para cada micro eliminam as diferenças e entregam os sinais da tabela 1 num conector AMP (AMPHENOL) de 36 pinos, macho. O conector usado na entrada da unidade robótica deverá ser, então, um conector padrão CENTRO-NICS, AMP de 36 pinos, Fêmea, (tornando-a, a nível de conector, idêntica a uma impressora paralela).

 


 

 

Para acionamento da unidade robótica, serão usados apenas os pinos 2 a 9 (DO a D7) e 16 (GND), conforme pode ser visto na figura 2. Percebe-se que 'foi feita uma utilização direta da palavra de 8 bits para acionamento dos módulos de potência. Como são necessários 2 bits por motor, temos, então, a possibilidade de acionar até 4 motores nos dois sentidos. A tabela 2 mostra o efeito do posicionamento dos bits no movimento dos motores. Veja que com uma saída de 8 bits seria possível o acionamento de até 128 motores em 2 sentidos (256 movimentos). Isto exigiria, no entanto, a presença de decodificadores após a interface para determinar, a partir do valor binário informado pela CPU, qual motor deveria ser acionado. O uso direto limita o número de motores mais simplifica bastante o projeto.

 


| Clique na imagem para ampliar |

 

 

Nos micros MSX, o acionamento da porta paralela da impressora é feito através dos endereços de entrada e saída 144 (90H) e 145 (91H). O endereço 144 é usado para controle dos bits STROBE e BUSY, que não iremos utilizar. O endereço 145 é usado para envio de dados à impressora e será através dele que iremos posicionar os bits necessários ao acionamento de cada motor. Nos micros PC's, o endereço normal da porta paralela é 888 (378H). Esse endereço pode ser confirmado consultando-se o endereço de memória 0040:0008 (formato CS:OFF-SET, em hexadecimal) que guarda o endereço da porta da impressora LPT1.

Na linguagem BASIC, a porta deverá ser acionada via instrução OUT, pois é a única que permite aceso direto à interface, obrigatório em nosso caso, com o formato OUT.XXX, n - onde XXX é o endereço da porta e "n" representa o valor cuja representação binária irá acionar os módulos de potência, de acordo com a tabela 3.

 


| Clique na imagem para ampliar |

 

 

 

MÓDULOS DE POTÊNCIA

 

Cada um dos motores da unidade robótica, necessita um módulo de potência, cuja função é gerar, a partir dos sinais de acionamento, a corrente necessária à movimentação do motor.

O módulo de potência que apresentamos, cujo circuito encontra-se na figura 3, é acionado diretamente a partir dos sinais digitais enviados pela CPU à interface paralela.

Pela análise do circuito percebe-se que quando El =E2 ou os transistores TI P125 ou os TI P120 estarão cortados, não havendo, portanto, diferença de potencial sobre o motor, que permanecerá parado. Quando El =0 e E2=1 o motor irá girar num sentido e quando El =1 e E2=0 irá girar no outro. As entradas El e E2 poderão vir de circuitos CMOS ou TTL.

Para montagem do braço mecânico proposto, serão necessários 3 módulos de potência, ligados aos sinais DO/D1, D2/D3 e D4/D5 da interface paralela. Os sinais D6/D7 não serão utilizados. A alimentação dos módulos (e consequentemente dos motores) escolhida para o braço mecânico foi 6V, com 4 pilhas alcalinas médias, face aos motores usados. O módulo de potência poderá funcionar com voltagens maiores, devendo-se, nesse caso, ajustar o valor dos resistores de base para controlar a corrente sobre o motor. A figura 4 apresenta uma sugestão de placa padrão que pode ser usada para montagem dos módulos.

 


| Clique na imagem para ampliar |

 

 


| Clique na imagem para ampliar |

 

 

 

LÓGICA E CONTROLE

 

Em nosso projeto, às funções de controle da unidade robótica foram deixadas a cargo de um micro MSX. O programa listado foi feito com o objetivo de demonstrar como se pode acionar' essas funções através da linguagem MSX-BASIC. Os usuários de PC's poderão usá-lo como base, fazendo os ajustes necessários ao funcionamento com o BASIC de seu equipamento, e lembrando que o endereço normal da porta da impressora nos micros PC's XT e AT é 888 (378H).

Como se poderá perceber, o programa não esgota todas as possibilidades de controle, servindo, apenas, para demonstrar como esse controle pode ser feito. As principais características do programa são:

 

 

1) Ajuste do "passo":

 

O acionamento dos motores, não é feito de forma contínua, pois isso tornaria o controle dos movimentos muito difícil. O programa faz o acionamento dos motores em "passos"; ou seja, aciona o motor, aguarda um certo tempo e o desaciona em seguida. O tempo que o pulso de acionamento fica ativo é controlado pelo usuário e pode ser posicionado de forma diferente para cada sentido de rotação de cada motor. Dessa forma, compensa-se, em parte, a falta de precisão dos motores CC e permite-se que sejam usados motores com diferentes taxas de redução mecânica. O tempo acionamento, ou "passo", poderá ser maior para motores com altas taxas de redução e menor para motores com pouca redução.

 

 

2) Acionamento pelo teclado ou "joystick":

 

O programa permite que os motores sejam acionados diretamente a partir do teclado (teclas de controle do cursor e barra de espaços) e através do primeiro "joystick". Esse tipo de acionamento, é feito usando as funções STRIG e STICK do MSX-BASIC, que retornam o estado do botão de tiro ou barra de espaços e da alavanca do "joystick" ou teclas de controle do cursor.

 


 

 

 

A função STICK retorna um valor numérico de posição, de acordo com o esquema da figura 5. A função STRIG (0) retorna O se a barra de espaços não estiver pressionada e 1 se estiver, enquanto STRIG (1) retorna os mesmos valores para o botão de tiro do joystick 1.

O programa associa os valores retornados pelas funções STRIG e STICK aos movimentos a serem feitos, de acordo com a tabela abaixo:

Caso se venha acionar uma unidade robótica diferente do braço mecânico proposto, essa associação de valores e nomes poderá ser mudada alterando-se os conteúdos das variáveis ID$ (nomes dos movimentos), M e F (movimento a ser feito - valor da porta 145).

 


| Clique na imagem para ampliar |

 

 

 

3) Acionamento por número de passos:

 

Uma forma alternativa, mais precisa em termos de memorização/repetição, para execução dos movimentos. O usuário fornece o movimento a executar (de forma idêntica ao acionamento pelo teclado) e o número de passos a serem executados. Como o movimento final resulta não só dos passos efetuados, mas também do tempo decorrido entre dois passos sucessivos (em função da inércia do motor), este tipo de acionamento deve ser usado, preferencialmente, quando se pretender memorizar e repetir o movimento. O acionamento direto, via teclas, é mais impreciso, pois o intervalo entre dois passos fica a cargo do usuário.

 

 

4) Memorização de movimentos:

 

Ativando-se a função de memorização, o programa irá armazenar os movimentos efetuados, permitindo que se guarde até 2048 movimentos. A memorização será paralisada ativando-se a função "Finaliza memorização" e poderá ser reinicializada através da função "Limpa memorização".

 

 

5) Repete memorização:

 

Após memorizar uma determinada sequência de movimentos, o usuário poderá repeti-la uma ou mais vezes, demonstrando, de forma simples, como se pode fazer uma unidade robótica "aprender" uma determinada tarefa e repeti-la quantas vezes for necessário.

Para efetuar a repetição, o programa solicita um valor que controla a "pausa entre passos" e que representa o tempo em que o motor ficará inativo entre dois passos sucessivos. Deve-se ajustar este valor até que a repetição dos movimentos resulte no mesmo movimento total de quando a sequência foi memorizada.

Como foi dito, o movimento final é influenciado não só pelos passos, mas também pelo intervalo entre eles, que influência, em função da inércia, o estado em que o próximo passo será recebido e executado pelo motor.

 

 

BRAÇO MECÂNICO

 

Como exemplo de unidade robótica que poderá ser controlada pelo projeto apresentado, encontra-se abaixo a descrição da forma de construção de um braço mecânico de 3 motores construído a partir de peças e partes de fácil obtenção. Os testes do braço foram feitos num micro MSX - HOTBIT.

 


| Clique na imagem para ampliar |

 

 

A figura 6 apresenta o esquema geral do braço, por onde se pode perceber que o mesmo tem condições de efetuar movimentos para direita/esquerda (motor 1), para cima/baixo (motor 2) e levantar/abaixar o braço (motor 3). Os motores 1 e 2, que suportam as maiores cargas, devem ter alta taxa de redução mecânica, pois, caso contrário, não terão força suficiente para movimentar o conjunto que sustentam.

Em nosso projeto, utilizamos dois motores fabricados pela YANES para movimentação de espetos de churrasqueiras, que são encontrados facilmente em supermercados e casas de artigos para fogões. Esses pequenos motores CC já vêm incluindo a caixa de redução, são leves, com engrenagens de nylon, possuem encaixe para um eixo quadrado (onde iria o espeto) e são fáceis de serem adaptados. Originalmente, os motores são vendidos para acionamento por uma única pilha (1,5V), mas podem ser usados, normalmente, com 4 pilhas (6V).

Para adaptar esses motores, reduzindo seu tamanho, deve-se proceder da seguinte forma:

- Retirar a capa plástica do suporte da pilha;

- Serrar o suporte metálico da pilha, deixando 0,5 cm junto ao corpo do motor;

- Soldar os dois fios de contato do motor no resto do suporte serrado e no pino central do corpo (nos antigos contatos da pilha, portanto);

- Colocar a chave que permite o acionamento do motor num ou noutro sentido em qualquer uma das duas posições de motor ligado (a posição central deixa o motor desligado);

- Construir um eixo, de aproximadamente 5 cm, encaixando-o no supor-te do espeto do motor.

O motor 3 poderá ter uma redução menor, já que deverá suportar apenas o braço e as peças que o braço irá levantar. Em nosso caso, foi usado um motor idêntico aos motores 1 e 2. Foi testado, também, com bom resultado, o conjunto motor e engrenagens do trator TITÃ, da Estrela. Outros motores poderão ser testados para o braço. Para determinar se a redução é suficiente, basta fixar o braço no eixo do motor e, sem alimentação, verificar se o braço suporta os pesos que se desejará levantar sem ceder. Obviamente, devido às limitações do projeto, os pesos a serem levantados não poderão ser muito elevados.

A construção poderá ser iniciada pela caixa plástica que servirá para acondicionar as placas dos módulos de potência, suporte das pilhas e parte do motor 1 (se usado o motor YANES). Em nosso caso, usamos uma caixa de 19cm de largura, 11 de profundidade e 6 de altura, que é vendida em casas de eletrônica. Na parte de traz da caixa, faça uma abertura de aproximadamente 5,0x1,5cm, para encaixe do conector CENTRONICS. Encaixe-o e fixe-o com dois parafusos laterais.

 


| Clique na imagem para ampliar |

 

 

Fixe na parte interna o suporte das pilhas e as 3 placas dos módulos de potência. Solde as entradas dos módulos de potência aos pinos do conector CENTRONICS Solde as entradas de alimentação dos módulos de potência (+Vcc à chave S1 e 0V ao negativo das pilhas). Solde o positivo das pilhas à chave S1 solde o negativo das pilhas ao pino 16 (GND) do conector. Oriente-se pelo esquema geral de ligações da figura 7. O LED indicador de unidade ligada e o resistor de 560 ohms são opcionais.

Abra na tampa da caixa uma abertura para encaixar a parte saliente do motor 1 e encaixe-o, de forma a que fique com a caixa de engrenagens para fora. Fixe o motor na caixa. Uma boa opção para a fixação das peças é usar a coladeira plástica HOT-PATTEX que permite, na maioria dos casos, dispensar o uso de parafusos.

Fixe o motor 2 diretamente ao eixo do motor 1, em ângulo de 90 graus conforme esquema da figura 6. O antebraço e o braço poderão ser feitos de nylon, madeira ou alumínio. Em nosso caso, foram feitos de nylon.

O antebraço poderá ter entre 8 e 10cm e o braço poderá ser cerca de 5 cm maior. Fixe o antebraço ao eixo do motor 2 e o motor 3 no final do antebraço. Fixe o braço no eixo do motor 3.

 


 

 

 

Como nosso braço mecânico não tem como segurar objetos, o braço deverá terminar em "L" para que os objetos a serem levantados possam ser pendurados no mesmo. A figura 8 mostra uma vista lateral esquemática do braço mecânico.

Solde em cada um dos motores, fios suficientemente longos para atingir a saída dos módulos de potência. Fixe os fios e solde-os nos módulos de potência. Não se esqueça de deixar fios sobrando para os motores 2 e 3, de forma a que possam acompanhar os movimentos dos mesmos. Fixe guias de referência (um na parte fixa e um na parte móvel) para cada um dos motores, de forma a permitir que os movimentos a serem repetidos iniciem-se sempre da mesma posição de repouso. Os guias permitirão que o braço e antebraço sejam colocados, visualmente sempre na mesma posição de repouso.

 


 

 

 

 

PROVA E USO

 

Para testar o braço mecânico, basta digitar o programa, salvá-lo em disco ou fita. Conecte o cabo da impressora ao conector CENTRONICS do braço e coloque o programa em execução. Ligue a unidade robótica e via teclado ou "joystick" acione os motores. Ajuste o passo de cada sentido de rotação de cada motor, de forma a permitir um controle preciso dos movimentos. Use as funções de memorização para guardar e repetir movimentos.

Para acionamento manual (sem o micro), basta ligar a unidade e estabelecer contato entre o pino 16 (GND) do conector centronics e as diversas entradas (pinos 2 a 9) dos módulos de potência - pode-se usar um conector macho para facilitar.

 

 


| Clique na imagem para ampliar |

 

 

 


| Clique na imagem para ampliar |

 

 

 

 

NO YOUTUBE


NOSSO PODCAST