- 12V Akku mit 280 Ah bauen         
Seite 4 von 11 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 137

Thema: Minimallösung: Kamera für den RP6

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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

    Versuche es mal so:

    Code:
    /*
    	Solange Zeilen abwarten bis das Sync-Signal länger als 40 Lesezyklen ist
    	(CPU-Takt abhängig!) An dieser Stelle beginnt ein neues Halbbild.
    */
    do { h_sync=0; while (ADCH > 20); while (ADCH < 30) h_sync++; } while (h_sync < 40);
    
    /*
    	Ab jetzt zählen wir die Zeilensyncs um die gewünschte Zeile anzusteuern
    	(mindestens 35 um die ersten Schrottzeilen zu überspringen, 100-200 wäre
    	im Teststadium sinnvoll)
    */
    zeile=35; while (zeile) { while (ADCH > 20); while (ADCH < 30); zeile--; }
    Schwellwerte für Bild/Sync (der Strahlrücklauf IST das Syncsignal!) must du anpassen. while (h_sync < 40); macht das selbe wie bei dir, es zählt die Lesezyklen und misst damit die Zeit des Syncs. Bei meinem CPU-Takt bedeutet mehr als 40 den vertikalen Strahlrücklauf(=Bildanfang). Was bei dir jetzt noch fehlt ist das Ansteuern einer Zeile mit Bildinformationen. Ansonsten guter Testcode, das muss man auch mal loben.

    Gruß

    mic

    [Edit]
    Ursache für die verschiedenen BAS-Pegel könnte auch die interne Spannungsreferenz des ADC sein. Irgendwo habe ich mal was von "ein paar 0,1V" Ungenauigkeit gelesen. Mein Kalibrierungstest mit einer 1,5V-Batterie ergab allerdings den selben Wert wie die Messung mit einem Multimeter. Mit dieser "Festspannungsquelle" habe ich übrigends auch im Vorfeld die Messfehler bei unterschiedlichen Prescallerwerten getestet. Hierbei gab es auch beim Faktor /2 im HighByte keinen Messfehler, im LowByte waren die Bits 0-3 verfälscht. Möglicherweise steigt der Fehler bei höherem CPU-Takt. Wenn ich das M32-Board habe, werde ich das mal testen...
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Moin!
    Hmmm, bin doch noch hier
    Das obere habe ich schon versucht, auch an den Schwellwerten ein wenig rumgedreht, leider scheint mein Programm dann immer stehenzubleiben, daher mein Versuch, die Längen der Syncpulse zu debuggen, da sollten ja kurze Impulse der Zeilensynchronisation auftauchen und jedes Halbbild ein langer Strahlenrücklauf. Morgen werde ich auch mal nach der Genauigkeit meines ADC schauen und evtl. mal eine andere Camera nehmen. Sobald das dann hinhaut, brauche ich auch nicht komplette Bilder speichern, sondern nur pro Spalte den jeweils hellsten Wert je zweimal, einmal ohne, einmal mit Laserlinie aufgenommen. Naja, wie gesagt, morgen geht's weiter.....
    Brauch doch was für den Robotik Treff Niedersachsen am Samstag

    P.S.anke für das Lob, ist, ehrlich gesagt, nicht das erste Programm, was ich schreibe ... Hab schon Assembler auf dem C64, Turbo Pascal, C++ mit MFC unter Windows, ein wenig C# sowie PHP/MySQL hinter mir, aber alles eher als fortgeschrittener Amateur.... Außerdem räum ich den Code immer vorher auf, bevor ich ihn poste, normalerweise sind da Millionen auskommentierte Zeilen von irgendwelchen Versuchen drin.
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Was is nun mit der Kamera? *ungeduldigmitdenfingerntippelt*

    Zu deinem P.S.:
    C64 war doch Mist, Z80 war Top!

    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
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Moin!
    Hab zu viel versprochen, heut keine Zeit gehabt. Was den C64 angeht, der gehörte meinem Papa, was anderes hatten wir halt nicht, mit dem Z80 hat mein großer Bruder später rumgebastelt, 4MHz mit Klingeldraht!!!
    Back to Topic: Ich denke mal, morgen Abend klappt vielleicht noch was, ansonsten am Samstag, wenn die anderen durch die Robotik-Abteilung der TU Braunschweig wandern...

    MfG Volker
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Moin!
    Ich glaube, ich hab mein Problem entdeckt, die Zeilensyncs scheinen bei mir so bei 31 rum zu liegen, der Vertikalsync besteht ja anscheinend aus 5 Syncs hintereinander mit Schwarzpegel dazwischen (und drumrum diese Trabanten), d.H. um einen V-Sync zu erkennen, muß ich ja nicht einfach nur einen langen Sync erkennen, sondern eigentlich einen Weißpegel, gefolgt von 5 Syncs mit Schwarzpegel und anschließen wieder Weißpegel?

    Oder ist gemeint, dass während des Strahlrücklaufes 5 Pulse kommen, die JEWEILS 2,5mal so lang sind wie die Zeilensynchronpulse?
    Fragen über Fragen....
    MfG Volker

    [edit]
    Ah, hab gerade folgendes entdeckt :
    http://www.rickard.gunee.com/project.../pic/howto.php
    sowie
    http://kabelwalter.de/DasFernsehen/videosignal.htm
    Also kommen da 5 lange Syncs, habe ich das jetzt richtig gesehen? Das würde nämlich auch erklären, das mein Synctest immer mehrere längere Syncs zwischen den Zeilenimpulsen entdeckt hat....
    [/edit]
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  6. #6
    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

    Also im Wiki wird das so beschrieben:

    Um eine Unterscheidung zwischen Zeilen- und Vertikalimpuls zu erreichen, ist letzterer 2,5 Zeilen (2,5 × 64 Mikrosekunden) lang.
    (hab ich oben schon zitiert)

    Da eine komplette Zeile genau 64 Millisekunden dauert, interpretiere ich 2,5*64 als V-Syncronimpulslänge von 150 Mikrosekunden (also Wert kleiner als "schwarz"). Der H-Sync dauert 4,7 (mit Schwarzschultern etwas über 10) Mikrosekunden. Da ich im Schnitt den H-Sync 2-3 mal erkenne, ist bei mir mehr als 40 Syncpegel in Folge ein V-Sync. Bei 150/4,7*2 komme ich auf mindestens 60 Lesungen mit Pegel<schwarz. Dann starte ich die Zeilenzählung und überlese dabei schon bei der ersten Zeile alle eventuell noch nicht gelesenen restlichen V-Syncs und vermutlich auch die übrigen Seitensycndaten. Das ist wohl der "Schrott" in den ersten 30 Zeilen meiner Bilder. Aber das werde ich überprüfen, denn es sind wohl die "Trabanten".

    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
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Moin!
    Da machen sich wohl die 16MHz meines Mega8 bemerkbar, ich habe mal folgendes zusammenprogrammiert:
    Code:
    void synctest()
    {
    	uint8_t h_sync;
    	unsigned int cnt;
    	uint8_t daten[512];
    	cli();
    
    	//auf bildanfang warten
    	for (cnt=0;cnt<512;cnt++)
    	{
    		h_sync=0;
    		while (ADCH > 50);	//Zeile abwarten
    		{
    			while (ADCH < 35) h_sync++;	//Syncdauer zählen, Schwarzschulter bei 48, sync bei 31
    		}
    		//if (h_sync > 20) PORTC ^= (1<<Laser);
    		daten[cnt]=h_sync;
    	}
    
    	//debugging...
    	for (cnt=0;cnt<512;cnt++)
    	{
    		txd(daten[cnt]);
    	}
    }
    und im Anhang mal die Dauer der Syncs, ich würde sagen, ich erwische alle 5, damit kann ich doch jetzt endlich mal was anfangen!!!!
    Die Nacht ist ja noch jung.
    MfG Volker

    Ich stelle gerade fest, das die Pegel zwischen den Kameramodulen stark abweichen, bei meinem Farbmodul liegen die Syns bei 31 und der Schwarzpegel bei 48, bei meinem S/W Modul sind die Syncs bei 56 und der Schwarzpegel bei 96.......
    da macht es evtl. Sinn, einfach vorher mal den Minimalwert zu ermitteln und als Referenz für den Sync abspeichern.....
    Angehängte Dateien Angehängte Dateien
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hier eine kleine Diskussion im MC-Netz zu dem Thema:
    http://www.mikrocontroller.net/topic/86833

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    auszug von fachleuten aus diesem forum : http://www.mikrocontroller.net/topic/86833


    .....Wenn man sich den Code anschaut, dann merkt man dass da ziemlich
    gepfuscht wurde (mangels Wissen). Der Programmierer verwechselt
    andauernd horizontal und vertikal und dies hier ist der Code:
    do *pixelzeiger=ADCH; while (*pixelzeiger++ > 20);

    Ob der ADC fertig ist, interessiert nicht, es wird trotzdem gespeichert.
    Von den 60 Messwerten sind daher nur etwa etwa 20 real (sieht man auch
    deutlich an der dort geposteten PDF). Das macht sagenhafte 16 Pixel pro
    Zeile. Theoretisch sind bei 16MHz bis zu 33 Pixel möglich, allerdings
    läuft der ADC dann mit 8MHz statt maximal 250kHz.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Moin!
    Ach, wirklich? ist doch schön, wenn da auch mal Fachleute drübergucken Mir ist durchaus klar, daß ich zwar (in meinem Falle) 96 mal den ADC pro Zeile auslese, aber die tatsächliche Auflädung geringer ist, da der ADC zu langsam ist, allerdings bekomme ich, wenn ich vorher prüfe, zwar nur tatsächlich ferig gewandelte Pixel, aber sehr viel weniger, da nehm ich lieber dese Methode und lebe mit doppelten Pixeln, zudem mir tatsächlich durchaus eine Auflösung von 16 Pixeln pro Zeile für meinen Zweck genügen würde..... Und beim ursprünglichen Programmierer ist auch die erfolgreiche Anwendung seiner Idee zu sehen. Außerdem war das ganze für mich eigentlich nur ein Einstieg in die ADC-programmierung, da ich das vorher halt noch nicht wirklich gemacht habe. Und das der ADC sträflich übertaktet ist, steht hier glaube ich auch schon irgendwo, funktioniert aber trotzdem erstaunlich gut. Außerdem gibt es da jetzt eine schöne Stelle, die ich aus dem selben Thread mal zitieren möchte :
    ...
    > Meiner
    > Meinung ist es eine reife Leistung, auf die Idee zu kommen, eine Kamera
    > an einen AVR ohne Zusatzhardware anzuschließen.

    Das sehe ich genauso. Viele hatten die Idee schon, einige Ideen
    funktionieren auch mehr oder wenige, nur sind die meisten in der Praxis
    eher nicht zu gebrauchen (so auch meine, denn wann hat man schon ein
    Standbild und möchte 30s warten ? Wie man sieht bin ich nicht der erste
    der diese Idee hat.)
    ...
    Um auf den Punkt zu kommen : Klar ist das halt eine 'Bastellösung', die aber für meine Zwecke super reicht und aus meinen vorhandenen Restbeständen aufgebaut werden konnte. Es geht hier auch nicht darum, ein Video in super Qualität zu digitalisieren (leider hab ich meinen DVD-Brenner noch nicht an meinem Mega8 zum laufen bekommen, und die Kodierung in Mpeg2 dauert leider auch noch viel zu lange ), sondern markante informationen aus einem Videosignal auszuwerten, wie z.B. Helligkeitsunterschiede o.ä. .
    Wenn man z.B. schaut, was die 'klassischen' Sharp IR-Abstandssensoren kosten, dann ist die Idee, ein Kameramodul + LED zu verwenden, gar nicht mal so abwegig, wenn man nicht die Genauigkeit der IR-Sensoren benötigt.

    Mir nicht so ganz klar, was genau Du mit Deinem Beitrag hier bezweckst? Bist Du deren Meinung oder unserer oder Deiner??? Einfach so ein Zitat in den Raum stellen hilft nicht wirklich.
    Daß meine Kenntnisse der Atmel Controller noch nicht perfekt sind, weiß ich auch ohne daß jemand ein paar Fachleute zitiert.

    Mein Modul hat mir auch schon die ersten Bilder geliefert, wenn das ganze Ding fertig ist, werd ich es hier gern mal in Zusammenhang mit meiner Verwendung vorstellen.....

    MfG
    Volker

    Und auch sonst ein frohes Fest und guten Rutsch!!
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

Seite 4 von 11 ErsteErste ... 23456 ... LetzteLetzte

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test