Apropos Schneeräumer - das Getriebe verschmutzt extrem schnell von unten, eher wie ein Staubsauger... Ein geschlossener "Radkasten" wäre nicht schlecht.
Noch was - Gibt es eigentlich einen Weg die Sensorwerte auf dem PC auszugeben?
Hi pinsel120866
sieht ein bisschen nach Schneeräumer aus ? ? ? ?
Ok, Spott beiseite - das hast Du, wie immer, Klasse gemacht. (Ich habe inzwischen bei mir einen kleinen Abstecher zu einem Kurzprojektchen gemacht - aber nur so etwa übers Wochenende.)
Das mit dem Schrumpfschlauch hatte ich ja oben schon erwähnt. Eine komplette Bestückung werde ich ausprobieren, wenn ich mir ein Programm mit Messreihen für verschiedene Auslenkungen zur Linie geschrieben habe. Weil das Ganze ja auf eine analoge Linienerkennung hinauslaufen könnte, wäre mir die erzielbare Kennlinie wichtig.
Ciao sagt der JoeamBerg
Apropos Schneeräumer - das Getriebe verschmutzt extrem schnell von unten, eher wie ein Staubsauger... Ein geschlossener "Radkasten" wäre nicht schlecht.
Noch was - Gibt es eigentlich einen Weg die Sensorwerte auf dem PC auszugeben?
Ja, das geht. An Port X5 sind RX und TX vom Prozessor aufgelegt. Allerdings ohne Pegelwandler, nur TTL Pegel. Mit einem USB-UART Wandler kann man so den NIBObee mit dem PC verbinden. Ich habe das mal ausprobiert, funktioniert tadellos. Man könnte auch ein Bluetooth oder XBEE Modem oder Easyradio verwenden. Dann hat man eine drahtlose Verbindung.Zitat von pinsel120866
Bild hier
Ich habe schon verschiedene Bodenplatten fürs Getriebe ausprobiert - aber die sollten schon stabil sein. Aufgefallen war mir schon, dass das Getriebe oben eher zu und unten eher offen ist. Leider.
Zum Datenaustausch siehe hier (Datum: 29.10.2009 11:45) :
http://www.mikrocontroller.net/topic/155179#1463789
aber dabei gilt natürlich diese Entgegnung (Datum: 29.10.2009 12:18 ) :
http://www.mikrocontroller.net/topic/155179#1463834
ABER : schau Dir mal den Schaltplan an, Rev. 1.07, Sheet 1/3. Stecker x5. *ggggggg*.
Ciao sagt der JoeamBerg
Hallo Zusammen,Noch was - Gibt es eigentlich einen Weg die Sensorwerte auf dem PC auszugeben?
witzig, das passt ziemlich. Habe gerad ein kleines Debug-Programm für den NiboBee geschrieben, bei dem die Sensorwerte zum PC übertragen werden.
Der Gag ist: für ASURO Besitzer geht es ganz ohne Zusatzhardware
NiboBeeSender
Bester Gruß,
robo
Hallo,
ich habe mir noch einen "Getriebekasten" aus einer kleinen Cremedose gebastelt, dichtet nach unten ausreichend ab.
@m.a.r.v.i.n: Wo kriege ich den von dir gezeigten Wandler her?
Hallo
Die fehlende Kommunikation nervt mich auch. Ich bin auch dran mit dem asuro-IR-Transceiver zu experimentieren, aber es klappt noch nicht wirklich:
Das delay-Problem habe ich auch gefixt: Die Funktion heißt delay(), im Linienprogramm wir _delay_ms() verwendet.Code:// Nibobee IR-Kommunikation mit den LineLEDs. 15.11.09 mic // Die #defines in der iodefs_nibobee.h sind mir zu umständlich ;) #define LineLEDs_on PORTB &=~(1<<PB4) #define LineLEDs_off PORTB |= (1<<PB4) #include <nibobee/iodefs.h> #include <nibobee/delay.h> #include <nibobee/led.h> #include <nibobee/sens.h> void IRwriteChar(uint8_t zeichen) { uint8_t i, temp=0; // oje :( for(i=0; i<8; i++) if(zeichen & (1<<(7-i))) temp&=~(1<<i); else temp|=(1<<i); UCSRB |= (1<<TXEN); UCSRA=1<<TXC; // TXC-Flag löschen falls gesetzt UDR = temp; // Zeichen ins Senderegister des UARTs while (!(UCSRA & (1<<TXC))) // Solange das Schieberegister nicht leer ist, { } UCSRA=1<<TXC; // TXC-Flag setzen bedeutet löschen!!! UCSRB &= ~(1<<TXEN); } int main(void) { uint8_t c; led_init(); // IO-Ports der LEDs als Ausgänge konfigurieren sens_init(); // und Fühler aktivieren #define BAUD_2400 2400 //IR speed - 2400 Baud //#define UBRR_BAUD_2400 (((15000000/16)/BAUD_2400)-1) #define UBRR_BAUD_2400 390 UBRRH = UBRR_BAUD_2400 >> 8; // Baudrate auf 2400 setzen UBRRL = (uint8_t) UBRR_BAUD_2400; UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0); // 8, none, 1 TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20); OCR2 = 208; // 36kHz @15MHz TIMSK |= (1 << OCIE2); DDRB |= (1<<PB4); // LineLED ist ein Ausgang LineLEDs_on; // LineLED schaltet gegen GND! DDRD |= 2; // TXD Ausgang und low PORTD &= ~2; sei(); led_set(LED_L_YE, 1); while(!sens_getLeft() && !sens_getRight()); led_set(LED_L_YE, 0); while(1) { c=65; IRwriteChar(c); // Zeichen in Sendepuffer schreiben delay(200); } return 0; } // Die ISR erzeugt die 36kHz-Trägerfrequenz und "lauscht" gleichzeitig am TXD-Pin // um die seriellen Daten auf die Trägerfrequenz zu mischen. Die IR-Leds sind immer // an wenn nicht gesendet wird. ISR (TIMER2_COMP_vect) { static uint8_t status=0; if(status) { if(PIND & 2) led_set(LED_R_YE, 1); else led_set(LED_R_YE, 0); if(PIND & 2) LineLEDs_off; else LineLEDs_on; status=0; } else { led_set(LED_R_YE, 0); LineLEDs_on; status=1; } }
Frohes Weitertesten
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Bei meinem Programm klappt es. Du kannst es ja herunterladen und ausprobieren.
Ich habe mal die Odometriewerte vom NiboBee über die Linien IR-LEs zum Asuro Tansceiver senden lassen. Erst dreht sich der Roboter 1Sec lang rechts rum, dann 1 Secunde lang links rum.
Dabei ergibt sich ein etwas seltsames Verhalten der Odometrie:
Der Motor, der sich rückwärts dreht zeigt ca. 50 Ticks. Der Motor der sich vorwärts dreht, zeigt ca. 70 Ticks. Da sich der Roboter auf der Stelle dreht, sollten beide Werte gleich sein. Wie verhalten sich eure NiboBees in der Hinsicht?
Gruß,
robo
Von denen.Zitat von pinsel120866
Ciao sagt der JoeamBerg
z.B bei watterottZitat von pinsel120866
Die Idee von robo ist aber auch nicht schlecht, Respekt. =D>
Lesezeichen