DESEÑO MECÁNICO

representacion_robotNa ilustración  pode verse unha simulación do robot deseñado. Nela obsérvase que a súa estrutura está dividida en dúas plantas. A planta superior formada pola placa TOP e a planta inferior formada pola placa BOT, a cal da cabida ao circuíto BOT, aos motores e as
baterías, ademais de dar soporte á placa S.LINEAS e os sensores de infravermellos.

PLACA BOT:

A superficie que fai de soporte da planta inferior é unha lámina de 1mm de grosor de latón.
Ten forma de U para que se poidan fixar sensores na súa cara dianteira e para que impida a caída das baterías pola parte traseira.

P_BOT

PLACA TOP:

A placa superior é a formada polo circuíto TOP.

As placas TOP e BOT están unidas por catro varillas roscadas de 45 mm de lonxitude e 6,40 mm de diámetro. Estas varillas poden obterse en calquera ferraxería cunha lonxitude de 1 m. Para o robot precisaremos 2 destas, xa que só podemos empregar os 2 extremos de cada unha, porque ao cortar a varilla, estropéase a rosca e non podemos introducir as torcas necesarias para fixar as placas.

O material empregado nesta placa é a baquelita de 1mm de espesor.

P_TOP

ESCUADRAS:

Os motores están suxeitos á placa inferior por dúas escuadras de aluminio. Poden obterse en calquera ferraxería.

Estas pezas están aparafusadas á placa inferior e pegadas aos motores de tal forma que estes queden inmobilizados, impedindo unha rotación ou desprazamento non desexados. A altura dos motores pode regularse á hora de pegalos as escuadras, para así variar a altura e a inclinación do robot.

ESCUADRAS

RODAS:

As rodas son tamén un elemento moi importante. Estas teñen un diámetro de 60 mm e unha anchura de 8 mm.
Teñen unha abertura no centro a cal permite o seu correcto encaixe cos motores. Están construídas en plástico negro e a súa parte exterior está recuberta por unha goma, a cal mellora a adherencia coa superficie. Esta goma pode ser retirada e substituída por outra de considerarse necesario.

RODAS

PLACA S.LINEAS:

Na parte dianteira inferior sitúase outra placa, encargada de portar os sensores e o circuíto S.LINEAS empregando tamén a baquelita como material de construción.

P_SLINEAS

RODA LOCA:

Na parte inferior-dianteira sitúase unha roda loca de 9,5mm de diámetro constituída por unha bola de plástico que xira libre nun soporte o cal vai pegado a placa BOT e impide que a bola se desprenda. A funcionalidade desta bola é a de impedir que o robot roce contra o chan mellorando así a súa mobilidade.

DESPECE DO ROBOT

despiece

CABLE CONEXIÓN COA PLACA ARDUINO

Seguindo o esquema do artigo anterior, realizouse un cable que permite comunicar a placa Arduino co robot dunha forma sinxela e estable.
O cable de conexión realizouse a partir dun cable plano flexible de 10 hilos, dos cales aprovéitanse 6 para as conexións. Ás terminacións soldáronselle, por un lado, 5 pins femia e 1 macho para a conexión coa placa Arduino e, no outro lado, empregouse a conexión estandar de grillete á que se lle acoplaron 6 pins machos unidos. Para a conexión cos correspondentes 6 pins femia do robot.

cable_robot

cable_placa

cable_mas_robot

CONEXIÓN ATMEGA-ARDUINO

Para poder cargar os programas dende o ordenador ao microcontrolador Atmega, é preciso empregar a placa Arduino.

A continuación amósase un esquema de como se pode realizar esta conexión.

Esta conexión alimenta a todo o sistema, incluídos os motores. Isto permite realizar probas que non requiran desprazamento

arduino_atmega

Relación conexionado pins:

Arduino —>Atmega

1-ICSP—> 18
2-ICSP (5V)—> 7/20
3-ICSP—> 19
4-ICSP—> 17
6-ICSP (GND)—> 8/9/10/22
10-DIXITAL—> 1

Para poder cargar programas nun microcontrolador Atmega328P “virxe” mediante esta técnica, primeiro é necesario programar a tarxeta Arduino Leonardo como programador e cargar o cargador de inicio (bootloader) no microcontrolador; para isto é necesario levar a cabo os seguintes pasos:
1- Abrir Ide Arduino
2-Abrir no Ide Arduino, Archivo/Exemplos/ArduinoISP
3- Trocar #define RESET SS por #define RESET 10
4- Elixir en Ferramentas/Programador AVRISP mkll e en Ferramentas/Tarxeta Arduino Leonardo
5- Cargar o programa pulsando en cargar
6- Elixir en Ferramentas/Tarxeta Arduino Duemilanove w/ATmega 328
7- Pulsar en Ferramentas Gravar Cargador de Inicio
Coa tarxeta Leonardo e co microcontrolador preparados, pódese cargar calquera programa que nos interese sen ter que volver a realizar estes pasos.
Para cargar novos programas, seleccionamos en Ferramentas/Programador Arduino as ISP e seleccionamos en Arquivo Cargar usando Programador ou coa combinación de teclas Ctrl+Shift+U.

CIRCUÍTO S.LIÑAS

A función deste circuíto é a de portar os CNY70 utilizados para seguir liñas e adaptar as súas conexións.
Os 3 CNY70 están na cara inferior da placa, mentres que os demais compoñentes están na superior. Isto é así para facilitar as conexións.

Simulación da cara superior.

simSLIneasbot

Cara inferior.

simSLIneastop

Esquema eléctrico.

SLineas

CIRCUÍTO BOT

A función principal deste circuito é a de administrar as conexións entre o circuíto TOP e os outros elementos do Robot.

BOT

Os conectores ENCODERS-1 e ENCODERS-2 encárganse da alimentación e conexionado dos dous CNY-70 que realizan a función de encoders.
O conector MOTOTES serve para simplificar e ordear as conexións de alimentación dos motores.

A continuación amósase unha simulación da placa BOT seguida do fotolito dunha cara empregado na mesma.

SIMbOT

PCBbot

CIRCUÍTO TOP

O robot consta de 3 placas que albergan os circuítos que fan posible o seu funcionamento.

A placa principal, denominada placa TOP alberga o microcontrolador e os circuítos auxiliares deste, a etapa de potencia, encargada de adaptar a tensión provinte das baterías a unha apta para os elementos do robot, a etapa de control dos motores e tamén serve de soporte de varios sensores, ademais do dispositivo de comunicación bluetooth seleccionado.

DESCRICIÓN DAS DISTINTAS ETAPAS DA PLACA TOP:

Etapa de potencia:

O seu elemento principal é o regulador de tensión LM7805, o cal reduce a tensión procedente das baterías, que entregan unha tensión máxima de 12,6V, a unha tensión de entre 4,8V e 5,2V. Para que isto se cumpra, a tensión de entrada (VI) mínima
ten que ser de 7V.
O LM7805 está conectado ao condensador cerámico C1 de 100nF e ao condensador electrolítico C2 de 16uF, estes condensadores melloran a resposta transitoria do sistema.
Esta etapa protexe ao sistema de posibles conexións erróneas dos terminais das baterías mediante o díodo D1, do tipo 1N4007.
Este circuíto pode alimentarse coas baterías a través dos pins VBAT e GND ou coa placa Arduino por ARD 5V e ARD GND; para evitar problemas de dobre conexión, o terminal ARD 5V e o VBAT conéctanse ao circuíto a través dun interruptor, o cal selecciona cal dos dous terminais alimentará ao circuíto. De alimentarse a través de Arduino, a corrente omite o paso polo LM7805, por estar xa regulada a 5V.
A saída deste circuíto está conectada á masa a través da resistencia R4 de 10K en serie co díodo LED vermello D2, o cal se acende cando esta etapa proporciona 5V, permitindo así unha fácil observación da correcta conexión.
Neste circuíto tamén están incluídas as resistencias R1, R2 de 20K e R3 de 5K que forman un divisor de tensión o cal divide a tensión presente en VBAT entre 3, o que permite conectar a súa saída o microcontrolador, xa que a tensión nunca rebasará a máxima admitida por este que é de 5V, este circuíto deséñase así por que as baterías entregan unha tensión máxima de
12,6V que se se divide entre 3 queda en 4,2V e non ocasiona problemas ao microcontrolador.

epotencia

Control dos motores:

Esta etapa é necesaria para poder controlar o funcionamento dos motores, os cales teñen un consumo típico de 5V e 600 mA aprox. O microcontrolador non pode ofrecer estes niveis de corrente, por iso este circuíto é imprescindible.
O control dos motores é posible grazas a unha Ponte-H constituída polo circuíto L293D.

pontH

O L293D precisa dúas entradas de alimentación, conectadas aos pins 16 (Vss) e 8 (Vs).A primeira ten que ser de 5V e é empregada para alimentar a lóxica, mentres que a segunda é a da alimentación da carga, que neste caso tamén será de 5V.
Cada par de etapas do circuíto posúen unha entrada de inhibición pins 1 (EN1) e 9 (EN2) que permiten a deshabilitación das saídas pins 3 (OUT1),6 (OUT2) 11 (OUT3) e 14 (OUT4).
Os terminais de entrada 2 (IN1) e 7 (IN2) da etapa 1 e 2 están relacionados con EN1, OUT1 e OUT2, e encárganse do control do Motor-A. As entradas 10(IN3) e 15 (IN4) das etapas 3 e 4 relaciónanse igualmente con EN2, OUT3 e OUT4 ligadas estas a o Motor-B.
A resposta do Motor-A en función de IN1, IN2 e EN1 é o que se amosa a continuación.

IN1—IN2 —EN1—>Xira

H——-L——H—->Dereita

L——-H——H—->Esquerda

X——-X——L—->Parado

H: Entrada a nivel alto.
L: Entrada a nivel baixo.
X: Indiferente.

A resposta do Motor-B é similar a da o Motor-A.
A velocidade de xiro dos motores regúlase en función da tensión de alimentación dos mesmos. Isto faise aplicando un sinal de pulsos nos cales é posible controlar a súa anchura. Isto denomínase PWM (Pulse Width Modulated) ou Regulación por Ancho de Pulso.

As saídas OUTx conéctanse a masa a través dos condensadores cerámicos de 100 pF C4,C5,C6 e C7 para mellorar a resposta dinámica dos motores.
As entradas INx están conectadas ás portas inversoras do circuíto SN74HC14N, de tal forma que fan posible o funcionamento dos motores explicado arriba con tan só 2 terminais do microcontrolador por motor, DIR-1 e DIR-2,aforrando así saídas deste.
As conexións DIR-1 e DIR-2 encárganse do sentido de xiro dos motores e PWM-1 e PWM-2 conectados a ENx da súa velocidade mediante Modulación por Anchura de Pulso (PWM).
DIR-x e PWM-x conéctanse en paralelo cos compoñentes explicados, L293D e SN74HC14N, coas resistencias R5,R6,R7 e R8 de 100K para protexer ao circuíto.
O L293D admite unha corrente de pico máxima de 1,2A e unha media de 600mA. Isto tense en conta á hora de elixir os motores e a súa alimentación, porque a corrente máxima de cada motor alimentado a 6V é de 760mA e se os motores son forzados a deterse mentres se lle da a orde de xirar, a corrente máxima pode ser de 1520mA o que superaría a corrente de pico do L293D, por isto se redúce a tensión dos motores a 5V, rebaixando tamén así a súa corrente máxima por debaixo do límite do L293D.

 

Etapa de control:

econtrol

O esquema anterior corresponde a etapa de control. Nel obsérvase o cristal X1 de 16MHz conectado entre os condensadores C8 e C9, os cales veñen marcados nas follas de características do Arduino Leonardo, o esquema que fai mención a estes
compoñentes. Tamén veñen indicadas nas follas de características do Arduino Leonardo as conexións de alimentación como son as dos pins 7 de tensión e 8 e 22 de masa que non aparecen no esquema, o 1 de reset, e os 20 e 21 de tensión.
Tamén se incluíu o díodo LED D1 coa resistencia en serie R11, ambos conectados ao pin 19 que corresponde co porto dixital 13 e que ten certas características coma a de parpadear no momento de cargar os programas, pero que tamén pode ser programado para que se ilumine cando sexa preciso.
Introduciuse un MINIPULSADOR conectado ao pin 6 corresponde co porto dixital 4.
Para a carga de programas utilízanse as conexións ARD1,2,3 e 4 correspondentes cos pins 18, 1, 19 e 17 respectivamente; estas conéctanse á placa Arduino Leonardo tal e como se explicará nunha próxima entrada. Con esta conexión, conectado a placa Arduino por USB ao ordenador é posible a carga dos programas no microcontrolador.
O bloque de terminais BLUE é a entrada do Módulo de Bluetooth JY-MCU, o cal ten que conectarse de forma que os seus pins cadren cos do esquema seguinte.

blue

Cabe mencionar que o porto RX do Atmega conéctase co porto TX do Bluetooth e o porto RX deste, co TX do Atmega.

Etapa dos sensores.

Esta etapa corresponde aos sensores situados no circuíto TOP. Estes son IR1,2,3 que corresponden con sensores de infravermellos SHARP 0A41SK, ademais de USA e USB, que son os sensores de ultrasóns HC-SR04. Todos estes funcionan cunha tensión de alimentación de 5V.

sensores

 

A continuación, unha simulación da placa deseñada seguida da placa real.

simtop

top

Para realizar esta placa deseñouse o fotolito seguinte:

Cara superior

pcbTopArriba

Cara Inferior

pcbTopAbaixo

MICROCONTROLADOR

O microcontrolador escollido é o Atmega 328-PU, o cal é o mesmo que emprega a placa Arduino Leonardo.

A linguaxe Arduino é open-source e o código fonte para o ambiente de Java publícase baixo licencia GPL e as bibliotecas C/C++ baixo a LGPL. En concreto, o micocontrolador Atmega 328-PU consume menos corrente que o seu irmán, o Atmega 328.

Este microcontrolador pode obterse de forma gratuita pedíndoo como mostra = sample na páxina de Atmel.

O microcontrolador precisa un circuíto auxiliar para funcionar a pleno rendemento.

 

atmega

O esquema anterior explica un circuíto básico para conectar o microcontrolador, pero para este robot deseñouse outro circuíto que se amosará na próxima entrada.

REPOSITORIO

Creouse o repositorio https://github.com/alexfilgueira/BotyBot onde se pode atopar o programa empregado no robot BotyBot.

Neste repositorio atópase o programa principal do robot ademais de programas empregados durante o desenvolvemento do mesmo. Estes programas presentanse de forma independente porque penso que poden ser útiles para realizar calquera tipo de aplicación.

Entre os programas mencionados atópanse algúns cos cales se poden controlar os sensores descritos neste artigo. Tamén hai programas para controlar motores e servomotores, programas nos que se implantan reguladores PID, ou outros empregados no manexo dun módulo Bluetooth.

O código está aloxado en GitHub que é unha forxa basada en GIT. Este permite realizar control de versións sobre o código empregado.

A páxina permite aloxar código gratuitamente, pero este ten que estar dispoñible publicamente. Se se require espazo para aloxamento privado é necesario realizar un pago.

SENSORES

A selección e a instalación dos distintos sensores no robot é unha das tareas máis complexas, xa que estes determinarán a capacidade de recoñecemento do entorno por parte do robot.

Empréganse 3 sensores distintos no robot, os cales se clasifícan en 2 grupos.

O primeiro grupo de sensores emprégase para detectar obstáculos a media-longa distancia. Os sensores escollidos neste grupo son:

Sensores de Infravermellos SHARP GP2D os cales teñen un rango de medida de entre 10 e 80 cm. Estes sensores aliméntanse a 5V. Constan de 3 cables, normalmente:

  • Vermello –> 5V (+)
  • Negro –> GND (-)
  • Branco –> Saída analóxica.

A saída analóxica pode conectarse directamente a unha entrada analóxica dun microcontrolador ou a unha tarxeta Arduino ou similar.

Na imaxen seguinte pode verse a gráfica ofrecida polo fabricante a cal indica a “suposta” distancia á que se atopa un obstáculo do sensor en función da tensión emitida por este. Digo “suposta” porque a tensión emitida por estes sensores varía enormemente en función do material do obxecto ou do ángulo no que reflicte o faz infravermello.

ImaxeNeste link pode accederse a 2 programas para Arduino que permiten traballar cos sensores SHARP.

O outro tipo de sensores empregados para detectar obstáculos a media-longa distancia son os de ultrasóns HC-SR04.

Estes sensores ofrecen un rango de medida entre 2 a 400 cm e precisan unha tensión de alimentación de 5V. A súa conexión é a través de 4 pins:

  • Vcc –> 5V (+)
  • Trig –> Saída dixital.
  • Echo –> Saída dixital.
  • GND –> GND (-)

Estos sensores, máis complexos que os anteriores, permiten, empregando as librerías correctas, obter a distancia ao obxeto sen ter que consular ningunha táboa.

Importante ter en conta a conexión dos pins Echo e Trig. No programa que se pode ver aquí, os pins aos que se conectan estes veñen definidos na líña:

Ultrasonic ultrasonic(6,7); //(Trigger pin,Echo pin)

No segundo grupo están os sensores empregados para seguir lineas no chan. Isto é preciso para realizar probas de robots segue-liñas.

Os sensores elixidos son os CNY-70. Estes teñen un rango de medida que varía entre 0 e 5 mm. Por isto teñen que ir situados moi preto da superficie a sensar. A súa alimentación é a 5V.

O seu conexionado pode ser o seguinte:

ImaxeCo circuíto mostrado na imaxen anterior, pode medirse nunha entrada analóxica dun microcontrolador a tensión ofrecida por este sensor.

  • Vcc –> 5V (+)
  • GND –> GND (-)
  • J1 –> Saída analóxica.

Con este programa pode medirse o valor de tensión a saída do sensor e evaluar que valor é o óptimo para diferenciar as liñas ou as marcas do resto da superficie.

Que a saída do sensor se lea de forma analóxica é unha mellora respecto a circuítos que ofrecen a saída dunha forma dixital, xa que os valores de cambio de cor poden regularse para cada circunstancia.

A IDEA

A IDEA principal do proxecto é a de deseñar e crear, isto é, construír, un robot móbil con certa capacidade autónoma.

Filtrando esta IDEA, chego á conclusión de que o que pretendo crear é un robot cuxa mobilidade dependa das RODAS.

O robot terá tracción DIFERENCIAL, ou o que é o mesmo, dúas rodas paralelas impulsadas por un motor independente cada unha, o que lles permite xirar no mesmo sentido ou en sentidos contrarios e coa mesma ou distintas velocidades.

A configuración será coma a dun TRICICLO, ou sexa, as dúas rodas motrices máis unha terceira roda que funcionará como punto de apoio situada a mesma distancia de cada roda pero desplazada do seu eixo. Utilizarase unha bóla coma roda loca para facer da terceira roda do triciclo.

Para ter capacidade autónoma precisa coñecer o mundo, o cal se intentará con sensores. Os aquí empregados serán sensores de INFRAVERMELLOS de media-longa distancia, outros de curta e sensores de ULTRASÓNS.

Aumentando a súa capacidade de toma de decisións, implementarase un software nun MICROCONTROLADOR. Poderiamos empregar circuitos analóxicos e portas lóxicas para este fin, pero a capacidade autónoma veríase moi mermada.

A autonomía será prestada por unha BATERÍA económica e con suficiente carga eléctrica para o correcto funcionamento do robot sen desatender a súa capacidade de almacenamento para prolongar o máximo a actividade do mesmo entre cargas.

Dotarase ao robot dun SISTEMA DE COMUNICACIÓN-1, 2, 3 de medio alcance, para poder interconectalo con distintas plataformas coma son un teléfono móbil, un portátil, unha tablet, etc.