2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
TA-ZON-BOT
El tazón siguelineas
Hemos realizado este robot siguelineas con la ayuda de los nuestros alumnos, (gracias minimakers).
Ha sido un proyecto express para poder participant en la OSHWDEN de A Coruña.
oshwdem.org/2017/06/oshwdem-2017/
traductor google
TA-ZON-BOT
Linja vijuese e tasit
Ne e kemi bërë këtë robot duke ju ndjekur me ndihmën e studentëve tanë, (faleminderit prodhuesit minimal).
Ka qenë një projekt i shpejtë për të marrë pjesë në OSHWDEN të A Coruña.
oshwdem.org/2017/06/oshwdem-2017/
perkthyesi i Google
Hapi 1: Hapi 1: Komponentët
Los componentes que hemos utilizados
han sido los siguientes.
Una pieza redonda de metacrilato..
1 Tazón de desayuno (që është para koncentratorit të robotit në linjë).
2 ruedas de un juguete reciclado.
2 motore con las siguientes especificaciones:
Especificaciones (Para 6V):
Përmasat: 26 x 10 x 12 mm
Raporti i reduktimit: 30: 1
Diámetro del eje: 3mm (con ranura de bloqueo)
Voltaje nominale: 6Vcc (puede funcionar entre 3 a 9Vcc)
Shpejtësia e ngarkesës së ngarkesës: 1000rpm
Ngarkesa e konsumit të mëkatit: 120mA (1600mA e ngarkuar)
Çift rrotullues: 0.6kg/cm (max)
Peso: 10 gram
Enlace de tienda online:
1 placa Arduino UNO (reciclada de un proyecto antiguo)
1 mburojë për motorët Adafruit v2.3:
1 Un porta pilas nga 8 pila AAA (pa përdorim 2 ushqime të ushqimit).
6 tornillos y 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 para la base del porta pilas.
1 array de sensores QTR-8RC con las siguientes Karakteristikat;
Specifikimet për grupin e sensorit të reflektimit QTR-8x • Përmasat: 2.95 "x 0.5" • Tensioni i funksionimit: 3.3-5.0 V • Rryma e furnizimit: 100 mA • Formati i daljes për QTR-8A: 8 tensione analoge që variojnë nga 0 V në tensionin e furnizuar • Formati i daljes për QTR-8RC: 8 sinjale dixhitale të pajtueshme me I/O që mund të lexohen si një impuls i lartë i caktuar me kohë • Distanca optimale e ndijimit: 0.125 "(3 mm) • Distanca maksimale e rekomanduar e ndijimit për QTR-8A: 0.25" (6 mm) • Distanca maksimale e rekomanduar e ndijimit për QTR-8RC: 0.375 "(9.5 mm) • Pesha pa kunjat e kokës: 0.11 oz (3.1 g) Lo podéis encontrar en:
tienda.bricogeek.com/componentes/257-array-…
Ensamblar todo… próximamente un vídeo más detallado…
Komponentët që kemi përdorur kanë qenë më poshtë.
Një pjesë e rrumbullakët e metakrilatit. (Ju mund të përdorni çdo dizajn, masat tona bazë mjaftojnë për ta vendosur tasin me kokë poshtë).
1 tas për mëngjes (përdoret për të përqendruar robotin në linjë).
2 rrota të një lodre të ricikluar.
2 motorë me specifikimet e mëposhtme:
Specifikimet (Për 6V): Përmasat: 26 x 10 x 12 mm Raporti i zvogëluesit: 30: 1 Diametri i boshtit: 3mm (me brazdë mbyllëse) Tensioni nominal: 6Vdc (mund të funksionojë midis 3 deri në 9Vdc) Shpejtësia e kthesës pa ngarkesë: 1000rpm Konsumi pa ngarkesë: 120mA (1600mA me ngarkesë) Çift rrotullues: 0.6kg / cm (max) Pesha: 10 gram
Lidhja e dyqanit online:
1 bord Arduino UNO (i ricikluar nga një projekt i vjetër)
1 mburojë për motorët Adafruit v2.3:
1 Një mbajtës i baterisë me 8 bateri AAA (ne nuk përdorim 2 furnizime me energji elektrike).
6 vida dhe arra për t'u bashkuar me elementët siç shihet në imazh
fllanxha për motorët, një gome elastike për të mbajtur mbajtësen e baterisë dhe një copë një fletë plastike për bazën e mbajtësit të baterisë.
1 grup sensorë QTR-8RC me karakteristikat e mëposhtme;
Specifikimet për grupin e sensorit të reflektimit QTR-8x • Përmasat: 2.95 "x 0.5" • Tensioni i funksionimit: 3.3-5.0 V • Rryma e furnizimit: 100 mA • Formati i daljes për QTR-8A: 8 tensione analoge që variojnë nga 0 V në tensionin e furnizuar • Formati i daljes për QTR-8RC: 8 sinjale dixhitale të pajtueshme me I / O që mund të lexohen si një impuls i lartë i caktuar me kohë • Distanca optimale e ndijimit: 0.125 "(3 mm) • Distanca maksimale e rekomanduar e ndijimit për QTR-8A: 0.25" (6 mm) • Distanca maksimale e rekomanduar e ndijimit për QTR-8RC: 0.375 "(9.5 mm) • Pesha pa kunjat e kokës: 0.11 oz (3.1 g) Mund ta gjeni në:
tienda.bricogeek.com/componentes/257-array-de-sensores-infrarojos-qtr-8rc-digital.html
Mblidhni gjithçka … së shpejti një video më të detajuar …
Hapi 2: Hapi 2: Frymëzimi
Para probar el funcionamiento del los
motores hemos seguido esta ayuda del blog www.programarfacil.com
programarfacil.com/blog/arduino-blog/adafr…
Ju mund të rifilloni një lëvizje të ndryshme të motorëve që mbrojnë mburojën.
Për kalibrin e sensorit QTR-8RC ju mund të përdorni një tutorial
Y un ultimo enlace que os puede ayudar es este udhëzues;
www.instructables.com/id/Arduino-based-lin…
Për të testuar performancën e motorëve ne kemi ndjekur këtë mbështetje në blog www.programarfacil.com
programarfacil.com/blog/arduino-blog/adafruit-motor-shield-arduino/
Shtë një përmbledhje shumë e mirë e motorëve të ndryshëm që kontrollon kjo mburojë.
Për të kalibruar sensorin QTR-8RC mund të ndiqni mësimin e
www.youtube.com/watch?v=_ZeybIDd80s&list=PLlNY7ygeCIzCuq0jSjPD8_LfcAsPKUcGL&index=6
Dhe një lidhje e fundit që mund t'ju ndihmojë është kjo e udhëzueshme;
www.instructables.com/id/Arduino-based-line-follower-using-Pololu-QTR-8RC-l/
Hapi 3: Hapi 3: Kodi
las conexiones entre el array de
sensores y las placas las hicimos de la siguiente manera:
El Led ON va al pin dixhitale 12
Los 8 sensores van desde el
número 1 al pin 8
numër 2 në pin 9
numër 3 në pin 2
numër 4 në pin 3
numër 5 në pin 4
numër 6 në pin 5
número 7 në pin 6
número 8 në pin 7
El código va sin repasarlo (se aceptan sugerencias)
#përfshi
#përfshi
#përfshi
#përfshi
// Krijoni objektin e mburojës motorike me adresën e paracaktuar I2C
Adafruit_MotorShield AFMS = Adafruit_MotorShield ();
// Ose, krijojeni atë me një adresë të ndryshme I2C (thoni për grumbullimin)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);
// Zgjidhni cilin 'port' M1, M2, M3 ose M4. Në këtë rast, M1
Adafruit_DCMotor *motor1 = AFMS.getMotor (1);
// Ju gjithashtu mund të bëni një motor tjetër në portin M2
Adafruit_DCMotor *motor2 = AFMS.getMotor (2);
// Ndryshoni vlerat e mëposhtme për t'iu përshtatur motorëve të robotit tuaj, peshës, llojit të rrotës, etj.
#përcakto PK.2
#përcakto KD 5
#përcakto M1_DEFAULT_SPEED 50
#përcakto M2_DEFAULT_SPEED 50
#përcakto M1_MAX_SPEED 70
#përcakto M2_MAX_SPEED 70
#përcaktoSIDENSIN_MES MIDDLE 4
#përcakto NUM_SENSORS 8 // numri i sensorëve të përdorur
#define TIMEOUT 2500 // na pret 2500 që daljet e sensorit të ulen
#define EMITTER_PIN 12 // emetuesi kontrollohet nga kunja dixhitale 2
#define DEBUG 0 // vendoseni në 1 nëse nevojitet dalje serike e korrigjimit
QTRSensorsRC qtrrc ((shenja pa shenjë ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, KOHA, EMITTER_PIN);
sensori int i pa firmosur Vlerat [NUM_SENSORS];
void setup ()
{
vonesa (1000);
manual_kalibrimi ();
set_motors (0, 0);
}
int lastError = 0;
int last_proportional = 0;
int integral = 0;
lak void ()
{
Serial.filloj (9600); // vendosni bibliotekën serike në 9600 bps
Serial.println ("Adafruit Motorshield v2 - Test Motor DC!");
AFMS.filloj (); // krijoni me frekuencën e paracaktuar 1.6KHz
//AFMS.filloj (1000); // OSE me një frekuencë të ndryshme, të themi 1KHz
// Vendosni shpejtësinë për të filluar, nga 0 (fikur) në 255 (shpejtësia maksimale)
motor1-> setSpeed (70);
motor1-> vrapim (PARA);
// ndizni motorin
motor1-> vrapim (LIRIM);
motor2-> setSpeed (70);
motor2-> vrapim (PARA);
// ndizni motorin
motor2-> vrapim (LIRIM);
sensorë int të panënshkruar [5];
int pozicion = qtrrc.readLine (sensorë);
gabimi int = pozicioni - 2000;
int motorSpeed = KP * gabim + KD * (gabim - lastError);
lastError = gabim;
int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;
int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;
// vendosni shpejtësitë e motorit duke përdorur dy ndryshoret e shpejtësisë së motorit më lart
set_motors (leftMotorSpeed, rightMotorSpeed);
}
void set_motors (int motor1speed, int motor2speed)
{
nëse (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // kufizoni shpejtësinë maksimale
nëse (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // kufizoni shpejtësinë maksimale
nëse (motor1speed <0) motor1speed = 0; // mbajeni motorin mbi 0
nëse (motor2speed <0) motor2speed = 0; // mbani shpejtësinë e motorit mbi 0
motor1-> setSpeed (motor1speed); // vendosni shpejtësinë e motorit
motor2-> setSpeed (motor2speed); // vendosni shpejtësinë e motorit
motor1-> vrapim (PARA);
motor2-> vrapim (PARA);
}
void manual_calibration () {
int i;
për (i = 0; i <250; i ++) // kalibrimi do të marrë disa sekonda
{
qtrrc.kalibroni (QTR_EMITTERS_ON);
vonesa (20);
}
nëse (DEBUG) {// nëse është e vërtetë, gjeneroni të dhëna të sensorit përmes daljes serike
Serial.filloj (9600);
për (int i = 0; i <NUM_SENSORS; i ++)
{
Serial.print (qtrrc.kalibruarMinimumOn );
Serial.print ('');
}
Serial.println ();
për (int i = 0; i <NUM_SENSORS; i ++)
{
Serial.print (qtrrc.kalibruarMaksimumOn );
Serial.print ('');
}
Serial.println ();
Serial.println ();
}
}
Bueno a ver que tal se nos da este proyecto "express" en la competición del OSHWDEM.