Tapatio Line Follower Kit

$999.00

Este robot Seguidor de Línea no solo te permitirá destacar en las competencias, sino que también te brindará la oportunidad de experimentar, aprender y mejorar continuamente tu diseño y tus habilidades en robótica avanzada.

SKU: Tapatio-Line-Follower-Kit Categorías: , Etiquetas: , , , ,

El Robot Line Follower Profesional de Tapatio Electronics ha sido diseñado para quienes buscan un rendimiento excepcional y un control total en cada carrera. Este robot está pensado para los competidores más exigentes, con un conjunto de características avanzadas que lo hacen destacar en torneos y proyectos educativos de alto nivel.

Una de sus principales ventajas es la pantalla OLED de 128×32 pixeles, que te permite ver en tiempo real los valores del controlador PID (Proporcional, Integral y Derivativo), una función crucial para ajustar la respuesta del robot al seguir la línea. Lo innovador de este sistema es que los parámetros del PID pueden ser ajustados mediante potenciómetros de precisión, lo que evita la necesidad de reprogramar el robot cada vez que cambies los valores. Esto te da una flexibilidad enorme para optimizar tu robot en la pista, haciendo ajustes rápidos y efectivos entre rondas, sin perder tiempo con cambios de software.

El control de los motores está a cargo de un Arduino Nano combinado con el confiable driver de motores TB6612FNG, que permite un control eficiente y preciso de los motores N20 de 3000 RPM (tipo Pololu). Estos motores proporcionan una velocidad impresionante, mientras mantienen la capacidad de respuesta necesaria para maniobras delicadas, como en curvas cerradas o aceleraciones rápidas en tramos rectos.

El robot cuenta con la potente Tapatio Sensor Bar, equipada con 16 sensores que proporcionan una lectura extremadamente detallada de la pista. Gracias a este sistema de sensores de alta precisión, el robot es capaz de detectar y seguir la línea con gran exactitud, incluso en condiciones difíciles como líneas muy delgadas o circuitos con múltiples curvas y bifurcaciones. Este nivel de sensibilidad permite que el robot tome decisiones rápidas y ajuste su trayectoria sin errores, manteniéndose siempre centrado en la línea.

Además de su rendimiento técnico, el robot tiene un diseño compacto y ligero, optimizado para minimizar la resistencia y maximizar la velocidad en competencia. Con su robusta estructura y componentes de alta calidad, este robot está preparado para enfrentarse a los desafíos más difíciles de las competiciones de seguidores de línea.

 

INCLUYE

  • 1 Barra multiplexada de 16 sensores infrarrojos (Marca Tapatio)
  • 1 Cable plano conectar la barra
  • 2 Brazos extensores para sujetar al chasis (Marca Tapatio)
  • 1 Arduino Nano
  • 1 Driver TB6612fng
  • 1 Display Oled de 128×32 pixeles
  • 2 Motores N20 de 3000 rpm. (relación 10:1)
  • 2 Brackets para motor N20 (Tapatio)
  • 4 Potenciómetros para ajuste del PID
  • 1 Botón (Start/Stop)
  • 1 Botón Micro switch (Encender/Apagar)
  • 2 Rines Ligeros Impresos en 3D
  • 2 Llantas de caucho de silicona con excelente agarre
  • 1 base porta batería
  • Tornillería necesaria para sujetar las partes

 

NOTA:

La batería se vende por separado, ya que depende del tipo de competencia (persecución, velocista, etc).

PROGRAMACIÓN

Tenemos disponible para ti el código para que lo configures a tu gusto, para poder usarlo primero debes tener la librería Tapatio Eletronics para Arduino, te invitamos a descargarla de la siguiente manera si aún no la tienes:

  1. Ingresa a la aplicación Arduino
  2. En el apartado de librerías escribe «TapatioElectronics»
  3. Instala la versión mas reciente

Al tener instalada la librería Tapatio Electronics, utiliza el siguiente código para subir al microcontrolador. Este paso no es necesario si adquiriste el kit completo, pues ya esta cargado en el Arduino Nano, sin embargo, si requieres reprogramarlo o personalizarlo, aquí tienes el código.

/*
Código para el Seguidor de Línea Profesional Marca Tapatio Electrónics
Created by: Miguel Angel Delgado Lopez / Brandon Daniel Malagon Rodríguez
Contact: miguel.delgado.lop@gmail.com / luk.malagon@gmailcom
Company: Tapatio Electronics
Date: June 2024
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include «TapatioElectronics.h»
//———————————–SENSOR VARS——————————————
int numSensores=16;
SensorBar16 sb(12,11,10,8,A2); //(S0,S1,S2,S3,OUT)
//———————————–POTS VARS——————————————
int pots[]={A7,A6,A1,A0};
//———————————–MOTOR VARS——————————————
int pwma = 3;
int ain2 = 5;
int ain1 = 4;
int bin1 = 6;
int bin2 = 7;
int pwmb = 9;
int vel=40;
int veladelante=110;//VELOCIDAD DEL FRENO DIRECCIÓN ADELANTE
int velatras=80;//VELOCIDAD DEL FRENO DIRECCIÓN ATRÁS
int limiteFreno=200;
//———————————–PID VARS——————————————
float kp=.3;
float ki=0.000001;
float kd=0;
float P,I,D;
int error =0;
int errorAnterior=0;
//———————————–BUTTON&BATTERY VARS——————————————
boolean start = false;
long time=0;
#define batt A3
#define boton 2
int lipo = 2;
//———————————–SCREEN VARS—————————————————
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128×64, 0x3C for 128×32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
String cad;
void setup() {
//set timer 2 divisor to 32 for PWM frequency of 980.39 Hz
TCCR1B = TCCR1B & B11111000 | B00000011; // D9 y D10 PINS
TCCR2B = TCCR2B & B11111000 | B00000011; // D3 y D11 PINS
Serial.begin(115200);
pinMode(LED_BUILTIN,OUTPUT);
//———————————–SCREEN——————————————
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
display.display();
delay(500);
display.clearDisplay();
display.setTextSize(1); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
//———————————–DRIVER TB6612——————————————
pinMode(pwma,OUTPUT);
pinMode(ain2,OUTPUT);
pinMode(ain1,OUTPUT);
pinMode(bin1,OUTPUT);
pinMode(bin2,OUTPUT);
pinMode(pwmb,OUTPUT);
//———————————–POTENCIOMETROS——————————————
for(int x=0;x<4;x++){
pinMode(pots[x],INPUT);
}
//——————————————–BOTON——————————————
pinMode(boton,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(boton), inerrupcion, FALLING);
//—————————————–BATERIA——————————————
pinMode(batt,INPUT);
display.setCursor(10,15);
display.print(«C A L I B R A N D O»);
display.display();
//white black white cycles through each sensor to set the detection thresholdby,
sb.calibrate(); //default the process is done 800 times, but you can specify the value you need
//inside the parentheses
velocidad(0,0);
time=millis();
}
void loop() {
if(!start){
pantalla();
velocidad(0,0);
comenzar(3); //Tiempo de espera al presionar el boton de inicio
}else{
error=sb.getPosition(255); // Will return the position in the range of -255 to 255 or a negative out of range if no line is detected
P=error;
if(P>-100&&P<100){
I=(I+error);
}else{
I=0;
}
D=error-errorAnterior;
errorAnterior=error;
float pid=(kp*P)+(ki*I)+(kd*D);
velocidad(vel+pid,vel-pid);
frenos(P);
}
}
void frenos(int pos){
if(pos>=limiteFreno){
velocidad(veladelante, -velatras);
}
if(pos<=-limiteFreno){
velocidad(-velatras, veladelante);
}
}
void velocidad(int izq, int der){
if(izq>255){
izq=255;
}
if(der>255){
der=255;
}
if(izq<-255){
izq=-255;
}
if(der<-255){
der=-255;
}
if(izq>=0){
digitalWrite(ain2, HIGH);
digitalWrite(ain1, LOW);
}else{
digitalWrite(ain2, LOW);
digitalWrite(ain1, HIGH);
izq=abs(izq);
}
if(der>=0){
digitalWrite(bin2, HIGH);
digitalWrite(bin1, LOW);
}else{
digitalWrite(bin2, LOW);
digitalWrite(bin1, HIGH);
der=abs(der);
}
analogWrite(pwma,izq);
analogWrite(pwmb,der);
}
void pantalla(){
String cad=»»;
int* valores=sb.digitalValues(); //Call the method to read values
for(int x=0;x<numSensores;x++){
cad+=valores[x]!=0?»0″:»_»;
}
display.clearDisplay();
display.setCursor(0, 0);
display.print(» P = «);
int p1=analogRead(pots[0]);
p1=map(p1,0,1024,0,2550);
kp=p1/100.0;
display.println(kp);
display.setCursor(60, 0);
display.print(» I = «);
int p2=analogRead(pots[1]);
p2=map(p2,0,1024,0,2500);
ki=(p2*.001);
display.println(ki);
display.setCursor(0, 10);
display.print(» D = «);
int p3=analogRead(pots[2]);
p3=map(p3,0,1024,0,2550);
kd=p3/100.0;
display.println(kd);
display.setCursor(60, 10);
display.print(» V = «);
int p4=analogRead(pots[3]);
vel=map(p4,0,1024,0,255);
display.println(vel);
display.setCursor(0, 25);
display.print(cad);
display.fillRect(121,6,3,2,SSD1306_WHITE);//top
display.drawLine(117,8,127,8,SSD1306_WHITE);//up
display.drawLine(117,30,127,30,SSD1306_WHITE);//bottom
display.drawLine(117,8,117,30,SSD1306_WHITE);//right
display.drawLine(127,8,127,30,SSD1306_WHITE);//left
display.setTextColor(SSD1306_WHITE, SSD1306_BLACK);
int b=analogRead(batt);
float bd=(b*.0048)*2.66;
float bp=(bd*100);
if(lipo==2){
bp=bp/8.4;
}else{
bp=bp/12.6;
}
if(bp>80)display.fillRect(119,26,7,3,SSD1306_WHITE);
if(bp>84)display.fillRect(119,22,7,3,SSD1306_WHITE);
if(bp>88)display.fillRect(119,18,7,3,SSD1306_WHITE);
if(bp>92)display.fillRect(119,14,7,3,SSD1306_WHITE);
if(bp>96)display.fillRect(119,10,7,3,SSD1306_WHITE);
display.print(bd,1);
display.display();
}
void comenzar(int r){
r=r>0?r:5;
if(start){
for(int x=r;x>0;x–){
display.clearDisplay();
display.setCursor(25,10);
display.print(«INICIANDO EN «);
display.setCursor(60,20);
display.print(x);
display.display();
delay(1000);
}
display.clearDisplay();
display.setCursor(15,15);
display.print(«C O R R I E N D O»);
display.display();
}
}
void inerrupcion(){
if(millis()>time+250){
start=!start;
time=millis();
}
}

Puedes descargar el código en el siguiente Link: ProfessionalLineFollower


Valoraciones

No hay valoraciones aún.

Sé el primero en valorar “Tapatio Line Follower Kit”

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te recomendamos…