- LiFePO4 Speicher Test         
Seite 7 von 7 ErsteErste ... 567
Ergebnis 61 bis 67 von 67

Thema: NIBObee Erweiterungen

  1. #61
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich nehme an Du verwendest AVRStudio? Hast Du schon mal das Tutorial zum NIBObee durchgearbeitet?

  2. #62
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2010
    Beiträge
    5
    Ja ich verwende das AVRStudio.
    Ich hab auch das Tutorial durchgearbeitet. Hat auch alles funktioniert.
    Nur das mit der BGX1 Lib funktioniert nicht. Hab auch schon ein neues Projekt erstellt aber es bleibt das gleiche Problem. Es wird wohl nchit viel sein...
    Auf Seite 16 steht ja, dass man die Reihenfolge beachten soll. Hab das so wie im Tutorial gemacht und am Schluss die BGX1 hinzugefügt. Also wirds daran ja nicht liegen

  3. #63
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2010
    Beiträge
    5
    Hallo,

    ich habe mal ins Makefile geschaut und da steht folgendes:
    Code:
    ## Libraries
    LIBS = -lnibobee_base -lnibobee_line -lnibobee_utils -lnibobee_bgx1
    Also müsste die BGX1 gelinkt sein oder?!?
    Meiner Meinung liegts doch eher an der i2cmaster.h. Dort ist die Variable "i2c_size" deklariert und diese Headerdatei ist auch eingebunden. Trotzdem kennt er diese Variabel nicht.....

  4. #64
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2010
    Beiträge
    5
    Hallo,

    das LCD funktioniert mittlerweile einwandfrei. Weiss auch nicht genau, wo der Fehler mit der Lib lag...
    Habe nun ein anderes Problem. Ich bentutze ein LCD mit dem HD44780. Schreiben und so weiter auf das Display funktioniert auch. Nur die Funktion lcd_setCursor(0,1); funktioniert nicht. Wenn ich sie aufrufe und danach was schreiben möchte erscheint nichts auf dem Display.

  5. #65
    Neuer Benutzer Öfters hier
    Registriert seit
    26.11.2010
    Beiträge
    13
    Hallo Roboternetz,

    dieser Beitrag soll den alten ersetzen, da dieser u.a. nicht wirklich gut formuliert war.

    Ich würde gerne mit meiner NIBObee die Helligkeit von einem Gegenstand ermitteln, der vor meiner Biene steht.
    Es gibt ein Video bei youtube, welches einen ASURO zeigt, der genau das macht und sich abhängig von der Helligkeit bewegt: "Müll sortierender ASURO".
    Leider wird das Verfahren nicht genauer erläutert, aber ich dachte, dass es über Infrarot geht (so wie z.B. bei den Liniensensoren), weswegen ich im Folgenden 3 Alternativen aufführen möchte und um eure Beurteilung dieser bitte.

    1) Liniensensoren nachbauen

    Auf die Liniensensoren habe ich bereits oben schon verwiesen, allerdings möchte ich dies nun spezifizieren. Da die Liniensensoren ebenfalls die Helligkeit des Untergrunds messen, dachte ich, dass man ggf. mit einem ähnlichen oder gleichen Aufbau die Helligkeit eines Objektes messen könnte.
    Konkret war meine Überlegung: eine IR-LED sowie einen IR-Transistor zu verwenden und zur Messung dann die Spannung am Ausgang des Transistors zu messen (geht das?).

    2) Sharp Entfernungssensor GP2D120
    Daneben bin ich mehrfach auf die Sensorreihe von Sharp gestoßen, mit denen man ja eig. Entfernungen bestimmen kann. Könnte ich mit einem von diesen auch die Helligkeit ermitteln? Rabenauge hat an dieser Stelle bereits etwas über die Verwendung von einem Sharp-Sensor an der NIBObee geschrieben.

    3) Verwendung eines IR-Empfängers

    Außerdem hab ich an einigen Stellen gesehen, dass ein IR-Empfänger verwendet wurde, Beispiel: von Pinsel120866. In dem Link wird ein IR-Empfänger + 2 IR-LEDs zur Abstandmessung verwendet.

    Da ich neben dem Programmiertutorial zur NIBObee noch nicht viel Erfahrung gesammelt habe, denke ich, dass die 3. Möglichkeit rausfällt, da diese am schwierigsten zu programmieren ist.
    Bei Möglichkeit 1 bin ich mir allerdings nicht sicher, ob eine IR-LED und ein IR-Transistor reicht - könnt ihr dazu genaueres sagen? (das stellt eig. mein Hauptanliegen dar)
    Möglichkeit 2 möchte ich erstmal unkommentiert lassen.

    Liebe Grüße und ein frohes neues Jahr
    Max.

    Edit 1:
    Möglichkeit 2 fällt raus:
    Farbunabhängig ermittelt die Auswertelektronik die Entfernung und gibt sie über Analogsignal aus.
    Damit bleiben noch Möglichkeit 1 und 3 offen, wobei ich 1 bevorzuge. Bei Möglichkeit 1 bin ich mir aber nicht sicher, wie diese umsetzen muss:
    Reicht es, wenn ich die IR-LED & den Vorwiderstand an + und - eines Ports anschließe und die Kathode des IR-Transistor an das analoge Signal eines Ports (wo muss ich die Anode anschließen), damit ich diesen über analog_getValue() abfragen kann?

  6. #66
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111
    @aurikeL:
    Das reicht fast, Du benötigst 2 Widerstände. Einen als Vorwiderstand für die IR-LED (180 Ohm) und einen als Strom/Spannungswandler für den Fototransistor (2,2 kOhm).
    Im Schaltplan zur NIBObee auf Seite 1 ist die Schaltung für die Liniensensoren abgebildet (gestrichelter Kasten).
    Passende IR-LEDs und Fototransitoren findest Du hier: http://www.nibo-roboter.de/wiki/NIBObee/Ersatzteile

    Die Schaltung kannst Du an X1 (2 analoge Eingänge) oder X2 bzw. X3 (jeweils 1 analoger Eingang) anschliessen.
    Die IR-LED kannst Du auch schaltbar an einem Port-Ausgang betreiben, sie benötigt keinen extra Treiber.

  7. #67
    Neuer Benutzer Öfters hier
    Registriert seit
    26.11.2010
    Beiträge
    13
    Mit dem Ziel, dass die Biene Farben (minimal 2) erkennen kann - sind die beiden oberen Beiträge entstanden. Daneben war ich mehrmals im #roboternetz.de IRC-Chat, in dem ich auf Schumi gestoßen, der mich eine große Hilfe war. Einen besonderen Dank an ihn - an die anderen, die mir geholfen haben, aber auch! =D>

    Das Resultat ist nun folgendes (leider in schlechter Qualität):
    http://www.youtube.com/watch?v=Y2hlnTpRI9s

    Der Aufbau ist folgender:
    Code:
    LED1: [AVR]--[R]--[+LED-]--[VCC]
    LED2: [AVR]--[R]--[+LED-]--[VCC]
    LED3: [AVR]--[R]--[+LED-]--[VCC]
    Sensor: [+5V]--[LDR]--+--[R]--[VCC]
          [AVR]-----------|
    Ein grüner Gegenstand wird z.T. falsch erkannt, allerdings verwende ich auch grüne Legosteine - die sind etwas dunkel.

    Ein Link zum Aufbau: http://img718.imageshack.us/img718/5...0108193606.jpg

    Edit: ein Grund für die oben genannten Ungenauigkeiten sind, dass z.T. Licht direkt von der LED auf den Fotowiderstand fällt - deswegen auch die Papiere, allerdings sind diese nicht wirklich gut. Ich muss morgen mal meinen Schrumpfschlauch suchen, aber den muss ich irgendwie verlegt haben (gestern hab ich ihn nicht gefunden).

    Edit2: Anbei noch mein Code (ich bin für Verbesserungen offen - ob der "Dummyreadout" so notwendig ist, sei an dieser Stelle dahingestellt):
    Code:
    #define StatusLEDs_on PORTB |= (1 << PB1) | (1 << PB2);
    #define StatusLEDs_off PORTB &= ~((1 << PB1) | (1 << PB2));
    
    #include <nibobee/iodefs.h>
    #include <nibobee/led.h>
    #include <nibobee/delay.h>
    #include <nibobee/analog.h>
    #include <nibobee/sens.h>
    #include <avr/io.h>
    
    // Aufbau:
    // Farbe1: [PA0]--[R]--[+LED-]--[GND]
    // Farbe2: [PA1]--[R]--[+LED-]--[GND]
    // Farbe3: [PA2]--[R]--[+LED-]--[GND]
    // Sensor: [+5V]--[LDR]--+--[R]--[GND]
    // Sensor: [PA3]---------|
    
    uint16_t getLightValue() {
    	int Value = 0;
    	int8_t i;
    
    	// Auslesen
    	for (i = 0; i < 11; i++) {
    		Value = Value + analog_getValue(ANALOG_EXT3);
    		delay(50);
    	} // for
    
    	return(Value / i);
    
    } // getValue()
    
    int main()
    {
    	uint16_t grValue, blValue, reValue;
    	int8_t i; 
    	led_init(); // LED initialisieren
    	analog_init(); // Analoge Eingaenge initialisieren
    	sens_init(); // Fuehler initialisieren
    	enable_interrupts(); // Interrupts aktivieren
    	DDRA |= 0b00000111; // PINs als Ausgaenge schalten
    	DDRB |= 0b00000110; // PINs als Ausgaenge schalten
    
    	// Dummyreadout
    	for (i = 0; i < 11; i++) { 
    		grValue = analog_getValue(ANALOG_EXT3);
    		delay(50); 
    	}
    
    	while (1 == 1) {
    		StatusLEDs_on;
    		while ((sens_getLeft() != 0) | (sens_getRight() != 0)) {
    			StatusLEDs_off;
    
    			// Farbmessungen
    			// 1. gruen
    			PORTA = 0b00000001; // LED anschalten
    			delay(500); // 0,5 Sek. warten
    			grValue = getLightValue(); // Wert des Sensors abfragen
    
    			// 2. rot
    			PORTA = 0b00000010; // LED anschalten
    			delay(500); // 0,5 Sek. warten
    			reValue = getLightValue() - 25; // Wert des Sensors abfragen
    
    			// 3. blau
    			PORTA = 0b00000100; // LED anschalten
    			delay(500); // 0,5 Sek. warten
    			blValue = getLightValue() - 75; // Wert des Sensors abfragen
    	
    			// Auswertung
    			if ((grValue > reValue) & (grValue > blValue)) {
    				// gruener Gegenstand
    				PORTA = 0b00000001;	// gruene LED an
    			} else if ((reValue > grValue) & (reValue > blValue)) {
    				// roter Gegenstand
    				PORTA = 0b00000010;	// rote LED an
    			} else if ((blValue > grValue) & (blValue > reValue)) {
    				// blauer Gegenstand
    				PORTA = 0b00000100;	// blaue LED an
    			} else {
    				// keine Erkennung
    				PORTA = 0b00000111;	// alle LEDs an
    			} // if
    		} // while - Fuehler
    	} // while - Endlosschleife
    	return 0;
    }
    Die 0,5 Sek Wartezeit sind wahrs. viel zu hoch dimensioniert, allerdings stört mich die Wartezeit momentan nicht, weshalb ich bisher keinen Grund sehe, diese zu reduzieren.

Seite 7 von 7 ErsteErste ... 567

Berechtigungen

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

12V Akku bauen