Hi pebisoft!
Welchen Schalter? Wo soll der sein? *HÄ*
Meine Cameras zicken gerade. Mal sehen...
VLG Tobi
Druckbare Version
Hi pebisoft!
Welchen Schalter? Wo soll der sein? *HÄ*
Meine Cameras zicken gerade. Mal sehen...
VLG Tobi
irgendwie muss man doch das nachziehen verhindern können. ich meine elektronisch ausschalten.
meine camera macht jetzt hervorragende fotos und schickt sie über funk vom robby zum pc. ich kann jetzt über funk das belichtungsregister einstellen.
mfg pebisoft
Hi pebisoft!
Achso! Du willst die Bildausgabe Cameraseits abbrechen!
-> Einfach einen RESET auslösen, und danach die Register neu laden.
Ich weis nicht. Meine CAM spinnt gerade irgendwie.
VLG Tobi
tobi, mit welchen programm liest du die daten der cam aus. mit bascom bist du aufgeschmissen. mach es mit win-avr-c. eine gutes exaktes timing kannst du da proggen.
mfg pebisoft
HI pebisoft!
Naja...äh... BAS---COM?!
Das Timing ist doch garnicht so wichtig... Ich werde mal schauen. das muss schon noch schneller werden, und dann muss wohl ASM herhalten... :D
Meine Camera spinnt gerade. Weis nicht, was sie hat.
Das hat dann angefangen, als ich deine mal angeschlossen hatte..... :D
Ich hoffe, dass es morgen wieder funktioniert.
k.A. was da los ist (-> von jetzt auf nacher).
*ARGH*
Viele liebe Grüße,
Tobi
hallo, das sind meine registereinstellungen.
mit register 1 wird der kontrast hervorgehoben. je höher der wert ist, bis zu einer bestimmten grenze, desto besser ist der unterschied der linie zum boden. mit register 3 wird die helligkeit eingestellt. die anderen register werden nicht verändert. also mit register 1 und 3 habt ihr die gameboycam voll im griff für ein erkennungsprogramm. zum robby muss eine funkverbindung zur verstellung der beiden register bestehen, sonst habt ihr keine chance, weil jede ecke und jeder winkel schon wieder andere werte liefert. klappt sonst super. hat sich schon einer mal überlegt, ob man einen belichtungsmesser aus einem fotoapparat nehmen kann zur automatischen einstellung der beiden register oder sogar einen einfachen fotowiderstand.
mit register 7 braucht ihr nur einmal den richtigen mittelwert abstimmen für den adc-port.
mfg pebisoft
gbcam_load_register( 0x00,128);
gbcam_load_register( 0x01,5);
gbcam_load_register( 0x02,0);
gbcam_load_register( 0x03,25);
gbcam_load_register( 0x04,1 );
gbcam_load_register( 0x05, 0 );
gbcam_load_register( 0x06, 1 );
gbcam_load_register( 0x07, 1);
HI Pebisoft!
Sie funktioneirt wieder. Habe da wohl gestern Mist eingegeben.
Kannst du deine Register nicht variablel einstellen?
An der Sache mit der Belichtung bin ich gerade dran.
Ich denke, ich werde einen Teil des Bildes einlesen, und dann den 'Kontrast' messen.
Müsste gehen. Sonst mit nem LDR oder Phototransistor oder eben nem Belichtungsmesser, wobei ich nur einen ADC-Port frei habe.
Uiii... jetzt habe ich aber viel verraten. Naja... :D
Viele liebe Grüße,
Tobi
beim fotoapparat wird immer das ganze feld gemessen und der mittelwert genommen. ich werte zur zeit nur einen senkrechten mittelstreifen aus, der 2byte breit ist und 128 linien in der senkrechten. wenn die linie auf dem boden in diesen teil kommt und der kontrast hoch ist bekommt man/frau einen schönen auswertewert. schade das der roboter immer wieder anhalten muss wenn das bild ausgelesen wird. man könnte von einer anderen gameboycam den linsenteil abbauen (den camerateil schön wieder einpacken) und hinter diesen linsenteil eine fotosensor setzen.
hast du schon mal versucht, neben der camera rechts und links je 1 leuchtdiode zu setzen die den boden anleuchten, dann hat man einen fast constanten messraum/fläche.
oder vorn vor der linse ein kappe draufsetzen, die nur einen 1mm senkrechten schlitz hat. so werte ich am robby auf der rechten und linken seite einen tsop1736 aus, die befinden sich dann in einer filmdose. der empfangsbereich ist so eng, das die robbybreite nicht überschritten wird. also sehr genau.
mfg pebisoft
Hi pebisoft!
Ich will ja keine Linien erkennen, aber das auch mal vorsehen.
Hm...Ich glaube ich werde das mit dem jedes 20.Pixel auserten machen.
Geht dann halt ne Weile...
Liebe Grüße,
Tobi
du brauchst keine linie erkennen , es kann ja auch etwas anderes sein, was man auswerten möchte. mit meinem senkrechten auswerteverfahren spart man viel zeit.
mfg pebisoft
Hi!
Also ich habe jetzt mal das mit dem 'jedes 20. Byte auslesen' probiert. sieht gut aus.
Ich entwickle noch.
VLG Tobi
Hi!
Jungs, auf meiner Homepage unter Computer (bzw. Andere > Computer) > Software findet sich was zum downloaden...
By the way, gibts noch irgendwelche Verbesserungsvorschläge zum GBC-Viewer?
VLG Tobi
hallo tobi. was gibt s neus vom ramspeicher für die gamedaten. was macht dein 20-punkte projekt. hats du schon eine lösung für die richtige belichtung gefunden, ohne ein probebild zu schicken.
mfg pebisoft
Hi!
Naja, die 20-Pixel-Sache ist leider etwas in die hose gegangen.
Wobei ich sagen muss, das ich diese Woche nicht so viel Zeit hatte.
(Homepageupdate usw.)
Ich habe hier mal ein paar Diagramme:
Bild hier
Bild hier
Average (lila) ist der Durchschnitt des Kontrasts der 20 Pixel, und Enlightment (gelb) ist die Belichtungszeit, bzw. der Inhalt des unteren Bytes des Belichtungswords.
Try (blau) ist bedeutungslos...
Vllt. sollte ich den Helligkeitsdurschschnitt ermitteln. Das ist aber ein Problem, weil da die Variablen überlaufen würden...
VLG Tobi
PS. der 2. Schnittpunkt hätte von der Belichtung her hingehauen.
ES FUNKTIONIERT!
Ich habe es geschaft ein brauchbares Bild mit der C-Control auszulesen.
Wie bringt man jedoch den grauen Balken unten am bild weg? Giebt es eine verständliche übersicht der Register oder könnte mir jemand die wichtigsten einstellungen in den Register beschreiben?
Hier noch meinen Code:
Und noch ein erstes resultat:Code:define start port[11]
define sin port[12]
define load port[14]
define rst port[15]
define xck port[13]
define reade port[16]
define pixel ad[1]
define addr byte
define wert byte
#low
start = 0
sin = 0
load = 0
rst = 1
xck = 0
#reset
xck = 0
rst = 0
xck = 1
rst = 1
xck = 0
#Register
addr = 0
wert = 128
gosub reg_write
addr = 1
wert = 4
gosub reg_write
addr = 2
wert = 0
gosub reg_write
addr = 3
wert = 20
gosub reg_write
addr = 4
wert = 1
gosub reg_write
addr = 5
wert = 0
gosub reg_write
addr = 6
wert = 1
gosub reg_write
addr = 7
wert = 3
gosub reg_write
goto start
#reg_write
'send addr'
sin = 0 - ((addr AND &H04)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((addr AND &H02)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((addr AND &H01)<>0)
xck = 1
sin = 0
xck = 0
'send wert'
sin = 0 - ((wert AND &H80)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H40)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H20)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H10)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H08)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H04)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H02)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H01)<>0)
load = 1
xck = 1
sin = 0
xck = 0
load = 0
return
#start
start = 1
xck = 1
start = 0
xck = 0
#wait
xck = 1
if reade = -1 then goto scan
xck = 0
goto wait
#scan
xck = 1
if reade = 0 then end
put pixel
xck = 0
goto scan
end
HI Z80!
Diesen Rand habe ich auch! Ich habe sogar noch einen komischen Rand am oberen Ende. Weis nicht, woher der kommt.
Die Register werden Im Datenblatt recht gut erklärt!
Ich habe es so gemacht, dass ich nur noch die Belichtung einstellen muss.
Gain und Offset sind bei mir 0.
Ich habe jetzt übrigens eine recht brauchbare automatische Belichtung etabliert. Funktioniert ganz gut!
Ich müsste die Berechnung der Belichtung aus meinem ADC-Wert verbessern und evtl. den Spannungsteiler etwas anpassen, aber im großen und ganzen ist das super!
(An dieser Stelle nochmals DANKE an Florian, der das Kabel und den Widerstand für den Spannungsteiler gesponsert hat, und eine einfache sowie geniale Idee hatte!!)
Ganz liebe Grüße,
Tobi
hallo, meine datenmenge beträgt 16384 pixeldaten, danach schaltet er den transfer ab, siehe while-schleife :
// 16384 Pixel auslesen
while( ( GBPIN & (1<<CREAD ) ) != 0 )
{
GBPORT |= (1<<CCLK);
// AD Wandler starten
ADCstart;
adc_wert=getadc();
// Daten einlesen
if (adc_wert > 255)
{
adc_wert=255;
};
usart_writeChar(adc_wert);
GBPORT &= ~(1<<CCLK);
delay_us(2);
}
unter "album, persönliche galerie, pebisoft" habe ich ein bild von der seriellen übertragung vom avr zum pc. wird mit visualbasic-5.0 dargestellt.
das bild ist 128x128pixel gross. also muss bei euch irgendwie die abfrage oder die darstellung nicht klappen. ich progge den avr in winavr-c.
mir fehlt nur noch der speicherbaustein am avr, den kriege ich selber nicht gebacken.
mfg pebisoft
Ich habe mit meiner Kamera jetzt auch nochmal ein bißchen gespielt.
hab das jetzt so gemacht, das die Kamera fortlaufend Bilder macht.
Ich habe auch einen Viewer geschrieben, der die Bilder nun ständig anzeigt.
Meine Frage ist nun: Wie kann man das ganze nun noch schneller machen? Wenn die kamera auf meinen Roboter montiert wird, sind die Bilder immer total verwackelt...
Ich meine im Datenblatt irgendwas von 10-30fps gelesen zu haben. Wie soll das denn gehen?
Achja, und den Rand habe ich auch.
MFG! O:)
hallo, wenn du mit der gameboycam ein bild machst, muss die kamera bis zur fertigstellung des bildes fest auf das object zeigen und das objekt darf sich auch nicht bewegen. es ist ein grosser nachteil dieser gameboycam.
roboter steht-bild fertig-roboter fährt-roboter steht-bild fertig- roboter fährt usw..
bei mir schaltet die kamera exakt nach 128x128 pixel den pin.
meine gameboycam wird mit winavr-c geproggt. das bild stelle ich auf dem pc mit einem selbsterstellten visualbasic-5.0-programm dar.
es hat keine ränder.
mfg pebisoft
das bild ist unter "album,persönliche galerie,pebisoft".
vielleicht stellt ihr mal euer funktionsfähiges bascom-programm rein.
kenne mich damit aus, vieleicht ist es ein timing-fehler.
mfg pebisoft
ps: diese aussage ist schmarren "Ich meine im Datenblatt irgendwas von 10-30fps gelesen zu haben. Wie soll das denn gehen?"
Im Datebblatt steht jedenfalls
Hier dann nochmal mein derzeitiges Programm (liefert auch 16384 Pixel):Zitat:
Zitat von Datenblatt
Code:'Init:
$regfile = "m8515.dat" 'ATmega8515-Deklarationen
$crystal = 3686400 'Quarz: 4 MHz
$baud = 115200
Declare Sub Register_laden(addr As Byte , Wert As Byte)
'Variablen:
Dim Regaddr(8) As Byte
Dim Regwert(8) As Byte
Dim Bild(16384) As Xram Byte
Dim Z As Word
Dim I As Byte
'Register festlegen:
Regaddr(1) = 1
Regaddr(2) = 2
Regaddr(3) = 3
Regaddr(4) = 4
Regaddr(5) = 5
Regaddr(6) = 6
Regaddr(7) = 7
Regaddr(8) = 0
'Register für Positive Image
Regwert(1) = 0
Regwert(2) = 0
Regwert(3) = 60
Regwert(4) = 3
Regwert(5) = 0
Regwert(6) = 1
Regwert(7) = 4
Regwert(8) = 128
'Register für 2D Ext.
' Regwert(1) = &B11100000
' Regwert(2) = 0
' Regwert(3) = 60
' Regwert(4) = 3
' Regwert(5) = 0
' Regwert(6) = 1
' Regwert(7) = 128
' Regwert(8) = 0
Config Scl = Porte.0
Config Sda = Porte.2
I2cinit
I2cstart
I2cwbyte &B10010000
I2cwbyte &B00000000
I2cstop
Xckpin Alias Portb.0
Resetpin Alias Portb.1
Loadpin Alias Portb.2
Sinpin Alias Portb.3
Startpin Alias Portb.4
Readpin Alias Pind.5
'Pins festlegen:
Config Portb.0 = Output 'XCK
Config Portb.1 = Output 'Reset
Config Portb.3 = Output 'Sin
Config Portd.5 = Input 'Read
Config Portb.2 = Output 'Load
Config Portb.4 = Output 'Start
'Pins initialisieren:
Resetpin = 1 'Reset High
Xckpin = 1 'XCK High
Loadpin = 0 'Load Low
Startpin = 0 'Start Low
'Reset:
Waitus 1
Xckpin = 0
Waitus 1
Resetpin = 0
Waitus 1
Xckpin = 1
Waitus 1
Resetpin = 1
Waitus 1
Xckpin = 0
Waitus 1
'Register Laden
Call Register_laden(regaddr(1) , Regwert(1))
Call Register_laden(regaddr(2) , Regwert(2))
Call Register_laden(regaddr(3) , Regwert(3))
Call Register_laden(regaddr(4) , Regwert(4))
Call Register_laden(regaddr(5) , Regwert(5))
Call Register_laden(regaddr(6) , Regwert(6))
Call Register_laden(regaddr(7) , Regwert(7))
Call Register_laden(regaddr(8) , Regwert(8))
'Start:
Startpin = 1
Waitus 1
Xckpin = 1
Waitus 1
Startpin = 0
Waitus 1
Xckpin = 0
Waitus 1
Do
'Warten Bis Bild Fertig:
While Readpin = 0
Xckpin = 1
Waitus 1
Xckpin = 0
Waitus 1
Wend
'Bild einlesen:
Z = 0
I2cstart
I2cwbyte &B10010001
I2crbyte I , 8
While Readpin = 1
Xckpin = 1
Waitus 1
Incr Z
I2crbyte I , 8
Bild(z) = I
Xckpin = 0
Waitus 1
Wend
I2crbyte I , 9
Incr Z
Bild(z) = I
I2cstop
'Bild über die ser. Schnittstelle ausgeben:
For Z = 1 To 16384
Printbin Bild(z);
Next
Loop
End 'end program
'Register laden:
Sub Register_laden(addr As Byte , Wert As Byte)
'Registeraddr übertragen:
For I = 2 To 0 Step -1
Sinpin = Addr.i
Waitus 1
Xckpin = 1
Waitus 1
Xckpin = 0
Waitus 1
Next
'Registerwert übertragen:
For I = 7 To 0 Step -1
Sinpin = Wert.i
Waitus 1
Xckpin = 1
Waitus 1
If I = 0 Then
Loadpin = 1
End If
Waitus 1
Xckpin = 0
Waitus 1
Loadpin = 0
Next
Sinpin = 0
End Sub
'Pins festlegen:
Config Portb.0 = Output 'XCK
Config Portb.1 = Output 'Reset
Config Portb.3 = Output 'Sin
Config Portd.5 = Input 'Read
Config Portb.2 = Output 'Load
Config Portb.4 = Output 'Start
bei mir zeigt bascom immer fehler an bei obigen routinen.
hast du das programm, wie du es reingestellt hast tatsächlich zum laufen gebracht.
mfg pebisoft
Wäre sehr nett wenn ihr euch ein bisschen um folgendes Thema kümmern würdet: https://www.roboternetz.de/phpBB2/vi...=114924#114924
Danke!
Hi!
@pebisoft:
Das ist klar
>>Config Portd.5 = Input 'Read
ist falsch es muss
Config Pind.5 = Input 'Read
heißen... :D
VLG Tobi
Hallo da,
ich habe diesen Thread einige Zeit verfolgt und nachdem ich es über die Weihnachtstage geschaft habe, meine GB-Cam an zu schließen muss ich mich der Diskussion anschließen und das Thema aus der Versänkung holen.
Ich wollte die den AVR in C programmieren. Das geht auch alles wunderbar, bis ich zum Punkt SRAM gekommen bin. Da habe ich einen Fehler, der mir kopfschmerzen bereitet... mehrere Tage und immernoch:
Wenn ich den Ram per Makefile aktiviere, geht der AVR nicht mehr an.
Das macht leider wenig Sinn. Ich habe schon alles versucht und alles eingestellt.. bin daran verzweifelt.
Mit dem Ergebnis, dass ich zu Bascom gegangen bin und dort das SRAM testete. Dort lief es auf Anhieb und macht seither überhaupt keine Probleme.
Allerdings ist Bascom extrem anfällig auf Stackprobleme, weswegen ich jetzt schon wieder haake.
Im augenblick sieht es so aus, dass ich die Camera auslese und die Daten komplett in ein SRAM mit 32kb schreibe. Anschließend schreibe ich die Daten serial an den PC und kann sie dort auswerten.
Viel lieber hätte ich jetzt eine Routine, die automatisch die Belichtungszeit ändert, um entsprechend Helligkeitsunterschiede auszugleichen. Mit GAIN wollte ich eigentlich nicht arbeiten.
Das Problem ist, dass die Camera auf der rechten Seite deutlich heller ausleuchtet, als auf der linken. So ab der Mitte ist das Bild links abnehmend dunkler...
Hier mal zur präsentation eine gut gelungene Aufnahme meiner Arbeitsplatzdekoration.. (siehe Anhang)
Da ist netterweise nicht zu erkennen, dass es rechts heller ist als links, allerdings weiß ich, dass die Wand rechts dunkler ist, denn die Lampe hängt links an der Wand ;) Dadurch wird das ausgeglichen.
So, ich stelle mal meinen C Code auch in den Anhang, damit sich das evtl mal jemand in Bezug auf SRAM-Problem anschaut! Das wäre mir wirklich sehr wichtig, denn ich möchte das so gerne in C programmieren.... :(
Zusätzlich stelle ich auch meine Bascom Datei online, die eine Funktionierende RS232-Leistung vorraus setzt.
Vielen Dank
Timo
ps. meine Registereinstellungen nach Reihenfolge:
80
03
00
14
01
00
01
01
Hi!
Das sieht ja super aus!
(Funktionieren die "Intellige Tools" schon?)
Ich arbeite an einer Belichtungsroutine, muss alerdings erst auf meine Spezialplatine warten, da man zum Belichtung messen das Bild schnell einlesen muss. Ich hab aber schon mal ne Idee...
Kannst du bitte diene Registereinstellungen posten? Ich habe nämlich oben und unten komische Balken.
Es kommt auch drauf an, Wie die wände Beleuchtet sind. Auch mit IR!
Die GBC ist, wie ich festgestellt habe äusserst IR-empfindlich!
VLG Tobi
Die Registereinstellungen stehe von Reg0 bis Reg7 alle in meinem "ps." des letzten Posts :P
Mit dem IR: Sehr geil! Ich dachte mir schon soetwas. Ich führte sogar überlegungen an, dass die Camera deswegen so unterschiedlich belichtet, weil die Neonröhren hier an der Decke möglicherweise IR-Licht mit ausstrahlen, was ich selbst ja optisch garnicht erfassen kann.
Intelligente Tools: Nein, die laufen noch nicht :D
Wäre auch zu schön gewesen. Aber ich habe Ideen im Kopf um das umzusetzen. Dauert aber noch.
Deine Spezialplatine: Hast du vor SRAM zu verwenden, wenn ja wieviel und womit willst du das Proggen? Zufällig in C? Dann könntest du dich nämlich schonmal mit meinem C Problem in Bezug auf mein SRAM auseinander setzen, denn das wirst du warscheinlich auch bekommen... :(
Gruß
Timo
ps. komische Balken habe ich auch. Allerdings nur unten. Ich bin davon überzeugt, dass es ebenfalls an den registereinstellungen liegt, wie eigentlich alles an der Camera. Im Datenblatt steht übrigens, dass die Camera nur 128*123 Pixel hat! Die Edge-Sharping Funktionen rechnen allerdings mitunter auf 128*128 Pixeln herum. Sehr widersprüchlich das ganze...
Hi!
Ja, das mit dem IR ist auch ein Problem, weil die Camera anscheinend auch auf UV reagiert......
Haha meine On-Chip-Auswertung läuft schon bis zu nem gewissen Grad....
*löl*
Ja, meine Spezialplatine verwendet ein SRAM.
Das wird in Bascom geproggt, wird aber mit der neuen Platine viel einfacher.
Das SRAM auf der Platine Version 1 (64kb) funktioniert prächtig. Das ist eigentlich ganz einfach.
Ich möchte nur keine technischen Datern rausrücken, da es sich dabei um meine Jugend forscht Arbeit handelt.
Ja, 128*123... das habe ich auch schon gelesen. Aber ich habe auch einen Balken oben. Hm. komische Sache. Das MUSS an der Kamera liegen, weil mein Bild sonst absolut super ist.
Ist ne komische Angelegenheit.
Ich werde mal zählen, wann READ auf LOW geht. das müsste man ja deutlich merken.
VLG Tobi
bei mir geht read entsprechend bei ab 123 auf low.
hi
Hm muss ich mal testen.. *keinezeit*
vlg...
Hallo, die Zeilen betragen 123 Stück.
Der obere Balken kommt daher, das die Daten zu spät aufgenomen werden, es ist eine Verzögerung deinerseits.
Die Zeilen unten kommen von dir, weil du den y-Wert auf 128 hast und nicht auf 123.
Wenn der ADC vom AVR des Menschen Gustav genauso 100% arbeitet wie der von Emil, dann kannste die Register von Gustav verwenden, ansonsten musst du deine eigenen nehmen, weil die obigen ADC nie 100% identisch sind. Heisst also, Emil muss seine Werte selber herausfinden.
Wenn beide Cams im gleichen Raum benutzt werden, wird der eine von euch sagen , das ist eine tolle Beleuchtung und der Andere flucht rum, weil die gleichen Einstellungen zu keinem Ergebnis führen, ist halt so.
Darum Tobi weden dir diese Registereinstellungen nicht viel nützen, du musst deine ausgeklügelten nehmen.
mfg Castle
Es sei an dieser Stelle mal was angemerkt:
Es wird hier oft geschrieben, dass die Register Einstellungen stark von der Camera abhängen und manche kurze und manche lange Belichtungszeiten einstellen müssen. Das liegt an folgendem Grund:
Der eine verwendet eine C-Control, der andere einen AVR mit Bascom, der andere einen mit C und wieder andere mit wieder anderen Tackfrequenzen, um die Camera auszulesen.
Da der Programmierer allerdings dafür verantwortlich ist, an die Camera eine Clock anzulegen - spätestens jetzt sollte es bei jedem schalten, der es noch nicht erkannt hat - ist es massiv clock-abhängig, wie stark bei einer bestimmten Registereinstellung belichtet wird. Das gilt natürlich für alle zeitabhängigen Einstellungen.
Ich habe das ganz besonders gemerkt, als ich von Bascom endlich auf C umsteigen konnte - nachdem mein Speichermodul denn endlich lief. Bascom bedient den ADC anders als ich es mit C mache, somit bin ich mit C viel schneller mit dem Auslesen. Zum anderen tickt meine "warte auf ready-Signal" Clock wesentlich schneller, als sie es unter Bascom getan hätte. Dadurch kann ich jetzt in 0.5 Sekunden ein Bild machen und verarbeiten, statt pro Bild 2-4 Sekunden warten zu müssen.
Der absolute Flaschenhals ist nach wie vor der RS232-Port, der einfach zu langsam ist um damit wirklich Bilder übertragen zu können.
Meine Idee ist daher, denn LPT1 Port zu aktivieren und eine parallele Kommunikation zwischen AVR und PC herzustellen. Damit sollte sich um einiges Schneller der Datenzatz übertragen lassen, evtl sogar eine Echtzeitdarstellung realisieren :)
### anderes Thema #######################
Ich versuche zur Zeit den AD-Wandler des AVR Mega 128 auf FreeRun Modus einzustellen. Der schafft dann ca. 200Khz. Damit würde es ca. 120 ms ein Bild zu schießen und zu digitalisieren. Das wäre ein erstrebenswertes Ziel, da man so schon fasst 8fps erreichen könnte.
Leider macht mein AD-Wandler das nicht. Ich setze also das FreeRun-Flag und starte die erste Wandlung mit dem "SingleConversion"-Flag.
Der AD-Wandler sampled den ersten Wert der anliegt, und erneuert anschließend das Register nie wieder.
Wenn ich vor jedem Pixel wieder das "SingleConversion"-Flag setze und warte, bis das "SingleConversion"-Flag im Register auftaucht, dann habe ich immer frische Pixel-Werte, jedoch geht das entsprechend Langsam. Ich denke an ca. 60Khz, statt 200 möglichen.
Wenn ich so vorgehe, habe ich praktisch immer an sehr ähnlichen Stellen im Bild Pixel, die 255 hell sind. Es handelt sich um einzelne ausreißer, die mir anschließend bei dem Versuch eine Belichtungsautomatik zu programmieren, bzw. laufen zu lassen, das Leben schwer machen!
Kennt soch jemand evtl. mit beidem aus, und kann mir sagen, woran das wohl liegen mag?
Gruß
Timo
HI!
JA, das ist richtig, aber ich möchte meine mal überprüfen...
Ich werde sowieso demnächst mit einem völlig anderen ADC arbeiten.
Das mit dem Free Run habe ich auch schon probiert. Kannst du vergessen.
Das einzige was du machen kannst, ist einen schnelleren ADC zu benutzen. Da bin ich auch gerade dran.
VLG Tobi
Die Frage ist doch: Warum?Zitat:
Zitat von tobimc
Hi!
Weil der Messpunkt meistens genau dann ist, wenn du gerade das nächste Pixel lädst.
Ausserdem macht doch der AVR-ADC nur 70KHz, oder???
Viele liebe Grüße,
Tobi
ich hab jetzt nicht ganz alles gelesen, verzeiht mir, aber warum zum teufel nehmt ihr nich einfach die CMUCam? die ist garantiert viel viel einfacher anzusteuern, und hat auch noch farbe, kann diese suchen, automatisch verfolgen, und hat noch EINIGE weiter funktionen die ich sehr schätze, ausserdem macht die immer nen bild, speicherts ab, und dann kann man damit rumexperimentieren, also kann der roboter einfach bilder im fahren machen, und die bilder sind trotzdem verwertbar, wenn ihr aber mit der GBCam wat macht, müsst ihr das bild selber speichern, selber auswerten, und auch selber holen, das müsst ihr bei der cmucam nicht, und in der anleitung iss das ansprechen der cmucam zwar ziemlich kompliziert beschrieben, wenn mans raushat, denkt man sich aber: mein gott, warum nicht gleich so, also iss das einfach nur kacke beschrieben, wenn jemand interesse an einer doku hat (wäre dann in bascom) dann kann ich mich mal dransetzen eine zu schreiben, für alle unglücklichen GBCam besitzer
Martin
ich hab jetzt nicht ganz alles gelesen, verzeiht mir, aber warum zum teufel nehmt ihr nich einfach die CMUCam? die ist garantiert viel viel einfacher anzusteuern, und hat auch noch farbe, kann diese suchen, automatisch verfolgen, und hat noch EINIGE weiter funktionen die ich sehr schätze, ausserdem macht die immer nen bild, speicherts ab, und dann kann man damit rumexperimentieren, also kann der roboter einfach bilder im fahren machen, und die bilder sind trotzdem verwertbar, wenn ihr aber mit der GBCam wat macht, müsst ihr das bild selber speichern, selber auswerten, und auch selber holen, das müsst ihr bei der cmucam nicht, und in der anleitung iss das ansprechen der cmucam zwar ziemlich kompliziert beschrieben, wenn mans raushat, denkt man sich aber: mein gott, warum nicht gleich so, also iss das einfach nur mies beschrieben, wenn jemand interesse an einer doku hat (wäre dann in bascom) dann kann ich mich mal dransetzen eine zu schreiben, für alle unglücklichen GBCam besitzer
Martin
Also, hm ich spreche mal für mich selbst, aber ich denke es geht mitunter darum, dass die GB-Camera so unglaublich günstig ist.
Zudem ist das Auslesen eigentlich auch garnicht so kompliziert (obwohl sich das Bild bei mir grade aus irgeneinem Grund verabschiedet hat) und man kann es ganz bequem im SRAM speichern.
Einziger wirklich großer Nachteil ist, dass die Camera SW ist. Damit sind einem viele Möglichkeiten zur Auswertung genommen.
An sonsten finde ich die CMUCam auch ganz toll, liegt allerdings weit außerhalb dessen, was ich für eine Camera zahlen würde. Dafür bekomme ich schon Servos für ne 6beinige Spinne...
Gruß
Timo
hmm also es ist so:
die cmucam hat einfach schon eine verarbeitung drin, und man glaubt erst gar nicht so richtig, was man alles damit machen kann, dazu muss man sie erstmal getestet haben, zum beispiel eine eigene kantenerkennung, oder colortracking, das hat mich dazu veranlasst die zu kaufen, und ich denke auch, sie ist es wert, denn stell dir jetzt mal vor, du würdest alle diese verarbeitungsschritte in deinem µc selber schreiben, erstmal wärs natürlich relativ schwer, ausserdem geht dir dabei enorm speicher flöten.
ausserdem ist die com zwischen µc/PC und der cam viel einfacher nämlich normales RS232, und die servos die du dir kaufen willst für deine spinne, kannst du auch gleich an die cam packen ^^
man erspart sich einfach viiiiiiiel arbeit dadurch
letztens hab ich noch was nettes entdeckt, man kann nämlich auch schaun, ob nen mensch im bild ist, oder nurn rotes blatt, wenn man gut rumexperimentiert mit den histogrammen.
dann gäbs da noch die bewegungserkennung, die ist sehr praktisch, wenn der robo ne runde steht, und was überwachen soll oder sowas, dann geht man in den erkennungsmodus, guckt wann was kommt, guckt vor allem wo das iss, dann macht man ein virtuelles fenster um den bereich, und sucht mit colortracking raus, obs nen mensch iss, oder z.b. nur ne katze, also iss schon ziemlich mächtig die cam ^^
Martin
"wenn jemand interesse an einer doku hat (wäre dann in bascom) dann kann ich mich mal dransetzen eine zu schreiben, für alle unglücklichen GBCam besitzer"
Das wäre nicht schlecht..
Castle