Elettronicamente.com
La risorsa Italiana per l'elettronica
e l'informatica applicata all'elettronica
  Sponsor
|Home| |Registrazione| |Login| |Disclaimer| |Contattaci| |Guida| |FAQs|
|Download| |Forum| |Links| |MySite|
Cerca in Elettronicamente:
 
I numeri di Elettronicamente.com:
  Iscritti: 12853
  Risorse On-Line: 508
  Links su siti di elettronica: 1304
  Sei il visitatore numero 1171359
Login non eseguito
Descrizione
ID #785  Microcontroller
SRF02 Ultrasonic range finder con XE164   04/01/2010
Il seguente progetto ha lo scopo di interfacciare il microcontrollore Infineon XE164 (o qualunque altro microcontrollore avente una porta seriale) con il sensore di distanza ad ultrasuoni SRF02.
Difficoltà:
Difficoltà di realizzazione o apprendimento. 1 stella/e.

Voto:
n.d.
Voto attuale (1/10) calcolato in base alla media delle votazioni di tutti gli iscritti che hanno votato questa risorsa.

Autore:
boldinid
Autore della risorsa:boldinid
HTML:
In questa casella viene indicato se è disponibile una pagina web da visualizzare.
File:
Allegato disponibile: SRF02.zip
In questa casella viene indicato se è disponibile un file da scaricare.

Crediti Virtuali:
105
Crediti virtuali necessari per scaricare il file allegato:105

Status:
ONLINE
Download file: SRF02.zip
Dimensioni: 1,8 Mb
Devi eseguire il login per poter scaricare questo file.
SRF02: METRO AD ULTRASUONI (da 15 cm a 6 m) con XE164 

 
Scopo del progetto

Anche se ho già realizzato un metro ad ultrasuoni (vedi "Tutorial e progettazione di un Misuratore di Distanze a Ultrasioni con XE164") ho avuto comunque la necessità di connetterne uno al mio sistema senza andare ad appesantire l'applicazione. A tale scopo ho scelto il modello SRF02 (in vendita presso vari siti) perchè molto compatto e semplice da interfacciare ad un microcontrollore:



Documentazione del SRF02

Il produtore fornisce il semplice manuale per la connessione via protocollo seriale e per il protocollo I2C, qui il link a quello per seriale (nota bene: si tratta di usa seriale con livelli elettrici a 5V, percui il MAX232 non serve): SFR02. Tale documento contiene tutto quanto dobbiamo sapere per poterci connettere a tale sensore di distanza, in particolare i dati più importanti per la connessione sono: 9600 baud 1 start, 2 stop and no parity bits.

Realizzazione Hardware

L'hardware è relativamente semplice:
 - il microcontrollore Infineon XE164
 - un display HD44780 compatibile
 - un METRO AD ULTRASUONI SRF02.

Le connessioni sono:
- Mode = GND per selezionare il protocollo seriale
- Rx connesso al pin P7.3
- Tx connesso al pin P7.4

ossia le connessioni a XE164 sono (così come documentate in "SFR02_to_XE164_Connector.ods"):
XE164_ASC_RX (P7.4) <- SFR02_TX
XE164_ASC_TX (P7.3) -> SFR02_RX.




 
Il tutto è visibile in:

(da notare il "cavallotto" per connettere MODE a massa e i fili bianco/rosso provenienti dal microcontrollore XE164 per la comunicazioen seriale).


Realizzazione Software

Il file zip allegato contiene il progetto per DAvE percui vi rimando ad esso: aprite "SRF02.dav" con DAvE e cercate di capire le configurazione dell'hardware, è piuttosto semplice. Comunque vi basterà sapere che:
  • USIC0 canale CH0 è usata per connettersi con protocollo seriale al metro ad ultrasuoni SRF02
  • il timer T2 è usato per realizzare la funzione ritardo "GPT2_waitXXms (msec)"
  • il display HD44780 è connesso al fine di mostrare utili stringhe di debug (vedi relativo articolo e descrizione libreria).

USIC0 canale CH0:
La seriale è configurata con:


funzione main():

Il main è costituito da:

void main(void)
{
 // USER CODE BEGIN (Main,2)
 // USER CODE END

 MAIN_vInit();

 // USER CODE BEGIN (Main,3)
 LCDinitialize();
 LCDclear();
 LCDtest();

 LCDgoToPos(2,2);
 LCDwriteString("Distance By SRF02");
 GPT2_waitXXms(2000);

 // Get SRF02 Software Version
 PrintOnDisplay( "Version", SFR02_vInit() );

 // Wait just some time to permit SFR02 calibration
 GPT2_waitXXms(2000);

 // USER CODE END

 while(1)
 {

 // USER CODE BEGIN (Main,4)

   SFR02_RealRanging();

   GPT2_waitXXms(1000);

   PrintOnDisplay("[cm]", SFR02_getDistance());

 // USER CODE END
 }

} // End of function main

funzione SFR02_RealRanging():

La funzione principale per richiedere una misura di distanza in centimetri è:

//****************************************************************************
// @Function SFR02_RealRanging
//
//----------------------------------------------------------------------------
// @Description Return the distance in centimeter
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 21/05/2009
//
//****************************************************************************

unsigned int SFR02_RealRanging (void)
{
  // Send Command to SRF02 to measure Distance
  RS232_vSendData ( SFR02_ID ); // SFR02 Address (0x00 by default)
  RS232_vSendData ( 0x54 ); // Real Ranging Mode - Result in centimeters, automatically Tx range back to controller as soon as ranging is complete.
  // GPT2_waitXXms( 80 ); // Wait >70 msec to get back the ranging
  // RS232_vSendData ( 0x5E ); // Get Range, returns two bytes (high byte first) from the most recent ranging.

  // in reality return the previous measured distance
  return ( ubDistance );
}
 


Misure Sperimentali:

Ecco cosa si legge durante l'inizializzazione dello SFR02:


E dopo le prime misure:
 



 

BUON DIVERTIMENTO !!!
 
L'utilizzo di tutte le informazioni illustrate e riportate in questo documento sono a proprio rischio e pericolo.
Tutte le informazioni vengono fornite “COSI' COME SONO”, senza nessuna forma di garanzia sulla loro validità.
Il presente documento ha uno scopo puramente informativo e didattico.
Ciascuna persona, nell'applicare le informazioni descritte, sarà pienamente responsabile delle
eventuali conseguenze che ne derivano. Elettronicamente.com e l'autore declinano
qualsiasi responsabilità nell'applicazione di tali informazioni, né saranno responsabili
in modo diretto e/o indiretto su eventuali danni provocati di qualsiasi genere a cose o persone.
E' vietata la pubblicazione totale e/o parziale di questo documento su altri siti
Internet diversi da Elettronicamente.com e in qualsiasi altra forma di diffusione
(esempio su riviste) senza il consenso scritto da parte dell'autore.

 
  Cloud
 Elettronicamente.com  PICmicro  RS232 FT232 P8X32A Parallax PIC16F84 Programmatore Elettronica PCB Circuito Stampato Fotoincisione Microchip PIC16F876 Linguaggio AVR Linux NE555 ARM HD44780 DISPLAY LCD Alimentatore XE164 Infineon LED Amplificatore Laboratorio Resistenza Condensatore Termometro PWM relazione
www.Elettronicamente.com
Utenti attualmente connessi:
(Nessuno)