also ich habe zwar noch nicht angefangen aber soweit wie ich verstanden habe entweder Monitor oder 75Ohm an die Chinchbuchse.
Trainmen
Druckbare Version
also ich habe zwar noch nicht angefangen aber soweit wie ich verstanden habe entweder Monitor oder 75Ohm an die Chinchbuchse.
Trainmen
@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
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
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
so alle teile sind bestellt ich hoffe das ih noch diese woche starten kann
lg
martin
kann mir einer kurz sagen wie rum ich die Transystoren anschließen muss
Danke
Hallo
Mit diesem kleinen Update beende ich mal den Ausflug in die Welt der HiRes-Bilder:
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.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);
}
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:
Bild hier Bild hier Bild hierCode:// 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);
}
@martinius11
gib den namen des transistor bei google an und guck ins datenblatt dort steht die anschluss belegung
lg
martin
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
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