Attiny2313 und SRF08 Problem

Gast #1862514
Lesenswert?

Hallo

Hab mal aus reiner Neugier mein Attiny2313 mit einem LCD Display und Dem 
Ultraschallmodul SRF08 verbunden. Natürlich ist das modul an die 
richtigen Anschlüsse des Controllers angeklemmt (SCK u. SDA). Das 
Programm ist in Bascom geschrieben. Mein Display zeigt mir auf einfache 
Art und Weise die Reichweite in cm an. Der Messbereich geht bis ca 80cm. 
Laut Beschreibung kann er aber auch bei 6m o. 11m liegen. Mit dem 
Register 2 hab ich die Reichweite auf 100 (6m) gesetzt. Die Auswirkungen 
sind gleich 0.
Ich hab selbst vieles bereits durchprobiert. Pullupwiderstände bringen 
kein brauchbares ergebniss, Kondensator am Controller von 100n ist 
vorhanden.
Allerdings konnte ich durch ein kurzzeitiges anschliessens eines 
Wiederstandes von 10K & weniger von SDA gegen Masse die gewünschte 
Reichweite erzielen.

Kennt jemand dieses Phänomen, oder hab ich einfach nur etwas evtl. nicht 
beachtet?
Gast #1863275
Lesenswert?

Ja Hi

Sinn ergibt der Wiederstand allerdings für mich auch nicht, da es ja ein 
Kurzschluss auf dem Port ist oder?

hier mal der Code und die Schaltung in einfachster weise. LCD Display 
ist nicht mit eingezeichnet.

$regfile = "ATtiny2313.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcdpin = Pin . Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , 
Db7 = Portb.3 , E = Portd.5 , Rs = Portd.6
Config Lcd = 16 * 2
Cursor Off
Cls

Config Scl = Portb.7
Config Sda = Portb.5
Dim Entfernungus As Integer
Dim Weite As String * 3
Dim Msb As Byte
Dim Lsb As Byte


Do

I2cstart                            'Messung auslösen
I2cwbyte &HE0                       '&HE0 1. Adresse für diesen Baustein
I2cwbyte 0                          'Register 0 - Befehlsregister
I2cwbyte 81                         'Befehl 81 - Messung in cm
I2cstop

I2cstart
I2cwbyte &HE0                       '&HE0 1. Adresse für diesen Baustein
I2cwbyte 1                          'register "Verstärkung"
I2cwbyte 100 
'Verstärkungslimit
I2cstop

I2cstart
I2cwbyte &HE0                       '&HE0 1. Adresse für diesen Baustein
I2cwbyte 2                          'register "reichweite"
I2cwbyte 100                        'Bereich
I2cstop

Waitms 70                           'delay 70mS auf Ergebnis warten

I2cstart
I2cwbyte 224                        'E0 Addresse vom 1. US
I2cwbyte 2                          'Register 2 (+3) = 1. Entfernung

I2cstart
I2cwbyte 225                        'Leseadresse (E1)
I2crbyte Msb , Ack                  'Register 2 lesen
I2crbyte Lsb , Nack                 'Register 3 lesen
I2cstop

Entfernungus = Makeint(lsb , Msb)
Weite = Str(entfernungus)
Weite = Format(weite , "   ")
Locate 1 , 1
Lcd "Entfernung:" ; Weite ; "cm"

Loop
Return
Angehängte Dateien:
(Firma: ACS) #1864302
Lesenswert?

Hi smufte,

schon geprüft ob der MC auch mit dem richtigen takt von 1MHz versorgt 
wird? oder ob fuses gesetzt worden sind?
meist liegt es entweder an der schaltung oder an den fuses :-)
code scheint auf anhieb ok zu sein, werd mal heut mittag reinsehen und 
dann evtl. nochmal berichten...
lg giuse
Gast #1864340
Lesenswert?

Hallo

Ich glaub das Problem ist gar kein Problem.

Ich hab vergessen, das dieses Modul auch einen großen Abstrahlwinkel 
besitzt.
Das hat sich naürlich auch auf das Messergebniss ausgewirkt. Der 
Widerstand den ich kurzzeitig von SDA nach masse gelegt hatte, hat 
möglicherweise nur Fehler verursacht die ich wohl falsch gedeutet hatte. 
Jedenfalls misst er die genaue reichweite, wenn sich nichts in 
unmittelbarer nähe befindet.

trotz allem vielen Dank für die Mühe......

MfG Smufte

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren