Archiv verlassen und diese Seite im Standarddesign anzeigen : rc5send und getrc5
Che Guevara
29.09.2008, 18:56
servus,
ich arbeite gerade an meinem ersten richtigen bot, einer, der mit ultraschall und infrarot die umgebung nach hindernissen absuchen soll und dann ausweichen soll!!
das mit dem ausweichen und dem ultraschall hab ich auch schon hinbekommen!
jetzt ist allerdings mein problem:
ich möchte mit dem gleichen µC ausweichen, das ultraschall modul betreiben UND rc5 code senden UND empfangen!
ich weiß allerdings, dass der atmega32 kein multitasking kann, habs aber schon mitgekriegt, dass viele mit dem asuro auch eine entfernungsmessung machen!!
geht das i-wie doch (weil das signal ja eine best. strecke zurücklegt und somit das ganze erst ein wenig später wieder zurückkommt) oder liegt es einfach nur daran, dass auf dem asuro 2 µC verbaut sind ODER kann der µC auf dem asuro multitasking???
danke für eure antworten!
gruß
chris
Deren µC kann bestimmt auch nur das, was dein Mega32 kann.
Durch geschicktes Programmieren kann man schon den Eindruck gewinnen, der Controller könnte mehrere Dinge gleichzeitig erledigen.
Wenn du mit Infrarot etwas messen willst, warum dann RC5? Dass ist ein spezieller Code zur Fernbedienung. Der ist ganz schlecht dafür geeignet, etwas zu messen. Nimm doch einfach so eine IR-LED und einen Empfänger.
Gruß
Rolf
Che Guevara
29.09.2008, 20:22
hallo rolf,
weil ich gerade keinen infrarot transistor hier habe, aber noch einige tsops..
außerdem kann man bei rc5 eine "verwechslung" mit normalem licht fast ausschließen.
gruß
chris
Hallo Chris,
ich weiß ja nicht, was du genau machen willst. Aber die TSOPs kannst du ja auch nutzen. Die erledigen dir die ganze Rausch-Ünterdrückung.
RC5 oder einer der anderen dutzend Codierungen ist dazu nicht notwendig, es sei denn, du willst jede Menge Codes übertragen.
GetRC5 ist sehr langsam, es blockiert dir den Controller für 150ms, was deinem Bot schon einen ordentlichen Ruck versetzen kann. Und dann ist nichts mehr mit mehreren Dingen gleichzeitig.
Gruß
Rolf
Che Guevara
29.09.2008, 21:40
hättest du vielleicht ein normales prog-beispiel, bei dem mit einer led ein 36khz signal erzeugt wird, welches dann von einem tsop (über einen interrupt pin??) wieder empfangen wird??
ich erkläre mal meinen bot kurz:
ich habe 2 reifen (jeweils ein motor) und einen halben tischtennisball als stütze (also wie beim asuro), einen servo, auf dem ein ultraschall modul sitzt, welches kontinuierlich gedreht wird.
wird etwas erkannt, löst das ultraschallmodul einen interrupt aus, der robi fährt ein stück rückwärts und schlägt dann (dementsprechend, wo sich das objekt befindet) rechts oder links ein, um auszuweichen!
jetzt wollte ich noch infrarot hinderniserkennung hinzufügen, allerdings bin ich im proggen noch nicht so gut, dass ich das alles auf einem µC geschafft hätte , deshalb hab ich hier gefragt ;-)
gruß
chris
hättest du vielleicht ein normales prog-beispiel, bei dem mit einer led ein 36khz signal erzeugt wird, welches dann von einem tsop (über einen interrupt pin??) wieder empfangen wird??
Leider nicht. Aber hier im Forum wurde schon öfters beschrieben, wie man eine gepulste LED zwischen zwei Pins zum Leuchten bringt. Die 36KHz durch einen Timer erzeugen lassen und damit einen Ausgang togglen. Dein "Nutzsignal dann über den zweiten Ausgang ausgeben.
Aufpassen musst du dabei, dass du nicht zu lange ein kontinuierliches Signal überträgst, denn das mag der TSOP nicht.
jetzt wollte ich noch infrarot hinderniserkennung hinzufügen
Macht das nicht schon die Ultraschallerkennung? Wie stellst du dir die Erkennung vor? Wenn der TSOP dir die Impulse zurückgibt, dann ist da etwas?
Gruß
Rolf
Che Guevara
30.09.2008, 16:20
hallo rolf,
das mit "led zwischen zwei pins hängen und dann mit timer" [...] hab ich schon gesehen, allerdings wollte ich das nicht so machen (das ist für mich persönlich wirklich die letzte wahl) ...
ja, das macht das ultraschallmodul, aber ich wollte eben infrarot auch noch :-D
genau, ich überprüfe die empfangenen daten vom tsop (command und adress) und wenn diese mit den eingespeicherten werte übereinstimmen, dann weiß der bot, dass da was ist ;-)
kann überhaupt mit einem atmega32 ein signal senden und gleichzeitig empfangen (also DAS signal empfangen, welches auch der µC gesendet hat)?!??!?!
ich stelle mir das nämlich ein wenig kompliziert vor, da das dann ja sehr schnell gehen muss?!?!
gruß
chris
allerdings wollte ich das nicht so machen (das ist für mich persönlich wirklich die letzte wahl) ...
Wieso nicht? Hast du keine Pins mehr frei oder brauchst du mehr Strom?
Du kannst natürlich auch das komplette Signal (36KHz Träger + Nutzsignal) im µC erzeugen und dann auf einen Pin ausgeben, ist nur ein wenig mehr Aufwand.
genau, ich überprüfe die empfangenen daten vom tsop (command und adress) und wenn diese mit den eingespeicherten werte übereinstimmen, dann weiß der bot, dass da was ist
Dann darf aber während des ganzen Empfangs keine Unterbrechung kommen (z.B. hell-dunkel), sonst sind Ausgang und Eingang verschieden.
Wenn du dauernd hintereinander 101010 schickst, dann reicht auch ein kurzer Signaleingang zur Erkennung. RC5 ist dafür viel zu kompliziert.
kann überhaupt mit einem atmega32 ein signal senden und gleichzeitig empfangen (also DAS signal empfangen, welches auch der µC gesendet hat)?!??!?!
Das ist auch ein Grund warum ich kein RC5 nehmen würde. De Erzeugung und Auswertung ist zu aufwändig.
Wenn du die Ausgabe und die Auswertung über einen Timer machst, denke ich schon, dass das ein AVR hinbekommt. Ich würde das etwa so machen:
Du hast einen Timer, der mit etwa 72KHz läuft (36KHz * 2, kommt sich aber nicht so genau) und der den Ausgang toggelt, wenn dein Nutzsignal gerade high ist. Das Nutzsignal wird z.B. bei jedem 20sten Timer Aufruf getoggelt, ist also immer 10 Zyklen lang, somit 3,6KHz. Anschließend überprüfst du den Pin, an dem der TSOP hängt. Solange er low ist, inkrementierst du eine Variable. Ist er high, setzt du ein Flag, das in der Haupt-Loop ausgewertet wird. Dort vergleichst du den Wert z.B. mit dem Sollwert, setzt die Variable wieder auf 0 und setzt das Flag zurück.
Die 72KHz sind natürlich schon recht schnell. Vielleicht kannst du die Trägerfrequenz auch extern über einen NE555 oder so erzeugen. Dann brauchst du die Timer ISR nicht ganz so häfig aufzurufen. Vielleicht reichen dann auch 5KHz, wenn du das Nutzsignal etwas verlängerst.
Gruß
Rolf
Che Guevara
30.09.2008, 20:36
ich brauche mehr strom, da das ganze ziemlich weit gehen soll :-)
wie kann ich den das ganze signal im µC erzeugen??
wie würdest du es dann machen, damit es immer noch sicher vor umgebungslicht ist, aber dennoch ohne hardware auskommt?!?!
gruß
chris
Ich verstehe deine Frage nicht. Ich habe dir in meinem letzten Post doch erklärt, wie ich es machen würde.
Gruß
Rolf
Che Guevara
01.10.2008, 20:18
aaach, entschuldigung,
ich hab deinen post im "Halbschlaf" gelesen :-)
tut mir leid!
gruß
chris
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.