Introducere

Proiectul consta in directionarea unei masinute teleghidate cu telecomanda fara fir in functie de cum misc mana cu telecomanda fara apasarea butoanelor. In realizarea proiectului am fost inspirata de jocurile Wii, ce au devenit un fenomen tot mai raspandit printre cei mici si nu numai :-D . Personal recunosc ca acest joc ma fascineaza datorita intruziunii realului in lumea imaginara, fiind un joc nou de ultima generatie.

Scopul modificarilor efectuate asupra masinutei are un caracter ludic , jocul fiind o forma placuta de patrecere a timpului liber. 


Deasemenea in realizarea proiectului am fost inspirata si de concursul “Freescale Race Challenge” de anul acesta.

Hardware Design

Piesele importante pe care le-am folosit in design-ul hardware sunt:

  • masinuta teleghidata cu telecomanda fara fir
  • un microcontroller MCF51JM64 de la Freescale pe 16/32 biti
  • un accelerometru pe 3 axe MMA7261
  • un stabilizator de tensiune LP2951
  • H-Bridge MC33931VW
  • miniUSB connector
  • un condensator ce are rolul de a nu se reseta microcontroller-ul
  • 8.000MHzCrystal
  • 1A Bridge Rectifier DB106S

Imagini PCB :

Schema :

Telecomanda masinutei era actionata mecanic initial. Pentru miscarile stanga-dreapta si fata-spate, exista 2 contacte ce se fac mecanic atunci cand utilizatorul controleaza masina. Pe placuta am 4 leduri si la fiecare se leaga cate un buton de la telecomanda.De ex, daca o inclin in fata, masina o sa mearga in fata si o sa avem un led aprins.

Software Design

Mediul de dezvoltare folosit este CodeWarrior. Aceasta e intreruperea unde verifica in ce parte e inclinata telecomanda :

 interrupt VectorNumber_Vrtc void Vrtc_isr(void)//
{//
//DisableInterrupts;//
/* Update iodisk_sd internal timers */   //
  disk_timerproc(); //
    /* Light head lights according to accX */
  if(accXFilt > 37000)
  {
    SET_LED_HL_OFF;  
  }
  else if(accXFilt < 26000)
  {
    SET_LED_HR_OFF;
  }
  else
  {
    SET_LED_HL_ON;
    SET_LED_HR_ON;
  }
  /////////////////////////////////////////////////////////////////
  if(accYFilt > 39000)
  {
    SET_LED_BL_OFF;
  } 
  else if(accYFilt <28000) 
  {
  SET_LED_BR_OFF;
  }
  else
  {
    SET_LED_BL_ON;
    SET_LED_BR_ON;    
  }
 /* Clear the interrupt flag */
  RTCSC_RTIF = 1;
  //EnableInterrupts;
}

In main fac intializarile de ceas-uri si porturi, si interrupter:

 void main(void) 
{

  RedirectInterruptVectorsToRAM();

  SlotCarInit();
  
  EnableInterrupts;
  
  while(1){
  }
}

Ideea generala este ca am un accelerometru analogic si citesc acceleratiile cu ADC-ul(ADC-ul e pe 12 biti). Am o intrerupere de 10ms cand verific acceleratiile; daca una din ele sau mai multe satisfac conditia din cod atunci se aprinde ledul respectiv si trimite comenzi la masinutza. Codul de la care am plecat este codul standard de la Freescale. Am modificat codul din intrerupere si am eliminat ceea ce era nefolositor.

Rezultate Obţinute

Ca urmare a finalizarii proiectului am obtinut o masinutza Wii.

Concluzii

Masinuta as putea spune ca se comporta destul de bine , deoarece reactioneaza foarte bine la miscarile fata-spate, stanga-dreapta.

Download

Implementarea proiectului se afla aici :corina.rar

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Resursele Software si Resursele Hardware :

http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=067147695636897485831C

frc2010-introduction_univbuc.ppt

slotcarv2.1-schematic.pdf

pm/prj2010/rtataroiu/wii.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0