Da wird man sicher den RP6-Code nicht unverändert übernehmen können.
Du hast ja einen ATmega 16 und nicht den 32. Da dürfte bei der Initialisierung nicht alles identisch sein. Ich habe das jetzt aber nicht nachgeschaut.
Da wird man sicher den RP6-Code nicht unverändert übernehmen können.
Du hast ja einen ATmega 16 und nicht den 32. Da dürfte bei der Initialisierung nicht alles identisch sein. Ich habe das jetzt aber nicht nachgeschaut.
Gruß
Dirk
Hi,
danke erstmal für deinen ersten Gedanken... Also, ein Problem hat sich schon gelöst. Ich hatte nen Zahlendreher drin und hab das falsche Programm geladen. Deswegen ging das mit den 36 KHz der IR-LEDs nicht. Gut Problem behoben. Ich habe die LED an IOB5 so programmiert, dass sie ihren Zustand jedes mal wechselt, sobald ein Interrupt an INT2 (ACS) eingeht. Diese blinkt jetzt im Dauerfeuer. ziehe ich beide IR-LEDs raus, dann hört das blinken auf. Das Problem ist nur, dass ich die Signal (obstacle_left und obstacle_right) nicht auswerten kann.Ich werde aber auf jeden Fall nochmal das Datenblatt zur Initialisierung des Timer2 und INT2 wälzen. Ich hoffe, ich finde was.
Ich freue mich über weitere Tipps und gedanken
Schönen Sonntag noch
PS: Könnt ihr mir nen Denkansatz geben für ein eigenes ACS Programm. Die RC5 Code Auswertung brauche ich ja nicht. Mir reicht es, wenn der Controller Links, rechts, mitte auswerten kann.
Ich hab aus dem RP6 code jetzt alles rausgenommen, was mit IRCOMM und RC5 zu tun hat.
Das Problem, was ich jetzt aber nach wie vor hab, ich kann obstacle_left und obstacle_right nicht auswerten. Meine Status-Leds hab ich soweit programmiert, dass mir eine anzeigt, wie der Interrupt Eingang arbeitet. Diese leuchtet etwa mit halber Helligkeit, was ja bedeutet, dass dort ein wechselndes Signal anliegt. Ziehe ich nun eine IR-LED ab, dann blinkt sie ganz schnell. Ziehe ich beide IR-LEDs ab, dann hört das blinken auf. Das heißt ja dann scheinbar, dass der TSOP ein Signal von den Dioden bekommt. Und scheinbar bekommt er es ja auch immer wechselseitig. Aber ich kann mir nicht erklären, warum das obstacle nicht funktioniert. Kann es wirklich daran liegen, dass ich einen Atmega 16 statt Atmega 32 verwende. Ich habe im Datenblatt zum Timer2 und INT2 nachgeschaut und das ist soweit identisch. Ich hoffe wirklich, dass ihr noch nen guten Tipp für mich habt.
Geändert von RP6fahrer (24.07.2013 um 08:37 Uhr)
Hallo,
ich habe weiterhin viel versucht, sogar nen ATmega32 eingebaut, aber irgendwie klappt das mit dem ACS nicht. Was wäre eine günstige Alternative.
Mich würde auch interessieren ob man unbedingt das mit 36kHz modulierte Signal braucht oder könnte man auch die IR-LEDs auf Dauerlicht setzen und dann mit IR-Phototransistoren eine Reflexion detektieren? Oder hat das nicht soviel Reichweite?
Es tut mir leid, das ich so einfache Fragen stelle, aber ich hab das Problem, dass ich derzeit keinen IR-Phototransistor habe und das somit nicht testen kann und bevor ich dann sinnlos Geld ausgebe...
VIelen Dank für eure Hilfe![]()
Der Vorteil der Kombination 36kHz-modulierte-irLED und dazu passendes Empfängermodul/-IC à la SFH5110 ist einmal die Anpassung an das Umgebungslicht und zum andern die Sicherheit gegen Fremdlicht wie Leuchtstofflampen, Gewitterblitze etc. Anm: die 36 kHz sind auf das Empfängermodul abgestimmt, es gibt Systeme mit anderen Modulationsfrequenzen: 38 kHz oder 40 ..., das funktioniert ebenso.... ob man ... 36kHz modulierte Signal braucht oder könnte man auch die IR-LEDs auf Dauerlicht setzen ...
Deshalb wurde dieses System auf der Grundlage des asuro vor Jahren von waste (klick) aus der Taufe gehoben. Damit hatte ich ausführlich weiter experimentiert (klick) weil mich diese Technik beeindruckte. Dabei hatte ich diese Messung etwas weiter ausgebaut, um sowohl Hindernisse als auch Abgründe zu detektieren (wieder ...). Das läuft prächtig. Ich hatte das in verschieden meiner Roboter eingebaut, zum Beispiel Dottie - die laufende Coladose - oder in WALL R, wo das gleiche System auch eine gestufte Reaktion auf verschiedene Abstände ermöglichte.
Dieses System läuft aber weder in wastes Urform noch in meiner Variante über ADC. Sowohl Beschreibungen als auch Code ist in den verlinkten Threads mehrfach enthalten. Vielleicht ist diese Lösung etwas für Dich? Jedenfalls viel Erfolg (und GEduld) mit Deinem Projekt.
Ciao sagt der JoeamBerg
Hallo Oberallgeier,
Danke für deine Anwort. Ich hab leider zur Zeit wenig Zeit im Internet, deswegen konnte ich noch nicht alle Links verfolgen. Aber ich habe weiterhin experimentiert. Bei dem TSOP 31236 ist es doch so, dass sobald ein 36kHz Signal einwirkt, dass sich der Ausgang auf Low zieht, richtig? Jetzt hab ich nen Programm geschrieben, wo die IR-LEDs dauernd mit 36kHz blinken (mit Multimeter nachgemessen: 36,1 kHz). Ich habe dann den IR-Empfänger neben dir IR-LED gebaut und mit dem Messgerät die Spannung auf Ausgang vom TSOP gemessen (ca 5V). Jetzt habe ich in verschiedenen Entfernung meine Hand davor gehalten, aber der Ausgang bleibt unverändert. Dann habe ich einen kleinen Spiegel genommen und ca. 1cm vor dem Empfänger schaltet er den Ausgang auf Low. Warum habe ich keine Reichweite?
Dann hab ich ein weiteres Programm geschrieben wo, die LEDs nur 200ms lang blinken und 800 ms aus sind. Mit einmal habe ich schon mehr Reichweite (etwa 10 cm). Ist das so normal?
Danke, Geduld ist hier wirklich gefragt. Ich finde es so schade, dass der RP6 code nicht einfach funktioniert. Naja, da ich momentan auf Montage bin, kann ich leider nicht überprüfen, ob die LEDs bei dem RP6 code blinken. Zuhause habe ich ein Oszi, da kann ich das detailiert ausmessen.
Ich werde aber deine Links noch weiter durcharbeiten.
Vielen Dank für deine Hilfe und ich freue mich über weitere ;D
MfG
RP6fahrer
Hi RP6fahrer,
Das war -denke ich- klar, weil beim RP6 ins ACS auch noch IRCOMM verschachtelt ist. Das war nicht 1:1 übertragbar.Ich finde es so schade, dass der RP6 code nicht einfach funktioniert.
Andererseits:
Man kann es gut schaffen, ein ACS hinten technisch genauso umzusetzen wie vorn und das auch mit dem µC des RP6 auszuwerten. Ein eigener µC dafür ist fast schon Overkill.
Die Auswertung kann so aussehen:
Du schreibst eine Funktion, die die LEDs mit 36 kHz blinken läßt. Zusätzlich kannst du die beiden LEDs einzeln ein-/ausschalten und mit 2 Portpins auch die Intensität (durch die Vorwiderstände) verändern.
Ob ein 36 kHz IR-Signal empfangen wurde, wertest du mit dem TSOP aus.
Das alles ist für dich sicher nicht neu. Aber: Das Programm dafür dürfte auch relativ einfach umzusetzen sein. Möglicherweise müßte man dazu aber die BaseLib modifizieren.
Wenn du all das nicht machen willst, könnte man hinten auch 2 SHARP-IR-Distanzsensoren und 2 Bumper dranbauen, wie fabqu das beim MultiIO Projekt gemacht hat: Klick!
Gruß
Dirk
Hey Dirk,
nach langer Zeit hab ich mal wieder Zeit dafür gehabt. Danke für deine Hilfe und Links. Bumper habe ich schon hinten dranDie funktionierten auch auf Anhieb.
Die Sharp Sensoren hab ich auch schon in Erwägung gezogen, aber da ich dafür noch kein Geld ausgeben möchte und das andere Zeug da habe, hat mich der Ehrgeiz weitergepackt und ich habe wieder mehr versucht. Ich hab jetzt nochmal ein Komplett eigenes Programm geschrieben. Dabei habe ich beide IR-LEDs dauerhaft mit 36KHz blinken lassen. Am TSOP hab ich erstmal nur das Oszi hängen. Dort sieht ma ja schön, wann er ein Signal empfängt. Ergebnis ist: ich habe überhaupt keine Reichweite. Nur wenn ich die IR-LED direkt vor den TSOP halte, dann schaltet er seinen Ausgang auf Low. Das nützt mir nix, darum habe ich das Programm etwas verändert, nämlich, dass jetzt jede LED nacheinander für 20ms blinkt(mit 36KHz), und zwischen den beiden eine Pause von 500ms. Das heißt, 500ms vergehen LED1 blinkt für 20ms, 500ms warten, LED2 blinkt für 20ms und das wieder von vorn. Mit einmal hab ich eine gewaltige Reichweite. Ich muss die LEDs komplett zuhalten mit der Hand (Papier bringt nichts). Sonst empfängt der TSOP alle 500ms ein Signal. Es freut mich das das Programm ja scheinbar geht, aber warum hab ich mit einmal so eine gewaltige Reichweite. Die IR-LEDs haben einen Vorwiderstand von 1,5KOhm. Wenn ich sogar, wie beim RP6, zum 1,5K noch 2,2K parallel schalte, und mit meiner Hand den direkte Sichtkontakt der LEDs mit dem Tsop abdecke, dann erkennt dieser sogar die Reflektion der ca 1,5m entfernten Wand.
Zwei Dinge: 1. Warum?Ein eigener µC dafür ist fast schon Overkill.
2. würde ich gerne noch mehr Sensoren später anbauen, darum dachte ich mir, dass ich für die einen eigenen Controller verwende. Aber gut, das hatte ich ja vorher noch nicht erwähnt.
Gut, ich werde erstmal noch ein bisschen weiter experiementieren. Vielen Danki nochmal für alle Infos und Hilfen.
MfG
RP6fahrer
Lesezeichen