- 12V Akku mit 280 Ah bauen         
Seite 8 von 20 ErsteErste ... 67891018 ... LetzteLetzte
Ergebnis 71 bis 80 von 197

Thema: Hardware Mitmach-Projekt: Kamera für den RP6

  1. #71
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Anzeige

    E-Bike
    also ich habe zwar noch nicht angefangen aber soweit wie ich verstanden habe entweder Monitor oder 75Ohm an die Chinchbuchse.
    Trainmen

  2. #72
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @McDelta:
    Danke für deinen Hinweis auf den 75 Ohm Widerstand im RN-Wissen!
    Fest kommt er erst in Phase 2 auf die Exp, also bis dahin z.B. nur lose an die Cinch-Buchse klemmen!

    @Martinius11:
    Ich würde den 75 Ohm nur lose anklemmen, er wird in Phase 2 fest eingebaut. Du kannst auch 2x 150 Ohm parallel anklemmen.

    @TrainMen:
    Ich habe es getestet: Meine Kamera funktioniert noch bis 4,2 Volt herunter. Das liegt sogar unter den im Datenblatt genannten Werten, nach denen die Kamera von 4,5 bis 5,5V arbeiten soll. Bei 4,2 Volt VCC dürfte auch die Akkuspannung des RP6 schon weit unter 7,2V liegen, d.h. die Akkus sind leer.
    Wenn man auf Nummer sicher gehen will, könnte man wirklich eine 9V-Blockbatterie zur Spannungsversorgung der Kamera benutzen. Dazu könnte man die Anschlußplatine der Kamera (150325) mit bestellen. Da ist ein Spannungsregler 5V drauf und man könnte die Batterie direkt anschließen.

    Gruß Dirk

  3. #73
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi,
    @Dirk
    schön dann bin ich ja beruhigt, ich habe mich schon gewundert den im Datenblatt steht was von 5V .
    Nur warum funktioniert die Kamera nicht mehr wenn im Loader noch 7,2V angezeigt werden. Wie ja "radbruch" schreibt. Das machte mich nervös.
    @radbruch
    schreib mal bitte was dazu, das Problem gelösst ?

    übrigens ich habe ich noch nicht angefangen
    Trainmen

  4. #74
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Oje, was soll ich dazu schreiben? Mein RP6 dümpelt hier zwischen all meinem Chaos und hatte schon ewig keine Steckdose mehr gesehen. Und die Akkus sind noch Erstausrüster mit billigem Ladegerät (Trafo mit Gleichrichterbrücke) schlecht gepflegt. Kurzum: Nicht representativ.

    Warum sich das schon bei 7,2V auswirkt kann ich im Moment noch nicht sagen. Wenn es wieder auftritt, werde ich Ursachenforschung betreiben.

    Gruß

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

  5. #75
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    31
    Beiträge
    206
    so alle teile sind bestellt ich hoffe das ih noch diese woche starten kann

    lg
    martin

  6. #76
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    30
    Beiträge
    661
    kann mir einer kurz sagen wie rum ich die Transystoren anschließen muss

    Danke
    MfG Martinius

  7. #77
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Mit diesem kleinen Update beende ich mal den Ausflug in die Welt der HiRes-Bilder:
    Code:
    // RP6 sendet eine 48X64-HiRes-Bitmap über die serielle Schnittstelle      5.4.10 mic
    
    // Das Bild ist um 90° nach links gedreht, oben links im TV ist unten links im BMP
    
    // Es werden nur ca. 3/4 des Bildes erfasst. Um das ganze Bild einlesen zu können,
    // muss man die Bildgröße des BMP ändern, also den Header anpassen.
    // Das ist mir im Moment zuviel Aufwand ;)
    
    #include "RP6RobotBaseLib.h"
    
    void ADC_Init(void)
    {
    	extIntOFF(); // schaltet den E_INT1-Port auf Eingang für den ADC
    
    // ADC interne Referenz 2,56V, Ergebniss linksbündig, Kanal ADC4 (E_INT1)
    	ADMUX = (1<<REFS1) | (1<<REFS0)  | (1<<ADLAR) | 4;
    // setze free running triggern
    	SFIOR = (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
    // kein Interupt, Wandler einschalten, prescaler /2, ADC läuft nun mit 4MHz!
    	ADCSRA = (0<<ADIE) | (1<<ADEN) | (0<<ADPS2) | (0<<ADPS1)  | (1<<ADPS0);
    // Autotriggern bedeutet jetzt free running aktivieren, altes Flag löschen
    	ADCSRA |= (1<<ADATE) | (1<<ADIF);
    // Initialisierung starten
    	ADCSRA |= (1<<ADSC);
    // und noch die empfohlene Initiallesung
    	while (!(ADCSRA & (1<<ADIF)));
    	ADCSRA |= (1<<ADIF);
    }
    
    int main(void)
    {
    	uint8_t bildspeicher[100], *bildzeiger; // 100 Byte Bildspeicher sollten reichen
    	uint8_t zeile, spalte, sync, c, i;      // und dürfen NICHT global sein!
    	uint8_t bmp_header_48_64_24bit[54]={
    	0x42, 0x4d, 0x36, 0x24, 00, 00, 00, 00, 00, 00, 0x36, 00, 00, 00, 0x28, 00,
     	00, 00, 0x30, 00, 00, 00, 0x40, 00, 00, 00, 01, 00, 0x18, 00, 00, 00,
     	00, 00, 00, 0x24, 00, 00, 0xc4, 0x0e, 00, 00, 0xc4, 0x0e, 00, 00, 00, 00,
     	00, 00, 00, 00, 00, 00};
    	initRobotBase();
    	ADC_Init();
    
    	while(1)
    	{
    		for(c=0; c<54; c++) writeChar(bmp_header_48_64_24bit[c]); // Header senden
      		for(spalte=0; spalte<64; spalte+=2)
    		{
    			bildzeiger=&bildspeicher[0]; // Zeiger auf Start des Bildspeicherbereich
    			zeile=30; // aktuelle Zeile (35 Zeilen sind der Schrott beim Bildstart)
    			setLEDs(63-spalte); // working
    			
    		   cli();
    			do {sync=0; while (ADCH > 20); while (ADCH < 30) sync++;}while (sync < 40);
    			while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
       		for(c=0; c<48; c++)
    			{
    				i=spalte; zeile=5; // Zeilensprung für 48 Zeilen
    				while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
    
    				ADCSRA = (1<<ADATE)|(0<<ADEN)|(1<<ADIF)|(0<<ADSC)|(1<<ADPS0); // ADC stoppen
    				while(i--); // Pixel ansteuern
    				ADCSRA = (1<<ADATE)|(1<<ADEN)|(1<<ADIF)|(1<<ADSC)|(1<<ADPS0); // ADC wieder starten
    				while (!(ADCSRA & (1<<ADIF))); 	// 26 ADC-Takte warten bis Wandlung fertig
    				*bildzeiger++=ADCH; 				// das sind ca. 6,5µs
    				ADCSRA |= (1<<ADIF);
    			}
    
    			zeile=30;
    			setLEDs(62-spalte); // working
    			do {sync=0; while (ADCH > 20); while (ADCH < 30) sync++;}while (sync < 40);
    			while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
       		for(c=0; c<48; c++)
    			{
    				i=spalte; zeile=5; // Zeilensprung für 48 Zeilen
    				while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
    
    				ADCSRA = (1<<ADATE)|(0<<ADEN)|(1<<ADIF)|(0<<ADSC)|(1<<ADPS0); // ADC stoppen
    
    				nop(); nop(); // nächste Spalte zwei NOPs später einlesen
    
    				while(i--); // Pixel ansteuern
    				ADCSRA = (1<<ADATE)|(1<<ADEN)|(1<<ADIF)|(1<<ADSC)|(1<<ADPS0); // ADC wieder starten
    				while (!(ADCSRA & (1<<ADIF))); 	// 26 ADC-Takte warten bis Wandlung fertig
    				*bildzeiger++=ADCH; 				// das sind ca. 6,5µs
    				ADCSRA |= (1<<ADIF);
    			}
    			sei();
    
    			for(zeile=0; zeile<96; zeile++) // 96 Pixel senden
    			{
    			   if (bildspeicher[zeile] > 20)
    				{
    					writeChar((bildspeicher[zeile]-20)*2); // RGB in Pixelfarbe
    					writeChar((bildspeicher[zeile]-20)*2);
    					writeChar((bildspeicher[zeile]-20)*2);
    				}
    				else
    				{
    					writeChar(0); // oder Schwarz
    					writeChar(0);
    					writeChar(0);
    				}
    			}
    		}
    		setLEDs(63); // ready
    		while(!(getBumperLeft() || getBumperRight())); // Neues Bild senden?
    	}
    	return(0);
    }
    Da spalte und i nun 8Bit-Variablen sind, dauert while(i--) nur noch drei Takte (bei i != 0). Um die Auflösung noch weiter zu steigern lese ich nun zweimal dieselbe Spalte, allerdings beim zweiten Durchgang mit zusätzlichen zwei NOPs vor der while(i--)-Schleife.

    Beim Stoppen/Starten des ADC wird das ADCSRA-Register nur noch geschrieben und nicht mehr zuvor eingelesen (= anstelle von &= bzw. |=)

    Einer der wenigen Buchstaben mit eindeutiger Orientierung ist das R:
    Bild hier  

    Gruß

    mic

    [Edit]
    64X96:
    Code:
    // RP6 sendet eine 64x96-HiRes-Bitmap über die serielle Schnittstelle      5.4.10 mic
    
    #include "RP6RobotBaseLib.h"
    
    void ADC_Init(void)
    {
    	extIntOFF(); // schaltet den E_INT1-Port auf Eingang für den ADC
    
    // ADC interne Referenz 2,56V, Ergebniss linksbündig, Kanal ADC4 (E_INT1)
    	ADMUX = (1<<REFS1) | (1<<REFS0)  | (1<<ADLAR) | 4;
    // setze free running triggern
    	SFIOR = (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
    // kein Interupt, Wandler einschalten, prescaler /2, ADC läuft nun mit 4MHz!
    	ADCSRA = (0<<ADIE) | (1<<ADEN) | (0<<ADPS2) | (0<<ADPS1)  | (1<<ADPS0);
    // Autotriggern bedeutet jetzt free running aktivieren, altes Flag löschen
    	ADCSRA |= (1<<ADATE) | (1<<ADIF);
    // Initialisierung starten
    	ADCSRA |= (1<<ADSC);
    // und noch die empfohlene Initiallesung
    	while (!(ADCSRA & (1<<ADIF)));
    	ADCSRA |= (1<<ADIF);
    }
    
    int main(void)
    {
    	uint8_t bildspeicher[150], *bildzeiger; // 150 Byte Bildspeicher sollten reichen
    	uint8_t zeile, spalte, sync, c, i;      // und dürfen NICHT global sein!
    	uint8_t bmp_header_64_96_24bit[54]={
    	0x42, 0x4d, 0x36, 0x48, 00, 00, 00, 00, 00, 00, 0x36, 00, 00, 00, 0x28, 00,
     	00, 00, 0x40, 00, 00, 00, 0x60, 00, 00, 00, 01, 00, 0x18, 00, 00, 00,
     	00, 00, 00, 0x24, 00, 00, 0xc4, 0x0e, 00, 00, 0xc4, 0x0e, 00, 00, 00, 00,
     	00, 00, 00, 00, 00, 00};
    	initRobotBase();
    	ADC_Init();
    
    	while(1)
    	{
    		for(c=0; c<54; c++) writeChar(bmp_header_64_96_24bit[c]); // Header senden
    		for(spalte=0; spalte<96; spalte+=2)
    		{
    			bildzeiger=&bildspeicher[0]; // Zeiger auf Start des Bildspeicherbereich
    			zeile=30; // aktuelle Zeile (35 Zeilen sind der Schrott beim Bildstart)
    			setLEDs(95-spalte); // working
    			
    		   cli();
    			do {sync=0; while (ADCH > 20); while (ADCH < 30) sync++;}while (sync < 40);
    			while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
       		for(c=0; c<64; c++)
    			{
    				i=spalte; zeile=3; // Zeilensprung für 64 Zeilen
    				while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
    
    				ADCSRA = (1<<ADATE)|(0<<ADEN)|(1<<ADIF)|(0<<ADSC)|(1<<ADPS0); // ADC stoppen
    				while(i--); // Pixel ansteuern
    				ADCSRA = (1<<ADATE)|(1<<ADEN)|(1<<ADIF)|(1<<ADSC)|(1<<ADPS0); // ADC wieder starten
    				while (!(ADCSRA & (1<<ADIF))); 	// 26 ADC-Takte warten bis Wandlung fertig
    				*bildzeiger++=ADCH; 				// das sind ca. 6,5µs
    				ADCSRA |= (1<<ADIF);
    			}
    
    			zeile=30;
    			setLEDs(94-spalte); // working
    			do {sync=0; while (ADCH > 20); while (ADCH < 30) sync++;}while (sync < 40);
    			while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
       		for(c=0; c<64; c++)
    			{
    				i=spalte; zeile=3; // Zeilensprung für 64 Zeilen
    				while(zeile--) {while (ADCH > 20); while (ADCH < 30);}
    
    				ADCSRA = (1<<ADATE)|(0<<ADEN)|(1<<ADIF)|(0<<ADSC)|(1<<ADPS0); // ADC stoppen
    
    				nop(); nop(); // nächste Spalte zwei NOPs später einlesen
    
    				while(i--); // Pixel ansteuern
    				ADCSRA = (1<<ADATE)|(1<<ADEN)|(1<<ADIF)|(1<<ADSC)|(1<<ADPS0); // ADC wieder starten
    				while (!(ADCSRA & (1<<ADIF))); 	// 26 ADC-Takte warten bis Wandlung fertig
    				*bildzeiger++=ADCH; 				// das sind ca. 6,5µs
    				ADCSRA |= (1<<ADIF);
    			}
    			sei();
    
    			for(zeile=0; zeile<128; zeile++) // 2*64 Pixel senden
    			{
    			   if (bildspeicher[zeile] > 20)
    				{
    					writeChar((bildspeicher[zeile]-20)*2); // RGB in Pixelfarbe
    					writeChar((bildspeicher[zeile]-20)*2);
    					writeChar((bildspeicher[zeile]-20)*2);
    				}
    				else
    				{
    					writeChar(0); // oder Schwarz
    					writeChar(0);
    					writeChar(0);
    				}
    			}
    		}
    		setLEDs(63); // ready
    		while(!(getBumperLeft() || getBumperRight())); // Neues Bild senden?
    	}
    	return(0);
    }
    Bild hier   Bild hier   Bild hier  
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #78
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    31
    Beiträge
    206
    @martinius11

    gib den namen des transistor bei google an und guck ins datenblatt dort steht die anschluss belegung

    lg
    martin

  9. #79
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Hey,
    @Martinius
    Wenn du die Transistoren bei Conrad gekauft hast würde ich nicht googlen sondern einfach das Datenblatt bei Conrad runterladen. Es kommt bei den Transistoren auch auf die Bauform an und da kann es sein, das es bei einem Transistorwert verschiedene Ausführungen gibt. Also folge den Links:
    http://www.conrad.de/ce/de/product/1...HOP_AREA_37318 für BC 556 B
    http://www.conrad.de/ce/de/product/1...HOP_AREA_37318 für BC 547 C
    Nichts existiert durch sich allein!
    Bild hier  

  10. #80
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2010
    Beiträge
    23
    Hallo alle,
    Ich hab mir die teile bei conrad besorgt und bin mit derphase 1 feritg.
    Nun hab ich ein problem wenn ich den rp6 über die cinch- Buchse an einen monitor anschliesse, sehe ich auf den motor nur wilde balken die hin und her fetzen, und man kann kein bild erkennen. was kann cih dagegen machen?
    Schon mal danke im vorraus

Seite 8 von 20 ErsteErste ... 67891018 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests