xmega_tutorial.jpg

Xmega Tutorial - SRF02

Bewertung:  / 1
SchwachSuper 
  • xmega_block_diagram3D

Mit Hilfe des I2C/ TWI Moduls des Xmegas kann den Ultraschall Entfernungsmesser SRF02 auslesen. Dieser ist eine Entwicklung der Firma Devantech Ltd. Großbritannien und eignet sich zum Messen von Entfernungen zwischen 15cm und 6 Metern. Der Sensor ist speziell für den Robotik-Bereich entwickelt, kann jedoch auch für zahlreiche andere Anwendungen verwendet werden.

Durch die Verwendung von nur einer Ultraschall-Kapsel reduziert sich die Größe auf ca. die Hälfte der vergleichbaren Module. Allerdings vergrößert sich dadurch prinzipbedingt die Mindestreichweite. Als Interface kommt ein I2C Interface zum Einsatz, alternativ ist aber auch eine Ansteuerung über ein serielles Protokoll (hier nicht weiter ausgeführt) möglich. Sowohl bei I2C als auch bei der seriellen Ansteuerung stehen 16 Geräteadressen zur Verfügung.

Features

  • Betriebsspannung: 5V    
  • Stromaufnahme: 4mA typ. 20mA max.    
  • Frequenz: 40KHz    
  • Max. Reichweite: 6 m    
  • Min. Reichweite: 15 cm    
  • Messwerterfassung: intern, Automatische Verstärkungsregelung (64 Stufen), automatische Kalibrierung   
  • Interface: Standard - I²C, 16 Adressen einstellbar 
  • Ausgabeformat: µs, mm oder Zoll    
  • Abmessungen: 24mm x 20mm x 17mm

Das folgende Beispiel zeigt Ausschnitte zum Auslesen des Sensors, weiterhin gibt es den Quelcode für die I2C/ TWI Kommunikation mit dem Ultraschall Sensor SRF02 inklusive der I2C/TWI Bibliothek für den Xmega Controller im Anhang unter Downloads.

Xmega SRF02 Example
//########################################## SRF02 Firmware
//Decimal	Hex
//80		0x50 Startet  Messvorgang (gemessen wird in inches)
//81		0x51 Startet  Messvorgang (gemessen wird in Zentimeter)
//82		0x52 Startet  Messvorgang (gemessen wird in Microsekunden)
//86		0x56 Synchron Messvorgang (gemessen wird in inches)
//87		0x57 Synchron Messvorgang (gemessen wird in Zentimeter)
//88		0x58 Synchron Messvorgang (gemessen wird in Microsekunden)
//92		0x5C Erzeugt einen 8 zyklischen 40khz Impuls/Ton
//96		0x60
//
//Startet automatische Kalibrierung – Befehl kann ignoriert werden da dies
//bereits beim einschalten (Power on) automatisch erfolgt
//160		0xA0 Erste  Sequence zum ändern der I2C-Bus Slave ID
//165		0xA5 Dritte Sequence zum ändern der I2C-Bus Slave ID
//170		0xAA Zweite Sequence zum ändern der I2C-Bus Slave ID
 
//########################################## SRF02 Firmware auslesen
unsigned char SRF02_firmware( unsigned int slaveid  ) 
{
unsigned char swr;
 
uint8_t sendBuffer[8] = {};
sendBuffer[0]=0;	
TWI_MasterWriteRead( &twiMasterE, slaveid, &sendBuffer[0] , 1,1);
 
while (twiMasterE.status != TWIM_STATUS_READY) {}	
swr = twiMasterE.readData[0];	// read byte		      
return swr;
}
//########################################## SRF02 Entfernung auslesen
unsigned int SRF02_entfernung( unsigned int slaveid ) 
{
uint8_t temp_msb	= 0;
uint8_t temp_lsb	= 0;	
uint8_t sendBuffer[8]={};	 
sendBuffer[0]	= 0;		// Command
sendBuffer[1]	= 81;		// Messung in Zentimeter 	
sendBuffer[2]	= 2;		//Leseregister festlegen
TWI_MasterWriteRead( &twiMasterE, slaveid, &sendBuffer[0] , 3,2);
 
while (twiMasterE.status != TWIM_STATUS_READY) {}	
temp_msb = twiMasterE.readData[0];		// read byte (msb)
temp_lsb = twiMasterE.readData[1];		// read byte (lsb)
return (uint8_t)uniq(temp_lsb,temp_msb);
}
 

Ein ausführliches und funktionsfähiges Beispiel zum Auslesen des Sensors per I2C/ TWI durch einen Xmega findet ihr unter Downloads. Viel Spass beim Testen.

Hinweis:
Das Tutorial wird nach und nach von mir ergänzt. Wenn ihr Fehler in dem Tutorial findet, würde ich mich freuen wenn ihr mir diese mitteilt, damit ich diese korrigieren kann. Wenn jemand eigene Tips, Informationen oder Code-Schnipsel hat, kann er mir diese gern zusenden damit ich sie anschließend in das Tutorial einbinden kann.

Links

 
Atmel Appnote
Xmega I2C/ TWI
Datenblatt

Downloads

Kommentar hinzufügen
  • Keine Kommentare gefunden

Neuste Beiträge

30/08/2016
Es gibt nun endlich ein Update für die Tinyg CNC Controller Hardware und der dazu gehörenden PC Software...
03/09/2015
In den letzten Monaten habe ich lange das CAD Programm und meinen kleinen Ultimaker 3D Drucker gequält....
15/05/2015
Zuerst wurde eine kleine Katze am Computer konstruiert. Der erste Druck mit 0,3mm Schichtstärke war...
06/05/2015
Da beim Ultimaker keine Beleuchtung des Arbeitstisches vorgesehen ist, muss ich mir hier selber eine...
10/03/2015
Nach vielen Überlegungen habe ich mich nun endlich dazu entschieden meinen Machinenpark mit einem 3D...
01/02/2015
Diese Hardware besteht aus einem mächtigem Hardwarecontroller und vier leistungsstarken...
123135