Sound Trigger als Auslöser

Kamera-Hardware, Selbstbaufernbedienung und sonstige Hardware-Erweiterungen

Sound Trigger als Auslöser

Beitragvon rawe » 26.04.2010, 17:01

Hallo deutsches CHDK-Forum! :)

Bin CHDK-Neuling und doch irgendwie begeistert von den Möglichkeiten. Ein Sound trigger gibt es direkt über CHDK und das eingebaute Mikrofon leider noch nicht, also wurde flux was gepfuscht.

Dokuvideos von der Entstehung:
- Achtung: Teils etwas ungeplantes Geschwafel :?
- Keine "in action" Filmchen da ich atm. keine andere als die für die Testaufnahmen verwendete Cam zur Hand habe.
- Die Schaltung(en) sind aus herumliegenden Teilen zusammengewürfelt - die Bauteilwahl ist teils also nicht ganz soo ideal.

Sound trigger für CHDK - [1] Prototyp
Erstmal nur die grundsätzliche Idee
[youtube]http://www.youtube.com/watch?v=jz_xBHKYrCE[/youtube]


Sound trigger für CHDK - [2] funktionierender Prototyp
erste "geklatschte" Bilder - Reaktionszeit von mehreren Millisekunden - inakzeptabel. Die zwei vorletzten Bilder im Video sind über die Schaltung getriggert.
[youtube]http://www.youtube.com/watch?v=A5K_u0BzWMw[/youtube]


Sound trigger für CHDK - [3] Opamp Schaltung Prototyp
vorheriger Aufbau über den Haufen geworfen - jetzt richtig mit Opamp.
[youtube]http://www.youtube.com/watch?v=FwePU45TG3g[/youtube]


Sound trigger für CHDK - [4] fertiges Platinchen
das Ganze auf eine Lochrasterplatine gekleistert.
[youtube]http://www.youtube.com/watch?v=fTGrRjAVEcM[/youtube]

Und noch Bilder: Testaufnahmen, Platine im Gehäuse

Bild Bild Bild Bild Bild

Elektrischer Krimskrams:
- Die Kamera (SX110IS) zieht 350µA
- die komplette Schaltung benötigt (wenn die LEDs aus sind) ca. 4mA
- Materialkosten irgendwo im Bereich von 5-10 Eur

Falls Interesse besteht kann ich auch gerne einen Schaltplan uppen.

mfg rawe
Canon: SX110IS A590IS A75; Casio: QV3500EX; Olympus: E-510
Benutzeravatar
rawe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 20.04.2010, 14:19

Beitragvon gehtnix » 26.04.2010, 23:12

Hallo rawe,

Deine Testbilder sind ja schon sehr beeindruckend!
Der Tastenregen, der regt ersteinmal zum Ãœberlegen an bis man versteht.

Und obwohl die Elektronik schon ein gutes Behältnis gefunden hat, im schwarze Schweinderl wären sie doch auch gut aufgehoben. Das Mikrofon passt doch genau auf die Nase ;)

gruß gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

Beitragvon TaiJiGong » 27.04.2010, 14:08

Interressant währe wie man das direkt über das eingebaute Mikrofon machen kann.

Gibts da Ideen ? Kann man da mit CHDK irgendwie zugreifen ?
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon msl » 27.04.2010, 15:21

Die Frage wurde schon sehr oft gestellt.

Es gibt bisher keine Möglichkeit, auf die Mikrofonsteuerung der Kamera zuzugreifen. Deshalb ist die hier vorgestellte Variante eine ernstzunehmende Variante.

Die Veröffentlichung des Schaltplans wäre wünschenswert.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Fertiger Bausatz

Beitragvon warpspace » 28.04.2010, 08:42

Ich habe bei Pollin einen Komplett-Bausatz für knapp 5 € gefunden der sich als Grundlage für einen eigenen Klatschhalter eignen dürfte:

http://www.pollin.de/shop/dt/MTg4OTgxOT ... usatz.html

Die Schaltung kann man übrigens dort auch downloaden.
Man benötigt im Prinzip nur noch einen Lötkolben und eine 9V Blockbatterie.

PS: Eventuell kann man sogar auf das Relais verzichten und den USB-Port direkt triggern.
Immer dabei: Powershot S90;
spezielle Einsätze: EOS 40D
warpspace
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 46
Registriert: 15.04.2008, 16:35

Beitragvon rawe » 28.04.2010, 20:09

Soo... danke fürs positive Feedback :)

Das Wacken-Sparschwein wird nicht geschlachtet :shock:


Hier mal die Daten in lofi-vision:


Schaltplan
Bild

Bauteilliste und Funktionsweise
Bild

Messadapter zur Bestimmung der Reaktionszeit
Bild

Einen Lichtblitz sowie das Auslöse-mit-dem-Schraubenzieher-auf-den-Tisch-tippen bekomme ich mit dem Messadapter schon (sehr gut) gemessen, allerdings ist die Zeit dazwischen so kurz dass ich den Lichtpeak schlecht aus dem "Nachhall" des tippens herausfiltern kann - werde da mal noch in "stereo" mit Line-In und Stereovorverstärker messen.

Die Pollin-Schaltung scheint ein klatschgesteuertes Flipflop zu sein... müsste sich doch zu einem klatschgesteuerten Monoflop umrüsten lassen? Statt dem Relais ein Spannungsteilerchen (mit 350µA belastet sollte der wohl kaum merklich zusammenbrechen selbst wenn die Widerstände eher hohe Werte haben) der etwas unter 5V an eine USB Buchse liefert... warum nicht.

mfg rawe
Canon: SX110IS A590IS A75; Casio: QV3500EX; Olympus: E-510
Benutzeravatar
rawe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 20.04.2010, 14:19

Alternative Schaltung

Beitragvon warpspace » 29.04.2010, 07:54

Deine Schaltung scheint mir eleganter als die von pollin. Diese hat nur den Vorteil das sie fix und fertig (für technisch eher Unbedarfte) zu beziehen ist. Hast du mal überschlagen was die Bauteile deiner Schaltung ca. kosten würde?

Ich schätze sie könnte die 5 Euro von Pollin noch unterbieten.


Das Pollin Flip-Flop kann man wie du sagst zu einem Monoflop umrüsten. Man benötigt dazu noch ein CL statt des R4, einen Lade-R und eine Schutzdiode an der Basis Q1.

Die Haltezeit des Monoflops ware dann ungefähr th = ln(2) RLCL
Immer dabei: Powershot S90;
spezielle Einsätze: EOS 40D
warpspace
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 46
Registriert: 15.04.2008, 16:35

Beitragvon rawe » 29.04.2010, 12:21

Preisabschätzung meiner Schaltung:
1x Opamp LMC6484: 2,35 Eur (Reichelt) ; teuerste Komponente
2x led rot: 0,15 Eur (Pollin)
4x poti 2.2MOhm: 0,32 Eur (Pollin)
1x Piezotröte: ca. 25 Cent (Pollin)
1x 0,22µF: 5 Cent (Reichelt)
1x 100µF: 9 Cent (Pollin)
1x Spannungsregler 5V: 25 Cent (Pollin)
1x Punktrasterplatine: 1,90 Eur (Pollin)
2x 100 Ohm: 2 Cent (Pollin)
1x IC Sockel für den Opamp ~ 10 Cent
=========
5,48 Eur

3-6 Eur sinds dann wohl (je nach dem was man schon so in der Bastelkiste liegen hat. Die Schaltung ist wie gesagt aus bei mir verstaubenden Teilen zusammengesetzt. Der Opamp könnte durch ein billigeres Exemplar ersetzt werden, Verstärkerqualität usw. sind bei der Anwendung ja nicht so kritisch, nur quad und rail2rail wäre nicht schlecht.

Mit so einer Piezo-Tröte lassen sich auch super sehr tiefe Schwingungen (--> Erschütterungen etc.) zum triggern verwenden.

Achso und natürlich die Ergänzung: Wer mit dieser Schaltung seine Cam grillt ist selber schuld und sollte vorher wissen was er tut usw.

Delay-Messung:
Bild
dieses mal waren es so um die 17mS vom Start des Geräusches (unterer Kanal) bis zur Blitzauslösung (oberer Kanal). Die Messung erfolgte im "normalen" Remote-Modus im TV-Modus ohne spezielles Script. Die Verzögerung kommt eigentlich nur von der Kamera - die Schaltung sollte innerhalb von Bruchteilen einer Millisekunde durchschalten sobald ein Signal erkannt wird.

17mS ist doch "etwas" lang...


Um das ganze zu beschleunigen steht schon in /platform/*/kbd.c:
Code: Alles auswählen
my_kbd_read_keys()
    [...]
      // As much as I'd like to immediately shoot, this trigger is intended for use in scripts, so don't shoot here.
      //if(remote_key) physw_status[0] &= ~(0x3); // Shoot!

hier wäre es also nötig direkt sowas wie ein "nur auf USB warten und dann sofort knipsen" zu implementieren, denn my_kbd_read_keys() wird ja sicherlich auch nur in einem "großen" Intervall gestartet. Diese Funktion wird dann so wie ich es verstehe in mykbd_task_proceed() alle 10mS aufgerufen (? mit Tasks habe ich mich noch nie wirklich beschäftigt, deshalb ist mir das Konstrukt da nicht ganz klar).

Über physw_status welches direkt auf eine kameraspezifische Speicheradresse verweist lässt sich sowohl der USB-Status auslesen als auch ein Bild auslösen... diese Adresse befindet sich so wie es aussieht noch im normalen Ram. Was steckt hier dahinter? Setzt die original Firmware die Werte per Interrupt oder werden sie nur zyklisch gesetzt / ausgelesen? kbd_fetch_data() ?

Am schnellsten wäre doch eine Routine die übers Menü aufrufbar ist und dann in einer Schleife auf das USB-Bit wartet und dann sofort das Trigger-Bit setzt... (?)

Sooo tief bin ich in CHDK dann leider auch wieder nicht drin um das mal eben zu coden... mal sehn.

Prinzipiell sollten da Zeiten < 10mS drin sein.


Edit:

Soo... endlich mal in Action:
[youtube]http://www.youtube.com/watch?v=TJvsorM7yhk[/youtube]

mfg rawe
Canon: SX110IS A590IS A75; Casio: QV3500EX; Olympus: E-510
Benutzeravatar
rawe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 20.04.2010, 14:19

Beitragvon TaiJiGong » 29.04.2010, 21:43

Hallo rawe,

interessant was du da gemacht hast. Finde ich toll, da ich mir auch schon einige Gedanken zu einer Fernauslösung gemacht habe.

rawe hat geschrieben:dieses mal waren es so um die 17mS vom Start des Geräusches (unterer Kanal) bis zur Blitzauslösung (oberer Kanal). Die Messung erfolgte im "normalen" Remote-Modus im TV-Modus ohne spezielles Script. Die Verzögerung kommt eigentlich nur von der Kamera - die Schaltung sollte innerhalb von Bruchteilen einer Millisekunde durchschalten sobald ein Signal erkannt wird.

17mS ist doch "etwas" lang...


Du schreibst "im TV-Modus" o.k. da wird in etwa alle 33 ms eine Bild aufgenommen (30 f/s). Wie schaut es mit der Reaktionszeit aus wenn 1 Bild (fullframe) aufgenommen werden soll. Die 17 ms ist die Zeit zu der der Blitz auslöst. Köntest Du das mal testen ?
Wie groß ist die Schwankungsbreite. ?

Bin kein Elektroniker, aber ich denke die Schaltung läst sich sicher auch leicht für einen anderen Sensor einsetzen. Zum Beispiel einer Lichtschranke ( Fotodiode ), Magnetfeld-, Temperatursensor oder einem I/O-Signal einers Rechners. Was meinst Du ?

Viele Grüße !
TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon rawe » 30.04.2010, 06:42

Wie im Schaltplan unten zu sehen lassen sich zwei Arten von Signalquellen anschließen:
- Spannungsquelle (wie z.B. eine Piezo-Tröte, Tonkopf (-> Magnetfeld)) hier sollten eben die Schutzdioden hin.
- Widerstand (abhängig von irgendeiner Größe wie Licht (-> Lichtschranke), Temperatur (NTC/PTC), ...)

Momentan ist die Schaltung so aufgebaut dass sie auslöst wenn das Eingangssignal einen gewissen Pegel überschreitet. Um diese Logik umzukehren (Lichtschranke: Unterbrechung des Lichtstrahls -> Signal wird kleiner) sollte es reichen die Eingänge von U2.2 und U2.3 bzgl. +/- zu tauschen. Oder aber der Fotowiderstand wird bei einem Spannungsteiler gegen Masse geschaltet sodass die Spannung in der Mitte sich bei Dunkelheit erhöht.

Das mit den 30fps im TV-Modus verstehe ich nicht ganz - es handelt sich doch um kein Video sondern den Blendenverschlusszeit-Modus (?).
Canon: SX110IS A590IS A75; Casio: QV3500EX; Olympus: E-510
Benutzeravatar
rawe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 20.04.2010, 14:19

Beitragvon TaiJiGong » 30.04.2010, 09:05

rawe hat geschrieben:Das mit den 30fps im TV-Modus verstehe ich nicht ganz - es handelt sich doch um kein Video sondern den Blendenverschlusszeit-Modus (?).


Ich hatte es wohl auch nicht Richtig verstanden. Ich dachte die Kamera läuft im Video(aufnahme) Modus. Aber habe noch mal dein Video angeschaut und bin mittlerweise der Meinung das dem nicht so ist. Komme etwas durcheinander bei den ganzen verschiedenen Modes (Wie steht welcher Schalter, dann welche Taste, und wie beschreibt das jemend).

Da die Kamera ja das Bild auf den Dislapy anzeigt, denke ich das der Sensor sich ein einen kontinuierlichen Mode befindet. Um eine Aufnahme zu machen muss der Sensor evt. in einen anderen Mode versetzt werden und das könnte etwas an Zeit daueren wenn es nicht möglich ist das Auslesen des Sensors abzubrechen und sofort erneut eine neue Aufnahme zu machen. Die 17 ms finde ich schon mal nicht schlecht, fraglich nur wie schwanken die Werte ?
Evtl. läst sich ja die Displaydarstellung abschalten.

Bei dem eingebauten Mikrofon könnte man mal überlegen ob man da an Daten kommt wenn man den Video(Film)Aufnahme Modus wählt, dann wird ja der Videostream gespeichert, evtl kann man daran etwas erkennen.
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon rawe » 30.04.2010, 12:37

Eingebauter Remote-Modus (ohne Script):
Die Kamera geht bei dem ersten Geräusch in den "Shutter halb gedrückt"-Modus (und feuert bei aktiviertem Blitz selbigen ab). Beim folgenden Geräusch wird das Bild gemacht (und geblitzt).

Mit folgendem Script:
Code: Alles auswählen
@title remote trigger
press "shoot_half"
while 1
p=get_usb_power
if p>0 then
shoot
print "usb power = " p
sleep 1000
press "shoot_half"
endif
wend
end

...entfällt das "aktivierungs"-Geräusch. Im Script fehlt sowas wie eine Abbruchbedingung und die Kamera verhält sich komisch wenn das Script abgebrochen wird (wie im Video zu sehen das Verhalten im Play-Modus).

Die Auslöseverzögerung ist allerdings egal in welchem Fall zwischen 16 und 17mS.

Zum internen Mikrofon:

Die Kamera sollte irgendeine interne Variable besitzen welche den gain des Mikrofons bestimmt (wird ja während dem Video dynamisch lauter und leiser gemacht). In den propcases ist diese nicht zu finden. Das dumpen des gesamten Ram brachte mir zwar schöne Grafiken wie folgende, allerdings bin ich aufgrund mangelnder Kenntnis der Architektur trotzdem nicht wirklich schlauer. Gibt es sowas wie eine MemoryMap?

Bild
(Bild zeigt die ersten 128kb des Ram einer sx110is im Aufnahmemodus über 25 Speicherabbilder ohne Nutzerinteraktion. Unten links = 0x0, nach rechts fortlaufend dann nächste reihe; dunkel = Bit hat sich häufig geändert, hell = Bit hat sich wenig / gar nicht geändert.)
Zuletzt geändert von rawe am 30.04.2010, 14:52, insgesamt 1-mal geändert.
Canon: SX110IS A590IS A75; Casio: QV3500EX; Olympus: E-510
Benutzeravatar
rawe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 20.04.2010, 14:19

Beitragvon msl » 30.04.2010, 13:50

Hallo,

sehr schön, dass du dich so ausführlich mit der Thematik beschäftigst.

Jetzt aber ein paar grundlegende Anmerkungen zur Remote-Steuerung und deinem Projekt.

Die skriptlose Variante ist bei deiner Anwendung nicht gut zu nutzen. Hier wird bei einmaligem USB-Signal immer "nur" fokussiert, also halb gedrückter Auslöser. Wird innerhalb einer bestimmten Zeit (Ich glaube, es waren 500 ms. Da müsste ich erst nachschauen.) zweimal das USB-Signal erkannt, wird ausgelöst.

Wenn Du Zeit-optimiert auslösen möchtest, kommt eigentlich nur die Skript-Variante in Frage. Dazu solltest du dich mit dem Skripten rund um das Shooting beschäftigen. Hier gibt es dazu einige Anmerkungen, weiteres natürlich im Handbuch.

In deinem Skript ist das zweimalige
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
press "shoot_half"
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9
völlig überflüssig, da es in
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
shoot
Erstellt in 0.004 Sekunden, mit GeSHi 1.0.8.9
schon enthalten ist. Außerdem muss oder sollte ein press mit release abgeschlossen werden.

Deine gemessene Zeit ist in etwa mit dem "Zeilentakt" von uBasic identisch. Jede Skriptzeile verbraucht in uBasic 10 ms, bestimmte Befehle rund ums Shooting etwas mehr - siehe Handbuch.

Auf Seite 72 im Handbuch steht etwas zum kontrollierten Skriptabbruch - Stichwort restore. Damit kannst du die Kamera bei Abbruch gezielt in einem bestimmten Zustand bringen.

Das Gain-Problem musst du wahrscheinlich mit deiner Schaltung klären. Wir können am USB-Eingang gegenwärtig nur auswerten, ob eine Spannung und wie lange eine Spannung anliegt.

Viel Spaß beim Basteln.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon TaiJiGong » 01.05.2010, 22:23

Hallo msl,

Danke für den Link, da kommt man als Neueinsteiger wirklich etwas weiter. Besser wie immer der Hinweis auf das Handbuch (wo man das was man sucht erst nicht findet) Trotzdem "SEHR GUT"...
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon rawe » 02.05.2010, 18:00

Soo... nochmal etwas gebastel investiert.

Irgendwo meine ich gelesen zu haben dass shoot schneller sei als press "shoot_full"... das ist natürlich Nonsense - msl, du hast recht.

Der Test mit der scriptlosen Fernsteuerung war nur dazu gedacht um festzustellen ob es einen Unterschied gegenüber dem scriptgesteuerten Auslösen gibt (was wegen dem Interpreter und Zeilentakt ja potentiell langsamer ist). Einen merklichen Unterschied konnte ich nicht messen (hmm...).

Nach herumstöbern im CHDK Quellcode mit dem Ziel die Auslösegeschwindigkeit weiter zu erhöhen habe ich jetzt folgende Erkenntnisse gewonnen:

- im "normalen" Remote-Modus ist die Reaktionszeit (Geräusch bis Blitz) um die 200mS.
- sind "Enable Synchable Remote" und "Enable Synch" aktiviert verringert sich die Reaktionszeit auf die beschriebenen 16...17mS. Die Kamera geht nach dem ersten Puls am USB-Port offensichtlich in den Lauermodus und wartet (wait_until_remote_button_is_released(void) in kbd.c (?)). Der Bildschirm ist währenddessen schwarz. Nach der Aufnahme blinkt dann kurz die print-led.

beide (Zeit-)Angaben beziehen sich auf folgendes Script:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
press("shoot_half")

repeat

  until get_shooting() == true

repeat

  until get_usb_power(1) == 1

press("shoot_full")  

release("shoot_full")

set_led (8,1)  

release("shoot_half")

set_led (8,0)
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9


TaiJiGong, da du gefragt hattest: verschiedene Triggermöglichkeiten:
[youtube]http://www.youtube.com/watch?v=6BOukkxBxKk[/youtube]


mfg rawe
Canon: SX110IS A590IS A75; Casio: QV3500EX; Olympus: E-510
Benutzeravatar
rawe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 20.04.2010, 14:19

Nächste

Zurück zu Technik-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste