RoboterNetz.de Foren-Übersicht Fotos
 Home  •  Forum  •  Suchen •  Mitgliederliste  •  RN-Landkarte  •  Ränge  •  Statistik  •  Download •  Album  •  Links  •  Kalender  •  Letzte Themen
 RN-Wissen Artikelbereich  •  Mitarbeiter  •  Benutzergruppen  •  Chat  •  Registrieren  •  FAQ  •  Profil  •  log in, Nachrichten zu lesen  •  Login
Kalender 
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Neues Thema eröffnenNeue Antwort erstellen
Vorheriges Thema anzeigen Dieses Thema einem Freund schickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Textdatei speichernPrintable versionlog in, Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
waste

Roboter Experte
Roboter Experte







Beitrag Verfasst am: 24.07.2005, 21:20 Antworten mit ZitatNach oben

Auf Wunsch beschreibe ich hier nochmal den Umbau der IR-Schnittstelle des Asuro zum IR-Hindernisdetektor. Es wurde zwar schon in diesem Thread
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=10026
vorgestellt, aber hier ist es jetzt in einem Beitrag zusammengefasst, im Detail beschrieben und mit Beispielcode.

Im Asuro ist bereits alles dafür vorhanden, die IR-Diode SFH415-U (D10) als Sender und der Baustein SFH5110-36 (IC2) als Detektor. Man muß nur die beiden Bauteile mechanisch nach vorne ausrichten. Vorsicht beim Auslöten von IC2, das geht nicht so ganz einfach. Man sollte das geeignete Werkzeug zur Hand haben, sonst könnte der Baustein kaputt gehen. Elektrisch kann die Schaltung bleiben, damit auch weiterhin das Flashen und die Funktion als serielle IR-Schnittstelle wie gewohnt möglich sind. Den mechanischen Umbau kann man recht gut in dem Bild erkennen. Befestigt ist der Aufsatz mit einem Gewindebolzen in dem bereits vorhandenen Loch in der Asuroplatine. Wichtig für eine gute Funktion sind der Mittelsteg und das so weit nach vorne gezogene untere Blech. Der Mittelsteg verhindert eine direkte optische Kopplung zwischen Sendediode und Empfänger und das vorgezogene Blech vermeidet Reflektionen von Bauteilen des Asuro bzw. vom Untergrund direkt vor dem Asuro. Die elektrischen Verbindungen werden einfach mit isolierten Litzen von der Asuroplatine zu dem Aufsatz gezogen (siehe auch Bild).
Image

Um nun ein Hindernis detektieren zu können, muss man nur die IR-Diode mit 36kHz versorgen. Das ist die Frequenz, die der IR-Empfänger SHF5110-36 braucht. Der Ausgang des IR-Empfängers wird dann auf LOW gezogen, wenn ein reflektiertes Signal erkannt wird. Das 36kHz-Signal ist im Asuro schon vorbereitet und steht am Ausgang PB3 an. Die IR-Diode ist über einen Vorwiderstand an PB3 und an PD1 angeschlossen. Man braucht also nur den Ausgang PD1 am Atmega auf LOW setzen und schon sendet die IR-Diode. Folgende 2 Zeilen im C-Programm sorgen dafür:
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
Die Auswertung des IR-Empfängers erfolgt über den Eingang PD0 des Atmega mit z.B. folgendem Code:
if (!(PIND & (1 << PD0))) // prüft Eingang PD0 auf LOW

Das ist die einfache Version der Hinderniserkennung mit der unveränderten Library "asuro.c". Ich habe zusätzlich noch eine Erweiterung durchgeführt, damit die Intensität der IR-Diode gesteuert werden kann. Das ermöglicht auch eine Erkennung bei geringeren Entfernungen, denn in der einfachen Version ist die Empfindlichkeit maximal und die Hindernisse werden meist bei 1 Meter oder mehr erkannt. Dazu musste ich allerdings die Library "asuro.c" verändern. Wer die Erweiterung haben will, muss auch meine Lib verwenden. Die Lib ist auf der Weja-Lib aufgebaut, wer die bereits benutzt, braucht also auf nichts zu verzichten. Mit meiner Lib "asuro.c" kann man die Intensität der IR-Diode mit der Pulsbreite des 36kHz-Signals steuern. Die Pulsbreite wird mittels Output Compare Register (OCR2) programmiert. Im Prinzip ist es eine PWM für die IR-Diode. Die kleinste einstellbare Pulsbreite ist 125ns, was dem µC-Takt entspricht und die grösste sinnvolle Pulsbreite ist 13,75µs, was 50% Tastverhältnis entspricht. Hier einige Beispiele zur Programmierung:
OCR2 = 0xFE; //Pulsbreite 1 entspricht 125ns
OCR2 = 0xFD; //Pulsbreite 2 entspricht 250ns
:
OCR2 = 0x90; //Pulsbreite 110 entspricht 13,75µs
Die Pulsbreite entspricht also der Differenz aus 255 und dem OCR2-Register.

Mit der Programmierung der Pulsbreite ist es nun möglich die Empfindlichkeit so weit runter zu drehen, dass der Detektor auch erst bei Objekten in 3cm Abstand anspricht. Damit kann man sich relativ gut an Objekte annähern. Allerdings ist zu sagen, dass das Prinzip keine exakte Abstandsmessung zulässt, da die Stärke der Echos abhängig ist vom Reflexionsfaktor des Objektes. Je nach Farbe und Winkel wird ein stärkeres oder schwächeres Signal reflektiert. Das ist aber generell so bei IR-Detektoren, Ausnahme sind die Sharp-Detektoren, die nach einem anderen Prinzip arbeiten.

Meine Lib "asuro.c" und auch "asuro.h" sind in dem zip-File im Anhang zu finden.

Hier noch 2 kleine Testprogramme. Für beide ist meine Lib notwendig.
Mit dem 1. Testprogramm lässt sich anhand der Taster am Asuro die Pulsbreite und damit die Empfindlichkeit einstellen. Die Status-LED zeigt mit dem Wechsel von grün auf rot ein erkanntes Objekt an. Das Testprogramm verdeutlicht sehr schön die Wirkung der Pulsbreite.

#include "asuro.h"
#include <stdlib.h>

int main(void)
{

   unsigned char sw;
   
   Init();
   DDRD |= (1 << DDD1);   // Port D1 als Ausgang
   PORTD &= ~(1 << PD1);   // PD1 auf LOW
   
   while(1)
   {
   if (PIND & (1 << PD0))
      StatusLED(GREEN);
   else
      StatusLED(RED);
      
   sw = PollSwitch();
   if (sw & 0x01)
      OCR2  = 0xFE;   //Pulsbreite 1
   if (sw & 0x02)
      OCR2  = 0xFD;   //Pulsbreite 2
   if (sw & 0x04)
      OCR2  = 0xFB;   //Pulsbreite 4
   if (sw & 0x08)
      OCR2  = 0xF7;   //Pulsbreite 8
   if (sw & 0x10)
      OCR2  = 0xEF;   //Pulsbreite 16
   if (sw & 0x20)
      OCR2  = 0x90;   //Pulsbreite 110
   }
   return 0;
}

Im 2. Testprogramm wird die Pulsbreite laufend von 1 bis 110 durchgesweept. Je nach Entfernung verändert sich die Farbe der Status-LED von rot über orange nach grün.


#include "asuro.h"
#include <stdlib.h>

int main(void)
{
   float puls;
   
   Init();
   DDRD |= (1 << DDD1);      // Port D1 als Ausgang
   PORTD &= ~(1 << PD1);      // PD1 auf LOW
   
   puls = 1;
   
   while(1)
   {
      if (PIND & (1 << PD0))
         StatusLED(GREEN);   // kein Hindernis
      else
         StatusLED(RED);      // Hindernis erkannt
      
   puls = 1.02 * puls;      // Pulsbreite wird um 2% erhöht
   if (puls > 110) puls = 1;
   OCR2 = 255 - (int)(puls);
   }
   return 0;
}


Mit den beiden Testprogrammen kann man nun spielen und herausfinden wie der IR-Detektor auf verschiedene Objekte reagiert.
Ich hoffe es gefällt und freue mich auf Feedback und vielleicht sogar Verbesserungen.

Gruss Waste
Versteckt Benutzer-Profile anzeigen
izaseba






Anmeldungsdatum: 08.05.2005
Beiträge: 2348
Wohnort: Issum
Alter: 38

blank.gif
Beitrag Verfasst am: 24.07.2005, 22:04 Antworten mit ZitatNach oben

Hallo Waste,
Tolle Arbeit =D> ,
ich denke, es werden Dir mehrere Asuro Besitzer dankbar sein !!

Gruß Sebastian
Offline Benutzer-Profile anzeigen
JeanLuc

Öfters hier
Öfters hier




Anmeldungsdatum: 12.07.2005
Beiträge: 12

Alter: 25

blank.gif
Beitrag Verfasst am: 25.07.2005, 02:42 Antworten mit ZitatNach oben

Hallo, das sieht hervorrgend aus, vor allem da man sich keine neuen teile zusammen suchen muss.
Ich nehme an die Taster musstest du aus platzgruenden nach unten setzen, aber warum hast du beim rechten eine bruecke eingebaut?
Offline Benutzer-Profile anzeigen E-Mail senden Website dieses Benutzers besuchen ICQ-Nummer
waste

Roboter Experte
Roboter Experte







blank.gif
Beitrag Verfasst am: 25.07.2005, 09:15 Antworten mit ZitatNach oben

Hallo Jeanluc,

die Brücke ist nur ein Massebügel zum einfachen Anklemmen für die Masseklemme meines Tastkopfs.
Bei meinem Bausatz wurden spiegelverkehrte Taster mitgeliefert, das habe ich aber erst gemerkt nachdem ich schon 4 eingelötet hatte. Oben wären sie unsymmetrisch, also habe ich sie unten eingebaut.

Waste
Versteckt Benutzer-Profile anzeigen
Andun

Roboter Genie
Roboter Genie




Anmeldungsdatum: 04.04.2005
Beiträge: 855
Wohnort: Hamburg
Alter: 22

germany.gif
Beitrag Verfasst am: 25.07.2005, 14:34 Antworten mit ZitatNach oben

Super waste!!!

Herzlichen Dank! Very Happy

Jetzt muss ich nur noch umlöten.

So long

Andun

_________________
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen ICQ-Nummer
JeanLuc

Öfters hier
Öfters hier




Anmeldungsdatum: 12.07.2005
Beiträge: 12

Alter: 25

blank.gif
Beitrag Verfasst am: 25.07.2005, 14:36 Antworten mit ZitatNach oben

Ich werde mich auch mal ans umlöten machen. Muss mir nur noch das Blech schneiden, und dass kann bei mir länger dauern Very Happy
Offline Benutzer-Profile anzeigen E-Mail senden Website dieses Benutzers besuchen ICQ-Nummer
Andun

Roboter Genie
Roboter Genie




Anmeldungsdatum: 04.04.2005
Beiträge: 855
Wohnort: Hamburg
Alter: 22

germany.gif
Beitrag Verfasst am: 25.07.2005, 16:55 Antworten mit ZitatNach oben

Ja. Ich muss auch erstmal Teile beschaffen.

_________________
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen ICQ-Nummer
toby83

Neu hier
Neu hier




Anmeldungsdatum: 25.07.2005
Beiträge: 4

Beitrag Verfasst am: 25.07.2005, 21:13 Antworten mit ZitatNach oben

Hi! Coole Idee. Ich bekomme meinen asuro erst noch diese woche und bin somit am überlegen das gleich so zu bauen.
Nun meine Frage: Wie kann ich den IC2 noch für die serielle Schnittstelle nutzen (wie oben beschrieben) wenn ich ihn ausgelötet hab und für die Abstandserkennung nutze?
Offline Benutzer-Profile anzeigen
JeanLuc

Öfters hier
Öfters hier




Anmeldungsdatum: 12.07.2005
Beiträge: 12

Alter: 25

blank.gif
Beitrag Verfasst am: 25.07.2005, 21:16 Antworten mit ZitatNach oben

Du änderst nichts an der Schaltung, sie bleibt wie sie ist. Du baust nur den IC2 und die IR LED an eine anderen Stelle.
Wenn du den Asuro programmierst ist also noch alles wie sonst, nur dass die Bauteile nach vorne zeigen. Die Abstandserkennung wird erst im Programm aktiviert
Offline Benutzer-Profile anzeigen E-Mail senden Website dieses Benutzers besuchen ICQ-Nummer
toby83

Neu hier
Neu hier




Anmeldungsdatum: 25.07.2005
Beiträge: 4

Beitrag Verfasst am: 25.07.2005, 22:01 Antworten mit ZitatNach oben

Na aber der IC2 ist doch auf dem Infarot Transceiver eingelötet und die IR LED auf der Hauptplatine des Asuro. Das sind doch zwei getrennte Bauteile!?
Und nun löte ich den IC2 auch auf die Hauptplatine. Nun is doch der Transceiver ohne IC2 und hat keine verbindung zur Hauptplatine oder?
Sorry wenn ich das jetz falschsehe aber ich hab den asuro noch nich und berufe mich nur auf die Erkenntnisse aus der Anleitungs pdf.

Oh ich glaub ich habs jetz gesehen! Die teile sind zweimal vorhanden auf dem Tranceiver und auf der Hauptplatine stimmts? Think Sorry!
Offline Benutzer-Profile anzeigen
Andun

Roboter Genie
Roboter Genie




Anmeldungsdatum: 04.04.2005
Beiträge: 855
Wohnort: Hamburg
Alter: 22

germany.gif
Beitrag Verfasst am: 25.07.2005, 22:16 Antworten mit ZitatNach oben

Hä? Ich glaub du verwechselst da was.


Du machst einfach nur den IR Sender und Empfänger(IC2) an Kabel und richtest sie anders aus. Das ist schon alles. Im Programm kann man damit dann halt auch was machen.

_________________
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen ICQ-Nummer
izaseba






Anmeldungsdatum: 08.05.2005
Beiträge: 2348
Wohnort: Issum
Alter: 38

blank.gif
Beitrag Verfasst am: 25.07.2005, 22:16 Antworten mit ZitatNach oben

hallo toby,
was hat da keine Verbindung zu Hauptplatine ?
Wenn Du Dir das Foto von Waste anschaust hat er wohl ein paar Drähte richtung Platine eingelötet oder?
Es ist wohl Wurst, od die 2 Bauteile direkt auf der Platine eingelötet sind, oder über ein paar Drähte verbunden sind.

P.S. Ich habe es gerade umgebaut und es klappt prima!
Ob Waste eine "Asuroumbauwelle" damit ausgelöst hat?

Gruß Sebastian

EDIT: Andun war etwas schneller...
Offline Benutzer-Profile anzeigen
toby83

Neu hier
Neu hier




Anmeldungsdatum: 25.07.2005
Beiträge: 4

Beitrag Verfasst am: 25.07.2005, 22:44 Antworten mit ZitatNach oben

toby83 hat folgendes geschrieben::

Oh ich glaub ich habs jetz gesehen! Die teile sind zweimal vorhanden auf dem Tranceiver und auf der Hauptplatine stimmts? Think Sorry!


Ja ich hab da was verwechselt! Silenced
Offline Benutzer-Profile anzeigen
izaseba






Anmeldungsdatum: 08.05.2005
Beiträge: 2348
Wohnort: Issum
Alter: 38

blank.gif
Beitrag Verfasst am: 25.07.2005, 22:56 Antworten mit ZitatNach oben

Du brauchst Dich nicht zu entschuldigen, jeder darf sich mal irren, Aber was ist da zweimal vorhanden?
Es gibt da kein Bauteil mehr, und kein weniger Think

Gruß Sebastian
Offline Benutzer-Profile anzeigen
toby83

Neu hier
Neu hier




Anmeldungsdatum: 25.07.2005
Beiträge: 4

Beitrag Verfasst am: 26.07.2005, 18:40 Antworten mit ZitatNach oben

Danke! Na doch. Den IC2 sowie die IR LED gibt es doch jeweils auf der Hauptplatine sowie auf dem Tranceiver.
Ich habe eben fälschlicherweise gedacht die Bauteile gäbe es nur auf dem Tranceiver.
Ich hoffe der Science Shop liefert bald, ich will auch endlich basteln. Freudig
Offline Benutzer-Profile anzeigen
JeanLuc

Öfters hier
Öfters hier




Anmeldungsdatum: 12.07.2005
Beiträge: 12

Alter: 25

blank.gif
Beitrag Verfasst am: 26.07.2005, 18:51 Antworten mit ZitatNach oben

bei mir haben die in 4 Tagen geliefert, kannst also bald anfangen
Offline Benutzer-Profile anzeigen E-Mail senden Website dieses Benutzers besuchen ICQ-Nummer
Archi

Fleißiges Mitglied
Fleißiges Mitglied




Anmeldungsdatum: 02.12.2004
Beiträge: 198
Wohnort: München
Alter: 36

germany.gif
Beitrag Verfasst am: 26.07.2005, 20:23 Antworten mit ZitatNach oben

Hallo Waste!

Ist ja eine saugeile Idee! Wenn mir das vor zwei Jahren eingefallen wäre, hätte ich's gleich mit eingebaut!

CU, Robin
Offline Benutzer-Profile anzeigen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 26.07.2005, 22:03 Antworten mit ZitatNach oben

Hallo Robin,

falls es mal ein Upgrade oder eine neue Variante vom Asuro gibt, kannst es ja einbauen. Meinen Segen dazu hast.

Gruss Waste
Versteckt Benutzer-Profile anzeigen
payce

Stammmitglied
Stammmitglied




Anmeldungsdatum: 19.07.2005
Beiträge: 53
Wohnort: Nürnberg
Alter: 30

blank.gif
Beitrag Verfasst am: 28.07.2005, 15:38 Antworten mit ZitatNach oben

Ich hab zwar meinen Asuro noch nich (ist erst letzte Woche bestellt worden), aber das hier bau ich gleich von Anfang an mit rein! Ist ein absolut super Mod!!! Hammergute Idee, danke auch von meiner Seite aus für die genial einfache Lösung!

Werd auch mal versuchen, mit kleinen Reflektoren um den Sender und Empfänger herum die Empfindlichkeit nochmal zu steigern (und damit türlich das "geradeaus" gucken).

Cooool! Dankööö! Smile
Offline Benutzer-Profile anzeigen
julien

Stammmitglied
Stammmitglied




Anmeldungsdatum: 18.03.2005
Beiträge: 81
Wohnort: Mecklenburg Vorpommern / Hamburg
Alter: 21

germany.gif
Beitrag Verfasst am: 09.10.2005, 14:55 Antworten mit ZitatNach oben

Hallo! Ich finde die Idee mit der IR-Hinderneserkennung wirklich sehr gut, daher habe ich es auch meinem Asuro damit umgebaut. Nun habe ich ein Programm geschrieben (im Anhang), wo Asuro Hindernissen ausweicht (außer schwarze Hindernisse).
Also, wenn er ein Hindernis entdeckt, guckt er, in welcher Richtung er diese am Besten umfahren könnte und somit sucht er sich den Weg (z.B. durch die Wohnung) alleine. Wenn sich keine Hindernisse im Weg befinden, fährt er geradeaus. Wenn ihr noch verbesserungen habt, würde ich mich freuen, diese zu posten.
MfG julien
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen ICQ-Nummer
pebisoft
User gesperrt!

Robotik Einstein
Robotik Einstein




Anmeldungsdatum: 20.06.2004
Beiträge: 1971

blank.gif
Beitrag Verfasst am: 09.10.2005, 19:34 Antworten mit ZitatNach oben

einfacher ist ein is471f. braucht weniger ressourcen vom avr. und ist einfacher zu steuern bzw zu regeln. auch für den anfänger in winavr-c ist er besser zu proggen. die asuro-grundprogramme haben langsam dimensionen, wo der speicher fast am überlaufen ist und an übersichtlichkeit zu wünschen übrig lassen. der anfänger hat es sehr sehr schwer.
mfg pebisoft
Offline Benutzer-Profile anzeigen
waste

Roboter Experte
Roboter Experte







blank.gif
Beitrag Verfasst am: 09.10.2005, 21:36 Antworten mit ZitatNach oben

Lieber Pebisoft,

Du machst mich mal wieder neugierig, wieso der IS471 weniger Ressourcen in dieser Anwendung verbraucht. Kannst Du mir das anhand eines Beispielcodes erklären?

Gruß Waste
Versteckt Benutzer-Profile anzeigen
Beiträge vom vorherigen Thema anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen
Vorheriges Thema anzeigen Dieses Thema einem Freund schickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Textdatei speichernPrintable versionlog in, Nachrichten zu lesen Nächstes Thema anzeigen



 Gehe zu:   



Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen




Die große Community für Robotik-, Mikrocontroller- und Elektronik Bastler als auch Experten
 Roboternetz RSS2.0 News Feed
Alle Zeiten sind GMT + 1 Stunde