- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Kameramodul

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.03.2009
    Beiträge
    96

    Kameramodul

    Anzeige

    Praxistest und DIY Projekte
    Moin, Moin allerseits

    Ich habe mir überlegt meinem Roboter das sehen bei zubringen.
    Dazu wollte ich das Kamera modul von conrad benutzen:
    http://www1.conrad.de/scripts/wgate/zcop_b2c/~flNlc3Npb249UDkwV0dBVEU6Q19BR0FURTE3OjAwMDYuMDEyO C45ODJiZjRiMSZ+aHR0cF9jb250ZW50X2NoYXJzZXQ9aXNvLTg 4NTktMSZ+U3RhdGU9NzkwNzcwMTAy====?~template=PCAT_A REA_S_BROWSE&mfhelp=&p_selected_area=%24ROOT&p_sel ected_area_fh=&perform_special_action=&glb_user_js =Y&shop=B2C&vgl_artikel_in_index=&product_show_id= &p_page_to_display=DirektSearch&~cookies=1&zhmmh_l fo=&zhmmh_area_kz=&s_haupt_kategorie=&p_searchstri ng=kamera+modul&p_searchstring_artnr=&p_searchstri ng_manufac_artnr=&p_search_category=alle&fh_direct call=&r3_matn=&insert_kz=&gvlon=&area_s_url=&brand =&amount=&new_item_quantity=&area_url=&direkt_aufr iss_area=&p_countdown=&p_80=&p_80_category=&p_80_a rticle=&p_next_template_after_login=&mindestbestel lwert=&login=&password=&bpemail=&bpid=&url=&show_w k=&use_search=3&p_back_template=&template=&kat_sav e=&updatestr=&vgl_artikel_in_vgl=&titel=&darstelle r=&regisseur=&anbieter=&genre=&fsk=&jahr=&jahr2=&d vd_error=X&dvd_empty_error=X&dvd_year_error=&call_ dvd=&kna_news=&p_status_scenario=&documentselector =&aktiv=&gewinnspiel=&p_load_area=$ROOT&p_artikelb ilder_mode=&p_sortopt=&page=&p_catalog_max_results =20

    Wenn der Link nich "tutst" dann gibt im Suchfeld einfach
    "S/W-KAMERA MODUL 1" ein.

    Als Schaltung wollte ich diese nehmen:
    http://roboterclub-freiburg.de/Atmel...egaKamera.html
    Nur das ich einen Atmega168 benutzen wollte.

    Nun habe ich noch einige Fragen:
    -Ist das Modul geigneet
    -kann ich auch einen Atmega168 benutzen
    -und wie programmiere ich ihn, dass mein Atmega168 z.B. eine schwarze Linie erkennt und sie verfolgen kann?

    Danke im voraus! =D>

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    49
    Beiträge
    2.253
    ja, die Kamera sollte zu der angegebenen Schaltung passen.
    Denk daran, Bilddaten == meist große Datenmenge,
    ergo sollte der 168 schonmal nicht schlecht sein ....
    Problem ist die Verarbeitung, das kann dann schon etwas
    auf die Leistung gehen, mach Dir auch Gedanken darüber
    evtl. nen separaten µC zur Bildauswertung zu nehmen
    und den mit dem Haupt-µC kommunizieren zu lassen.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

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

    willkommen im RN-Forum.

    Mit einem Mega32 (läuft anscheinend auch mit einem Mega8) kann eine einfache analoge Kamera etwa so funktionieren:

    Bild hier   Bild hier   Bild hier   Bild hier  

    Das sind Impressionen aus meinem schon etwas betagten RP6mitKamera-Thread. Trotz einiger Ungereimtheiten, die zum Teil auf meine damalige Unerfahrenheit zurückzuführen sind, funktionierte das schon recht gut. Wenn nichts dazwischenkommt werde ich diese Kamera demnächst an meinem Deltaarm einsetzen ;)

    Die Lösung vom Freiburger Roboterclub scheint mir deutlich ausgereifter und bei Bedarf bekommst du dort sicher auch zusätzliche Unterstützung bei deinem Projekt.

    Viel Spaß und Erfolg.

    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!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    27.03.2009
    Beiträge
    96
    Danke Danke xD
    WOW das das so einfach geht hät ich nich gadacht.
    Werd mich gleich mal ans Werk machen!
    Danke noch mal
    Viele Grüße

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    27.03.2009
    Beiträge
    96
    Eine Frage hätte ich noch:
    Lässt sich das ganze auch in Bascom realisieren?
    ich bin nämlich absolut kein c Programmierer!
    (Gut man kann dat lernen, aber das dauert und ich hab die nötige Zeit nicht)
    Würde mich auf eine Antwort freuen.

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Nochmals hallo

    Da Bascom auch direkt auf die Register des AVRs zugreifen kann sollte eine Umsetzung damit auch möglich sein. Ob das auch mit den Config-Befehlen von Bascom funktioniert kann ich nicht sagen, aber ich würde da gar nicht lange rumexperimentieren und die paar ADC-Einstellungen einfach "von Hand" setzen. Die Einleseroutine des ADCH-Registers sollte aber unbedingt selbstgeschrieben und soweit wie möglich zeitoptimiert sein, denn vermutlich kann Bascom das nicht so optieren wie wir es möchten (nur ein Verdacht). Ich habe dazu ein Feld angelegt und arbeite mit einem Zeiger. In C habe ich das schließlich so formuliert:
    ...allerdings schaffe ich so nur ca. 60 Werte pro Zeile. Mehr geht einfach nicht mit C, vielleicht kann man mit Assembler hier noch etwas "rauskitzeln". Mein Code für das Einlesen eines Pixels:

    do *pixelzeiger=ADCH; while (*pixelzeiger++ > 20);

    Alternativen wie:

    while (count_pixel) pixel[--count_pixel]=ADCH;
    for (;count_pixel; pixel[--count_pixel]=ADCH);

    wurden fast identisch übersetzt und brachten nur ca. 50 Lesungen pro Zeile.
    Wobei die Auslesegeschwindigkeit möglicherweise gar nicht so kritisch ist falls der ADC doch nicht schnell genug wandeln sollte.

    Einfache Hell/Dunkel-Erkennung ohne Speichern der Werte geht allerdings deutlich einfacher:

    Code:
    uint8_t get_line(void) 
    { 
       uint8_t i; 
       cli(); 
          // auf Bildanfang warten 
       do { i=0; while (ADCH > 30); while (ADCH < 50) i++; } while (i < 40); 
       // die ersten 50 Zeilen überlesen 
       i=50; while (i--) { while (ADCH > 30); while (ADCH < 50); } 
       // warten auf hell-dunkel-Übergang 
       i=0; while (ADCH > 100) i++; 
       sei(); 
       return(i); 
    }
    Diese Funktion sucht in der 50. Zeile des Bildes von links beginnend den ersten Bildpunkt (Pixel) dessen 8-bit Helligkeitswert kleiner (=dunkler) als 100 ist und gibt die Nummer dieses Punktes zurück. Das kann man ein zu eins in Bascom umsetzen, zusammen mit der ADC-Dauerlauf-Inizialisierung war das dann schon alles.

    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!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    27.03.2009
    Beiträge
    96
    Nochmals Danke Danke Radbruch
    aber wäre es vielleicht möglich, das es dafür schon irgendein Beispiel in Bascom gibt?Ich habe nämlich nicht wirklich alles verstanden
    ADCH-Registers?(kenn nur ADC)

    Ich überlege aber auch gerade ob ich das doch nich besser in c machen soll.

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Ich habe nämlich nicht wirklich alles verstanden
    Wie auch, ich habe einige Wochen Drübernachdenkzeit Vorsprung, das kannst du an einem Nachmitag kaum einholen :)

    Die ADC (Analog/Digital-Wandler) der AVRs liefern einen 10bit-Wert im 16bit-ADC-Register. Dieses Register setzt sich aber eigentlich aus den zwei 8bit-Registern ADCH und ADCL zusammen (AVRS sind 8-bit-Kontroller) auf die man jeweils auch einzeln zugreifen kann. Um alle 16 Bits auszulesen muss erst das ADCL- und dann das ADCH-Register gelesen und beide Werte zum 16Bit-Ergebniss zusammengesetzt werden (das erledigen die Compiler selbstständig). Nun darf der ADC zwischen diesen beiden 8bit-Lesungen die Werte nicht verändern, deshalb wird er automatisch gestoppt bis das ADCH auch gelesen wurde:
    When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently,
    if the result is left adjusted and no more than 8-bit precision is required, it is
    sufficient to read ADCH. Otherwise, ADCL must be read first, then ADCH.
    (Aus dem Datenblatt des Mega32 Seite 217)

    Für unsere Kamera benötigen wir aus mehreren Gründen nicht die volle Auflösung des ADCs, deshalb begnügen wir uns mit höchstens 8 Bit (für Hell/Dunkel würden eigentlich schon zwei genügen). Und genau dafür hat der ADC eine spezielle Funktion: Er kann das Ergebniss linksbündig darstellen. Das bedeutet, das 10Bit Ergebniss der Wandlung stehen im ADC-Register nicht in ADC:Bit9-0 sondern in ADC:Bit15-6. Wenn man nun ADCH ausliest und ADCL wegwirft erhält man die MSB des Ergebnisses als 8bit-Wert:
    The ADLAR bit in ADMUX, and the MUXn bits in ADMUX affect the way the result is
    read from the registers. If ADLAR is set, the result is left adjusted. If ADLAR is cleared
    (default), the result is right adjusted.
    (Ich gehe mal davon aus ihr beherrscht Datenblattenglisch)

    Ich sehe eigentlich keinen Grund dafür von Bascom nach C zu wechseln. (Bascom gefällt mir persönlich eigentlich auch besser als C. Wenn ich unter anderen Vorzeichen auf die Microkontroller gestoßen wäre, hätte ich mich vermutlich für Bascom entschieden.) Obwohl diese Anwendung einer Kamera wohl eher die Ausnahme sein dürfte kann es durchaus sein dass im WWW irgendwo ein fertiges Bascomprogramm dafür schlummert. Ich habe allerdings noch nicht danach gesucht.

    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!

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    27.03.2009
    Beiträge
    96
    Ich habs jetzt glaub ich verstanden.
    Werde noch nen bisschen googlen.
    Also mit einem Dankeschön werd ich wohl nicht weit kommen.
    Da müssten schon 100000sende her.
    Aber ich muss wirklich sagen, das du richtig nett bist, dir die Mühe zu machen mir alles verständlich zu erklären!!!
    [schild=11 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]DANKE[/schild]
    Du hast was gut bei mir!
    Ich werde später mein Projekt unter fertige Bots veranschaulichen.
    Viele Grüße

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    So ganz ohne Eigennutz ist das dann auch nicht für mich. Es ist eine willkommene Auffrischung des Themas, im Hinblick auf meine geplante Nutzung bei meinem aktuellen Projekt. Wenn ich jemanden einen Sachverhalt so erklären kann das es für mich schlüssig ist weiß ich dass ich es selbst halbwegs kapiert habe.

    Schönes WE

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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test