Sida 3 av 4
Re: Frysa en pistolkula i luften - Fotografering
Postat: 9 september 2011, 15:07:09
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.
Re: Frysa en pistolkula i luften - Fotografering
Postat: 9 september 2011, 20:48:11
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.
Re: Frysa en pistolkula i luften - Fotografering
Postat: 10 september 2011, 15:29:07
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!

wow!
MVH Peter
Ps Men var så säkra, det kommer fler frågor så småningom. =)
EDIT: Felstavning
Re: Frysa en pistolkula i luften - Fotografering
Postat: 10 september 2011, 21:47:20
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'
Re: Frysa en pistolkula i luften - Fotografering
Postat: 14 september 2011, 19:43:33
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.

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
Re: Frysa en pistolkula i luften - Fotografering
Postat: 14 september 2011, 22:47:20
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.
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 08:18:48
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
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 09:27:27
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.
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 10:01:21
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
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 10:14:11
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.
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 10:20:12
av Nerre
Men justera brinntiden kan man ju göra med blixten i manuellt läge?
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 10:21:44
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
Re: Frysa en pistolkula i luften - Fotografering
Postat: 15 september 2011, 22:37:32
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.
Re: Frysa en pistolkula i luften - Fotografering
Postat: 16 september 2011, 13:56:29
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
Re: Frysa en pistolkula i luften - Fotografering
Postat: 16 september 2011, 16:19:52
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.