-
        

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: Game Boy Camera an AVR -- Ein paar Fragen zur Hardware

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.03.2006
    Ort
    nahe Tulln (Niederösterreich)
    Alter
    26
    Beiträge
    460

    Game Boy Camera an AVR -- Ein paar Fragen zur Hardware

    Anzeige

    Hi!

    Ich habe einen roboter mit dem ziel gebaut, dass irgendwann mal eine kamera darauf montiert wird, mit der er dann einem laserpunkt folgen kann.

    Ich habe bereits eine Game Boy Kamera, und habe jetzt eine super Seite gefunden wo die auswertung und übertragung der bilder von der kamera zum uC ganz einfach erklärt wird:

    http://web2.vz18184.evanzo-server.de...onik/gbcam.htm (strg-a drücken, dann kann man es auch lesen)

    Das problem ist aber die Hardware. Man braucht unbedingt einen schnellen Controller, mindestens 16kByte Ram und einen schnellen AD-Wandler.

    Als ad wandler wird auf dieser Seite ein PCF8591 verwendet. Der ist recht teuer, hat aber auch 4 eingänge und einen D/A Wandler, was ich alles nicht brauche. Vll finde ich da einen passenderen.

    Der uC ist glaube ich kein problem, die ATmegas sind denke ich mit 16MHz schon schnell genug.

    Das größte Problem ist der RAM, bzw. das ansprechen des RAMs.
    Welche arten gibt es, den Ram an den uC anzuschließen?
    Ich hab was gelesen von paraleller anbindung (die soll langsam sein) und eine mit integriertem Speichercontroller. Den haben aber nur manche AVRs, die teuren eben.


    Welche Art empfehlt ihr mir? Ich muss eigentlich nur 128x128= ca 16000 Bytes nacheinander irgendwo abspeichern. und das möglichst schnell und einfach.
    Und welchen schnellen gut erhältlichen (Conrad)AD-Wandler könnte ich verwenden?

    lg
    Christoph

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    lustig, Kamera mit Grauwert Bild und Laserpunkt folgen
    viel Spaß dabei

    "nur" 16kb ist garnicht ohne ... aaaaaaaaalso
    Du wirst wohl um Farbwerte nicht herum kommen, zumal die
    die Aufgabe noch relativ einfacher machen.
    Du musst dann das Bild speichern ... SRAM DRAM FRAM ist zunächst
    mal wurst, nur groß genug sollte der Speicher halt sein.
    Stichwort Speicher ... besser ist nicht nur ein Bild im Speicher zu haben
    sondern Platz für 2-3 Frames zu haben.
    Dann gehste beim ersten Frame hin und suchst in der Matritze den
    Farbwert Deines Lasers, bei den folgenden Frames kannst du von der
    gefundenen Stelle aus suchen in welche Richtung sich der Punkt
    verschoben hat ... und nun wirds interessant, aus 2 Frames kannste
    dir quasi nen Bewegungsvektor errechnen.
    Wenn Du schon dabei bist lässte ne Kandenerkennung mit drüber
    laufen Sobel z.B. und so den Robbi Hindernissen ausweichen lassen.
    Die Übertragung der Kameradaten am Besten interrruptbasierend
    laufen lassen, sprich während ein Frame verarbeitet wird wird
    das nächste Frame in den Ram geschoben usw. usw.

    ... aber ... der ATMEga mit 16 ... 20MHz ist zwar schnell, das Problem
    ist die Peripherie. Z.B. RAM ... n serielles RAM kannste schonmal knicken,
    zu langsam ... parallel ist angesagt und auch das will angesteuert
    werden ... RAS CAS WRE A0 - A15 D0-D7 ... das bremst ziemlich
    am AVR
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Robotniks
    Registriert seit
    13.10.2007
    Beiträge
    168
    Hallo Christoph2,

    schau dir mal die links an, vieleicht ist was dabei, was du übernehmen kannst.

    http://www.kreatives-chaos.com/artik...oykamera-modul

    http://sophiateam.undrgnd.free.fr/mi...era/index.html

    http://pages.zoom.co.uk/andyc/camera.htm


    Ich persöhnlich würde da aber eine CMU CAM 2 bevorzugen.
    Alternativ RoboRealm und eine Funkkamera!

    www.roborealm.com


    Schönes Wochenende,

    Ulli

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.12.2006
    Alter
    29
    Beiträge
    51
    Hallo Christoph,
    ich habe auch mal eine Gameboykamera an einen AVR angeschlossen. Die gesamten Informationen zur Hardware etc. habe ich mir von verschiedenen Seiten zusammengesucht.
    Betrieben habe das ganze mit einem Mega 32 und einem externen AD-Wandler wegen der Geschwindigkeit. Wenn du möchtest kann ich dir die benötigten Teile raussuchen.

    LG
    Monday

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beiträge
    1.080
    Hallo Christoph,

    ich habe mir so ein Laser-Entfernungssystem bereits aufgebaut. Es funktioniert auf meinem Bot Marvin ganz brav und artig. Allerdings habe ich es mit zwei GB-Cams aufgebaut. Die Datenverarbeitung macht ein Atmega128 an dem 64KB SRAM hängen um 4 komplette Bilder speichern zu können.
    Als ADC habe ich den internen des Atmegas benutzt (leicht übertaktet), da eh nur 8 Bit ausgewertet werden sollen.

    Das Problem der Cams ist (meiner Erfahrung nach) nicht, das die Digitalisierung mit einem Atmega Ewigkeiten dauert, das Problem mit diesen Cams sehe ich stets darin, das diese unter ungünstigen Bedingungen (Zimmerbeleuchtung) eine recht lange Belichtungszeit haben, bevor diese das Bild freigeben.

    Ganz grob:
    -die Entfernungsmessung ist im Bereich unter 40cm auf ca. 0,5cm genau
    -die Entfernungsmessung ist im Bereich unter 80cm auf ca. 2cm genau
    -die Entfernungsmessung ist im Bereich unter 150cm auf ca. 10cm genau

    und ab ca. 2m nicht mehr zu gebrauchen

    Vorteil gegenüber Ultraschall ist halt die Punktgenaue Messung.

    Ich schaffe mit Auslesen beider Kameras, etc. vier Messungen pro Sekunde.

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.192

    Re: Game Boy Camera an AVR -- Ein paar Fragen zur Hardware

    Zitat Zitat von Christoph2
    Als ad wandler wird auf dieser Seite ein PCF8591 verwendet. Der ist recht teuer, hat aber auch 4 eingänge und einen D/A Wandler, was ich alles nicht brauche. Vll finde ich da einen passenderen.
    teuer ?

    2,20 €
    Ich programmiere mit AVRCo

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.03.2006
    Ort
    nahe Tulln (Niederösterreich)
    Alter
    26
    Beiträge
    460
    Danke für die Antworten!

    Das mit den vielen bildern speichern ist eine gute idee, das werde ich auf jeden fall machen.

    @Crazy Harry: Bei Reichelt muss ich aus Österreich mindestens 150€ bestellen (Mindestbestellwert), bei Conrad kostet das ding 9€

    Ich habe jetzt einen schnellen Wandler bei Conrad gefunden, den ADC0820. Er wird auch bei der Platine von /www.kreatives-chaos.com verwendet.
    Er hat kein I2C, sondern wird einfach an digitale Eingänge angeschlossen.


    So, das große Problem ist immer noch der RAM
    Ich könnte von einem Freund einen mega8515 bekommen, der hat ein XRAM interface, ein Interface für externen Ram. Ich habe mir das im Datenblatt angeschaut, aber das schaut ziehmlich kompliziert aus (auf Seite 24 im Datenblatt)

    Da steht irgendwas von einem Latch, das man zum zwischenspeichern von Adressen braucht oder so.
    Das ist ein eigenes Bauteil, aber ich verstehe nicht wozu das da ist, bzw welches ich nehmen muss.
    Im Datenblatt steht es soll von der 74AHC Serie sein, und bei Conrad gibt es 13 Seiten je 20 Stück ICs von dieser Serie. Ich habe also keine ahnung was das sein soll.

    Zum Sram selber: Conrad ist meine einzige quelle, ich will nicht wegen den paar euro 10€ oder mehr versandkosten nach deutschland zahlen.
    Beim Conrad gibt es aber nur 32KByte Srams, zu 5€ das stück. ich werde mich also mit 32KByte zu frieden geben und das UM 61256K-20 nehmen, und einfach nur die koordinaten des Punktes auf dem letzten frame speichern, und das frame verwerfen. vll gehen sich ja 2 frames aus. zur kantenerkennung braucht man ja die vorgeschichte nicht oder? ich hab keine idee wie ich eine kantenerkennung realisieren könnte, aber das hat ja noch zeit, eines nach dem anderen.


    Weiß jemand wie man diese XRAM interface verwendet, und wie das mit dem Latch funktioniert bzw welches man da nehmen muss?

    lg
    Christoph


    EDIT: Welche Programmiersprache empfehlt ihr mir für das Teil? Ich kann ein bischen C und kein Assembler. Aber wenn Assembler dafür besser geeignet ist, muss ich das wohl lernen. Wir haben eh gerade in der Schule damit angefangen.....

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    18.11.2005
    Beiträge
    21

    Anschluss an den Mikrocontroller

    Anschluss an den Mikrocontroller


    Der Speicher wird über einen Daten- und einen Adressbus sowie die Steuerleitungen /OE (output enable, manchmal auch als /RD read enable bezeichnet), /WE (write enable) und /CS (chip select) angeschlossen. Der Datenbus für einen Speicher der Organisation 32k x 8 Bit hat eine Breite von 8 Bit, der Adressbus ist dann 15 Bit breit. Um den Speicher zu aktivieren, muß /CS auf LOW (Masse) gelegt werden. Dies kann verwendet werden, um mehrere Speicher- oder andere Bausteine am selben Bus zu betreiben. Hierbei muß sichergestellt sein, daß jeweils nur ein IC zur gleichen Zeit ein low-aktives /CS-Signal erhält, damit es nicht zum Kurzschluss auf dem Datenbus kommt (siehe Ausgangsstufen Logik-ICs). Ist außer dem Controller nur ein einziges IC an den Bus angeschlossen, kann /CS auch fest mit Masse verbunden und der Speicher somit permanent aktiviert werden. Das /OE-Signal dient hierbei dem Zweck, nach Anlegen einer Adresse am Adressbus den Speicher zum Übertragen eines Datenworts über den Datenbus zu veranlassen (Lesezugriff). Sollen Daten in das SRAM geschrieben werden, legt der Controller die Adresse und dann die Daten an, um den Speicher dann mit einem Low-Signal auf der /WE-Leitung zum Speichern zu bringen.


    Die Reihenfolge der einzelnen Daten- und Adresspins am RAM kann nach Belieben variiert werden, wenn dadurch das Layout der Platine vereinfach wird. D.h. D0 des RAMs kann auch an D5 des Controllers gehen. Der Grund dafür ist folgender: Die Daten werden zwar verstreut im RAM gespeichert (Adressleitungen vertauscht) oder in falscher Anordnung im Speicher angelegt (Datenleitungen vertauscht), jedoch kompensiert sich diese Unordnung beim Auslesen wieder. ACHTUNG, das geht nur bei einfachen SRAMs. DRAM oder neuere Speicher nehmen das fix übel, weil die Ansteuerung durcheinander kommt (Adressmultiplexing, Pagemodus, Byteslanes bei DDR-RAM etc.). Bei diesen ICs kann man bestenfalls Datenleitungen tauschen, bei DDR-RAMs nur innerhalb einer Byte-Lane. Prinzipiell sollte man davon aber nur sparsam Gebrauch machen, wenn es dem Layout wirklich hilft.


    Ohne Latch

    Die einfachste Art einen externen SRAM an den Mikrocontroller anzubinden ist die direkte Verkabelung. Jeder Pin des SRAMs bekommt einen Pin am MC. Jedoch verschwendet diese Anschlußweise auch ziemlich viele IO-Pins. Bei dem nebenstehenden 32-KiBi-RAM verbraucht der Anschluß so 8+15+2 (25) Pins.

    Am sinnvollsten verwendet man einen ganzen Port für die acht Datenleitungen, damit man schnell darauf zugreifen kann. Die Adressleitungen A0 bis A7 werden auch möglichst auf einen Port gelegt. An einen dritten Port wiederum werden A8-A14 angeschlossen; /WR und /OE können dann mit zwei weiteren freien Pins verbunden werden. Zusammen belegt diese Methode also 25 Pins für 32 KiBi. Auf diese Weise kann man an praktisch jeden Mikrocontroller einen SRAM anschließen, die Ansteuerung kann dann rein in Software vorgenommen werden. Das ist jedoch relativ aufwendig, in der Anwendung umständlich und langsam. Sinnvollerweise sollte der Mikrocontroller eine eingebaute Speicherschnittstelle haben, um den SRAM per Hardware direkt und schnell ansprechen zu können.


    Mit Latch

    Will man wertvolle Pins einsparen so benutzt man am besten ein Latch, das die Signale zwischenspeichert. Man kann wählen, ob nur A0-A7 eingespart werden soll, oder gleich alle Adressleitungen. Für den ersten Fall benötigt man ein 8-Bit Latch das ausreichend schnell schalten kann, für den zweiten Fall zwei Latches.

    Die Eingänge des Latches werden mit den Datenleitungen des Mikrocontrollers verbunden und das Enable-Signal bekommt einen eigenständigen Pin. Die Einsparungen an Pins geht jedoch auf Kosten der Geschwindigkeit, da zuerst das Latch mit der Adresse geladen werden muß bevor die eigentliche Aktivierung des SRAMs beginnen kann. Bei einem 32-KiB-SRAM werden mit einem Latch nur noch 8+7+3 (18) Pins gebraucht, gegenüber der Variante ohne Latch also eine Einsparung von sieben Pins mit einem Bauteil.

    Mit XMEM-Interface

    Verbindung zwischen einem AVR und einem 32-KiB-SRAM mit Latch und dem XMEM-Interface


    Viele Controller (AVR, 8051) besitzen ein Speicherinterface, das es ermöglicht SRAM anzuschließen und diesen als Erweiterung des internen RAMs zu benutzen. Dieser wird dann mit einem Latch angeschlossen, um Pins zu sparen. Das Enable-Signal des Latch muß mit dem Ausgang ALE (Address Latch Enable) verbunden werden, wie es im Schema gezeigt wird. Nach der Initialisierung des externen Speicherinterfaces steht der Software auch der externe SRAM zu Verfügung.

    Als Latch eignen sich folgende Bausteine:

    74HCT573 oder 74HCT373 Unterschied in der Pin-Belegung!

    Infos aus http://www.mikrocontroller.net

    lg

    albert

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.03.2006
    Ort
    nahe Tulln (Niederösterreich)
    Alter
    26
    Beiträge
    460
    Danke, jetzt kenn ich mich aus

    Hab jetzt schon die bestellliste fertig, ich melde mich wenn es neuigkeiten gibt.
    Wahrscheinlich aber erst nach weihnachten, jetzt ist es zu stressig

    lg Christoph

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Hi,

    eine Frage zwischendurch: Wo kommt man den heutzutage günstig an GameBoy - Cams? Ebay?

    Viele Grüße

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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