PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschall UND Linienverfolger möglich?



cracky^^
04.03.2007, 15:20
Hallo,

Wollte mir gern das Ultraschallmodul an den Asuro basteln, möchte aber auch nicht auf den Linienverfolger verzichten (jaja sonderwünsche und so :-b ).

Nun ich weis leider nicht wie und ob man sowas realisieren kann?

Mit der I²C erweiterung bekommt man ja nur digitale ports und für den Ultraschallsensor braucht man ADC, hab ich das richtig verstanden?

Könnte man dann auch die Odimetrie(ADC0 u. ADC1) anstadt der Linienverfolger-Ports (ADC2 u. ADC3) benutzern? (auf die könnte ich eher verzichten)

LG cracky (die gerade versucht das alles zu verstehen...)

HermannSW
04.03.2007, 18:45
Hallo,
Hallo,

Wollte mir gern das Ultraschallmodul an den Asuro basteln, möchte aber auch nicht auf den Linienverfolger verzichten (jaja sonderwünsche und so :-b ).

Nun ich weis leider nicht wie und ob man sowas realisieren kann?wenn Du die US-Sensoren und die Linienfolge nicht gleichzeitig machen möchtest, gab es dazu schon viele Beiträge hier im Forum.
Ich habe es erst vor ein paar Tagen am Asuro meines Sohnes durchgeführt:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=259855#259855

cracky^^
04.03.2007, 18:58
Hallo HermannSW,

Das ist ja das Problem, es sollte gleichzeitig sein!

Trotzdem Danke :D

Jon
04.03.2007, 19:01
Mit der I²C erweiterung bekommt man ja nur digitale ports und für den Ultraschallsensor braucht man ADC, hab ich das richtig verstanden?
Ob der Ultraschallsensor einen ADC braucht weiß ich nicht, aber es gibt auch einen PCF, der vier weitere ADCs zur Verfügung stellt.
Musst du mal suchen. Die Schaltung auf zu bauen ist auch nicht schwer.

jon

HermannSW
04.03.2007, 19:42
Hallo,
Das ist ja das Problem, es sollte gleichzeitig sein! ich brauche auch Linienverfolgung und Hinderniserkennung gleichzeitig für den Wettbewerb Slalom enhanced auf der RobotChallenge (siehe folgenden Beitrag (https://www.roboternetz.de/phpBB2/viewtopic.php?p=259285#259285)), und setze deshalb auf Infrarot-Hinderniserkennung (Details unter myIrAsuro (http://stamm-wilbrandt.de/myIrAsuro.html)) ...

Jon
04.03.2007, 20:41
Ich meine diesen (http://www.reichelt.de/?SID=28yxaonX8AAAIAAHFs9eY3d2483330a652921fc34db1d 1548a46f;ACTION=3;LA=4;GROUP=A312;GROUPID=2942;ART ICLE=14533;START=0;SORT=artnr;OFFSET=16) PCF 8591.

jon

cracky^^
04.03.2007, 20:42
Hallo,

Danke euch beiden..

@Jon:Genau sowas hab ich gesucht, ich denke ich werd mal schaun wie kompliziert das werden würde, bin leider noch nicht so in der Materie..

@Hermann: Hab darüber schon gelesen, klingt Interessant! Wie gut funktioniert das denn? kann man damit auch herausfinden wie groß der abstand zum Hinderniss ist?

HermannSW
04.03.2007, 22:58
Hi,

@Hermann: Hab darüber schon gelesen, klingt Interessant! Wie gut funktioniert das denn? kann man damit auch herausfinden wie groß der abstand zum Hinderniss ist?ja! Zumindest seit der Asuro Lib v261 gibt es das Programm IrCollisionTest unter Examples:
/************************************************** *****************************
*
* Description: Asuro IR-Detektor Testprogramm
*
************************************************** ***************************/
/************************************************** *************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
************************************************** *************************/
#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;
}Je nach Pulsbreite bekommt man für andere Entfernungen Alarme, mehr zum Thema auch in dem Thread Welches ist die gemessene Infrarot-Entfernung? (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=26811&highlight=).

Wie gut die Infrarot-Hindernisvermeidung funktioniert, kannst Du dem kleinen Video aus dem folgenden Beitrag (https://www.roboternetz.de/phpBB2/viewtopic.php?p=260731#260731) entnehmen - da braust ein Asuro mit 120cm/s (!) durch die Küche ohne anzustoßen - immer wenn ein IR-Echo empfangen wird, wird links gebremst - rechts bleibt immer full speed ... :)
Den Quelltext für den Infrarot-Linksausweicher findest Du in diesem Beitrag (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=243282&highlight=#243282).

raid_ox
05.03.2007, 00:10
Man kann doch frontled als switcher benutzen. Mit einem Transistor geht das, da die linienverfolgung sowieso ohne LED unbrauchbar.