2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
TA-ZON-BOT
El tazón siguelineas
Hemos realizated this robot siguelineas with the help of our our students, (gracias minimakers).
Ha sido un proyecto express para poder participa la OSHWDEN de A Coruña.
oshwdem.org/2017/06/oshwdem-2017/
traducator Google
TA-ZON-BOT
Castronul urmează linia
Am făcut ca acest robot să vă urmărească cu ajutorul studenților noștri (mulțumesc creatorilor).
A fost un proiect expres să particip la OSHWDEN din A Coruña.
oshwdem.org/2017/06/oshwdem-2017/
Google Traducere
Pasul 1: Pasul 1: Componente
Los componentes que hemos utilizados
han sido los siguientes.
Una pieza redonda de metacrilat. (Podéis use any design, nuestra base mide lo justo para colocar el tazón bocabajo).
1 Tazón de desayuno (care sirve pentru concentrarea robotului în linie).
2 ruedas de un juguete reciclado.
2 motoare cu următoarele specificații:
Specificații (Para 6V):
Dimensiuni: 26 x 10 x 12 mm
Raportul reducerii: 30: 1
Diámetro del eje: 3mm (cu ranura de bloco)
Voltaj nominal: 6Vcc (poate funcționa între 3 și 9Vcc)
Viteza de gir fără încărcare: 1000rpm
Consum fără încărcare: 120mA (1600mA cu încărcare)
Cuplu: 0,6 kg / cm (max)
Peso: 10 gramos
Enlace de tienda online:
1 placa Arduino UNO (reciclată de un proiect vechi)
1 scut pentru motoare Adafruit v2.3:
1 Un porta pilas de 8 pilas AAA (no utilizamos 2 fuentes de alimentación).
6 tornillos y tuercas para unir los elementos como se ve en la imagen
bridas pentru motori, o goma elástica pentru subiectul portii pilas si un trozo de o lamina de plastici pentru baza bazei portilor pilas.
1 matrice de senzori QTR-8RC cu următoarele caracteristici;
Specificații pentru matricea senzorului de reflexie QTR-8x • Dimensiuni: 2,95 "x 0,5" • Tensiune de funcționare: 3,3-5,0 V • Curent de alimentare: 100 mA • Format de ieșire pentru QTR-8A: 8 tensiuni analogice variind de la 0 V la tensiunea furnizată • Format de ieșire pentru QTR-8RC: 8 semnale digitale compatibile I / O care pot fi citite ca un impuls înalt temporizat • Distanță de detectare optimă: 0,125 "(3 mm) • Distanță maximă de detectare recomandată pentru QTR-8A: 0,25" (6 mm) • Distanța maximă de detectare recomandată pentru QTR-8RC: 0,375 "(9,5 mm) • Greutate fără știfturi de antet: 3,1 g (0,11 oz)
tienda.bricogeek.com/componentes/257-array-…
Adunați totul … în prealabil un videoclip mai detaliat …
Componentele pe care le-am folosit au fost următoarele.
O bucată rotundă de metacrilat. (Puteți utiliza orice design, baza noastră măsoară suficient cât să plasați bolul cu capul în jos).
1 castron pentru micul dejun (folosit pentru a concentra robotul pe linie).
2 roți ale unei jucării reciclate.
2 motoare cu următoarele specificații:
Specificații (pentru 6V): Dimensiuni: 26 x 10 x 12 mm Raportul reductorului: 30: 1 Diametru ax: 3mm (cu șanț de blocare) Tensiune nominală: 6Vdc (poate funcționa între 3 și 9Vdc) Viteza de virare fără sarcină: 1000rpm Consum fără sarcină: 120mA (1600mA cu sarcină) Cuplu: 0,6 kg / cm (max) Greutate: 10 grame
Link magazin online:
1 placa Arduino UNO (reciclată dintr-un proiect vechi)
1 scut pentru motoarele Adafruit v2.3:
1 Un suport pentru baterii de 8 baterii AAA (nu folosim 2 surse de alimentare).
6 șuruburi și piulițe pentru a uni elementele așa cum se vede în imagine
flanșe pentru motoare, un cauciuc elastic pentru a ține suportul bateriei și o bucată dintr-o foaie de plastic pentru baza suportului bateriei.
1 gamă de senzori QTR-8RC cu următoarele caracteristici;
Specificații pentru matricea senzorului de reflexie QTR-8x • Dimensiuni: 2,95 "x 0,5" • Tensiune de funcționare: 3,3-5,0 V • Curent de alimentare: 100 mA • Format de ieșire pentru QTR-8A: 8 tensiuni analogice variind de la 0 V la tensiunea furnizată • Format de ieșire pentru QTR-8RC: 8 semnale digitale I / O compatibile, care pot fi citite ca un impuls înalt temporizat • Distanță de detectare optimă: 0,125 "(3 mm) • Distanță maximă de detectare recomandată pentru QTR-8A: 0,25" (6 mm) • Distanța maximă de detectare recomandată pentru QTR-8RC: 0,375 "(9,5 mm) • Greutate fără știfturi antet: 3,1 g (0,11 oz) O puteți găsi în:
tienda.bricogeek.com/componentes/257-array-de-sensores-infrarojos-qtr-8rc-digital.html
Asamblați totul … în curând un videoclip mai detaliat …
Pasul 2: Pasul 2: Inspirație
Pentru probarea funcționării del
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.
Pentru calibrarea senzorului QTR-8RC se poate urmări tutorialul
Y un ultimo enlace that os can help is este instructable;
www.instructables.com/id/Arduino-based-lin…
Pentru a testa performanța motoarelor, am urmărit acest suport de blog www.programarfacil.com
programarfacil.com/blog/arduino-blog/adafruit-motor-shield-arduino/
Este un rezumat foarte bun al diferitelor motoare pe care le controlează acest scut.
Pentru a calibra senzorul QTR-8RC puteți urma tutorialul
www.youtube.com/watch?v=_ZeybIDd80s&list=PLlNY7ygeCIzCuq0jSjPD8_LfcAsPKUcGL&index=6
Și un ultim link care vă poate ajuta este acest lucru instructiv;
www.instructables.com/id/Arduino-based-line-follower-using-Pololu-QTR-8RC-l/
Pasul 3: Pasul 3: Cod
las conexiuni intre el array de
senzorii și plăcile la următorul mod:
El Led ON va al pin digital 12
Los 8 sensores van de el
numărul 1 la pinul 8
numărul 2 la pinul 9
numărul 3 la pinul 2
numărul 4 la pinul 3
numărul 5 la pinul 4
numărul 6 la pinul 5
numărul 7 la pinul 6
numărul 8 la pinul 7
El code va sin repasarlo (se acceptă sugerențe)
#include
#include
#include
#include
// Creați obiectul ecranului motorului cu adresa I2C implicită
Adafruit_MotorShield AFMS = Adafruit_MotorShield ();
// Sau, creați-o cu o altă adresă I2C (să zicem pentru stivuire)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);
// Selectați „portul” M1, M2, M3 sau M4. În acest caz, M1
Adafruit_DCMotor * motor1 = AFMS.getMotor (1);
// De asemenea, puteți face un alt motor pe portul M2
Adafruit_DCMotor * motor2 = AFMS.getMotor (2);
// Schimbați valorile de mai jos pentru a se potrivi cu motoarele robotului, greutatea, tipul de roată etc.
#define KP.2
#define 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 // numărul de senzori utilizați
#define TIMEOUT 2500 // ne așteaptă la 2500 pentru ca ieșirile senzorului să scadă
#define EMITTER_PIN 12 // emițătorul este controlat de pinul digital 2
#define DEBUG 0 // setat la 1 dacă este necesară o ieșire de depanare serială
QTRSensorsRC qtrrc ((unsigned char ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int senzorValori [NUM_SENSORS];
configurare nulă ()
{
întârziere (1000);
manual_calibration ();
set_motors (0, 0);
}
int lastError = 0;
int last_proportional = 0;
int integral = 0;
bucla nulă ()
{
Serial.begin (9600); // configurați biblioteca serial la 9600 bps
Serial.println ("Adafruit Motorshield v2 - Test motor DC!");
AFMS.begin (); // creați cu frecvența implicită 1.6KHz
//AFMS.begin(1000); // SAU cu o frecvență diferită, să zicem 1KHz
// Setați viteza de pornire, de la 0 (oprit) la 255 (viteză maximă)
motor1-> setSpeed (70);
motor1-> rulează (ÎNAINTE);
// porniți motorul
motor1-> rulați (ELIBERAȚI);
motor2-> setSpeed (70);
motor2-> rulează (ÎNAINTE);
// porniți motorul
motor2-> rulați (ELIBERAȚI);
senzori int nesemnați [5];
int position = qtrrc.readLine (senzori);
int eroare = poziție - 2000;
int motorSpeed = KP * error + KD * (error - lastError);
lastError = eroare;
int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;
int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;
// setați turațiile motorului utilizând cele două variabile de turație ale motorului de mai sus
set_motors (leftMotorSpeed, rightMotorSpeed);
}
void set_motors (int motor1speed, int motor2speed)
{
if (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // limitează viteza maximă
if (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // limitează viteza maximă
if (motor1speed <0) motor1speed = 0; // mențineți motorul peste 0
if (motor2speed <0) motor2speed = 0; // mențineți viteza motorului peste 0
motor1-> setSpeed (motor1speed); // setați turația motorului
motor2-> setSpeed (motor2speed); // setați turația motorului
motor1-> rulează (ÎNAINTE);
motor2-> rulează (ÎNAINTE);
}
void manual_calibration () {
int i;
pentru (i = 0; i <250; i ++) // calibrarea va dura câteva secunde
{
qtrrc.calibrate (QTR_EMITTERS_ON);
întârziere (20);
}
dacă (DEBUG) {// dacă este adevărat, generați datele senzorului prin ieșire serială
Serial.begin (9600);
for (int i = 0; i <NUM_SENSORS; i ++)
{
Serial.print (qtrrc.calibratedMinimumOn );
Serial.print ('');
}
Serial.println ();
for (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 this project “express” in the competition of OSHWDEM.