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
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.
@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
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.
@Marco Also mit dem Widerstand geht das auch nicht.. Welcher Wertebereich?
ABER wenn ich den Sensor überbrücke, geht es..d.h. Quelltext etc alles richtig, aber der Sensor nicht...Gibt es da nen Trick beim anschließen? Oder ist der Sensor defekt?
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^^
ha, hab sowohl die 2.56 als auch die externe , avcc getestet.. hab den chip schon aufm entsprechenden board, daher meistens mit den 5V avcc
$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
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 ;)
nunja, es kommen unterschiedliche SPannungen aus dem Sensor.. es sollen je nach Abstand 0.3 bis 3V rauskommen, und das tun sie auch.. http://www.technologicalarts.com/myfiles/data/gp2d120.pdf Mit dem Quellcode oben, leuchtet die LED IMMER....
Was für ein Board hast du denn? Sind da parallen zu den ADC-Pins noch irgendwelche Widerstände wie genau ist das alles denn verdrahtet?
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=162 RN-Mega2560 Modul Ich denke, die Verarbeitung des zurückgegebenen Wertes ist der Fehler, wenn ich aus If W > 800 --> If W < 800 mache, dann ist sie immer aus.. Evtl ne Einstellung an den Fusebits?
eventuell noch den adc port als input definieren ? nich, das der interne pullup dazwischenfunkt ;)
nja reicht doch den ADC zu konfigurieren, also zu aktivieren, oder?
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.
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.
hab das programm grade mal aufm mega8 getestet (nur das regfile geändert) und es funktioniert einwandfrei... muss an deiner hardware liegen.
nu ja, viel glück noch beim fehler suchen und gute nacht.
also, am Pin kommt die SPannung immer an, GND ist natürlich verbunden. Das Testprogramm mit Quarzfrequenz funzt einwandfrei.. was nun? -.-
WARUM liegt an meinem ADC Pin ne Spannung von 5V an?^^ Ich dachte der Port soll messen, und keine Spannung abgeben?
lol und jetzt liegen keinen 5V mehr an, aber wenn ich die ~2 V z.b. vom Sensor anlege, wird die Spannung neutralisiert, dann ergeben die Messungen nur noch 00V ?
lol, Achja, Lösung: Das Datasheet war fehlerhaft -.- geil.... thx@all
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
If W > 500 Then Led = 1 Else Led = 0 mache versionen von bascom mögen den syntax nicht If W > 500 Then Led = 1 Else Led = 0 end if
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.