You are on page 1of 14

Wall-e

Pasiunea mea robotica


Elevi: Călugăru George Răzvan şi Zabet
Radu George
Colegiul Tehnic Costin D Neniţescu Piteşti
Prof. îndrumători: Neamţu Viorel, Bostan
Elena, Neagoe Irina, Gheorghe Ionuţ
Consideraţii generale
O Totul a inceput in momentul in care de la şcoala ni s-a spus
despre un concurs de robotică, organizat de Universitatea din
Piteşti.
O Complicat, la prima vedere, cursuri din două in două
saptamani, pregătire teoretica multă;
O După cursuri în sfârsit am primit şi robotul. Prima provocare:
să îl asamblăm, apoi a doua provocare să il facem să se mişte.
O A fost greu, a fost diferit, dar a meritat.
O Am participat la doua competiţii la nivel judeţean, respectiv
regional şi am câştigat două premii. Dar cel mai mare premiu a
fost prietenia care s-a legat între noi.
Ce platforma am folosit?
Robotul nostru are la baza o Senzorul Sharp este o componentă
platforma Arduino, un senzor Sharp, care este utilizată împreunăa cu
fiind capabil sa detecteze un Arduino pentru a măsura distanţa
obstacol aflat la o distanta de 10 până la diverse obiecte din mediul
centimetri de senzorul acestuia. înconjurator
Arduino este o platformă de Placa Arduino UNO se conecteaza la
procesare open-source, bazată pe portul USB al calculatorului folosind
software si hardware capabilă sa un cablu de tip USB A-B. Poate fi
preia si să prelucreze date din mediul alimentata extern (din priza) folosind
înconjurator printr-o serie de senzori, un alimentator extern.
să efectueze actiuni asupra mediului Alimentarea externa este necesara in
inconjurator prin intermediul situatia in care consumatorii
luminilor, motoarelor, conectati la placa necesita un curent
servomotoarelor si altor tipuri de mai mare de cateva sute de
dispozitive mecanie. miliamperi. In caz contrar, placa se
Arduino are la baza un procesor poate alimenta direct din PC, prin
capabil să ruleze un cod scris într-un cablul USB.
limbaj asemanator cu limbajul C++.
Platforma Ardiono Uno
Elemente componente
1 × sasiu
2 × motor cu reductie (1000 rotatii pe secunda)
2 × suport motor
2 × roata
1 × sensor infrarosu
1 × Arduino Uno
1 × driver motoare (L298)
1 × suport baterii
1 × bila control robot
1 × fire: mama – mama, tata – tata, mama – tata
Propulsia robotului
O Propulsia robotului este asigurata de 2 motoare electrice de
curent continuu, care funcţionează la o tensiune maxima de 5
V. Controlul acestor motoare este realizat cu ajutorul unui
driver special, care are rolul de a schimba direcţia de rotaţie a
motoarelor în funcţie de semnalul de comandă primit de la
Arduino.
O Fiecare motor al robotului poate fi acţionat independent
si de aceea am ales să ataşez de axul motoarelor câte o roată
pentru precizia robotului, cea de a treia roată este un ball
caster care se mişcă liber.
O Motoarele robotului sunt alimentate separat de la un
acumulator cu tensiunea de 9V, iar platforma Arduino este
alimentata de la un acumulator cu tensiunea de 4,8V .
O Şaşiul robotului este realizat dintr-un dvd pe care s-au
dispus toate componentele necesare functionari robotului.
Etapele de constructie ale
robotului
Etape de constructie ale
robotului
Etape de constructie al
robotului
Programul robotului digitalWrite(13, LOW); // turn off Arduino's LED to indicate we are through with calibration

// print the calibration minimum values measured when emitters were on


Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
Cod:{bool a = false; {
bool b = false; Serial.print(qtra.calibratedMinimumOn[i]);
float Kp = 2; //ideal cu 2 Serial.print(' ');
float Ko = 5; //ideal cu 5 }
#define vit_min 130 Serial.println();
#define vit_max 140
#define M_MAX_SPEED 160 // print the calibration maximum values measured when emitters were on
#define NUM_SENSORS 8 // number of sensors used for (int i = 0; i < NUM_SENSORS; i++)
#define NUM_SAMPLES_PER_SENSOR 5 // average 5 analog samples per sensor reading {
#define EMITTER_PIN 4 // emitter is controlled by digital pin 4 Serial.print(qtra.calibratedMaximumOn[i]);
Serial.print(' ');
// sensors 0 through 5 are connected to analog inputs 0 through 5, respectively }
QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4, 5}, Serial.println();
NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); Serial.println();
unsigned int sensorValues[NUM_SENSORS]; delay(500);
}
void setup()
{ void loop()
pinMode (2, OUTPUT); {
pinMode (3, OUTPUT); // read calibrated sensor values and obtain a measure of the line position from 0 to 5000
pinMode (4, OUTPUT); // To get raw sensor values, call:
pinMode (5, OUTPUT); // qtra.read(sensorValues); instead of unsigned int position = qtra.readLine(sensorValues);
delay(500); unsigned int position = qtra.readLine(sensorValues);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH); // turn on Arduino's LED to indicate we are in calibration mode
for (int i = 0; i < 400; i++) // make the calibration take about 10 seconds
{
qtra.calibrate(); // reads all sensors 10 times at 2.5 ms per six sensors (i.e. ~25 ms per
call)
}
Programul robotului
int error =(2500 - position); if ( error < -100 && error > -2500 && a == 0) {
int vit_d = vit_min ;
int vit_s = vit_min ;
vit_d = (-error * Kp) + vit_min ;
int vit_nd ; vit_s = vit_min - (-error * Kp) ;
int vit_ns ; if (vit_d > M_MAX_SPEED ) vit_d = M_MAX_SPEED; // limit
top speed
if ( sensorValues[5]> 500 && sensorValues[0] < 800){
b = true;
if (vit_s > M_MAX_SPEED ) vit_s = M_MAX_SPEED; // limit top speed
} if (vit_d < 0) vit_d = 0; // keep motor above 0
if (sensorValues[2] >500 && sensorValues[3] <500){ if (vit_s < 0) vit_s = 0;
b = false ;
}
}
if ( sensorValues[0]> 500 && sensorValues[5] < 800){
a = true; if ( error > 100 && error < 2500 && b == 0) {
}
if (sensorValues[3] >500 && sensorValues[2] <500){
vit_s = (error * Ko) + vit_min ;
a = false ; vit_d = vit_min - (error * Kp) ;
} if (vit_d > M_MAX_SPEED ) vit_d = M_MAX_SPEED; // limit
top speed
if (a == 1){ if (vit_s > M_MAX_SPEED ) vit_s = M_MAX_SPEED; // limit top speed
if (vit_d < 0) vit_d = 0; // keep motor above 0
vit_d = 0; if (vit_s < 0) vit_s = 0;
vit_s = vit_max;
vit_nd =1; }
}

if ( b == 1){
vit_s = 0;
vit_d = vit_max; analogWrite(2, vit_d);
vit_ns = 1; analogWrite(3, vit_s);
}
analogWrite(4, vit_nd);
analogWrite(5, vit_ns);
}
Instantanee
O Fig 5 Inceputuri
timide
Instantanee
Fig 6 Concursul
Robosmart . Piteşti martie
2018 Fig. 7 Concursul : Să cunoaştem
mecatronica. Să cunoaştem
robotica. Craiova mai 2018
Bibliografie
O https://profs.info.uaic.ro/~arduino/index.ph
p/Laboratorul_1
O https://www.upit.ro/ro/academia-
reorganizata/facultatea-de-electronica-
comunicatii-si-calculatoare-2/concurs-
robosmart
O http://www.robofun.ro/
O http://arduino.com

You might also like