Archiv verlassen und diese Seite im Standarddesign anzeigen : Sharp
Larzarus
26.05.2006, 17:01
Hi ich habe den Sensors "ein Sharp GP2D12" an den ADC PORTA.0 angeschlossen und trotzdem bekomme ich keine LED zum leuchten wo liegt der fehler bitte um hilfe...
$regfile = "m32def.dat"
$crystal = 16000000
Config Porta = Input
Config Portc = Output
Dim A As Word
Enable Interrupts
Start Adc
Do
A = Getadc(0)
If a > 0 Then Portc.7 = 1 Else Portc.7 = 0
If a > 128 Then Portc.6 = 1 Else Portc.6 = 0
If a > 256 Then Portc.5 = 1 Else Portc.5 = 0
If a > 384 Then Portc.4 = 1 Else Portc.4 = 0
If a > 512 Then Portc.3 = 1 Else Portc.3 = 0
If a > 640 Then Portc.2 = 1 Else Portc.2 = 0
If a > 768 Then Portc.1 = 1 Else Portc.1 = 0
If a > 896 Then Portc.0 = 1 Else Portc.0 = 0
Waitms 10
Loop
End
Config seh' ich nicht. Zum Beispiel:
Config Adc = Single , Prescaler = Auto
Larzarus
26.05.2006, 17:25
THX jetzt funzt es schon mal aber die letzte lampe leuchtet irgendwie nie....
Beim GP wirds nicht mehr als ca ~500 (2,6 V bei 10cm)
Larzarus
26.05.2006, 19:56
kann mir einer da vielleicht die zahlen sagen.
Also die abstufungen die mir das genauste ergebnis zeigen ....
Es kommt darauf an wie genau deine Refernzspannung ist und was es für eine ist. Außerdem kommt es dann noch auf die Auflösung des AD-Wandlers an.
Muss man denke ich selbst einstellen, bzw. herausfinden, weil die Werte immer anders sind.
Larzarus
27.05.2006, 19:58
Also es ist ein 10Bit AD Wandler.
Und ich denke die Boardspannung von 5V ist die Referenzspannung.
Es ist das RN-Control 1.4
und nun....
Naja, ein Blick ins Datenblatt verrät, dass der Sensor maximal 2,6Volt ausgibt, dann nimmt der digitale Wert maximal
x = (1023 x 2,6V) / 5V
an, also 531,96 gerundet 532.
Alle anderen Werte schwanken dann, zwischen 0 und diesen 532,
die auch auf diese Weise berechnet werden können.
Um die Entfernung auszurechnen ist mehr Mathematik notwendig, da der Verlauf nicht gerade, also linear, sonder potentiell verläuft.
Es ergibt sich
x in cm
y ist der digitale Wert vom Controller
x = e^( ln(y / 3908) / -0,866)
Auf die herleitung verzichte ich, da die etwas aufwendiger ist. Hab ich in mühevoller Näherungsarbeit entwickelt, funktioniert aber sehr gut. Man
muss nur bedenken, dass der Sensor erst ab etwa 8cm messen, kann vorher gibt es falsche Messwerte (wegen dem Anstieg der Maximalspannung in der potentiellen Funktion, besser im Datenblatt sichtbar).
Hoffentlich hab ich jetzt nicht zu viel Mathe reingepackt, aber es müsste noch ein bisschen verständlich sein.
VG Phönix
Grauselige Funktion für die Implementierung in einem kleinen uC. Ich habe auch vor, einen dieser Sharps einzusetzen, wenn es sich nicht vermeiden lässt, aber ich traue dem Ding nicht und werde es wohl an einigen wichtigen Punkten kalibrieren und dazwischen linear interpolieren, nur, damit eine Motorregelung im richtigen Moment halbwegs um das richtige Mass abbremst. Wirklich messen würde ich mit den Dingern nicht wollen. Ich habe Deine Formel eben mal versucht, halbwegs sinnvoll polynominal approximieren zu lassen - erwartungsgemäss ein totaler Fehlschlag, die Fehler sind grandios, die Koeffizienten verschwindend, um 0 herum geht's sowieso nicht. Bin ich froh, dass ich halbwegs genaue Messungen nur von einer DMS-Brücke brauche und richtig genaue (für ein anderes Projekt) von PT2000-Sensoren, aber die lassen sich ja bestens approximieren.
Ich muss zugeben, diese Funktion ist nichts für jeden kleien Controller!
Mit einem kleinen Trick lässt sich das ganze aber sehr vereinfachen.
Man invertiert die zu berechnende Entfernung, leitet die Funktion ab und schon man eine (nähereungsweise) linerare und einfachere Funktion. Die Formel dazu kann wirklich jeder Controller (sogar nur eine Logikschaltung) :-)
x in cm
y ist der digitale Wert
x = 1855 / (y - 15)
Geht aber nur bei einem 8bit AD-Wandler und 5V-Referenz.
VG Phönix
PS: Dass hab ich vergessen. Bei der Funktion oben mit der e-Funktion und dem Logarithmus gilt die Funktion nur für einen 10bit AD-Wandler bei 5V-Referenz. Vielleicht lag es bei dir daran?
Larzarus
28.05.2006, 23:14
Super sache jungs endlich mal leute die ahnung haben :-) Weiter so ihr seit echt ne hilfe. Was macht ihr so mit den mikro C´s und wie alt seit ihr. Was für Job denn ich möchte später auf jedenfall etwas da mit zu tun haben.
Larzarus
28.05.2006, 23:37
Es funzt
thx super ich freu mich richtig
Also hier eine muster lösung für RN control 1.4
Sharp sensoren
nur mit entfernung messen hab ich ncoh nichts gemacht...
werden mir jetzt ein paar motoren kaufen und gucken wie ich das zum laufen bekomme..
ich schreibe auch eine Dokumentation dazu
also wer als mit helfer mit rein will bitte melden....
Diese Doco soll es jedem ermöglichen mit dem Rn board einen funktionfähigen roboter zu bauen...
Werde mir demnächst die Pwm anschauen also den link poste ich hier wer weite helfen will ab und zu mal hier rein sehen .....
$regfile = "m32def.dat"
$crystal = 16000000
Config Porta = Input
Config Portc = Output
Config Adc = Single , Prescaler = Auto
Dim A As Word
Enable Interrupts
Start Adc
Do
'1 = aus
'0 = an
A = Getadc(0)
If A > 65 Then Portc.7 = 1 Else Portc.7 = 0
If A > 140 Then Portc.6 = 1 Else Portc.6 = 0
If A > 180 Then Portc.5 = 1 Else Portc.5 = 0
If A > 220 Then Portc.4 = 1 Else Portc.4 = 0
If A > 270 Then Portc.3 = 1 Else Portc.3 = 0
If A > 350 Then Portc.2 = 1 Else Portc.2 = 0
If A > 400 Then Portc.1 = 1 Else Portc.1 = 0
If A > 532 Then Portc.0 = 1 Else Portc.0 = 0
Waitms 10
Loop
End
So was freut uns doch immer gern! Danke! :-)
Ich bin 20 Jahre und seit Jahren Teilnehmer beim Robocup. Vielleicht hat schonmal jemand was davon gehört?
www.robocup2006.org
Werde im Winter anfangen Mechatronik zu studieren.
VG Phönix
Larzarus
28.05.2006, 23:48
Sehr geil ich werde im winter 2007 auch mechatronik studieren.
können ja ICQ nummern austauschen .
https://www.roboternetz.de/phpBB2/viewtopic.php?p=186125#186125
helft mir weiter bitte:-)
PWM wie was wo.....
Was PWM ist weiß ich schon... wie man sie proggt aber wo lege ich die PWM auf die Ausgänge
Was für einen Controller hast du?
Larzarus
29.05.2006, 19:30
ich habe eine Mega32 auf einer rn-contol 1.4
Naja, der mega32 hat max 4 PWM-Signale. Die liegen an den Pins:
OC0 / OC1A / OC1B / OC2 (OC steht für Oszillator)
Wie jetzt genau auf der RN-Control genau diese PINs herausgeführt erden, weiß nicht, weil ich keine RN-Control besitze. ( Bin Eigenbauer :-) ) Aber vermutlich alle über Stiftleisten, musst du halt mal nachschauen.
Für was willst du den die PWM verwenden? Wahrscheinlich, um einen Motor zu betreiben, oder?
Die Programmierung müsste ich jetzt nachschauen, weil ich die schonm lang nicht mehr verwendet hab. Du programmierst in Bascom? (Nach deinen Quellcodebeispielen). Schau doch mal in die Bascom Referenz, da stht das gut beschrieben.
Für noch mehr Fragen einfach schreiben!
VG Phönix
Larzarus
29.05.2006, 20:58
nein hat sich schon erledigt aer trotzdem danke wie siehts aus mit ICQ nummer wollen wir tauschen per PM könnten dann immer Mechatronik sachenund soweiter austauschen Presentationen usw was hatl so anfällt
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.