-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Problem mit Snake Vision

  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9

    Problem mit Snake Vision

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich hab mir einen Snake Vision Sensor für den Asuro als Fertigbausatz bestellt. Diesen habe ich vorhin getestet aber irgendwie funktioniert das nicht richtig. Ich versorge den Sensor mit 5V und hab den Anschluss ADC3 und den Anschluss ADC2 an jeweils einen A/D Kanal vom Mega32 geklemmt und mir den A/D Wert mittels Terminal ausgegeben. Der eine Sensor gibt in etwa 0 aus und der Wert erhöht sich je näher ich mit der Hand komme und der andere gibt die ganze Zeit 504-506 aus egal wie nah ich mit der Hand komme.

    Was habe ich falsch gemacht?

    Danke schonmal für die Hilfe
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hat sich erledigt......ich Depp sollte vielleicht mal auf den Schaltplan gucken......ein 5V Festspannungsregler kann schlecht 5V generieren wenn an Vcc 5V anliegen und dann noch was an den Dioden abfällt sodass weniger als 5V zum Regler kommen -.-
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Du warst schneller als ich den Beitrag finden konnte:

    http://www.roboternetz.de/community/...l=1#post525640

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ja ich habs nun (hoffentlich) endlich am laufen.
    Betreiben tu ich den mit 12V ausm Netzteil und dann hat es erst wieder nicht geklappt. Der A/D Wandler hat die ganze Zeit 1023 ausgegeben aber das lag anscheinend daran das ich direkt auf den A/D-Wandler gegangen bin und das GND vom RN-Control nicht mit dem Snake Vision verbunden habe. Nachdem ich auch GND vom RN-Control mit dem Snake Vision verbunden habe und die zwei ADC Ausgänge vom Snake Vision an den A/D-Wandler vom Mega32 geklemmt habe und den ganzen Kram mit 12V betreibe kommen auch sinnvolle Werte raus........
    Wenn nichts in der Nähe ist kommen zwei Werte im Bereich 30-70 raus. Wobei der eine Sensor 30 ausgibt und der andere 60+. Kann das an dem Drift der Sensoren liegen?
    Ich meine stabil ist die Spannung ja, ich benutze ja die Snake Vision Spannungsquelle ohne da was dran gemacht zu haben.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Spannung vom Sensor ist sehr kleine, da kann es schon zu einem kleinen Offset kommen, denn man wohl in Software berücksichtigen muss. Neben der Drift des Sensors ist auch die Temperatur des Sensors wichtig: wenn man da vorher angefasst hat und der Sensor damit etwas wärmer ist, zeigt der Sensor einen kleineren Wert an.

    Der Sensor an sich (also das Sensor IC) kann keinen Offset in dem Sinne habe, einfach aus Gründen der Thermodynamik: ohne Temperaturdifferenz kann da keine Spannung rauskommen. Es könnte ggf. zu einem Offset durch HF-einstrahlung z.B. vom Handy kommen - das trifft aber den Verstärker.

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ok.
    Dank dir für die Antwort
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Noch eine Frage...
    Woran liegt es das der eine Sensor deutlich mehr anzeigt als der andere? Ich hab schon geguckt das so gut wie keine Sachen usw. in der Nähe sind.
    Und kann man das Problem eventuell so lösen, dass man den Controller am Anfang des Programmes 10 Werte von jedem Sensor einlesen lässt, daraus bildet er dann einen Mittelwert und speichert den Mittelwert jedes Sensors ab und zieht diesen Mittelwert von den neuen Messergebnissen ab um dann festzustellen ob die Wärmequelle mehr links oder mehr rechts ist?
    Weil ich würde damit eine Wärmeortung bauen wollen und da ist es doof wenn der eine Sensor deutlich mehr anzeigt als der andere, obwohl nichts in der Nähe ist.

    Danke für die Antwort!
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Fertigbausatz? Wenn's ein Bausatz war: Bauteile und Lötstellen kontrollieren. Testweise könntest du mal die ADCs tauschen. Hast du die Spannungen an den ADC-Pins schon mit einem Messgerät nachgemessen? Vielleicht ist es ein Problem des ADCs beim Umschalten des Kanals.

    Da ich mein SnakeVision schon lange nicht mehr verwendet habe kann ich mich nicht mehr erinnern, wie sysmetrisch die Werte bei mir waren. Aber ein Blick in meine alten Programme zeigt erstaunliches:

    Code:
    // Teelichtlöschen mit SnakeVision                                       18.4.10 mic
    
    #include "asuro-probot.h"
    
    // Code für das SnakeVision stammt von hier:
    
    // *******************************************
    // * Snakevision für ASURO                   *
    // * Verfolgt eine Wärmequelle               *
    // *                                         *
    // *                                         *
    // *                                         *
    // *                                         *
    // * (c) 2007 Robin Gruber                   *
    // * Details zum Code in:                    *
    // * "Mehr Spaß mit ASURO, Band II"          *
    // *******************************************
    void SnakeData(unsigned int *data)
    {
    	// ThermalData() funktioniert genauso, wie LineData(), ...
    	// ... nur dass dabei die interne Spannungsreferenz als ...
    	// ... AD-Wandlerreferenz verwendet wird.
    
    	// Prozessorinterne Referenz verwenden
    	// Multiplexer auf linken Sensor schalten
    	ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT;
    	// Wandlung starten
    	ADCSRA |= (1 << ADSC);
    	// Warten, bis Wandlung beendet
    	while (!(ADCSRA & (1 << ADIF)));
    	// ADCIF zurücksetzen
    	ADCSRA |= (1 << ADIF);
    	// ADC-Wert auslesen
    	data[0] = ADCL + (ADCH << 8);
    
    	// Prozessorinterne Referenz verwenden
    	// Multiplexer auf rechten Sensor schalten
    	ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT;
    	// Wandlung starten
    	ADCSRA |= (1 << ADSC);
    	// Warten, bis Wandlung beendet
    	while (!(ADCSRA & (1 << ADIF)));
    	// ADCIF zurücksetzen
    	ADCSRA |= (1 << ADIF);
    	// ADC-Wert auslesen
    	data[1] = ADCL + (ADCH << 8)-100; // Korrektur der Seiten!
    }
    int main(void)
    {
    	unsigned int data[2];
    	Init();
    
    	while(1)
    	{
    	SnakeData(data);
    	if(data[0]>data[1]) // Werte werden beim Einlesen korrigiert!
    	{
    	   MotorDir(RWD,FWD);
    	   MotorSpeed(150,150);
    	}
    	else
    	{
    	   MotorDir(FWD, RWD);
    	   MotorSpeed(150, 150);
    	}
    	PrintInt(data[0]);
    	SerPrint("-");
    	PrintInt(data[1]);
    	SerPrint("\n\r");
    	//Beep(300);
    	Msleep(300);
    	}
    
    }
    Das sind die orginalen Kommentare. Vermutlich gibt es deshalb die Kalibrierfunktion die ich allerdings noch nie genauer untersucht habe.

    Gruß

    mic
    Geändert von radbruch (11.01.2012 um 23:52 Uhr) Grund: Omniwheelcode entfernt

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ja es ist ein Fertigbausatz.
    Ich hab da gestern direkt mal drüber geguckt und die Lötstellen sehen alle sehr gut aus. Ich denke also nicht das es daran liegt. Um Probleme beim Umschalten des ADC-Kanals zu vermeiden habe ich nach jedem auslesen eine 200ms Pause eingebaut. Aber das mit dem Nachmessen werde ich trotzdem mal machen.
    Würde die Kalibrierung wie ich sie oben im groben beschrieben habe so überhaupt funktionieren bzw. Sinn machen?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Besser als die Pause wäre ein zweimaliges Einlesen des selben Kanals und nur das zweite Ergebnisse zu verwenden. Die orginale Funktion verwendet offensichtlich die interne Spannungsreferenz zur Erhöhung der Genauigkeit und der Reproduzierbarkeit der Messungen.

    Ich vermute, beim Kallibrieren wird lediglich der Unterschied zwischen den Seiten zur Kalibrierzeit ermittelt und bei allen weiteren Messungen eingerechnet.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 82
    Letzter Beitrag: 25.08.2012, 19:52
  2. Projekt: RP6 mit Snake Vision
    Von Thund3r im Forum Robby RP6
    Antworten: 10
    Letzter Beitrag: 21.09.2011, 20:58
  3. Snake Vision
    Von Mangoon im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 12.05.2010, 18:51
  4. Snake Vision will nicht.
    Von Obi-Wan1234 im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 18.06.2008, 14:19
  5. Problem 1 mit Snake-Vision
    Von Danjo00 im Forum Asuro
    Antworten: 45
    Letzter Beitrag: 03.03.2008, 13:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •