Frysa en pistolkula i luften - Fotografering
Re: Frysa en pistolkula i luften - Fotografering
Nu har inte jag nån direkt erfarenhet av detta, men jag kan mycket väl tänka mig att det duger att detektera ett "högt" ljud med en enkel transistor eller en OP. Möjligtvis filtrerat. Eftersom ljudbilden borde vara likadan varje gång ett skott går av, så kommer triggningen att ske med ganska exakt timing, kan jag tänka mig. Analys av ljudet skulle vara plan B om jag hade byggt den här grejen. Hur många ljud låter lika högt som ett luftpistolskott? Man måste ju inte gå runt och hosta i mikrofonen eller starta motorgräsklipparen precis när man ska fotografera.
Re: Frysa en pistolkula i luften - Fotografering
Luftvapen kan man i de flesta fall använda inomhus och det går bra med pistol också. Dock lite värre med andra typer av vapen om det är det som kan vara målet. Då man är utomhus kan vinden ställa till ett spratt ifall konstruktionen är för enkel.
Hur som helst, jag tolkar det lite som att TS också vill passa på att lära sig hur man samplar analoga signaler med ADC:n.
Hur som helst, jag tolkar det lite som att TS också vill passa på att lära sig hur man samplar analoga signaler med ADC:n.
Re: Frysa en pistolkula i luften - Fotografering
jag tolkade det som att TS ville slippa den biten 

Re: Frysa en pistolkula i luften - Fotografering
Problemet är hur du definierar högt ljud. Det du tycker "låter" som högt ljud är en massa tryckförändringar i luften, en ton är en massa svängningar. Menar du stigtiden för den första vågen, eller stigtiden för envelopen?PopUnoNkoK skrev:men jag vill bara detektera ett högt ljud.
Steget från mikrofon till att få en "indikering" av "högt ljud" är alltså den svåra biten. Antingen bygger man nån form av analogt filter, eller så analyserar man i mjukvara.
Re: Frysa en pistolkula i luften - Fotografering
Personligen tror jag inte alls det behöver vara så avancerat, massa analysering av ljudet osv. Googlar man lite så ser man många som gjort liknande saker och i vissa fall syns det tydligt att det knappats funnits varken kunskap bakom eller någon avancerad analys av ljudet, men det fungerar ändå.
Jag har även en bekant som gjort samma sak. Frågade hur och fick bara svaret att han hade googlat lite och fick fram att det gick att lösa med "lite motstånd och nån transistor" in till en Arduino, i den ställde han bara fördröjningen och det fungerade varje gång.
Jag har även en bekant som gjort samma sak. Frågade hur och fick bara svaret att han hade googlat lite och fick fram att det gick att lösa med "lite motstånd och nån transistor" in till en Arduino, i den ställde han bara fördröjningen och det fungerade varje gång.
Re: Frysa en pistolkula i luften - Fotografering
Självklart är det så. Så länge man själv har kontroll över situationen med mikrofonen kan man ju styra lite. Anat vore det om man skulle göra ett inbrottslarm som bara skulle reagera på t.ex. glaskross, men inte på alla andra ljud, inkl. prat, smällande dörrar, hunndskall etc... Då krävs nån slags analys eller filtrering.
Till det här behövs ingen raketforskning. Onödigt att lägga ner en massa arbete på överkurs.
Till det här behövs ingen raketforskning. Onödigt att lägga ner en massa arbete på överkurs.
Re: Frysa en pistolkula i luften - Fotografering
Att nån har lyckats få bilder betyder ju inte att det inte ligger hundratals misslyckade exponeringar bakom.
Frågan är ju hur stabilt och pålitligt man vill ha det.
Frågan är ju hur stabilt och pålitligt man vill ha det.
- tecno
- Inlägg: 27249
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Frysa en pistolkula i luften - Fotografering
Personligen skulle jag inte gå på detta med att trigga med ljud utan använda mig av foto diod/transistor som man har i kronografer för analys av kulans hastighet dvs man triggar på ljusförändringen som sker då kulan passerar detektorn.
Här ett exempel http://www.shootingchrony.com/
Här ett exempel http://www.shootingchrony.com/
Re: Frysa en pistolkula i luften - Fotografering
Nerre, Det var också en fråga jag ställde och svaret var att det "svåraste" var att ställa in rätt fördröjning, när det väl var gjort fungerade det utan några större problem så länge monteringen av gevär och mikrofon var densamma. Så det var faktiskt så enkelt.
-
- Inlägg: 789
- Blev medlem: 10 december 2007, 12:40:08
- Ort: Piteå
Re: Frysa en pistolkula i luften - Fotografering
Många fina svar nu. Tusen tack.
Liten sammanfattning utan att behöva svara er alla personligen.
Jag vill lära mig ALLT! =) Men jag vill åxå att projektet ska gå framåt i praktiken så det blir att kompromissa ibörjan. Tanken är alltså att använda en mic för att i början bara detektera ett högt ljud av något slag. Handklappning eller luftpistolskott mm. Precisionen i detta för jag "utvärdera" senare. Tex om kulan hinner väldigt olika långt med samma inställning. Allstå så att det blir svårt att få ett upprepbart resultat.
Jag har nu börjat med ADCn.
Jag har förövrigt bytt till en annan processor då jag upptäkte att den tidigare inte hade en ADC.
Bytt från 12f629
TILL
12F683
Jag har fått ADCn att fungera i praktiken med en LDR. När jag lyser på motståndet tänds en LED i ett par sekunder och slocknar sen. (Om jag inte lyser på motståndet fortfarande det vill säga.) Jag kan även ändra i koden så att det krävs mer eller mindre ljus för att "trigga" lysdioden.
I praktiken är det bra, det var dit jag ville komma med mitt första test.
MEN jag är inte alls nöjd med "siffrorna" bakom det som händer.
När jag mäter spänningen som går in på PICen så krävs det ca 3,6v för att trigga så att LEDen tänds. Trots att koden ser ut så här.
Här har jag alltså satt mina 10 bitars ADC "Right Justified" vilket innebär (om jag förstått allt rätt) att de 8 bitarna i "ADRESL" fylls med de första 8 bitarn i 10bitars värdet medan de 2 resterande bitarna läggs i "ADRESH" registret.
Jag har även satt "VCFG" biten till att använda VDD som referens, vilket i detta fall innebär ca 4.8v
Sedan ser koden ut så här:
Här jämför jag alltså registret "ADRESL" med binära talet '00000011' (.3) LEDen triggas om "ADRESL" är högre än b'00000011'.
Om jag delar VDD (4.8v) med 10 bitar (1023) så får jag ca 0.0047v om jag gångrar det med 3(som jag jämför med) får jag 0.014v.
Alltså att det bara ska krävas 0.014v för att trigga LEDen. Men det krävs alltså ca 3.6v.
Är det någon som ser vart jag uppenbarligen tänkt fel eller gjort fel?
Tacksam för all hjälp jag hittils fått och hjälpen jag hoppningsvis kommer att få. =)
MVH Peter
Koden i sin helhet:
EDIT: Nu ser koden mycket finare ut än tidigare. Måste kolla varför så att den alltid kan se ut så här när jag postar.
Liten sammanfattning utan att behöva svara er alla personligen.
Jag vill lära mig ALLT! =) Men jag vill åxå att projektet ska gå framåt i praktiken så det blir att kompromissa ibörjan. Tanken är alltså att använda en mic för att i början bara detektera ett högt ljud av något slag. Handklappning eller luftpistolskott mm. Precisionen i detta för jag "utvärdera" senare. Tex om kulan hinner väldigt olika långt med samma inställning. Allstå så att det blir svårt att få ett upprepbart resultat.
Jag har nu börjat med ADCn.
Jag har förövrigt bytt till en annan processor då jag upptäkte att den tidigare inte hade en ADC.
Bytt från 12f629
TILL
12F683
Jag har fått ADCn att fungera i praktiken med en LDR. När jag lyser på motståndet tänds en LED i ett par sekunder och slocknar sen. (Om jag inte lyser på motståndet fortfarande det vill säga.) Jag kan även ändra i koden så att det krävs mer eller mindre ljus för att "trigga" lysdioden.
I praktiken är det bra, det var dit jag ville komma med mitt första test.
MEN jag är inte alls nöjd med "siffrorna" bakom det som händer.
När jag mäter spänningen som går in på PICen så krävs det ca 3,6v för att trigga så att LEDen tänds. Trots att koden ser ut så här.
Kod: Markera allt
START
BANKSEL GPIO ;
CLRF GPIO ;Init GPIO
MOVLW b'110' ;Set GP<0> to Analog
BANKSEL CMCON0
MOVWF CMCON0 ;Set GP<1,2>digital I/O
MOVLW b'000001'
BANKSEL TRISIO
MOVWF TRISIO
BANKSEL ANSEL
MOVWF ANSEL
BANKSEL ADCON0
MOVLW B'10000001' ;<7> Right Justified, <0> ADC On
MOVWF ADCON0
BCF GPIO,1 ;Släck Diod
Jag har även satt "VCFG" biten till att använda VDD som referens, vilket i detta fall innebär ca 4.8v
Sedan ser koden ut så här:
Kod: Markera allt
START1
CLRF GPIO
BSF ADCON0,GO ;take an ADC reading
WAITADC
BTFSC ADCON0,GO ; poll for reading to complete
GOTO WAITADC ; if not done, keep polling
MOVLW B'00000011' ; place in compare register
SUBWF ADRESL,C ; compare instruction
BTFSC STATUS,C ; if ADC reading is more than "compare register", "signal" has been detected
GOTO NEXT ; if "signal" has been detected, to go NEXT routine
GOTO START1 ; if not, start from beginning of program
Om jag delar VDD (4.8v) med 10 bitar (1023) så får jag ca 0.0047v om jag gångrar det med 3(som jag jämför med) får jag 0.014v.
Alltså att det bara ska krävas 0.014v för att trigga LEDen. Men det krävs alltså ca 3.6v.
Är det någon som ser vart jag uppenbarligen tänkt fel eller gjort fel?
Tacksam för all hjälp jag hittils fått och hjälpen jag hoppningsvis kommer att få. =)
MVH Peter
Koden i sin helhet:
Kod: Markera allt
;******************************************************************************
; This file is a basic code template for object module code *
; generation on the PIC12F683. 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: P12F683.INC *
; *
;******************************************************************************
; *
; Notes: *
; *
;******************************************************************************
;------------------------------------------------------------------------------
; PROCESSOR DECLARATION
;------------------------------------------------------------------------------
LIST P=12F683 ; list directive to define processor
#INCLUDE <P12F683.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 _FCMEN_ON & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
errorlevel -302
;------------------------------------------------------------------------------
; VARIABLE DEFINITIONS
;------------------------------------------------------------------------------
; example of using Shared Uninitialized Data Section
INT_VAR UDATA_SHR
W_TEMP RES 1 ; variable used for context saving
STATUS_TEMP RES 1 ; variable used for context saving
d1 RES 1
d2 RES 1
d3 RES 1
c1 RES 1 ;Till ADC delayen
;------------------------------------------------------------------------------
; EEPROM INITIALIZATION
;
; The 12F683 has 256 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
;------------------------------------------------------------------------------
; 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
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
BANKSEL GPIO ;
CLRF GPIO ;Init GPIO
MOVLW b'110' ;Set GP<0> to Analog
BANKSEL CMCON0
MOVWF CMCON0 ;Set GP<1,2>digital I/O
MOVLW b'000001'
BANKSEL TRISIO
MOVWF TRISIO
BANKSEL ANSEL
MOVWF ANSEL
BANKSEL ADCON0
MOVLW B'10000001' ;<7> Right Justified, <0> ADC On
MOVWF ADCON0
BCF GPIO,1 ;Släck Diod
;------------------------------------------------------------------------------
; PLACE USER PROGRAM HERE
;------------------------------------------------------------------------------
MainCode
START1
CLRF GPIO
BSF ADCON0,GO ;take an ADC reading
WAITADC
BTFSC ADCON0,GO ; poll for reading to complete
GOTO WAITADC ; if not done, keep polling
MOVLW B'00000011' ; place in compare register
SUBWF ADRESL,C ; compare instruction
BTFSC STATUS,C ; if ADC reading is more than "compare register", "signal" has been detected
GOTO NEXT ; if "signal" has been detected, to go NEXT routine
GOTO START1 ; if not, start from beginning of program
NEXT
NOP
BANKSEL GPIO
BSF GPIO,1
CALL Delay
CALL Delay
CALL Delay
CALL Delay
CALL Delay
CALL Delay
CALL Delay
CALL Delay
BCF GPIO,1
GOTO START1
;------------------------------------------------------------------------------
; SubRoutines
;------------------------------------------------------------------------------
Delay
movlw 0x03
movwf d1
movlw 0x18
movwf d2
movlw 0x02
movwf d3
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto $+2
decfsz d3, f
goto Delay_0
;6 cycles
goto $+1
goto $+1
goto $+1
RETURN
END ; directive 'end of program'
EDIT: Nu ser koden mycket finare ut än tidigare. Måste kolla varför så att den alltid kan se ut så här när jag postar.
Senast redigerad av PopUnoNkoK 19 september 2011, 08:17:38, redigerad totalt 1 gång.
Re: Frysa en pistolkula i luften - Fotografering
Är inte kronograferna av den typ du länkar till extremt svåra att bygga för en amatör?tecno skrev:Personligen skulle jag inte gå på detta med att trigga med ljud utan använda mig av foto diod/transistor som man har i kronografer för analys av kulans hastighet dvs man triggar på ljusförändringen som sker då kulan passerar detektorn.
Här ett exempel http://www.shootingchrony.com/
- tecno
- Inlägg: 27249
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Frysa en pistolkula i luften - Fotografering
Nu är det ju inte kronograf han ska bygga, det var mer att visa att det finns andra 'bättre' sätt att detektera.
-
- Inlägg: 789
- Blev medlem: 10 december 2007, 12:40:08
- Ort: Piteå
Re: Frysa en pistolkula i luften - Fotografering
Nu har jag fått ADCn att göra som jag vill och jag förstår vad jag gör. =)
Jag hade gjort en tankevurpa, det som är ändrat från överstående kod är att jag satt tillbaka ADC registrena till "Left Justify" och läser bara av "ADRESH", nöjer mig med 8 bitars upplösning.
Jag använder ett LDR för att kontrollera ADCn och det är riktigt läckert när uträkningarna stämmer i praktiken. =)
Jag har nu beställt både 5st TL072 och 5st LM358 (Kommer säkert att vilja använda MIC någon annan gång eller förstärka någon annan signal).
Så jag återkommer när dessa komponenter har kommit hem så jag kan börja att testa med MICen.
Tack för all hjälp som jag fått.
tecno: Hur fungerar detekteringen i en Kronograf? Fotodiod och transistor skriver du men vad gör den stora triangelbågen?
Jag hade gjort en tankevurpa, det som är ändrat från överstående kod är att jag satt tillbaka ADC registrena till "Left Justify" och läser bara av "ADRESH", nöjer mig med 8 bitars upplösning.
Jag använder ett LDR för att kontrollera ADCn och det är riktigt läckert när uträkningarna stämmer i praktiken. =)
Jag har nu beställt både 5st TL072 och 5st LM358 (Kommer säkert att vilja använda MIC någon annan gång eller förstärka någon annan signal).
Så jag återkommer när dessa komponenter har kommit hem så jag kan börja att testa med MICen.
Tack för all hjälp som jag fått.
tecno: Hur fungerar detekteringen i en Kronograf? Fotodiod och transistor skriver du men vad gör den stora triangelbågen?
- tecno
- Inlägg: 27249
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Frysa en pistolkula i luften - Fotografering
Bågarna är till för att hålla ett tak på plats så att bakgrunden (tittar nerifrån upp) blir 'neutral/jämn'. Används även som riktmärken vid uppsättning så man får kulbanan rätt. Det finns nu även nyare 'tak' som är belysta.