Frysa en pistolkula i luften - Fotografering

Planering och tankar kring eventuella framtida projekt.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

---- 4N35 ----

Det ska förstås vara 4N35, ingenting annat. Ber om ursäkt för det. För förmodligen jag som lästav slarvigt men jag skyller på den diffusa filuren "tryckfelsnisse". Tackar för ert tålamod.

Så med hjälp av Labmasters uträkning kan vi se att jag har haft ett större motstånd än vad som krävs. Frågan är om 180 ohms är så mycket att den inte ger utslag? Tror ni det? Jag har inte möjlighet att testa just nu men förhoppningsvis ikväll.

100 ohms motstånd ska dit och så testa igen. =)

Tack för hjälpen.
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av labmaster »

Hm..., naturligtvis är det backspänningen jag läste att den inte får överstiga 6 volt som i hastigheten blev fel.

Dioden har ett framspänningsfall på 1,5V så med 5V styrspänning blir R = (5-1,5)/0.05 = 70 ohm. Optokopplaren behöver dock inte mer än 10 mA för att transistorn skall öppna vilket betyder R = (5-1,5)/0.01 = 350 ohm, närmast standardvärde är 330 ohm.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

100 ohm testat och det fungerar.
Toppen.

Nu kan jag alltså styra blixten (beställde en sb-900 idag) från en PIC. Känns riktigt kul.

För närvarande har jag inga frågor! :shock: wow!

MVH Peter

Ps Men var så säkra, det kommer fler frågor så småningom. =)


EDIT: Felstavning
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

Nu kommer då frågorna.

Jag testar att ställa frågan här eftersom det rör detta projekt men frågan i sig handlar mer om Microprocessorer.

Processor: 12f629

Problem: Jag klarar inte att "cleara" Interupptflaggan.
Allt fungerar bra från början, simulatorn fastnar i min "MainLoop". Den "hänger" där tills jag sätter GPIO,0 till hög i stimulus kontrollfönstret. Då hamnar den i ISRen, helt enligt planerna.
Men sen, så fastnar den där.- Den går igenom ISRen och hoppar direkt till början av ISRen.

Detta beror väl på att jag inte lyckats "Cleara" interuppt flaggan för interupt on change.
I data bladet står det att jag måste:
a) Any read or write of GPIO. This will end the mismatch condition.
b) Clear the flag bit GPIF

Detta gör jag så här i koden:

Kod: Markera allt

MOVFW	GPIO			;Läser GPIO för att ta bort "mismatch"
BCF		INTCON,GPIF		;Clear InteruptOnChange Flag
Trots detta så så "rensas" inte flaggan.

Tacksam för ideer hur jag ska rensa flaggan. Antar att det är något som krävs att göras före flaggan kan rensas.

Hoppas det hänger lite PIC människor i denna del av forumet åxå. =)

Koden i sin helhet som jag kör med nu.

Kod: Markera allt

;******************************************************************************
;   This file is a basic code template for object module code                 *
;   generation on the PIC12F629. This file contains the                       *
;   basic code building blocks to build upon.                                 *
;                                                                             *
;   Refer to the MPASM User's Guide for additional information on             *
;   features of the assembler and linker (Document DS33014).                  *
;                                                                             *
;   Refer to the respective PIC data sheet for additional                     *
;   information on the instruction set.                                       *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Filename:      xxx.asm                                                   *
;    Date:                                                                    *
;    File Version:                                                            *
;                                                                             *
;    Author:                                                                  *
;    Company:                                                                 *
;                                                                             *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Files required: P12F629.INC                                              *
;                                                                             *
;                                                                             *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Notes:                                                                   *
;                                                                             *
;******************************************************************************

;------------------------------------------------------------------------------
; PROCESSOR DECLARATION
;------------------------------------------------------------------------------

     LIST      P=12F629              ; list directive to define processor
     #INCLUDE <P12F629.INC>          ; processor specific variable definitions

;------------------------------------------------------------------------------
;
; CONFIGURATION WORD SETUP
;
; The 'CONFIG' directive is used to embed the configuration word within the 
; .asm file. The lables following the directive are located in the respective 
; .inc file.  See the data sheet for additional information on configuration 
; word settings.
;
;------------------------------------------------------------------------------

    __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT 

;------------------------------------------------------------------------------
; VARIABLE DEFINITIONS
;------------------------------------------------------------------------------

; example of using Shared Uninitialized Data Section
INT_VAR     UDATA_SHR   0x20   
W_TEMP      RES     1             ; variable used for context saving 
STATUS_TEMP RES     1             ; variable used for context saving

;------------------------------------------------------------------------------
; EEPROM INITIALIZATION
;
; The 12F629 has 128 bytes of non-volatile EEPROM, starting at address 0x2100
; 
;------------------------------------------------------------------------------

DATAEE    CODE  0x2100
    DE    "MCHP"          ; Place 'M' 'C' 'H' 'P' at address 0,1,2,3

;------------------------------------------------------------------------------
; OSCILLATOR CALIBRATION VALUE
;------------------------------------------------------------------------------

OSC       CODE    0x03FF

; Internal RC calibration value is placed at location 0x3FF by Microchip as
; a 0xADDLW K instruction, where the K is a literal value to be loaded into 
; the OSCCAL register.  

;------------------------------------------------------------------------------
; RESET VECTOR
;------------------------------------------------------------------------------

RESET_VECTOR  CODE      0x0000 ; processor reset vector
        GOTO    START          ; go to beginning of program

;------------------------------------------------------------------------------
; INTERRUPT SERVICE ROUTINE
;------------------------------------------------------------------------------

INT_VECTOR    CODE    0x0004  ; interrupt vector location
        MOVWF   W_TEMP        ; save off current W register contents
        MOVF    STATUS,w      ; move status register into W register
        MOVWF   STATUS_TEMP   ; save off contents of STATUS register

; isr code can go here or be located as a call subroutine elsewhere
		MOVFW	GPIO			;Läser GPIO för att ta bort "mismatch"
		BCF		INTCON,GPIF		;Clear InteruptOnChange Flag


		NOP



        MOVF    STATUS_TEMP,w ; retrieve copy of STATUS register
        MOVWF   STATUS        ; restore pre-isr STATUS register contents
        SWAPF   W_TEMP,f
        SWAPF   W_TEMP,w      ; restore pre-isr W register contents
        RETFIE                ; return from interrupt

;------------------------------------------------------------------------------
; MAIN PROGRAM
;------------------------------------------------------------------------------

MAIN_PROG     CODE
		




START

;------------------------------------------------------------------------------
; OSCCAL RESTORE (not required if internal OSC is not used)
;------------------------------------------------------------------------------

        errorlevel -302
        BSF     STATUS,RP0    ; set file register bank to 1 
        CALL    0x3FF         ; retrieve factory calibration value
        MOVWF   OSCCAL        ; update register with factory cal value 
        BCF     STATUS,RP0    ; set file register bank to 0
        errorlevel +302
        
;------------------------------------------------------------------------------
; PLACE USER PROGRAM HERE
;------------------------------------------------------------------------------

		BANKSEL		GPIO
		CLRF		GPIO		;Init GPIO
		MOVLW		07h			;Set GP<2:0> to 
		MOVWF		CMCON		;digital IO
		BANKSEL		TRISIO
		MOVLW		b'000001'	;Set GPIO 0=input
		MOVWF		TRISIO		;and GPIO 1-5=output

		BSF			INTCON,GIE	;Enable GloblInterupt
		BSF			IOC,IOC0	;Enable InteruptOnChange on GPIO,0
		BSF			INTCON,GPIE	;Enable InteruptOnChange


MainLoop

		GOTO	MainLoop


		NOP
        END                       ; directive 'end of program'

PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

Nu ska vi se.

Jag har nu läst på lite om Analoga ingångar och Comparator modulen i PICar.

Labbmaster: När du säger "Förspänning", menar du den spänning som komparatorn ska jämföra med? Den som ska in på "CIN-".

Jag har hittat denna.
Bild
Skulle detta kopplingsschema funka om jag använder den delen som ligger till vänster om 555an. Tänker förståss använda en PIC där istället.
Micen jag har är en Electret mic.

Vafinns det för möjligheter att kolla vad jag får för signal ut ur micken om man inte har ett Osilloscop. (Någon som har ett jätte billigt till salu?) Kan jag på något sätt kolla hur många volt det handlar om vid en pistolsmäll?

Jag har lyckats få det att funka med att skjuta av en foliestripp så blixt sidan är klart och koden för själva delayen och är inga problem.

MVH Peter
Micke_71
Inlägg: 947
Blev medlem: 18 september 2004, 22:47:23

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av Micke_71 »

http://www.camerasunderwater.co.uk/ttl-flash-interface

Där finns det lite matnyttigt att läsa om triggning och att stänga av genom TTL ingången.

En tyristor kopplar X mot jord så triggar blixten och en transistor kopplar Q mot jord så stänger den av.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

Har inte sett den där sidan men det är som sagt inte att trigga blixten som är problemet. Det är löst.

MVH Peter
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av labmaster »

Om det inte är att trigga blixten som är problemet så har du ju inget problem. Men jag antar att du menar att ditt problem är att hitta en lösning som detekterar när du skall utlösa blixten.

För att svara på din fråga om försärkaren i schemat med 555 som du visade måste man analysera kretsen och se hur mycket förstärkning den ger i kombination med hur mycket signal som mikrofonen ger ifrån sig. Det har jag inte varken tid eller lust med så därför refererar jag tillbaka till mitt förslag att du skall använda antingen TL072 eller en LM358 som förstärkare.

Med DC-förspänning menar jag att det skall finnas en likspänning på analogingången som ligger mitt emellan 0 och Vmax som du lägger växelspänningen på från förstärkarens utgång. Det skall således sitta en kondensator mellan förstärkarens utgång och analogingången så att inte DC-komponenten smiter in på förstärkarens utgång. Hur signalen på analogingången kommer att se ut då du sänder in en ren sinussignal i förstärkarens ingång i kombination med DC-förspänningen får du försöka lista ut själv som övning. Men som tips kan jag säga att sinussignalen på förstärkarens utgång inte får ha en top-till-top spänning som överstiger analogingångens Vmax.
Har du inte koll på analogtekniken är det naturligtvis lite svårt men det kan fungera med en TL072 eller en LM358 som förstärkare. Det finns massor av applikationexempel på nätet där dessa används.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

Jo det jag menade var att jag från PIC ut till blixt har det hela klart. Kan alltså "slå" blixten från kod i PICen. Var säkert lite otydlig där.
Problemet är alltså att detectera ljudet och få in det i koden.

Labbmaster: Jag vill absolut inte att du ska sitta och räkna ut och analysera kretsar som jag hittat på internet. Jag såg framör mig ett svar i stil med "det där skulle kunna funka" eller "det där fungerar inte alls pga...", när man har inte har kunskaperna är det ibland lätt att ställa fel frågor eller rätt frågor på fel sätt.

Förstärkarkomponenterna ska jag kolla upp.

Ditt svar angående att det ska ligga likspänning på samma pinne som växelspänningen från förstärkaren ska komma till är tyvärr "way over my head". Så vi får hoppas att jag kommer till insikt. =)

Så, en VÄLDIGT konkret fråga från min sida för en gång skull. Så att jag inte läser på fel ställen.
Syftar dina svar till ADC modulen i PICen? (Det är det jag gissar)
Eller syftar svaren till Comparator modulen?

Tack för svaren.

MVH Peter
Micke_71
Inlägg: 947
Blev medlem: 18 september 2004, 22:47:23

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av Micke_71 »

Tanken var just inte att via hur man triggar blixten men utan hur man kan stänga av den så man kan styra brinntiden på den. Vill du fånga kulan skarpt så bör du ju inte ha för lång brinntid, kanske kompensera lite på ISO känsligheten.
Nerre
Inlägg: 27223
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av Nerre »

Men justera brinntiden kan man ju göra med blixten i manuellt läge?
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

Micke_71: Då ber jag om ursäkt. Jag såg bara kontakterna och vilka ledare man ska använda för att trigga blixten. Läste inte längre utan utgick från att det var det du ville visa mig. Ska kolla mer på det där senare. Tack för tipset. Det blir absolut att kompensera med ISOn. i mina test med foliestrip så använde jag Nikon d3100, men får jag har även en Nikon d300s som har mycket bra brusnivåer vid högre iso så det blir att köra med den. Vid testen kördes det med en Nikon SB-600 men nu har jag även uppdaterat blixten tilll en SB-900.

Som sagt, tack för tipset och ursäkta missförståndet.

MVH PEter
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av labmaster »

Syftar dina svar till ADC modulen i PICen? (Det är det jag gissar)
ADC:n, du måste använda denna och läsa in signalen som du skall analysera för att exempelvis mäta stigtiden på signalen.

Om du läser hur ADC:n fungerar så ser du att den kan sampla värden från 0V upp till Vmax. En ljudsignal från en mikrofon kan anta värden V+ och V-. V+ minus V- blir det så kallade topp-till-topp värdet som även kan mätas efter förstärkarsteget där V+ exempelvis skulle kunna vara +2V och V- -2V. Top-till-top blir då 2 - (-2) = 4V. Eftersom ADC:n inte kan sampla negativa spänningar måste man flytta signalen så att den alltid blir positiv. Detta gör man genom att överlagra signalen på en DC-förspänning. Säg att ADC:n har ett Vmax på 4V då skulle altså DC-komponenten i signalen behöva vara +2V vilket innebär att signalens V- hamnar på 0 V, 2V - 2V = 0V.

Rita gärna upp detta på ett papper så ser du mycket tydligt hur det fungerar.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av PopUnoNkoK »

Labmaster: Måste jag analysera stigtiden? Alltså jag vill inte låta som att jag alltid vill ta den enklaste vägen för sådan är jag inte men jag vill bara detektera ett högt ljud.
Jag är alldeles övertygad om att din lösning är bättre, snyggare och ger högre precision, jag är bara lite rädd att det inte blir av för mig och mina kunskaper med din lösning.

Jag har börjat på en kod för att lära mig Comparatorn och ADC, vi får se hur det går.

MVH Peter
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Frysa en pistolkula i luften - Fotografering

Inlägg av labmaster »

Ja det blir du nog tvungen till om du inte vill att blixten skall trigga på både det ena och det andra ljudet. ADC:n är inte speciellt svår att använda och du kan börja med att röna ut vad Vmax är. När du väl hittat Vmax kan du ansluta en spänning via en vridpot där Vmax erhålls för Rmin.

Med hjälp av vridpoten kan du ställa in lite olika spänningar och läsa in dessa till CPU:n och på så sätt förstå hur du använder ADC:n. När du lärt dig att sampla spänningar med ADC:n skaffar du en lika stor trimpot som du använder som spänningsdelare till DC-förspänningen. Det är alltså mittenbenet på potten som du ansluter till ADC-porten och det ena benet på potten ansluter du till jord och den andra till en spänning Vmax. DC-förspänningen ställer du in så du får halva maxvärdet då du samplar in signalen.

När du byggt mikrofonförstärkaren som är baserad på TL072 eller LM358 ansluter du förstärkarens utgång till mittenbenet på potten via en kondensator och efter du anslutit mikrofonen till förstärkarens ingång så har du hårdvaran till din applikation färdig. Stigtiden är inte svår att mäta, det enda du behöver göra är att sampla in ett antal värden och räkna ut hur lång tid respektive värde tar att läsa in. Du kollar sedan hur många sampel det krävdes för att nå signalens maxvärde. Denna tid jämför du med en konstant som berättar att det kan vara ett skott eller ett klick från slutstycket. Är stigtiden som representeras av ett heltal lika med eller mindre än konstanten så fyrar du av blixten. Svårare än så är det inte.
Skriv svar