-
ich wollt mich nochmal zu wort melden ... ich habe meine Liniensensoren umgebaut (präzisockel statt direkt anlöten und winkelsockel nach vorn) und die rote LED durch ne IR-LED ersetzt .. ich mach kurz hintereinander 3 abfragen, mit IR ohne IR und wieder mit IR ich vergleiche die beiden IR werte, um nicht eventuell einem schnellen lichtwechsel zum opfer zu fallen, sind diese werte annähernd gleich zieh cih den "dunkelwert" ab und habe eine differenz, die ist FAST immer konstant, wenn die aussenbeleuchtung zu hell wird kommt nurnoch 0 raus, aber das liegt vermutlich daran das die FTransistoren dann voll durchschalten und es zwischen 1024hell und 1024dunkel keine unterschied mehr gibt ^^
-
gute idee mit den dppelten werten. so kannst du relativ sicher ausschliessen dass falsche werte dazwischen sind. kannst du dazu evtl einen codeschnipsel posten?
-
bitte hilfe
hallo,
bitte kan mir jemand helfen!!!!
ich baue gerade einen asuro in der schule und will auch die lichtsensor funktion haben.
ich brauche die libs von waste.
es steht zwa das sie im anhang sind aber ich kan den anhang bwz die lib nicht finden.
habt ihr sonst noch irgentwelche tips was ich beim asuro verbessern kann??
gruß inflames
-
Hallo
Ab Version 2.3 ist die Abstandsmessung nach waste Bestandteil der Lib:
http://downloads.sourceforge.net/asu...3&big_mirror=0
Das ist die Änderung beim Timer:
Code:
//-------- seriell interface programmed in boot routine and already running -------
// prepare 36kHz for IR - Communication
TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
OCR2 = 0x91; // duty cycle for 36kHz
TIMSK |= (1 << TOIE2); // 36kHz counter for sleep
(Aus init() in asuro.c: IR-PWM und 36kHz-Timer)
Alle Libs:
http://sourceforge.net/project/showf...kage_id=172835
Ich verwende übrigens auch Version 2.3
Gruß
mic
-
Hallo zusammen.
Ich wollte hier nur mal kurz auf den Thread von oberallgeier (Abstandsmessung ähnlich wie IR-Schnittstelle des asuro) hinweisen, da dort ja auch einiges in Punkto IR-Abstandsmessung läuft.
Angesprochen war dort unter anderem, dass die Messung iterativ erfolgen könnte. Es sind einige grundsätzliche technische Überlegungen vorhanden, und außerdem ist viel vom User OT zu lesen.
Wer also noch auf Abstandsuche ist, kann hier Abstände im Timerinterrupt finden.
Ja, ja, hätte ich auch hier unterbringen können ;-)
Gruß Sternthaler
-
Hi Leute!
Ich mach zur Zeit eine Belegarbeit mit dem Asuro,allerdings in Assembler.
Assembler finde ich teilweise viel einfacher und verständlicher als C und der größte Vorteil ist,die Programme haben nur 1/10 der Größe eines vergleichbaren C Programmes.
Nun zu meiner Frage: ich werd nicht so richtig schlau aus der IRCollision in der Lib. Waste hat im Forum geschrieben er macht die PWM mittels dem OCR2,das liegt nahe,da der OC2 pin ja direkt an der Sendediode liegt.
Aber wo sind die Grundeinstellungen des Timers an sich versteckt?
Hab die includes durchsucht,und bin auf nichts gestossen. Man muss dem Timer doch durch Setzen der verschiedenen Bits sagen das er PWM machen soll,inklusive Vorteiler,TOP-Wert usw.
Wäre nett wenn jemand mal ne Hilfestellung gibt! =P~
Übrigens: Hab meinen Umbau nach Waste's Vorlage gemacht und muss sagen ,Absolut genial.
Der Thread zur Kompensation des Umgebungslichtes war für die Belegarbeit auch sehr hilfreich. Wir haben den Asuro im Kreis fahren lassen während die FrontLED mit bestimmten Takt blinkt. In einem gewissen Frequenzbereich wird die Differenz der beiden Messungen(also mit und ohne LED) nahezu konstant. Daraus folgt,wenn man Asuro fahren lässt und die FrontLED blinkt in gefundenem Hz-Bereich,ist das Umgebungslicht erfolgreich ausgegrenzt.
Also Grüße und postet mal wenn einer was hat über die Timer2 Grundeinstellung für PWM
-
Hallo Arthur S.
die Grundeinstellung zum Timer findest du in der Init()-Funktion.
Für die IR-Abstandmessung werden, in der dazugehörenden Initialisierungsfunktion, nur einige Pins umkonfiguriert und die Änderung zum PWM-Ändern passiert in der Messfunktion selber. Das ist der OCR2-Wert, der dort angepasst wird. Dieser Beinflusst nun das Takten so, dass eben eine PWM entsteht.
Gruß Sternthaler
-
-
Also erst mal danke,dass ihr euch gemeldet habt.
@Sternthaler: Ich hab mal in die Beispieldatei IRCollisiontest reingeschaut.
da heißt dann die Funktion void InitIRDetect(void).Hab aber nichts gesehen,sie müsste sich doch entweder in der stdlib.h oder in der asuro.h befinden. Die werden ja per include eingebunden.
Es muss ja schließlich möglich sein die PWM auch in Assembler mit Timer2 hinzubekommen.
Gruß
wie die Pwm ansich funzt ist klar,ich bekomm sie nur net zum laufen^^
-
Da musst du wohl genauer gucken ;)
Die Datei test.c des IRCollisiontest fängt damit an:
Code:
void InitIRDetect(void)
{
UCSRB = 0;
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
OCR2 = ocr2;
}
edit: Allerdings ist der Aufruf in meiner Version auskommentiert und der Inhalt der Funktion bereits im main() verstreut ...