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

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

  1. #31
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Anzeige

    Praxistest und DIY Projekte
    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

  2. #32
    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

    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!

  3. #33
    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

  4. #34
    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

  5. #35
    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.

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

  7. #37
    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,

    ich finde es prima, dass meine eigentlich schon recht alte Idee nun doch noch aufgegriffen wird. Ich dachte damals, ich hätte einen genialen Billigsensor "erfunden", aber die schwache Resonanz hat mich dann doch enttäuscht. Bin mal gespannt, was die echten Könner daraus machen. @robo.fr: Danke für den Hinweis und den Link.

    Dass ich damals v- und h-syncs verwechselt habe, weiß ich natürlich inzwischen auch. Dass der ADC mehr kann als im Datenblatt steht kann jeder überprüfen, der es selbst mal versucht. Und dass manche Effekte nicht schlüssig zu erklären sind, habe im Verlauf dieses Thread ja auch geschildert. Wenn ich in der Zwischenzeit nicht über viele andere interessante Themen gestolpert wäre, hätte ich aus der Kamera auch noch mehr rausgekitzelt. Aber was nicht ist kann ja noch werden.

    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!

  8. #38
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    ....dann ist die Idee, ein Kameramodul + LED zu verwenden, gar nicht mal so abwegig......

    die hohe auslastung des atmegas , nur durch diesen einen sensor macht ihn nicht sehr attraktiv. wenn ich dann den preis für eine zusatz atmegaplatine rechne, weil ja auch noch andere zeitkritische aufgaben bewältigt werden müssen ist er nicht produktiv im gesamteinsatz.

  9. #39
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    48
    Beiträge
    685
    Naja, Ziel meines Senors ist es, über die gesamte Breite meines Robots, ca. 30 cm, Hindernisse zu erkennen, inklusive eines (groben) Abstandswertes und Position (da haben wir sie wieder, die 16 bis 32 Pixel ) Um Mißverständnissen vorzubeugen : Ich verwende einen Mega8 exklusiv für diese Aufgabe, der per I2C später seine Meßwerte ausgibt. Dieses Prinzip verwenden meines Wissens auch die US-Sensoren der SFR-Reihe, da ist ein PIC drauf, glaube ich. Die Kosten für die Hardware liegen ca. bei 13 € + 6-13€ für einen Linienlaser, ein US-Sensor kostet genausoviel/mehr und ist zwar bei der Entfernung genauer, kann mir aber nicht sagen, wo seitlich das Hindernis ist, ein IR-Sensor ist zwar günstiger, aber mit einem kann ich die Strecke nicht bzw. evtl. mit Servo nicht so schnell, abtasten, somit ist diese Lösung für mich (!) durchaus produktiv.

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

  10. #40
    Neuer Benutzer Öfters hier
    Registriert seit
    05.01.2008
    Beiträge
    22
    hier ist eine basprogramm mit den zeitplan aus diesem forum, dazwischen können die adc-werte evtl rausgezogen werden. man muss die adc-routinen nur geschickt dort einbauen :

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 64
    $crystal = 8000000
    $baud = 19200
    
    
    Declare Sub Tv_asm()
    
    Config Pinb.7 = Output
    Config Pind.7 = Output
    
    Sync Alias Portb                        '-[ 1,2K ]- Sync Ausgang
    Video Alias Portd                       '-[ 560  ]- Video Ausgang
    Const Syn = 7
    Const Vid = 7
    
    Disable Interrupts
    
    Waitms 200
    
    Call Tv_asm()
    
    End
    
    Sub Tv_asm()
    $asm
    
    ldi     r16,168                         'bei internem RC Takt, unbedingt
    Out Osccal , R16                        'Kallibrieren !!!
    
    '**************** Hauptschleife **************************************
    '  bei 8 MHz ( 1 Takt = 0,125µs )
    '  die Zeiten im Hauptprogramm zählen immer von "cbi sync,syn" (Sync auf Low)
    '  bis "sbi sync,syn" (Sync auf High) oder eben von High nach Low
    '*********************************************************************
    
    
    '            __         ___         ___
    '  V-Sync      |_______|   |_______|   |  ---> die ersten 2,5 Zeilen
    '                27,5   4,5  27,5   4,5
    
    Main:
    
       ldi   r16,5
    Syn_0:
    
       cbi   sync,syn
       cbi   video,vid
    
       ldi   r23,$49                        '27,5 µs
    Syn_1:
       dec   r23
       brne   syn_1
    
       sbi   sync,syn
    
       ldi   r23,12                         '4,5 µs
    Syn_2:
       dec   r23
       brne   syn_2
       nop
    
       dec   r16
       brne   syn_0                         'Schleife 5 x 32µs = 160µs
    
    
    '                  __    ________    _________
    '  Nachtrabanten     |__|        |__|         |   ---> wieder 2,5 Zeilen
    '                    2,25 29,75  2,25  29,75
    
       ldi   r16,5
    Sync2:
    
       cbi   sync,syn                       'Nachtrabanten
       cbi   video,vid
    
       ldi   r23,6                          '2,25 µs
    Syn_3:
       dec   r23
       brne   syn_3
    
       sbi   sync,syn
    
       ldi   r23,$4f                        '29,75 µs
    Syn_4:
       dec   r23
       brne   syn_4
    
       dec   r16
       brne   sync2                         'Schleife 5 x 32µs = 160µs
                                            'zusammen 320µs = 5 Zeilen
    
    '************************ Zeile 6-156 *******************************
    '
    '                         _______________________
    '            __      ____|                       |___   ---> 307 Zeilen mit Bildinhalt
    '  H-Sync      |____|
    '               4,5    6     52µs Bildinhalt      1,5 µs
    '
    '********************************************************************
    
       ldi   r16,151                        'Schleife für 151 Zeilen
    Hsyn_0:
    
       cbi   sync,syn
       cbi   video,vid
    
       ldi   r23,12                         '4,5 µs
    Hsyn_1:
       dec   r23
       brne   hsyn_1
    
       sbi   sync,syn
       cbi   video,vid
    
       ldi   r23,$9e                        '59,5 µs ( 6 + 52 + 1,5µs )
    Hsyn_2:                                 'da die Pegel für Bildinhalt schwarz sind
       dec   r23                            'wurde es hier zusammnegefasst
       brne   hsyn_2
       nop
       nop
    
       dec   r16
       brne   hsyn_0
    
    '************************ Zeile 157 *********************************
    
       nop
    Hsyn_3:
       cbi   sync,syn                       '1 Zeile
       cbi   video,vid
    
       ldi   r23,12                         '4,5 µs
    Hsyn_4:
       dec   r23
       brne   hsyn_4
    
       sbi   sync,syn
       cbi   video,vid
    
       ldi  R23, 16                         '6,0 µs
    Hsyn_44:
       dec  R23
       brne Hsyn_44
    
       sbi   sync,syn
       sbi   video,vid
    
       ldi   r23,$8a                        '52,0 µs  Bild
    Hsyn_5:
       dec   r23
       brne   hsyn_5
       nop
       nop
    
       sbi   sync,syn
       cbi   video,vid
    
       ldi   r23,4                          '1,5 µs Nachsync
    Hsyn_6:
       dec   r23
       brne   hsyn_6
    
    '************************Zeile 158-312 *******************************
    
       ldi   r16,155                        'Schleife für 155 Zeilen
    Hsyn_8:
    
       cbi   sync,syn
    
       ldi   r23,12                         '4,5 µs
    Hsyn_9:
       dec   r23
       brne   hsyn_9
    
       sbi   sync,syn
    
       ldi   r23,$9e                        '59,5 µs ( 6 + 52 + 1,5µs )
    Hsyn_10:                                'da die Pegel für Bildinhalt schwarz
       dec   r23                            'bleiben wurde es zusammnegefasst
       brne   hsyn_10
       nop
       nop
       dec   r16
       breq   ende                          'der Sprung zu "ende" spart 5 Takte
       nop
       nop
       nop                                  'Ausgleichs nop's, da der
       nop                                  'Sprung zu main mehr Takte benötigt
       nop
       nop
       nop
       nop
       nop
       nop
       brne   hsyn_8
    Ende:
       jmp   main
    $end Asm
    End Sub**

Seite 4 von 14 ErsteErste ... 23456 ... LetzteLetzte

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test