PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] RNBFRA mit Ultraschallsensor - Pulsein



Unregistriert
26.01.2015, 09:19
Hallo!

Ich habe ein Verständnisproblem mit meinem Aufbau:

Ich möchte an das RNBFRA einen Ultraschallsensor hängen. Soweit ich das nun verstanden habe, habe ich durch den PCF eine Porterweiterung (damit ich mehrere Sensoren anhängen kann). Dieser kommuniziert mit meinen Mikrocontroller per I2C. Ich kann also alle Portein bzw. ausgänge setzen und abfragen.

Jetzt habe ich aber im Bascom folgenden Befehl gefunden, die die Abfrage sehr einfach machen würden: pulsein

Damit kann ich direkt auf einem Pin messen, wielange das Echo vom Ultraschallsensor an dem Pin anliegt.

Wie kann ich das mit dem RNBFRA implementieren??

Danke,
Martin

Unregistriert
26.01.2015, 19:27
Mittlerweile habe ich es so halbwegs verstanden (denke ich).

Jetzt setze ich einen Pin für 15 us auf high um dann die Ultraschallmessung mit dem HC-SR04 Modul zu starten.

Meine Idee wäre nun, dass ich am PCF eine Pegeländerung vom Echosignal sehen müsste, dass ich mir über RS232 schicke. Leider tut sich nichts?!

Hat diesbezüglich jemand einen Ansatz?

$regfile = "m32def.dat" ' oder bei Mega16 $regfile = "m16def.dat"

Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2
Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2

Dim I2cdaten As Byte

Dim I2cdaten2 As Byte 'Datenbyte aus PCF8574

Dim B1 As Byte
Dim I As Byte

$baud = 9600
$crystal = 8000000 'Quarzfrequenz
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1

Portd.6 = 0 'Schrittmotoren erst mal ausschalten
I2cinit

'******** Diese 4 Befehle sind nur ab RNBFRA Version 1.2 (nicht in V 1.1)
' notwendig und bzw. möglich (erweiterte Energiesparfunktion und LED´s)
' Bei Board 1.1 bitte auskommentieren oder löschen
I2cstart
I2cwbyte &H74 'Schreibbefehl an PCF3 schicken
' Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv)
I2cwbyte &B00000010 'Datenbyte an PCF3
I2cstop
'*********

I = 0
I2cdaten = 1

Do
I2cstart
I2cwbyte Writeeingabeport_adr
I2cwbyte &B00000000
I2cstop

Waitus 15

I2cstart
I2cwbyte Writeeingabeport_adr
I2cwbyte &B00001000 'äußerer Pin ist 4.
I2cstop

Waitus 15

I2cstart
I2cwbyte Writeeingabeport_adr
I2cwbyte &B00000000
I2cstop



Dim A As Byte

For A = 1 To 100

I2cstart
I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken
I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen
I2cstop


Print I ; " Eingangsport Wert" ; I2cdaten


Waitus 100

Incr I

Next A

Waitms 1000

Loop




End

RoboHolIC
27.01.2015, 08:49
Meine Idee wäre nun, dass ich am PCF eine Pegeländerung vom Echosignal sehen müsste

Hast du schon mal überschlagen, welchen kürzesten Abfragezyklus du mit dem PCF (welcher genau) und der maximalen Clockfrequenz, vermutlich 400 kHz hinkriegst und welcher Messungenauigkeit das entspricht? Vielleicht genügt es ja, aber du verschenkst Genauigkeit durch die relativ langsame I2C-Kommunikation.

Die Lösung mit pulsein() ist bezüglich der Messgenauigkeit sicherlich der bessere Weg.