สารบัญ:

TA-ZON-BOT (ผู้ติดตามไลน์): 3 ขั้นตอน (พร้อมรูปภาพ)
TA-ZON-BOT (ผู้ติดตามไลน์): 3 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: TA-ZON-BOT (ผู้ติดตามไลน์): 3 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: TA-ZON-BOT (ผู้ติดตามไลน์): 3 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: สอนใช้ Grid Bot ฟรี ตอนที่ 3 : วิธีสร้างบอทด้วย BitUniverse App 2024, กรกฎาคม
Anonim
TA-ZON-BOT (ผู้ติดตามไลน์)
TA-ZON-BOT (ผู้ติดตามไลน์)
TA-ZON-BOT (ผู้ติดตามไลน์)
TA-ZON-BOT (ผู้ติดตามไลน์)

TA-ZON-BOT

El tazón siguelineas

Hemos realizado este หุ่นยนต์ siguelineas con la ayuda de los nuestros alumnos, (gracias minimakers)

Ha sido un proyecto express para poder participar en la OSHWDEN de A Coruña

oshwdem.org/2017/06/oshwdem-2017/

ล่าม Google

TA-ZON-BOT

ชาม followline

เราได้ทำให้หุ่นยนต์ตัวนี้ติดตามคุณด้วยความช่วยเหลือของนักเรียนของเรา (ขอบคุณ minimakers)

เป็นโครงการด่วนที่จะเข้าร่วมใน OSHWDEN ของ A Coruña

oshwdem.org/2017/06/oshwdem-2017/

Google นักแปล

ขั้นตอนที่ 1: ขั้นตอนที่ 1: ส่วนประกอบ

ขั้นตอนที่ 1: ส่วนประกอบ
ขั้นตอนที่ 1: ส่วนประกอบ
ขั้นตอนที่ 1: ส่วนประกอบ
ขั้นตอนที่ 1: ส่วนประกอบ
ขั้นตอนที่ 1: ส่วนประกอบ
ขั้นตอนที่ 1: ส่วนประกอบ

Los component que hemos utilizados

ฮัน ซิโด ลอส ซิกิเอนเตส

Una pieza redonda de metacrilato (Podéis utilizar cualquier diseño, nuestra base mide lo justo para colocar el tazón bocabajo).

1 Tazón de desayuno (que sirve para concentrar al robot en la linea).

2 ruedas de un juguete reciclado.

2 motores con las siguientes especificaciones:

ลักษณะเฉพาะ (Para 6V):

ขนาด: 26 x 10 x 12 mm

อัตราส่วน de la reductora: 30:1

ขนาดเส้นผ่านศูนย์กลาง: 3mm (con ranura de bloqueo)

ชื่อ Voltaje: 6Vcc (puede funcionar entre 3 a 9Vcc)

Velocidad de giro บาปคาร์กา: 1000rpm

ค่าสินไหมทดแทนการบริโภค: 120mA (1600mA กับ carga)

แรงบิด: 0.6กก./ซม. (สูงสุด)

เปโซ: 10 กรัม

Enlace de tienda ออนไลน์:

1 แผ่น Arduino UNO (reciclada de un proyecto antiguo)

1 ชิลด์สำหรับมอเตอร์ Adafruit v2.3:

1 Un porta pilas de 8 pilas AAA(ไม่มีการใช้งาน 2 fuentes de alimentación).

6 tornillos และ tuercas para unir los elementos como se ve en la imagen

bridas para los motores, una goma elástica para sujetar el porta pilas y un trozo de una lamina de plásticos สำหรับฐาน เดล ปอร์ตา ปิลาส

1 อาร์เรย์เซ็นเซอร์ QTR-8RC กับ siguientes características;

ข้อมูลจำเพาะสำหรับอาร์เรย์เซ็นเซอร์สะท้อนแสง QTR-8x • ขนาด: 2.95" x 0.5" • แรงดันไฟฟ้าขณะทำงาน: 3.3-5.0 V • กระแสไฟจ่าย: 100 mA • รูปแบบเอาต์พุตสำหรับ QTR-8A: แรงดันอนาล็อก 8 ระดับตั้งแต่ 0 V ถึงแรงดันไฟที่จ่าย • รูปแบบเอาต์พุตสำหรับ QTR-8RC: 8 สัญญาณดิจิตอลที่รองรับ I/O ที่สามารถอ่านเป็นพัลส์สูงแบบตั้งเวลาได้ • ระยะการตรวจจับที่เหมาะสมที่สุด: 0.125" (3 มม.) • ระยะตรวจจับสูงสุดที่แนะนำสำหรับ QTR-8A: 0.25" (6 มม.) • ระยะการตรวจจับสูงสุดที่แนะนำสำหรับ QTR-8RC: 0.375" (9.5 มม.) • น้ำหนักเมื่อไม่มีหมุดส่วนหัว: 0.11 ออนซ์ (3.1 ก.) จำนวนเต็ม encontrar en:

tienda.bricogeek.com/componentes/257-array-…

Ensamblar todo … próximamente un vídeo más detallado…

ส่วนประกอบที่เราใช้มีดังต่อไปนี้

เมทาคริเลตชิ้นกลม (คุณสามารถใช้การออกแบบใดก็ได้ ฐานของเราวัดได้เพียงพอที่จะวางชามคว่ำลง)

1 ชามอาหารเช้า (ใช้ตั้งสมาธิให้หุ่นยนต์อยู่ในสาย)

2 ล้อของของเล่นรีไซเคิล

2 เครื่องยนต์ที่มีคุณสมบัติดังต่อไปนี้:

ข้อมูลจำเพาะ (สำหรับ 6V): ขนาด: 26 x 10 x 12 มม. อัตราส่วนของตัวลดขนาด: 30: 1 เส้นผ่านศูนย์กลางของเพลา: 3 มม. (พร้อมร่องล็อค) แรงดันไฟฟ้าที่กำหนด: 6Vdc (สามารถทำงานได้ระหว่าง 3 ถึง 9Vdc) ความเร็วในการหมุนโดยไม่ต้องโหลด: 1000rpm การบริโภค ขณะไม่มีโหลด: 120mA (รวมโหลด 1600mA) แรงบิด: 0.6กก. / ซม. (สูงสุด) น้ำหนัก: 10 กรัม

ลิงค์ร้านค้าออนไลน์:

1 บอร์ด Arduino UNO (รีไซเคิลจากโครงการเก่า)

1 ชิลด์สำหรับเครื่องยนต์ Adafruit v2.3:

1 ที่ใส่แบตเตอรี่ของแบตเตอรี่ AAA 8 ก้อน (เราไม่ใช้อุปกรณ์จ่ายไฟ 2 ตัว)

6 สกรูและน็อตเพื่อเข้าร่วมองค์ประกอบตามที่เห็นในภาพ

หน้าแปลนสำหรับมอเตอร์ ยางยืดสำหรับยึดที่ใส่แบตเตอรี่ และแผ่นพลาสติกสำหรับฐานที่ใส่แบตเตอรี่

เซ็นเซอร์ QTR-8RC จำนวน 1 ชุดที่มีคุณสมบัติดังต่อไปนี้

ข้อมูลจำเพาะสำหรับอาร์เรย์เซ็นเซอร์สะท้อนแสง QTR-8x • ขนาด: 2.95 "x 0.5" • แรงดันไฟฟ้าขณะทำงาน: 3.3-5.0 V • กระแสไฟจ่าย: 100 mA • รูปแบบเอาต์พุตสำหรับ QTR-8A: แรงดันอนาล็อก 8 ระดับตั้งแต่ 0 V ถึงแรงดันไฟฟ้าที่จ่ายให้ • รูปแบบเอาต์พุตสำหรับ QTR-8RC: 8 สัญญาณดิจิตอลที่รองรับ I / O ที่สามารถอ่านเป็นพัลส์สูงแบบตั้งเวลาได้ • ระยะการตรวจจับที่เหมาะสมที่สุด: 0.125 "(3 มม.) • ระยะตรวจจับสูงสุดที่แนะนำสำหรับ QTR-8A: 0.25" (6 มม.) • ระยะการตรวจจับสูงสุดที่แนะนำสำหรับ QTR-8RC: 0.375 "(9.5 มม.) • น้ำหนักเมื่อไม่มีหมุดส่วนหัว: 0.11 ออนซ์ (3.1 ก.) คุณสามารถค้นหาได้ใน:

tienda.bricogeek.com/componentes/257-array-de-sensores-infrarojos-qtr-8rc-digital.html

รวบรวมทุกอย่าง … เร็ว ๆ นี้วิดีโอรายละเอียดเพิ่มเติม …

ขั้นตอนที่ 2: ขั้นตอนที่ 2: Inspiracion

Para probar el funcionamiento del los

motores hemos seguido esta ayuda del blog www.programarfacil.com

programarfacil.com/blog/arduino-blog/adafr…

Es un resumen muy bueno de los diferentes motores que controla esta shield. ดำเนินการต่อ

Para calibrar el sensor QTR-8RC podéis seguir el กวดวิชา

Y un ultimo enlace que os puede ayudar es este สอนได้;

www.instructables.com/id/Arduino-based-lin…

เพื่อทดสอบประสิทธิภาพของเครื่องยนต์ เราได้ติดตามการสนับสนุนบล็อกนี้ www.programarfacil.com

programarfacil.com/blog/arduino-blog/adafruit-motor-shield-arduino/

เป็นการสรุปที่ดีมากของเอ็นจิ้นต่าง ๆ ที่เกราะนี้ควบคุม

ในการปรับเทียบเซ็นเซอร์ QTR-8RC คุณสามารถทำตามบทช่วยสอนของ

www.youtube.com/watch?v=_ZeybIDd80s&list=PLlNY7ygeCIzCuq0jSjPD8_LfcAsPKUcGL&index=6

และลิงค์สุดท้ายที่สามารถช่วยคุณได้คือคำแนะนำนี้

www.instructables.com/id/Arduino-based-line-follower-using-Pololu-QTR-8RC-l/

ขั้นตอนที่ 3: ขั้นตอนที่ 3: รหัส

Image
Image

las conexiones entre el array de

เซ็นเซอร์ y las placas ลาส ฮิซิโมส เด ลา ซิกิเอนเต มาเนรา:

El Led ON va al pin ดิจิตอล 12

Los 8 sensores ฟาน เดสเด เอล

หมายเลข 1 อัลพิน 8

ตัวเลข 2 อัลพิน 9

ตัวเลข 3 อัลพิน 2

ตัวเลข 4 อัลพิน 3

ตัวเลข 5 อัลพิน 4

ตัวเลข 6 อัลพิน 5

ตัวเลข 7 อัลพิน 6

ตัวเลข 8 อัลพิน 7

El código va sin repasarlo (se aceptan sugerencias)

#รวม

#รวม

#รวม

#รวม

// สร้างวัตถุป้องกันมอเตอร์ด้วยที่อยู่ I2C เริ่มต้น

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// หรือสร้างด้วยที่อยู่ I2C อื่น (พูดสำหรับการซ้อน)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// เลือกว่า 'พอร์ต' M1, M2, M3 หรือ M4 ใด ในกรณีนี้ M1

Adafruit_DCMotor *motor1 = AFMS.getMotor(1);

// คุณสามารถสร้างมอเตอร์อีกตัวบนพอร์ต M2

Adafruit_DCMotor *motor2 = AFMS.getMotor(2);

// เปลี่ยนค่าด้านล่างเพื่อให้เหมาะกับมอเตอร์ น้ำหนัก ประเภทของล้อ ฯลฯ ของหุ่นยนต์

#define KP.2

#กำหนด KD 5

#define M1_DEFAULT_SPEED 50

#define M2_DEFAULT_SPEED 50

#define M1_MAX_SPEED 70

#define M2_MAX_SPEED 70

#define MIDDLE_SENSOR 4

#define NUM_SENSORS 8 // จำนวนเซ็นเซอร์ที่ใช้

#define TIMEOUT 2500 // รอ 2500 เราเพื่อให้เอาต์พุตเซ็นเซอร์ลดต่ำลง

#define EMITTER_PIN 12 // อีซีแอลควบคุมโดยพินดิจิตอล 2

#define DEBUG 0 // ตั้งค่าเป็น 1 หากจำเป็นต้องใช้เอาต์พุตการดีบักแบบอนุกรม

QTRSensorsRC qtrrc((ถ่านที่ไม่ได้ลงนาม) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

ค่าเซ็นเซอร์ int ที่ไม่ได้ลงนาม[NUM_SENSORS];

การตั้งค่าเป็นโมฆะ ()

{

ล่าช้า (1000);

manual_calibration();

set_motors(0, 0);

}

int lastError = 0;

int last_proportional = 0;

อินทิกรัล int = 0;

วงเป็นโมฆะ ()

{

Serial.begin(9600); // ตั้งค่า Serial library ที่ 9600 bps

Serial.println("Adafruit Motorshield v2 - การทดสอบ DC Motor!");

AFMS.begin(); // สร้างด้วยความถี่เริ่มต้น 1.6KHz

//AFMS.begin(1000); // หรือด้วยความถี่อื่น ให้พูดว่า 1KHz

// ตั้งค่าความเร็วที่จะเริ่มต้นจาก 0 (ปิด) ถึง 255 (ความเร็วสูงสุด)

motor1->setSpeed(70);

motor1->run (ไปข้างหน้า);

// เปิดมอเตอร์

motor1->run(ปล่อย);

motor2->setSpeed(70);

motor2->วิ่ง(ไปข้างหน้า);

// เปิดมอเตอร์

motor2->run(ปล่อย);

เซ็นเซอร์ int ที่ไม่ได้ลงนาม[5];

ตำแหน่ง int = qtrrc.readLine(เซ็นเซอร์);

ข้อผิดพลาด int = ตำแหน่ง - 2000;

int motorSpeed = KP * ข้อผิดพลาด + KD * (ข้อผิดพลาด - LastError);

LastError = ข้อผิดพลาด;

int leftMotorSpeed = M1_DEFAULT_SPEED + ความเร็วมอเตอร์;

int rightMotorSpeed = M2_DEFAULT_SPEED - ความเร็วมอเตอร์;

// ตั้งค่าความเร็วมอเตอร์โดยใช้ตัวแปรความเร็วมอเตอร์สองตัวด้านบน

set_motors(leftMotorSpeed, rightMotorSpeed);

}

เป็นโมฆะ set_motors (int motor1speed, int motor2speed)

{

ถ้า (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; //จำกัดความเร็วสูงสุด

ถ้า (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; //จำกัดความเร็วสูงสุด

ถ้า (motor1speed < 0) motor1speed = 0; // ให้มอเตอร์อยู่เหนือ 0

ถ้า (motor2speed < 0) motor2speed = 0; // รักษาความเร็วมอเตอร์ให้สูงกว่า 0

motor1->setSpeed(มอเตอร์1ความเร็ว); // ตั้งค่าความเร็วมอเตอร์

motor2->setSpeed (มอเตอร์2ความเร็ว); // ตั้งค่าความเร็วมอเตอร์

motor1->run (ไปข้างหน้า);

motor2->วิ่ง(ไปข้างหน้า);

}

เป็นโมฆะ manual_calibration () {

int ฉัน;

สำหรับ (i = 0; i < 250; i++) // การสอบเทียบจะใช้เวลาสักครู่

{

qtrrc.calibrate(QTR_EMITTERS_ON);

ล่าช้า (20);

}

if (DEBUG) { // ถ้าเป็นจริง ให้สร้างข้อมูลเซ็นเซอร์ผ่าน Serial output

Serial.begin(9600);

สำหรับ (int i = 0; i < NUM_SENSORS; i++)

{

Serial.print(qtrrc.calibratedMinimumOn); อนุกรม.print(qtrrc.calibratedMinimumOn);

Serial.print(' ');

}

Serial.println();

สำหรับ (int i = 0; i < NUM_SENSORS; i++)

{

Serial.print(qtrrc.calibratedMaximumOn);

Serial.print(' ');

}

Serial.println();

Serial.println();

}

}

Bueno a ver que tal se nos da este proyecto “express” en la competición del OSHWDEM

แนะนำ: