PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschall Sensor Arduino hc-sr04



BennIY
28.11.2014, 23:52
Guten Abend liebe Community,

ich versuche seit heut mittag den Ultraschall Sensor hc-sr04 für Arduino zu betreiben, ein wenig erfolglos.
Vorab ich habe kein Arduinobaord sondern ein Steckbrett mit einem Atmega8515 und natürlich ein Programmieradapter.
Zum allgemeinen Anschluss, Trigger ist am PortB welcher Ausgang ist. Echo ist an PortA welcher als Eingang definiert wurde und die LED ist mit ihrer Kathode an PortD.

Das Programm soll die LED zum leuchten bringen sobald der Sensor etwas in 50cm erfasst und diese wieder ausschalten sobald das Objekt weg ist.
Hier mein Code:
http://pastebin.com/6Jq9mGTJ

Anbei 2 Datenblätter von den ich meine Daten her nehme die sich aber, wie in den Kommentaren im Code geschrieben, in einer Sache widersprechen.
http://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf
http://www.micropik.com/PDF/HCSR04.pdf

Hoffe auf freundliche Hilfe

Mit freundlichen Grüßen
BennIY

Klebwax
29.11.2014, 00:40
Im deutschen steht nicht 117ms pro 2cm, sondern 0,117 ms

MfG Klebwax

BennIY
29.11.2014, 00:48
Hups, dann währe das schon Mal richtig ca. 116 bis 117 ticks pro 2cm. Gibt es Einwände zu meinem Programm fehler oder besserungen? Es ist im Moment so, dass die LED nicht leuchtet.

Valen
29.11.2014, 11:56
Bist du sicher das was hier passiert die Port B als Ausgang schaltet, und Port A als Eingang? Weil du im beiden Code Teilen das gleiche macht:
Sind Port A und B nun nicht beiden Ausgang, oder beiden Eingang? (Ich kenne mich mit AVR Assembler nicht so gut aus.)


ldi temp, 0xFF ; Port B auf Ausgang

out DDRB, temp

ldi temp, 0xFF //PortB auf HIGH

out PORTB, temp



ldi temp, 0xFF // Port A auf Eingang

out DDRA, temp

out PORTA, temp //Interne Pull UPs

BennIY
29.11.2014, 12:54
Vieken Dank für den Hinweis, habe das Richtungsregister wie folgt angepasst



ldi temp, 0xFF ; Port B auf Ausgang
out DDRB, temp
ldi temp, 0xFF //PortB auf HIGH
out PORTB, temp

ldi temp, 0xFF ; Port D auf Ausgang
out DDRD, temp

ldi temp, 0x00 // Port A auf Eingang
out DDRA, temp
out PORTA, temp //Interne Pull UPs


Zusätzlich PortD auf Ausgang geschaltet, nun tut sich etwas, in einem gewissen Bereich leuchtet die LED.

Mit der Variable sollDist hatte ich vor, die maximale Distanz in 2cm einzugeben, ab die der Sensor die LED schalten soll. Im Programm steht im oment:

ldi solldist, 0x05
Was für eine Distanz von 10cm stehen soll.
Nun ist es so, die LED geht an und komme ich näher oder gehe weiter weg, geht sie aus allerdings liegt dieser Bereich an dem die LED an geht weit über 10cm.
Mein Ziel war es eigentlich sie ab 10cm zum Leuchten zu bringen.
Mache ich sollDist kleiner geht sie auch früher an jedoch wieder aus wenn ich dem Sensor näher komme.