Unitate didaktiko baten saiakera // Robot suhiltzailea

Robot suhiltzailearekin ideia STEAM proiektuen bidez elektronikarekin hasierako hartu-emana eta Arduino plataformara gerturatzea izan da.

Batxi 2 Ikasleak

1 gela

11 ikasle

(*) Oraindik ez dugu proiektua bukatu, ikasleen diseinuak falta dira. Hauxe partekatu dugu prozesua dokumentatzearen aldera. Ikasleen diseinuak ditugunean bukaeran partekatuko ditugu.

Proiektua gauzatzeko behar izan duguna

Materiala:

  • Elektronika proiektu txikietarako:
    • 4 taldeentzako kitak prestatu ditugu, hemen kit bakoitzak behar duena
      • 3 x Led
      • 1 x 9V pila
      • 1 x protoboard
      • 3 x sakagailu
      • 1 x etengailua
      • 1 x potentziometroa
      • 1 x piezoelektrikoa
      • Joint kableak
  • 4 Robot suhiltzaile egiteko
    • 1 Txasis robot bakoitzeko (gure kasuan ikasle bakoitza berea diseinatzen saiatu da, lan konplexua izan dena)
    • 1 x Arduino UNO
    • 1 x USB A/B kable
    • 2 su sentsore (egin dugun diseinuan 3 jartzea ez zen erreza)
    • 1 x L298N motor kontroladorea
    • 2 x Gurpilentzako motor murriztatzaile
    • 1 x Korronte zuzeneko (DC) urpeko bonba
    • 1 x Protoboard
    • 1 x Bote txikia
    • 1 x 9V pila (ikusiko dugu gehiago behar dugun)

Softwarea:

  • Tinkercad erabili dugu ahal izan dugunean zirkuituak marrazteko
  • Arduino IDEa kodea eraikitzeko eta plakara pasatzeko

Lan prozesua

Lan prozesua bost zatitan banatu dugu:

1 // Elektrizitate – elektronika oinarrizko kontzeptuak

2 // Elektronika proiektu txikiak

3 // Txasisaren diseinua

4 // Arduino programatzeko hastapenak

5 // Robot suhiltzailearen gauzapena

Egin duguna partekatzen dugu:

1 // Elektrizitate – elektronika oinarrizko kontzeptuak

Ikasle askok ezagutzen zituzten, jada zenbait elektronika proiektutan parte hartu baitute.

2 // Elektronika proiektu txikiak

Ariketa Helburua Irudia
Osagai elektronikoak aztertu eta euren funtzionamendua ulertu Osagaiak ezagutzea
Led bat piztu. Boltaiarekin frogak egin, behar duen erresistentzia kalkulatzeko multimetroarekin neurtuz.

Kalkulagailu hau erabili dugu.

Tinkercad-en gauza on bat da badituela kalkulatuta osagaiak jasan dezaketen intentsitatea, eta horrekin joan ahal gara frogatzen zein den erresistentzia egokiena
Protoboard baten funtzionamendua ulertu led bat piztuz konfigurazio ezberdinetan Protobordarekin eta zirkuitu kontzeptuekin trebatu
Protoboard baten funtzionamendua ulertu multimetroa erabilita Protoboard-ean, korronte eta zirkuitu kontzeptuekin trebatu
Etengailu baten funtzionamendua ulertu Osagai ezberdinak probatu eta zirkuituekin trebatu
Sakagailu baten funtzionamendua ulertu Osagai ezberdinak probatu eta zirkuituekin trebatu
Sakagailua eta protoboard-a Osagai ezberdinak probatu eta zirkuituekin trebatu
Potentziometroa Osagai ezberdinak probatu eta zirkuituekin trebatu
Piezoelektrikoa Osagai ezberdinak probatu eta zirkuituekin trebatu
Sintetizadore proiektua Erabili ditugun zenbait osagaiekin proiektu txiki bat

3 // Txasisaren diseinua

3Daren inguruan hasierako ideia bat izateko honako ariketak egin ditugu

Ariketa Helburua Irudia
Etxe bat eraikitzea Forma ezberdinak erabilita etxe berdina lortu behar dute bai neurritan zein irudian  
Giltzero bat Zerbait erreala fabrikatzeko lehen gerturaketa
Zubi bat Neurriak eman dizkiegu ikasleei. Ideia ea neurri batzuetatik zuzenki fisikoa eta Tinkercad-eko zuzenkia erabilita emaitza lortzeko gai ziren.
Zutabeen neurriak:

  • Luzera = 20 mm
  • Zabalera = 20 mm
  • altuera = 40 mm

Zutabeen arteko distantzia =  30 mm

Goiko plakaren neurriak = 5 altuera mm

Zubi osoaren luzera: 120 mm

Gure mugikorrarentzat oinarri bat diseinatzea Bakoitzak bere zuzenkia eta mugikorra eskuan izanda proiektu hori marraztea eta, Tinkercaden gauzatzea eta 3D makina fabrikatzea.

Oharra, oraindik ikasleak txasisak lantzen daude. honako hau erabili dugu gure proiektua egiteko:

WP 3D Thingviewer Lite need Javascript to work.
Please activate and reload the page.

 

4 // Arduino programatzeko hastapenak

Tutorial hauek jarraitu ditugu gutxi gora behera: https://haritulab.eus/tutorialak/

5 // Robot suhiltzailearen gauzapena

Robot suhiltzailea martxan jarriko da bakarrik sua antzematen duenean. Ez badu surik antzematen geldi geratuko da.

 

1go ariketa // Motorrak eta L298N motor kontrolagailua

Ariketa honetan motorrak aurrera eta atzera joatea programatuko dugu.

Zirkuitua

L298N motor kontroladorea

  • motor kontroladoreak, motorra eta plaka modu seguruan konektatzea baimentzen du eta motorren norabidea kontrolatu
  • Motorrak zuzenean Arduino plakara konektatzea plaka erre dezake kontuz ibiltzen ez bagara. Motor kontroladoreak barneratzen ditu elektrizitate fluxuak kontrolatzeko aukerak.
  • Kontrol horrek motorraren norabidea ere modu errazagoan zuzentzeko aukera ematen du.

Elikadura

  • L298N elikatzeko 5v-ra konektatuko dugu Arduinoren 5v pina.
  • Motorrak elikatzeko 9vko kable positiboa L298N kontroladorearen 12vKO pinera konektatuko dugu
  • Arduino elikatzeko:
    • USB bidez
    • 9v bateria bidez (vin pinean edo jack-ean)
  • Elikadura guztiak GND partekatuko dute

Kodea

// Etxebarri Batxi 2 // Motorrak L298N kontroladorearekin // Digitalizazioaren Hariak // Azkue Fundazioa

// Pinak definitu aldagai oso bezala (int)

int LM1=2;  // ezker motor aurrera 2. pinera
int LM2=3; // ezker motor atzera 3. pinera
int RM1=4; // eskuin motor aurrera 4. pinera
int RM2=5; // eskuin motor atzera 5. pinera

// Pinen izaera definitu

void setup()
{
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
}

// Programa exekutatu

void loop() {
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
delay(1000);

digitalWrite(LM1, LOW);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, LOW);
digitalWrite(RM2, HIGH);
delay(1000);
}

2. ariketa // Serbo Motorra

Ariketa honetan serbo motor baten biraketa aldaketa programatuko dugu.

Serbomotorea bi ezaugarri berezi dituen motor elektrikoa da:

  1. Biraketaren lekua kontrolatzea (graduak) beti ere serbo horren ezaugarrien arabera (denek ez dituzte biratzeko aukera berdinak)
  2. Biraketa egiteko abiadura kontrolatzea

Gure proiekturako oso egokia da, serboarekin ur hodia nora mugitu kontrolatu ahal izango dugu eta.

Zirkuitua

Zirkuitua TinkerCad-en egin dezakegu.

2,3,4,5 pinak motor kontroladorean erabili ditugu

Serbo motorerako 11. pina erabiliko dugu

11. pina marratxoa du beraz analogiko bezala programatu dezakegun pin digitala da. 0tik 255erako tartea duelarik.

Serbo motorrean tarte hori biraketa graduak dira.

Kodea

/ /Etxebarri Batxi 2 // Serboa kontroletan // Digitalizazioaren Hariak // Azkue Fundazioa

// Libreria gehitu, Tinkercaderik egokitua
#include <Servo.h>

// arduinoren webgunean servo.h liburutegiaren inguruan azalpen gehiago:
// https://www.arduino.cc/reference/en/libraries/servo/

Servo nireserbo; // erabiliko dugun serbomotorrari nireserbo izena jarriko diogu

void setup()
{
nireserbo.attach(11); // serbomotorra 11. pinean jarriko dugu // serbomotorrak ohiko motorren funtzionamendua ez dute, horregatik liburutegi propioa dute
}

// Programa exekutatu

void loop()
{
nireserbo.write(0); // serbomotorra 0º mugituko dugu
delay(1000);
nireserbo.write(90);
delay(1000);
nireserbo.write(180);
delay(1000);
}

Ariketa 3 // Ur Bonba

Ariketa honetan ur bonba bat programatuko dugu

Zirkuitua Motor dc baten berdina da eta TinkerCad-en egin dezakegu

Ur bonbarako 6.pina erabiliko dugu

Zirkuitua

Erabiliko dugun ur bonbak 3 – 6 boltio bitartean behar du funtzionatzeko

Oharrak // Kontuz ibili ura erabiltzen duzunean.

  • Ez ukitu zirkuituak esku bustiekin
  • Elektronika ez dezala ukitu eremu bustia

Oharra 2 //

  • Ur bonba motor dc bat da, ¿zergatik ez dugu babestuko plaka erresistentziekin?
  • Boltai txikia frogatuko dugu hasieran, pin batetik ateratakoa
  • Ikusten badugu ez dela nahikoa eta boltai handiagoa behar dugula, zirkuituko beste elikadura iturri bat hartuko dugu eta hor babesaren beharraz aztertuko dugu.

Arduino plaka ondo ez erretzeko korrontea 485 mili anperiotara ibili bida bere baitan. Erresistentziarik ez dugu jarri eta 100mA ditugu. Ondo.

Gure ur-bonba 3v behar ditu funtzionatzeko 100% ean zirkuitu honekin 2,78 boltiokoko seinalea lortzen dugu 6. pinetik. ¿funtzionatuko du? bai baina erreboluzio gutxiagorekin. Ikusi behar dugu (enpirikoki, frogak eginez) guretzako nahikoa den edo boltaje gehiago sartu behar diogu, eta horrek zirkuitu osoan izan dezakeen eragina.

Ez du funtzionatu. Gure ur bonbak ez du funtzionatu eta transistore bat erabiltzeko beharrean aurkitu gara boltajeen intentsitatea handitzeko eta horrela ur bonbara 3 boltio helduko direla ziurtatzeko.

Transistoreak, boltajea handitzea eta/edo seinalea bideratzea baimentzen digu.  Honi esker 5v pinetik elektrizitatea hartu eta 6. pinetik agindua hartu ahal izango dugu. Ze gure motorrak bakarrik 2 pin ditu.

NPN (negatibo, positibo, negatibo)

E // Emisorea (GND) plakakoa

B // Basea (6 PIN)

C // Kolektorea (MOTORRAREN NEGATIBOAREKIN)

MOTORRAREN POSITIBOA  5 boltioetara.

Kodea

// Etxebarri Batxi 2 // Urbonba // Digitalizazioaren Hariak // Azkue Fundazioa
// Pinak definitu aldagai oso bezala (int)

int urbonba=6;// Ur bonba 6. pinera

// Pinen izaera definitu

void setup()
{
pinMode(urbonba, OUTPUT); // Ur bonba irteera bat da
}

// Programa exekutatu

void loop()
{
digitalWrite(urbonba, HIGH);
delay(1000); // Itxaron segundu 1
digitalWrite(urbonba, LOW);
delay(1000); // Itxaron segundu 1

}

Ariketa 4 // Su sentsorea

Erabiliko dugun sentsorea Arduinori emango dion seinalea digitala da. Hau da edo dena edo ezer bez.

HIGH = ez dut surik detektatzen

LOW = sua detektatzen dut

3tik 5.5 boltiora behar du funtzionatzen hasteko.

Zirkuitua

Kodea

// Etxebarri Batxi 2 // Su sentsorea // Digitalizazioaren Hariak // Azkue Fundazioa

// Pinak definitu aldagai oso bezala (int)
int erdikoSentsorea=8; // erdiko sentsorea 8. pinera
int surikDago = HIGH;  // Sentsorea balio altua ematen duenean surik ez dagoela da

// Pinen izaera definitu kasu honetan SARRERA
void setup()
{
pinMode(erdikoSentsorea, INPUT); // erdiko sentsorea sarrera aldagaia da

Serial.begin(9600); // arduinoren baliabidea sarrera datuak ikustatzeko da serie monitorea, eta horrela aktibatzen dugu

}

// Programa exekutatu

void loop() {
surikDago = digitalRead(erdikoSentsorea);// erdiko sentsorea . pinean dagoen sentsorearen data irakurtzen du

if (surikDago== LOW)  // sua badago
{
Serial.println(“SUA, SUA, SUA”); // Monitorean SUA SUA SUA ikusi ahal izango dugu sua badago
}
else // surik ez badago
{
Serial.println(“Ez dut surik detektatzen”); // Monitorean sentsoreak surik ez duela detektatzen idatziko du
}
}

​5. ariketa dana batu

1 // Txasisean gurpilentzako motorrak jarri

2 // L298N motorretara lotu

3 // Serbomotorea, Arduino plaka eta protoboard-a behar duten lekuan kokatu duzun diseinura egokituta

Horrela egongo zan zirkuitua honaino.

Kontroladorea 2, 3, 4 eta 5 pinekin lotu dugu. Zuzenean 9boltiko pilara konektatuko dugu.

4 // Ur bonba ontzi baten barruan jarri

Guk kola beroarekin itsatsi dugu. Eta ontziaren azpian gurpiltxo bat jarri dugu serbomotorrearen konexioa egin ahal izateko.

Ur bonbara konektatu 6. pinera. Boltai gehiago heldu daiten transistore bat erabiliko dugu. Nik NPN CBE motakoa erabili dut. Negatibo, positibo, negatibo. E-tik sartzen da plakako negatiboa. Alde lauaren ezkerraldean.

 

4 // Serbomotorra konektatu

5 // Su sentsoreak konektatu

6 // Kodea

Oso oinarrizko kodea egin dugu 🙂

// Etxebarri Batxi 2 // Motorrak L298N kontroladorearekin // Digitalizazioaren Hariak // Azkue Fundazioa

#include <Servo.h>
// serbomotorraren liburutegiaren erreferentziak https://www.arduino.cc/reference/en/libraries/servo/
// Pinak definitu aldagai oso bezala (int)

int LM1 = 2; // ezker motor aurrera 2. pinera
int LM2 = 3; // ezker motor atzera 3. pinera
int RM1 = 4; // eskuin motor aurrera 4. pinera
int RM2 = 5; // eskuin motor atzera 5. pinera
Servo nireserbo; // erabiliko dugun serbomotorrari nireserbo izena jarriko diogu serbomotorearen liburutegiaren arabera
int urbonba = 6; // Ur bonba 6. pinera
int ezkerrekoSentsorea = 9; // ezkerreko sentsorea 9. pinera
int eskuinekoSentsorea = 8; // eskuineko sentsorea 8. pinera
int posizioa;

// Programa zelan hasi definitu

void setup()
{
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
nireserbo.attach(11); // serbomotorra 11. pinean jarriko dugu // serbomotorrak ohiko motorren funtzionamendua ez dute, horregatik liburutegi propioa dute
nireserbo.write(90); // erdian kokatuko dugu serboa
pinMode(urbonba, OUTPUT); // Ur bonba irteera bat da
pinMode(ezkerrekoSentsorea, INPUT); // ezkerreko sentsorea sarrera aldagaia da
pinMode(eskuinekoSentsorea, INPUT); // eskuineko sentsorea sarrera aldagaia da
Serial.begin(9600); // arduinoren baliabidea sarrera datuak ikustatzeko da serie monitorea, eta horrela aktibatzen dugu
nireserbo.write(90);
}

// Programa exekutatu

void loop()
{
if (digitalRead(ezkerrekoSentsorea) == HIGH && digitalRead(eskuinekoSentsorea) == HIGH) // EZ DAGO SURIK
{
// EZ MUGITU ROBOTA
Serial.println(“EZ DAGO SUA”); // Monitorean Ez dago sua ikusi ahal izango dugu
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
digitalWrite(urbonba, LOW);
}

else if (digitalRead(ezkerrekoSentsorea) == LOW) //Sua ezkerretara badago
{
// Mugitu robota ezkerretara
Serial.println(“SUA ezkerrera”); // Monitorean SUA ezkerrera ikusi. ahal izango dugu sua badago
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
delay(500);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(500);
digitalWrite(LM1, LOW);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
// gelditu gurpilak
delay (500);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
// mugitumangera
nireserbo.write(50);
// pzitu ur bonba
digitalWrite(urbonba, HIGH);
delay(500);
// mugitumangera
nireserbo.write(50);
// piztu ur bonba
digitalWrite(urbonba, HIGH);
delay(500);
}

else if (digitalRead(eskuinekoSentsorea) == LOW) //Sua eskuinetara badago
{
// robota esukinera mugitu
Serial.println(“SUA ESKUINERA”); // Monitorean SUA Eskuinera ikusi ahal izango dugu sua badago
digitalWrite(LM1, LOW);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(500);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(200);
digitalWrite(LM1, LOW);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
// gelditu gurpilak
delay (500);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
// mugitu mangera
nireserbo.write(130);
// piztu ur bonba
digitalWrite(urbonba, HIGH);
delay(500);
// mugitu mangera
nireserbo.write(130);
// piztu ur bonba
digitalWrite(urbonba, HIGH);
delay(500);
}

Artxiboak

Hemen bi artxibo konprimituta// 1 Arduino kodea + Cirkit desgin-ekin eginiko diseinua //  robota

 

Erantzun bat utzi

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude