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?
Hi, wie wärs denn mal mit nen code??? ner schaltung??? dann können wir dir auch weiterhelfen... LG Giuse
smufte schrieb: > Allerdings konnte ich durch ein kurzzeitiges anschliessens eines > Wiederstandes von 10K & weniger von SDA gegen Masse die gewünschte > Reichweite erzielen. ? Was hat das Anschliessen eine Pulldown Widerstands an SDA (== Übertragungsbus I2C) mit der Reichweite des Moduls zu tun?
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.