Hallo Petop,
wenn es darum geht solch einen Sensor an den PC anzubinden, ist ein kleiner Controller sicherlich das Mittel der Wahl. Es gibt mit den I2C-Interfaces auch Alternativen, ist halt Geschmacksache.
Der SRF08 wird über I2C abgefragt, man braucht also einen Controller mit I2C-Möglichkeiten.
Eine einfache Möglichkeit dafür sind sicherlich die PICAXE.
Man benötigt den Controller (wegen I2C den PICAXE-18X (8,70EUR)), 2 Widerstände für das Programmierinterface, was man auch gleich zur Wertausgabe an den PC verwenden kann und 2 PullUp-Widerstände für den I2C-Bus. Die Programmiersoftware gibts frei zum Download.
Natürlich kann man auch alles (samt Leiterplatte, Programmierkabel und CD) als Starterkit kaufen.
Folgendes einfache Programm funktioniert:
Sofern man auf die erweiterten Fähigkeiten des SRF08 (Reichweite, Mehrfachechos) verzichten kann, kommt man an dieser Stelle auch mit einem SRF04 klar.Code:symbol range = w0 ' 16 bit variable for range (b0, b1) init: i2cslave $e0,i2cfast,i2cbyte ' Define I2C slave address for SRF08 main: writei2c 0,(81) ' Start measure, result in cm pause 70 readi2c 2,(b1,b0) ' Read Range Value sertxd ("Range: ",#range,13,10) ' Display Values in serial Terminal (via Programming interface, 4800bps) pause 100 goto main
Zur Anbindung reicht dann der PICAXE-08M (4,06EUR) aus. Die oben beschriebene Schaltung reduziert sich nochmal um 2 Widerstände. Das PICAXE-08M Starterkit ist mit unter 17EUR auch nicht zu teuer und es ist alles drin, was man braucht.
Folgendes Programm funktioniert für den SRF04:
Code:symbol trig = 0 ' Define output pin 0 for Trigger pulse symbol echo = 3 ' Define input pin 3 for Echo pulse symbol range = w0 ' 16 bit variable for range (b0, b1) init: pause 50 ' Wait for stabilizing power main: pulsout trig,2 ' produces about 20uS pulse (must be minimum of 10uS) pulsin echo,1,range ' measures the range in 10uS steps pause 10 ' SRF04 mandatory 10mS recharge period after ranging completes ' now convert range to cm (divide by 6.2) or inches (divide by 14.9) ' as picaxe cannot use fractions, multiply by 10 then divide by full number ' e.g. range x 10 then / 62 is the same as range / 6.2 range = range * 10 / 62 ' multiply by 10 then divide by 62 sertxd ("Range: ",#range,13,10) ' Display Values in serial Terminal (via Programming interface, 4800bps) goto main ' and around forever
HTH und Viele Grüße
Jörg







Zitieren

Lesezeichen