ADC: Auslesen eines Sharp 2D120X in Bascom

Gast #430431
Lesenswert?

Servus,

habe den Sharp IR-Sensor und den Atmel ATMEGA a2560 an stabilisierte 5 V 
angeschlossen, außerdem das Signal vom Sharp an PinF.0 (ADC 0) gelegt.
Ab einer bestimmten Entfernung soll eine LED den Status anzeigen.. 
Leider passiert rein garnichts...
Mit der Variable W habe ich auch schon rumgespielt, umgewandelt, aber 
ohne Erfolg..

Wo liegt mein Denkfehler?

Quelltext:


$regfile = "m2560def.dat"
$hwstack = 82
$framesize = 68
$swstack = 68
$crystal = 16000000
Dim W As Word

Config Pind.5 = Output
Led Alias Portd.5

Config Adc = Single , Prescaler = Auto , Reference = Off

Start Adc


Do
  W = Getadc(0)

  If W > 500 Then Led = 1 Else Led = 0


  Waitms 500
Loop

End





Danke
Gast #430460
Lesenswert?

Der Code sieht richtig aus. Wenn du mit den Werten für W schon 
rumgespielt hast, denke ich eher das es an der Hardware liegt. Wie ist 
der Sensor angeschlossen? Direkt der Ausgang des Sensors an den ADC ohne 
weitere Beschaltung?

Wenn ja, dann ist das falsch.

http://www.roboternetz.de/phpBB2/files/plan_772.gif
Im Prinzip so wie unter (1) zu sehen muss der Sensor angeschlossen 
werden.
Gast #430468
Lesenswert?

@MArco


Kannste mir das Schaltbild mal in Worten erklären?

Der Sharp machte auf Grund seiner großen Externbeschaltung den Eindruck, 
er wäre in der Lage an den MC angeschlossen zu werden..

+ - Signal

Sind die 3 Leitungen vom Sensor....




thx
Gast #430485
Lesenswert?

Ich habe selbst mal einen Plan gezeichnet. Vielleicht sagt der das 
besser aus. Den Tiny25 musst du dir als deinen Mega2560 vorstellen und 
rechts der TSOP1736 kann man auf Grund seiner Anschlüsse wohl mit dem 
Sharp gleichstellen. Zumindest hat er auch einen Signalausgang.
Wenn das nicht hilft, muss ich es weiter in Worten probieren.

Die 10kOhm des Widerstands sind jetzt nur frei gewählt. Sollte der 
Wertebereich damit zu klein sein, muss man ihn ggf ändern.
Angehängte Dateien:
Gast #431809
Lesenswert?

SO, aber eine SPannugsmessung ergab, dass der Sensor funktioniert, also 
muss es doch irgendwie an der AUSWERTUNG des Signals geben, evtl mit dem 
FORMAT, welches ADC zurückgibt?



hülfe, bittee^^
Gast #431836
Lesenswert?

$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44

$crystal = 16000000
Dim W As Word , Lev As Single 
'Quarzfrequenz

Config Pind.5 = Output
Led Alias Portd.5

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc


Do
  W = Getadc(0)

  If W > 800 Then Led = 1 Else Led = 0


  Waitms 1
Loop

End
Gast #431839
Lesenswert?

Kannst du dir W nicht über RS232 ausgeben lassen oder auf einem LCD 
anzeigen lassen. Dann siehst du schonmal was du überhaupt passiert.

Ist GND vom Sensor mit GND vom Mega2560 verbunden?

Hast du ein Link zum Datenblatt des Sensors?

Wenn alles nicht hilft, fang eine Nummer kleiner an. Mit einem Poti.
Ein Anschluss der Widerstandsbahn auf GND, den anderen auf VCC/VRef und 
den Schleifer an den ADC. Je nach Auflösung des ADC (8 oder 10Bit) 
bekommst du dann beim drehen am Poti unterschiedliche Werte.

Ptot des Potis aber beachten! Sonst stinkt es unangenehm ;)
Gast #431868
Lesenswert?

ja eigentlich schon aber nen versuch kann ja nicht schaden, oder?
miss doch mal die spannung am adc pin ob die sich auch ändert wenn der 
sensor angeschlossen ist. wenn ja ... dann weiß ich auch nicht. wenn sie 
sich nicht ändert und bei 5V bleibt, weißt du wo der fehler zu suchen 
ist.

In der Simulation funktioniert das programm jedenfalls.
Gast #431869
Lesenswert?

Auch auf der Gefahr hin, das ich mich wiederhole...

Sind GND des Sensors und GND des Boards verbunden?
Wie genau ist der Sensor ans Board angeschlossen?

Hast du an den Fusebits was geändert? Steht der Chip auch auf externen 
Quarz?





$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44

$crystal = 16000000

Config Pind.5 = Output
Led Alias Portd.5

Do

Led=1
waitms 3000

Led=0
waitms 3000

Loop

End




Probier den Code mal aus. Wenn die LED nicht 3 Sekunden an und 3 
Sekunden aus ist, stimmt mit der Taktfrequenz was nicht. Und die 
Frequenz ist für den ADC auch wichtig. Ich glaube zwar nicht, das es das 
ist, aber was anderes bleibt für eine Ferndiagnose z.Zt. nicht offen. 
Außer das messen der Spannung direkt am Pin.
Gast #585864
Lesenswert?

hi leute ich habe auch den mega2560 vom roboternetz und das gleiche 
problem! was stimmt den an dem datenblatt nicht? bin das gerade auch 
alles stück für stück am analysieren. mich wundert es, das pin 100 und 
99 nicht beschaltet sind. laut atmel doku zum mega2560 sollten die für 
AVCC (pin100), GND (pin99) und AREF (pin98).pin99 das ist en extra 
ground um masseschleifen zu verhindern. ich bin nun so schlau, dass ich 
folgendes festgestellt hab:

mega2560 ic selbst:
pin 100 = AVCC (Spannungsversorgung für Port F und den A/D-Wandler)
pin  99 = AGND
pin  98 = AREF (Referenzspannung für A/D-Wandler)

>>ATMEL Doku:
- AVCC is the supply voltage pin for Port F and the A/D Converter. It 
should be externally connected to VCC, even if the ADC is not used. If 
the ADC is used, it should be connected to VCC through a low-pass 
filter.
- AREF is the analog reference pin for the A/D Converter.

>>General:
As inputs, Port A-L pins that are externally pulled low will source
current if the pull-up resistors are activated.

des weiteren müsst ihr noch die registern ändern wenn ihr den 
a/d-wandler verwendet, wie das funktioniert könnt ihr ja in der atmel 
anleitung zum mega 2560 nachlesen. ich kann euch sowieso nur empfehlen 
die orginal hersteller anleitung als referrenz zu nehmen, hatte anfangs 
zwar auch erst keine lust da mir das zu viele seiten waren aber so 
schlimm ist das gar nicht wenn man es erst mal verstanden hat.

hoffe das ich einigen damit helfen konnte! schreibe gerade aber noch 
eine komplette anleitung zum rn-mega2560 weil die anleitung vom 
roboternetz total verbuggt ist! habe mich deswegen schon häufig genug 
aufgeregt und mir schon einige nächte um die ohren gehauen um als 
totaler elektronik anfänger da nun durchzusteigen. mache das erst 4 
wochen, aber in der zeit habe ich durch intensivstes lernen schon so 
viel neues entdeckt wovon ich vorher nicht den hauch einer ahnung hatte 
und muss nun doch leider feststellen, dass es auch beim robotikhardware 
bzw. dem roboternetz (werden ja wohl unter einer decke stecken) 
anscheinend doch auch wohl nur um das eine geht -> geld. es wird zwar 
sehr auf dem board viel geholfen jedoch muss ich auch immer wieder 
feststellen, dass es anfängern recht schwer gemacht wird! abgesehen 
davon was sich da manchmal für leute rumtreiben kann man das auch auf 
der einen seite verstehen. ich habe mich jedoch krampfhaft dazu 
gezwungen nicht auf irgendeinem board nach infos zu fragen sondern alles 
selber heraus zu finden.

der hintergrund an der sache ist wie man hier schön sehen konnte 
folgender: nicht auf den fehlern anderer vertrauen bzw. sie nicht mal 
als fehler zu erkennen und dadurch halt nicht weiter zu kommen. das kann 
man auch analog in der wissenschaft sehen wie auch in der schule und 
fast überall. die menschen verdummen und denken nicht mehr selber, 
sondern "lernen" (auswendig lernen aus frust und nicht 
verstehen/begreifen aus spaß an der freude) das was ihnen vorgegeben 
wird. was dabei raus kommt sieht man ja häufig genug in unserer 
gesellschaft.

naja, nun denn möchte ich euch mal nicht länger hiermit quälen da ich 
schon viel mehr geschrieben habe als ich eigentlich vor hatte.

mfg m0gwai

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