You are on page 1of 10

Tehnika kola Pula

SEMINAR

Robot za praenje crte


MIKROUPRAVLJAI

Andrej Gardijan

Voditelji: Robert Butkovi, Paolo Zenzerovi

Pula, travanj, 2016


Sadraj
1. O projektu...................................................................................1
2. Optiki reflektivni senzor TCRT 5000.........................................2
3. Unipolarni korani motor.............................................................3
4. Shema spajanja projekta............................................................4
5. Kotai i asija..............................................................................5
6. Programski kod...........................................................................6-9
1. O projektu

Ovaj projekt sastoji se od programa za robota koji prati crnu crtu i


uputstva za izradu asije i kotaa za robota

Lista komponenti:
2 x otpornik 10k ohm-a
2 x otpornik 300 ohm-a
2 x optiki reflektivni senzor ( TCRT 5000)
2 x Unipolarni korani motor (6 ica)
2 x ULN 2003A (driver za korani motor)
2. Optiki reflektivni senzor TCRT 5000

Optiki reflektivni senzor sastoji se od infracrvene LED diode i


infracrvenog fototranzistora
Moe se koristiti za mjerenje udaljenosti do nekog objekta na temelju
infracrvenih zraka ili za prepoznavanje razlike izmeu crne i bijele boje
na temelju reflektirajuih svojstava
Kolektor tranzistora i anodu diode spajamo preko otpornika na napon
napajanja 5V dok emiter tranzistora i katodu diode spajamo na
uzemljenje
Mjerenjem pada napona na tranzistoru moemo utvrditi da li se ispod
njega nalazi crna ili bijela boja

Slika 1 - Optiki reflektivni


senzor TCRT 5000

Slika 2 - Shema spajanja


3. Unipolarni korani motor

Unipolarni korani motor je istosmjerni motor bez etkica


Kod izvedbe sa 6 ica dvije su cijelo vrijeme spojene na napon napajanja
(najee su one istih boja)
Tijekom rada unipolarnog koranog motora u jednom trenutku se koristi
samo pola zavojnice (ostvaren je strujni krug samo kroz pola zavojnice)
Ako aktiviramo zavojnice odreenim redoslijedom zbog prolaska struje
nastajati e magnetska polja koja dovode do rotacije rotora
takoer zbog veih napona i struja koristimo driver za korane motore
ULN 2003A

Slika 3 - shema spajanja na driver

4. Shema spajanja
5. Kotai i asija
Kotai i asija robota mogu se izraditi uz pomo 3D printera
Oni se mogu projektirat u besplatnom programu 123D Design
Treba uzeti u obzir dimenzije koritenih komponenti
Kotai su izraeni sa udubljenjem u koje se umetne brtva radi trenja

Slika 4 - primjer kotaa

Slika 5 - primjer asije

6. Programski kod
int optokapler1 = 12;
int optokapler2 = 11;

int k1z1 = 6;
int k1z2 = 5;
int k1z3 = 4;
int k1z4 = 3;

int k2z1 = 10;


int k2z2 = 9;
int k2z3 = 8;
int k2z4 = 7;

void setup()

{
pinMode (optokapler1, INPUT);
pinMode (optokapler2, INPUT);

pinMode (k1z1, OUTPUT);


pinMode (k1z2, OUTPUT);
pinMode (k1z3, OUTPUT);
pinMode (k1z4, OUTPUT);

pinMode (k2z1, OUTPUT);


pinMode (k2z2, OUTPUT);
pinMode (k2z3, OUTPUT);
pinMode (k2z4, OUTPUT);

Serial.begin (9600);

void loop()
{
Serial.print ("Optokapler 1 =");
Serial.print ( digitalRead(optokapler1));
Serial.print ("\t");
Serial.print ("Optokapler 2=");
Serial.println ( digitalRead(optokapler2));

if ((digitalRead(optokapler1) == 0) && (digitalRead(optokapler2) == 0))


Ravno();
if ((digitalRead(optokapler1) == 0) && (digitalRead(optokapler2) == 1))
Lijevo();
if ((digitalRead(optokapler1) == 1) && (digitalRead(optokapler2) == 0))
Desno();
if ((digitalRead(optokapler1) == 1) && (digitalRead(optokapler2) == 1))
{
digitalWrite (k1z1, LOW);
digitalWrite (k1z2, LOW);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, LOW);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, LOW);
}
}
void Ravno()
{
digitalWrite (k1z1, HIGH);
digitalWrite (k1z2, LOW);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, LOW);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, HIGH);
delay (4);
digitalWrite (k1z1, LOW);
digitalWrite (k1z2, HIGH);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, LOW);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, HIGH);
digitalWrite (k2z4, LOW);
delay (4);
digitalWrite (k1z1, LOW);
digitalWrite (k1z2, LOW);
digitalWrite (k1z3, HIGH);
digitalWrite (k1z4, LOW);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, HIGH);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, LOW);
delay (4);
digitalWrite (k1z1, LOW);
digitalWrite (k1z2, LOW);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, HIGH);

digitalWrite (k2z1, HIGH);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, LOW);
delay (4);
}

void Lijevo()
{
digitalWrite (k1z1, LOW);
digitalWrite (k1z2, LOW);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, LOW);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, HIGH);
delay (4);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, HIGH);
digitalWrite (k2z4, LOW);
delay (4);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, HIGH);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, LOW);
delay (4);

digitalWrite (k2z1, HIGH);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, LOW);
delay (4);

void Desno()
{
digitalWrite (k1z1, HIGH);
digitalWrite (k1z2, LOW);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, LOW);

digitalWrite (k2z1, LOW);


digitalWrite (k2z2, LOW);
digitalWrite (k2z3, LOW);
digitalWrite (k2z4, LOW);
delay (4);

digitalWrite (k1z1, LOW);


digitalWrite (k1z2, HIGH);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, LOW);
delay (4);

digitalWrite (k1z1, LOW);


digitalWrite (k1z2, LOW);
digitalWrite (k1z3, HIGH);
digitalWrite (k1z4, LOW);
delay (4);

digitalWrite (k1z1, LOW);


digitalWrite (k1z2, LOW);
digitalWrite (k1z3, LOW);
digitalWrite (k1z4, HIGH);
delay (4);

You might also like