martes, 9 de junio de 2015

TraktoBot, Bluetooth bidez kontrolatutako traktorea




TRAKTOBOT


     Gure proiektua bluetooth bidez konektatutako traktorean oinarritzen da, eta bluetooth teknologiarekin sekuentzien aldaketa egitea ahalbidetezen du gure mugikorraren bitartez, guk nahi duguna egin dezan traktoreak.










     Proiektu honek dituen teknologiak:

1-Bluetooth: dispositibo inalambriko bat da, non mugikorrarekin konektatzean mikrokontroladoreari mugikorraren bitartez aginduak bidaltzea ahalbidetzen digu. Hau bluecontrol aplikazioaren bitartez kontrola dezakegu, eta aplikazio hau play-estoretik deskargatu daiteke.





2-L293D: Teknologia honen bitartez, motorren kontrola lortzen dugu, bi aldetara bira dezaketelako. Txip honek 2 motor kontrola ditzazke gehienez, bainan beti ahal izango diozu txertatu besteren bat beste bi motor erabiltzeko.



Proiektuaren funtzionamendua:

     Bluetooth-aren bitartez komando bat  sartuko diogu gure mikrokontroladoreari, eta honek komando bat ala beste jasotzean mikrokontroladoreari barneratutako programaren sekuentzi bat edo beste martxan jartzen da. 5 sekuentzi modu egin ditugu, lehenengoa aurreraka joateko, bigarrena atzeraka joateko, hirugarrena ezkerrera biratzeko, laugarrena eskuinera biratzeko, eta bostgarrena eta azkena motorrak geldi geratzeko.

Proiektua aurrera eramateko pausuak:

1-Eskemaren edizioa:

     Lehenik eta behin proteus programaren isis atalean eskema bat egitea beharrezkoa da, gure plakan beharrezkoak diren elementuekin, funtzionamendua bermatzeko eta sortutako programarekin simulazioari ekiditeko. Isisa eginda eduki ondoren, hau modifikatu egingo dugu Ares-a sortzeko, eta hau sortu ondoren hurrengo atalera pasatzen gera.




     Bigarren hau ares-a egiteko da, eraldatuta:





2- PCB-aren fabrikazioa:

     Issis eko eskema aresera pasa eta pistak eraiki ondoren, LPKF makinara goaz guk egindako plaka imprimatzeko. Hau ongi egiteko, aresean gerberrak sortu behar dira, eta LYT-arekin, boar master programan .lmd duen beste bat lortuko dugu, eta honekin LPKF-ak ulertu dezan bere lanarekin hasteko.






     -Hau da lpkf-arentzat egindako ares-a.






3-Konponenteak plakan jartzea:

     Plaka ondo eginda dagoela zihurtatu ondoren, hautatutako konponenteak plakan soldatzen jarri ginen, kontuan hartzen bakoitzaren posizioa eta bakoitzaren kokalekua. Hau egiteko dexente denbora tardatu genuen, plakan soldatzeko eremuak ez baitziren guztiz guk esperotakoak, baino lortu genuen ongi soldatzea.






4- Pic-aren programazioa:

    Komentarioekin dator, eta hauek gazteleraz daude denek ulertzeko zer egiten duen programaren zati bakoitzak.


/*-------------------------------------------*\
 | proyecto del control de tractor: Iñigo Lazkano
 el programa consiste en controlar un tractor desde el dispositivo android.
\*-------------------------------------------*/

#include <16f87.h>


#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES PUT                      //Power Up Timer
//#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled

#use delay(clock=4000000)
#use RS232(baud=9600, xmit=PIN_B5, rcv=PIN_B2)      //#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
#use i2c(Master,sda=PIN_B1,scl=PIN_B4)


int8 sekuentzia='E';                                                          //declaramos que para empzar esten los motores apagados
void serie(void);

/****************************************************************************
      FUNCION PRINCIPAL
****************************************************************************/
void main(void)
{
   int8 i;
   setup_adc_ports(NO_ANALOGS);                              // para que los puertos sean digitales
   set_tris_b(0b00000100);
//   set_tris_a(0xff);
  
  
     
   while(1)
   {  
      serie();                                                                        //leer bluetooth
      if(sekuentzia=='E')                                                     //si esta detectando una E entra en este ciclo
      {
         while(sekuentzia=='E')                                                               
         {
               output_low(PIN_B0),output_low(PIN_B3),output_low(PIN_B1),output_low(PIN_B4);  //parar los motores
               serie();                                                               //lee la entrada del bloetooth
               if(sekuentzia!='E')                                             //si lo que lee es diferente a E
                  break;                                                              //sal del ciclo
         }
      }
      else if(sekuentzia=='B')
      {
         while(sekuentzia=='B')                                            //Si lee un B entra en este ciclo
         {
               output_low(PIN_B0),output_low(PIN_B3),output_high(PIN_B1),output_high(PIN_B4);//Motores hacia atras
               serie();                                                                //lee la entrada del bloetooth
               if(sekuentzia!='B')                                             //si canbia de valor la entrada
                  break;                                                              //sal del ciclo
         }
      }  
      else if(sekuentzia=='C')                                              //Si lee un C entra en este ciclo
      {
         while(sekuentzia=='C')
         {
           output_high(PIN_B0),output_low(PIN_B3),output_low(PIN_B1),output_low(PIN_B4);     //girar izquierda
            serie();                                                                   //lee la entrada del bloetooth
            if(sekuentzia!='C')                                                 //si canbia de valor la entrada
               break;                                                                  //sal del ciclo
         }

      }  //fin else if sek C
       else if(sekuentzia=='D')                                              //Si lee un D entra en este ciclo
      {
         while(sekuentzia=='D')
         {
               output_low(PIN_B0),output_high(PIN_B3),output_low(PIN_B1),output_low(PIN_B4); //girar derecha
               serie();                                                                 //lee la entrada del bloetooth
               if(sekuentzia!='D')                                               //si canbia de valor la entrada
                  break;                                                                //sal del ciclo
         }
      }
        else if(sekuentzia=='A')                                              //Si lee un A entra en este ciclo
      {
         while(sekuentzia=='A')
         {
               output_high(PIN_B0),output_high(PIN_B3),output_low(PIN_B1),output_low(PIN_B4);//Motores                                                                                                                                hacia delante

               serie();                                                                  //lee la entrada del bloetooth
               if(sekuentzia!='A')                                               //si canbia de valor la entrada
                  break;                                                                //sal del ciclo
         }
      }
   }                                                                                       //fin while 1
}                                                                                          //fin main

/****************************************************************************
      FUNCION Serie
****************************************************************************/
void serie(void)
{
   if(kbhit() !=0)                                                                            //si canbia la entrada del bloetooth,
   {
      sekuentzia=getc();                                                                    //guarda lo que recibas en la variable llamado sekuentzia
   }  

}

5- Sekuentziak:
     Hemen ikus daiteken moduan, pin bakoitza zein egoeratan egon behar den momentu bakoitzean adierazten digu.
          Sekuentzia A: bi motoreak aurreraka.
          Sekuentzia B: bi motoreak atzeraka.
          Sekuentzia C: ezkerreko motorea martxan eta eskuinekoa geldirik.
          Sekuentzia D: eskuineko motorea martxan eta ezkerrekoa geldirik.
          Sekuentzia E: bi motoreak geldirik.
6-Bluecontrol aplikazioa:

     Edozein mugikorretan aplikazio hau instalatzean bluetooth-a kontrola dezakezu, baina mugikor batekin konektatuta dagoenean ezin da beste gailuren batekin konektatu. honekin, denbora errealean guk aplikatu nahieko sekuentzia aukeratzean datza.




7- -Prototipoa eraikitzea
     Plastikozko piezekin sorturiko traktorea da, ABS edo PLA materialak erabili daitezke.Plastikozko piezak eraikitzeari ekin genion, 3D-ko impresoran erraza baizen piezak egitea. Hontaz gain, plastikozko piezak pisu gutxikoak eta arinak dira, eta traktorearen estrukturarako gogorrak ziren.3D-ko imprimagailuak, donbosko ikastolakoak erabili ditugu.
   
     


     Honako piezak atera dira:













8- -dena kableatzea:

     Hau da azken atala, eta plaka basetik motorretara dijoazen kableak eraikitzean datza. Horretarako, kontuan hartu behar da nora dijoan irteera bakoitzeko seinalea, gaizki eraman ezkero beste motore bat piztuko baita.






Erabilitako materiala

-Pic 16f87 (1)
-L293D (1)
-RES 10k (1)
-Condensador 220nf (1)
-Condensador 27pf (2)
-Cristal de cuarzo (1)
-Bluetooth (1)
-TT-motor (2)

Proiektua egiteko behar dituzuen artxiboak hemendik deskarga ditzakezue.


Hemen ikusi dezakezute proiektuaren eboluzioa:







Egilea: Iñigo Lazkano



No hay comentarios:

Publicar un comentario