Akustiska måltavlor

Här kan du skapa ett raportage om ditt pågående projekt. Det kan vara en ny stock eller kanske ombyggnation av ett helt vapen. Alla trådar skall dock innehålla bilder på ditt projekt.

Moderatorer: Ulrik, Trond Åsly, taxen, Stefan.K, potatiskastare, PerN, mecke, Kari Lindström, Fritz Kraut, Robban

Kategoriregler
Trådar som skapas här skall vara ett pågående projekt som man själv bedriver. Dvs. Inga trådar som innehåller en fråga osv. En projekttråd skall även innehålla en bild eller gärna fler. Trådar som inte uppfylller dessa enkla regler kommer raderas utan förvarning!.
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Dash skrev: ↑21 feb 2022, 22:40 Som ni ser är stigtiden runt 12-15 uS och topptrycken ligger på drygt 1400 Pa (~157 dB)
Micen är en B&K 4944
Jag instämmer. Kul med riktiga data! Inbjudan att berätta mer i detalj kvarstår. Men jag antar att det kanske snabbt stöter på juridiska problem, bara baserat på var du säger att du är... ;)
Fält skrev: ↑22 feb 2022, 00:04 Även med den höga bandbredden hos er testmikrofon så ser det ut att vara mikrofonens bandbredd som begränsar och då den har många gånger högre bandbredd än något vi funderat på så sätter det saker i perspektiv. För att inte tala om att en enkel ekektret kanske kan mäta till fem på den skalan.
Ja, jag tänkte det med. Det kan ju aldrig räcka. Och var på väg mot mina gamla kursböcker, tills jag insåg att någon måste redan måste ha gjort det här på nätet... :)

Och jo *) för det lågpassfilter som mik(+förstärkare) utgör så är sambandet Tstig = 0.35 / f3dB, alltså stigtiden är 0.35 delat med 3dB gränsfrekvensen. Jag orkar inte läsa databladet för Brüel och Kjaers mic, men den står iaf listad som 70kHz. Vi får anta att förstärkeriet hänger med.

Om vi antar 70kHz som 3dB punkten så får vi en stigtid på 5 us. Vilket är bekvämt mindre än 12-15 us. Så det borde räcka ganska bra med den bandbredden.

Det är antagligen därför man inte gör den här högtrycks-mät-mikrofonen så värst mycket snabbare; det räcker som det är.

Någon däremot? Jag har bara räknat, inte mätt, så det kan fortfarande vara helt åt h-vete fel... ;)

*) https://www.thorlabs.com/newgrouppage9. ... up_id=9817
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

Jag beställde tre små breadboards där det även finns plats för en ytmonterad IC. https://www.amazon.se/gp/product/B07V59XY8K

Har någon tips på en snabb jfet OPA eller jfet komparator för ingångarna från piezo elementen? Jag vet inte om det är nödvändigt, men det måste i alla fall provas om riktigt hög ingångsimpendans gör skillnad för stigtiden. Jag räknar med att det i vilket fall som helst behövs skydd mellan Picon och piezon, för om jag minns rätt så kan de ge ganska våldsamma utsignaler om de misshandlas. Som vid transport eller om de träffas av en kula.

Om de här skulle råka fungera så har de lämpligt format för det vi vill göra. En påse är på väg. Om de är vad de säger att de är så behöver de inte modifieras.
https://www.amazon.se/gp/product/B07VH798TB
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Fält skrev: ↑22 feb 2022, 15:42 Jag beställde tre små breadboards där det även finns plats för en ytmonterad IC. https://www.amazon.se/gp/product/B07V59XY8K

Har någon tips på en snabb jfet OPA eller jfet komparator för ingångarna från piezo elementen? Jag vet inte om det är nödvändigt, men det måste i alla fall provas om riktigt hög ingångsimpendans gör skillnad för stigtiden. Jag räknar med att det i vilket fall som helst behövs skydd mellan Picon och piezon, för om jag minns rätt så kan de ge ganska våldsamma utsignaler om de misshandlas. Som vid transport eller om de träffas av en kula.

Om de här skulle råka fungera så har de lämpligt format för det vi vill göra. En påse är på väg. Om de är vad de säger att de är så behöver de inte modifieras.
https://www.amazon.se/gp/product/B07VH798TB
Ytmonterad? Det där ser ut som "thru hole" på bilden iaf?

Men när vi nu slagit fast att bandbredden inte är något större problem här så tipsar jag om standard "jelly bean" TL071 (https://www.ti.com/lit/ds/symlink/tl071 ... %252FTL071) om du skall ha JFET-ingång.

Den har en slew rate på 20V/us (bästa, men normalt kanske 13V/us) vilket räcker och blir över med råge enligt tidigare data. Kostar inte mycket, 12:- på electrokit (https://www.electrokit.com/en/product/t ... -op-amp-2/). Finns även ytmonterad.

Men jag tror inte du behöver (så) hög ingångsimpedans. Så den andra standard-op-ampen (som du ju naturligtvis väl känner till) LM358 (5:- på electrokit https://www.electrokit.com/en/product/l ... w-power-2/) räcker väl till den med. 1MHz unity-gain bandbredd är mycket mer än mikrofonen klarar av att leverera ändå. Finns även den som ytmonterad.

Om du dock behöver en komparator så är det bättre att ta en speciell sådan än att misshandla en op-amp. Problemet med det är att de "fastnar" om de fås att styra ut max, och kan ta lång tid på sig att återhämta sig. En op-amp förväntar sig att bli återkopplad. Detta är något en komparator inte är lider av eftersom den är gjord för att snabbt slå från rail-till-rail utan att det bekommer den. LMx93-familjen är standard (t ex så har electrokit LM2903P för 9:- https://www.electrokit.com/en/product/l ... parator-2/).

(Tipset att korrekt biasera en oanvänd op-amp eller komparator (så den ligger "mitt i" ungefär) om man har flera i kapseln och inte behöver använda alla gäller naturligtvis alla ovanstående. Låt dem inte bara flyta, det leder gärna till lock-up som kan påverka den man faktiskt använder.)
Dash
Inlägg: 96
Blev medlem: 21 maj 2012, 00:48
Ort: Mellan de stora sjöarna

Re: Akustiska måltavlor

Inlägg av Dash »

lasse-a skrev: ↑22 feb 2022, 10:17 Jag instämmer. Kul med riktiga data! Inbjudan att berätta mer i detalj kvarstår. Men jag antar att det kanske snabbt stöter på juridiska problem, bara baserat på var du säger att du är... ;)
Jag jobbar på FMV T&E Karlsborg, en provplats som primärt genomför prov på markprodukter åt försvarsmakten och försvarsindustrin. Liten reklamfilm om FMV T&E
Vi genomför ganska blandad verksamhet, allt ifrån miljötålighetsprover av ammunitionsemballage till att verifiera minskydd på tunga fordon.
Jag jobbar främst med ballistiska mätningar med hjälp av radar. Allt ifrån att kontrollera v0 på en batch 9mm till att ta fram underlag för en 6-DoF beräkning av artillerigranater.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

lasse-a skrev: ↑22 feb 2022, 10:17 Och jo *) för det lågpassfilter som mik(+förstärkare) utgör så är sambandet Tstig = 0.35 / f3dB, alltså stigtiden är 0.35 delat med 3dB gränsfrekvensen. Jag orkar inte läsa databladet för Brüel och Kjaers mic, men den står iaf listad som 70kHz. Vi får anta att förstärkeriet hänger med.

Om vi antar 70kHz som 3dB punkten så får vi en stigtid på 5 us. Vilket är bekvämt mindre än 12-15 us. Så det borde räcka ganska bra med den bandbredden.
Jag tolkar det som att mikrofonen begränsar stigtiden på signalen, från ungefär 10-90% så skiljer det ungefär 8us och det blir ännu brantare om man mäter från 20-80%.
Det blir bara 12-15uS om man mäter från noll till max, så att försöka hålla bandbredden så hög som möjligt tror jag att är bra.

Det är där j-fet operationsförstärkare kommer in i bilden, jag vill se om ingångsimpendansen gör mycket skillnad på piezo högtalarna när de används som mikrofoner eller om det inte är viktigt.
lasse-a skrev: ↑22 feb 2022, 18:52
Fält skrev: ↑22 feb 2022, 15:42 Jag beställde tre små breadboards där det även finns plats för en ytmonterad IC. https://www.amazon.se/gp/product/B07V59XY8K
Ytmonterad? Det där ser ut som "thru hole" på bilden iaf?
Det finns en plats for en SOIC14 på dem, det är något jag saknat då det ofta är lättare att hitta ytmonterade komponenter. Särskilt här hos mig.
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Dash skrev: ↑22 feb 2022, 21:02 Jag jobbar på FMV T&E Karlsborg, en provplats som primärt genomför prov på markprodukter åt försvarsmakten och försvarsindustrin.
Jo, jag antog att det var i den riktningen. Så mera detaljer kring hur/vad osv. hade ju varit intressant. Men eftersom det i stort sett är olagligt att ens fråga, så skall jag inte göra det mer. ;)
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Fält skrev: ↑22 feb 2022, 23:39 Jag tolkar det som att mikrofonen begränsar stigtiden på signalen, från ungefär 10-90% så skiljer det ungefär 8us och det blir ännu brantare om man mäter från 20-80%.
Det blir bara 12-15uS om man mäter från noll till max, så att försöka hålla bandbredden så hög som möjligt tror jag att är bra.
Man brukar som sagt räkna stigtid mellan 10%-90% värdena. Om jag gör det i bilden så får jag (mellan 0.9975e-3 ms och 1.0075e-3 ms) 10 us. Vilket fortfarande är större än de 5us som 70kHz ger. Så jag skulle känna mig bekväm med det. Det är på gränsen, men visst.

Nu är det ju mätt på lite avstånd här så pulsen har smetats ut lite, så visst, det skadar inte att ta i från tårna, men då får man ta med i beräkningen att membranen/sensorelementen i mickarna har viss massa osv. så det går inte att få hur snabb respons som helst.


Fält skrev: ↑22 feb 2022, 23:39Det är där j-fet operationsförstärkare kommer in i bilden, jag vill se om ingångsimpendansen gör mycket skillnad på piezo högtalarna när de används som mikrofoner eller om det inte är viktigt.
...
Det finns en plats for en SOIC14 på dem, det är något jag saknat då det ofta är lättare att hitta ytmonterade komponenter. Särskilt här hos mig.
Då finns det ju många att välja på. Men jag är som sagt övertygad om att det inte behövs något exotiskt här. Även äldre op-ampar har typiskt mycket bättre prestanda än vad som behövs här. TL071 finns iaf som SO8, vilket man med lite tur kan löda på en SOIC14. (Och jag förstår inte "här hos mig", hos mig hittar man vad jag har beställt på nätet, så det är både allt och inget. Nätet har ingen preferens annat än den generella trenden mot ytmonterat... ;))

MEN, det är klart att det finns många andra, det beror på vad du är ute efter? Vill du ha multi-megahertz-bandbredd? De finns de med, men det blir mer brus, högre kostnad, och större strömförbrukning. Så om det inte duger med en TL071 så säg vad det specifikt du är ute efter i parameterväg så letar vi fram det med.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

lasse-a skrev: ↑23 feb 2022, 09:42 (Och jag förstår inte "här hos mig", hos mig hittar man vad jag har beställt på nätet, så det är både allt och inget. Nätet har ingen preferens annat än den generella trenden mot ytmonterat... ;))

MEN, det är klart att det finns många andra, det beror på vad du är ute efter? Vill du ha multi-megahertz-bandbredd? De finns de med, men det blir mer brus, högre kostnad, och större strömförbrukning. Så om det inte duger med en TL071 så säg vad det specifikt du är ute efter i parameterväg så letar vi fram det med.
Precis så är det, nästan alla komponenter jag har är ytmonterade. Det är inte ett stort urval, men jag tror inte att jag har en enda hålmonterad opeationsförstärkare!

Men TL07x räcker gott och väl för det jag tänkte prova. Dvs med eller utan buffer på ingången. Den skulle kanske inte vara så bra om det behövs en operationsförstärkare i den färdiga lösningen, om vi vill hålla strömförsörjningen så enkel som möjligt.

Men det ser ut som om det går att hoppa över det provet och gå skarpt direkt med en LM393. Det var ett par decimalpunkter fel på mitt minne av hur mycket den belastade källan :oops:
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Fält skrev: ↑23 feb 2022, 15:38 Men det ser ut som om det går att hoppa över det provet och gå skarpt direkt med en LM393. Det var ett par decimalpunkter fel på mitt minne av hur mycket den belastade källan :oops:
Då är du längre fram i utvecklingen än jag. Jag har inte en enda ytmonterad i lådorna... ;)

Men, ja, det är ju tyvärr så att trots att man dreglar i komponentkatalogerna så räcker för det mesta de halvmoderna klassikerna både till och blir över. Man har sällan anledning att gå till någon överdrift. Utvecklingen har främst ökat de bortre gränserna, samt i viss mån mot låg energiförbrukning, lägre driftspänning osv. (men då ofta på bekostnad av andra parametrar).

LMx983-serien kommer man fortfarande långt med (det är den jag använder själv). Och här är det ju helt rätt att använda en riktig komparator.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

lasse-a skrev: ↑23 feb 2022, 15:46 Då är du längre fram i utvecklingen än jag. Jag har inte en enda ytmonterad i lådorna... ;)

Men, ja, det är ju tyvärr så att trots att man dreglar i komponentkatalogerna så räcker för det mesta de halvmoderna klassikerna både till och blir över. Man har sällan anledning att gå till någon överdrift. Utvecklingen har främst ökat de bortre gränserna, samt i viss mån mot låg energiförbrukning, lägre driftspänning osv. (men då ofta på bekostnad av andra parametrar).

LMx983-serien kommer man fortfarande långt med (det är den jag använder själv). Och här är det ju helt rätt att använda en riktig komparator.
Min favorit är LM324 istället för LM358 då det alltid verkar finnas behov för tre eller fyra OPA. Den fungerar till någorlunda låga spänningar och fungerar nära nollan både in och ut för de långsamma saker jag använt den till. De verkar också hålla ganska lika data från batch till batch, så att prova hur något fungerar istället för att gå på worst case från databladet är ofta en bra ide. Särskilt när priset skiljer några tusen procent på en komponent.

Min preferens för ytmontering kommer från att jag tillverkade en enkel förförstärkare med egentillverkat kretskort på den tiden när det var dyrt att få enstaka kretskort tillverkade. Jag märkte att det var för mycket arbete att borra hålen. Nu när det är så enkelt att få enstaka kort tillverkade så tycker jag att man kan välja lite friare, men korten blir snabbt stora när man hålmonterar.
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Fält skrev: ↑23 feb 2022, 22:52 Min favorit är LM324 istället för LM358 då det alltid verkar finnas behov för tre eller fyra OPA. Den fungerar till någorlunda låga spänningar och fungerar nära nollan både in och ut för de långsamma saker jag använt den till. De verkar också hålla ganska lika data från batch till batch, så att prova hur något fungerar istället för att gå på worst case från databladet är ofta en bra ide. Särskilt när priset skiljer några tusen procent på en komponent.
Det är ju bra tips. Om man kan testa så kan man tjäna på det. (För länge sedan, preskriberat, så fick man problem med processor och komponenter till JAS styrsystemdator. De tillverkades inte längre i mil-spec. Så vad gör man? Jo man köper alla vanliga man kommer över och testar fram de som håller mil-spec. Sedan säljer man överskottet. Det är ju sällan fråga om "tillverkning" av en viss "bin", utan just om man orkar testa fram den.)
Fält skrev: ↑23 feb 2022, 22:52 Min preferens för ytmontering kommer från att jag tillverkade en enkel förförstärkare med egentillverkat kretskort på den tiden när det var dyrt att få enstaka kretskort tillverkade. Jag märkte att det var för mycket arbete att borra hålen. Nu när det är så enkelt att få enstaka kort tillverkade så tycker jag att man kan välja lite friare, men korten blir snabbt stora när man hålmonterar.
Ja, det är en nackdel med storleken. Och också att man idag inte kan få de nyaste komponenterna för hålmontering. (Finns exv. ingen modernare CPU/uC). Nackdelen är att det går mycket fortare och lättare att löda enstaka komponenter med hål. Idag är som du säger det ingen direkt skillnad i kostnad för kort. Å andra sidan så kan man också få korten med standardkomponenter ytmonterade och färdiga, så då försvinner det krånglet.


Men, det slog mig också att om du vill ha en komparator som är snabbare (de vi pratat om har ju en fördröjning på 600ns eller så, dvs 1/2 us typ), så finns ju exv. LT1016, eller TLV3501. De är mycket snabbare, storleksordningen 10ns, och har inga "konstiga" utgångar eller så. De är forfarande ganska billiga. Men de drar då i gengäld 10x så mycket ström... Finns ingen genväg till det perfekta ljudet osv. :)
grahn
Inlägg: 141
Blev medlem: 10 jun 2014, 10:25
Ort: Skelleftehamn

Re: Akustiska måltavlor

Inlägg av grahn »

Jag kunde inte riktigt släppa det här med att kulans hastighet inte skulle påverka.....så jag gjorde en "simulator" i 3d (vpython) om någon är intresserad av att labba.
Temperatur/Ljudets hastighet, kulhastighet, x- och y-koordinat för träffen är ställbart.
Tavlan är simulerad att vara 1000mm och mikrofonerna i hörnen.
Ut ger den T1,T2,T3,T4 från satta parametrar.

(sätter man träffen på en mikrofon finns det en grafik bug)

För mig känns det ganska klart att man måste mäta hastigheten på kulan vid målet.
Är det därför shotmarker har 2 plan av mikrofoner ?

Kod: Markera allt

from vpython import *
import numpy as np 
import math

x_target=1000
y_target=1000
a=340000 #sound velocity in air mm/s
v=840000 #bullet velocity at the target mm/s
t=20
m=2
ma_deg=24
ma=0.5
marker_length=100
marker_dia=100
zmax=0
colors = []
colors.append(color.cyan)
colors.append(color.green)
colors.append(color.red)
colors.append(color.blue)
colors.append(color.yellow)
tofs=[]
tdoas=[]
ddoas=[]
for x in range (0,5):
    tofs.append(0.0)
    tdoas.append(0.0)
    ddoas.append(0.0)

scene.width = 800
scene.height = 800
scene.range = 1500
scene.title = "\n"

def calcShotmarker(sm,mic,pt,x):
    global zmax
    sm.pos.x=slx.value
    sm.pos.y=sly.value
    xy_len=math.sqrt((mic.pos.x-sm.pos.x)**2+(mic.pos.y-sm.pos.y)**2)
    z=xy_len/math.tan(ma)
    zmax=max(z,zmax)
    marker_dia=z*math.tan(ma)*2
    tofs[x]=z/v #Bullet travel distance / velocity of bullet => bullet travel time.
    #xyz_len=math.sqrt(xy_len**2+z**2)
    sm.pos.z=0
    sm.size.x=z
    sm.size.y=marker_dia
    sm.size.z=marker_dia
    pt.modify(1, vector(sm.pos.x,sm.pos.y,-z))
    

def calcTdoa():
    minTof=tofs[1]
    for x in range (1,5):
        minTof=min(minTof,tofs[x])
    
    for x in range (1,5):
        tdoas[x]=(tofs[x]-minTof)
        t_text[x].text='T{}={:.5f} ms\n'.format(x,tdoas[x]*1000)
    
def calcDist():
    for x in range (1,5):
        ddoas[x]=(v*tdoas[x])*math.tan(ma)
    pass

def update():
    global v,a,m,ma,ma_deg,marker_dia,marker_length,zmax
    v=slv.value*1000
    m=v/a #mach number
    ma=math.asin(1/m) #mach angle radians
    ma_deg=ma*180/math.pi
    mics[0].pos.x=slx.value
    mics[0].pos.y=sly.value
    zmax=0
    for x in range (1,5):
        calcShotmarker(shotmarkers[x],mics[x],pointers[x],x)
    
    
    shotmarkers[0].size.x=zmax
    shotmarkers[0].size.z=zmax*math.tan(ma)*2
    shotmarkers[0].size.y=zmax*math.tan(ma)*2
    shotmarkers[0].pos.x=slx.value
    shotmarkers[0].pos.y=sly.value
    shotmarkers[0].pos.z=shotmarkers[0].size.x-zmax*slanimation.value/100
    for x in range (1,5):
        if((zmax*slanimation.value/100)>=shotmarkers[x].size.x):
            shotmarkers[x].opacity=1
        else:
            shotmarkers[x].opacity=0






        
def setx(s): 
    x_text.text = 'X {:.0f} mm\n'.format(s.value)
slx = slider(min=-x_target/2, max=x_target/2, value=0, length=600, bind=setx, right=15) 
x_text = wtext(text='')

def sety(s):
    y_text.text = 'Y {:.0f} mm\n'.format(s.value)
sly = slider(min=-y_target/2, max=y_target/2, value=0, length=600, bind=sety, right=15) 
y_text = wtext(text='')

def setv(s):
    v_text.text = 'Bullet velocity {:.0f} m/s\n'.format(s.value)
    v=slv.value*1000
slv = slider(min=500, max=1000, value=v/1000, length=600, bind=setv, right=15) 
v_text = wtext(text='')

def sett(s):
    global t,a
    t=slt.value
    a=331.3*math.sqrt(1+(t/273.15))*1000
    tv_text.text = 'Temp {:.1f} degC Sound velocity {:.0f} m/s\n'.format(s.value,a/1000)  
slt = slider(min=-30, max=50, value=20, length=600, bind=sett, right=15) 
tv_text = wtext(text='')

def setAnimation(s):
    ani_text.text = 'Animation {:.0f} %\n'.format(s.value)
slanimation = slider(min=-50, max=101, value=-50, length=600, bind=setAnimation, right=15) 
ani_text = wtext(text='')

setx(slx)
sety(sly)
setv(slv)
sett(slt)
setAnimation(slanimation)

target=box(pos=vector( 0, 0, 0), size=vector(x_target, y_target, 1),  color = color.white)

mics = []
mics.append(sphere(pos=vector(0,0,0),radius=5, color=colors[0]))
mics.append(sphere(pos=vector(-x_target/2,y_target/2,0),radius=20, color=colors[1]))
mics.append(sphere(pos=vector(x_target/2,y_target/2,0),radius=20, color=colors[2]))
mics.append(sphere(pos=vector(-x_target/2,-y_target/2,0),radius=20, color=colors[3]))
mics.append(sphere(pos=vector(x_target/2,-y_target/2,0),radius=20, color=colors[4]))


shotmarkers = []
for x in range (0,5):
    shotmarkers.append(cone(pos=vector(0,0,marker_length), axis=vector(0,0,-1), color=colors[x], size=vector(1,1,1), opacity=0.2))
shotmarkers[0].opacity=0.2

pointers = []
pointers.append(curve(vector(mics[0].pos),vector(0,0,0), color=colors[0], radius=0))
for x in range (1,5):
    pointers.append(curve(vector(mics[x].pos),vector(0,0,0), color=colors[x], radius=2))

t_text=[]
t_text.append(wtext(text=''));
for x in range (1,5):
    t_text.append(wtext(text=' ms\n'))


while True:
    update()
    calcTdoa()
    calcDist()
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

grahn skrev: ↑24 feb 2022, 13:01 Jag kunde inte riktigt släppa det här med att kulans hastighet inte skulle påverka.....så jag gjorde en "simulator" i 3d (vpython) om någon är intresserad av att labba.
Ja, det är klart. Men så googlade jag VPython, blev inte tillräckligt mycket klokare, och sedan slog lättjan till.

Så har du några tips om plattform, eller dylikt? Var/hur/osv kör man bäst?
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

grahn skrev: ↑24 feb 2022, 13:01 Jag kunde inte riktigt släppa det här med att kulans hastighet inte skulle påverka.....så jag gjorde en "simulator" i 3d (vpython) om någon är intresserad av att labba.
Stilig simulering, när jag drabbades av samma tankar så fick jag nöja mig med gradskiva och papper.

Jag har inte hittat var du räknar ut tiderna i koden. Men jag antar att du utgår från konen när du gör det?

Men konen i simuleringen finns inte i verkligheten. När en mach kon visas på tex en Schlieren bild så har luften agerat som ett grafpapper och visar den störning i luften som ljudet från bogknallen ger.

En punktformig ljudkälla ger en sfärisk störning, men för en kula i överljudsfart så blir delar av den sfäriska störningen påkörda av kulan kontinuerligt. Så det som skulle gått framåt och bakåt förstörs.

Om man vill simulera att en kula plötsligt stannat på en punkt i luften så kan man låta en sfär sprida sig från den punkten med ljudets hastighet. Om man skulle göra det på ett par punkter så kommer de att bilda en kon.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

lasse-a skrev: ↑24 feb 2022, 15:24
grahn skrev: ↑24 feb 2022, 13:01 Jag kunde inte riktigt släppa det här med att kulans hastighet inte skulle påverka.....så jag gjorde en "simulator" i 3d (vpython) om någon är intresserad av att labba.
Ja, det är klart. Men så googlade jag VPython, blev inte tillräckligt mycket klokare, och sedan slog lättjan till.

Så har du några tips om plattform, eller dylikt? Var/hur/osv kör man bäst?
Jag tror att Anaconda python är enklast om du inte har python installerat.

Kör sedan pip install vpython i en vanlig kommandoprompt för att installera vpython.

Anaconda är en ganska tung best, den sög i sig 4GB på hårddisken.
Användarvisningsbild
lasse-a
Inlägg: 2661
Blev medlem: 21 jun 2018, 08:19
Ort: Västergötland

Re: Akustiska måltavlor

Inlägg av lasse-a »

Fält skrev: ↑24 feb 2022, 15:58 Stilig simulering, när jag drabbades av samma tankar så fick jag nöja mig med gradskiva och papper.

Jag har inte hittat var du räknar ut tiderna i koden. Men jag antar att du utgår från konen när du gör det?

Men konen i simuleringen finns inte i verkligheten. När en mach kon visas på tex en Schlieren bild så har luften agerat som ett grafpapper och visar den störning i luften som ljudet från bogknallen ger.

En punktformig ljudkälla ger en sfärisk störning, men för en kula i överljudsfart så blir delar av den sfäriska störningen påkörda av kulan kontinuerligt. Så det som skulle gått framåt och bakåt förstörs.

Om man vill simulera att en kula plötsligt stannat på en punkt i luften så kan man låta en sfär sprida sig från den punkten med ljudets hastighet. Om man skulle göra det på ett par punkter så kommer de att bilda en kon.
Precis. Mach-konen "finns inte". Dvs om man visualiserar vågfronter vid olika tidpunkter så blir det en kon, men det är bara för att fronten från en senare ljudvåg kommer att gå före en tidigare. Vilket inte kan hända annars.

Jämför dessa bilder:
mach-cone.jpg
I den första så är hastigheten hos föremålet ("kulan") mindre än ljudets, och då får vi sfärer inuti varandra som expanderar utåt med ljudets hastighet. (Vad som visualiseras här är naturligtvis tryckförändringar i luften, aka ljud).

Men om ljudkällan rör sig fortare än ljudet så kommer man från sidan att se en "kon" eftersom ljudkällan ("kulan") rör sig fortare än ljudvågens front (dvs högtrycksfronten).

Notera att ljudet fortfarande rör sig med ljudets hastighet. Om det inte gjorde det så skulle vi inte få någon kon, för då skulle ljudkällan inte kunna köra ikapp och förbi tryckfronten.

Så det spelar ingen roll var kulan är när tryckfronten når mikrofonerna. Om vi hade en "kula" som hängde helt still precis i måltavlans plan (och ändå kunde generera ljud) så spred det sig som en "sfär" precis som Fält skriver. Och vi skulle enkelt kunna räkna ut var på tavlan den hängde.

Om den rörde sig supersoniskt så händer ingenting med den modellen. Det är fortfarande ljudet som genererades när kulan precis träffade tavlan som når mikrofonerna först. Om kulan är lite supersonisk så kommer den inte att ha hunnit så långt förbi tavlan, och om den är mycket supersonisk så kommer den ha hunnit mycket längre förbi tavlan. Det spelar som sagt ingen roll för hur lång tid ljudvågen (fronten) behöver på sig för att nå mikrofonerna. Det är fortfarande vågen som genererades när kulan skar tavlans plan.

Det skulle faktiskt inte spela någon roll om kulan var subsonisk (om den då fortfarande kunde generera ljud, vilket den inte kan). Så länge som den färdades vinkelrät mot tavlan så skulle mätningen fungera ändå. Enda skillnaden är att man skulle få värdet för träffen innan kulan träffade tavlan. (Och om den detekterades för långt från tavlan så skulle geometrin vara dålig för att räkna fram en exakt träff.)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

grahn skrev: ↑24 feb 2022, 13:01 ...så jag gjorde en "simulator" i 3d (vpython)...
Du verkar vara väldigt insatt i vad man kan åstadkomma med python.

Jag tänker på hur resultaten skall presenteras, min tanke är att man använder sin egen telefon, platta eller laptop och kopplar upp sig till skjutbanans wifi.

Känner du till något lämpligt paket som man kan använda för att presentera resultat med via html?

Något i stil med 3d grejerna du gjorde, men lättvikts och i 2d. Gärna så att det kan skapas och hostas på något mycket lättviktigt inbäddat system. Som tex en ESP 32 med ethernet och wifi.

En Raspberry Pi låter nog som det första valet för många, men jag har aldrig fått en RPI att hålla sig igång någon längre tid trots att jag använt avbrottsfri kraft. Jag misstänker att SD kortet är problemet. För det här behöver vi något man inte behöver pyssla om och gulla med.
grahn
Inlägg: 141
Blev medlem: 10 jun 2014, 10:25
Ort: Skelleftehamn

Re: Akustiska måltavlor

Inlägg av grahn »

Python är en ny bekantskap för mig.

Hur man löser klientsidan är ju lite vad som passar och vad man har för krav.
Jag tänker mikrofoner->esp #1->x/y data>lora->lora->esp #2->webserver->Java/jquery/html5
Låt esp#1 kärna 1 mäta tider, kärna 2 hantera lora beräkna tdoa och skicka data.
Låt esp#2 kärna 1 hantera lora , kärna 2 kan köra webserver.
Då kan man lägga över grafiken och delar av logiken på mobil/platta/dator där högsta kapaciteten finns.
Tdoa beräkningen kan man såklart flytta lite fram å tillbaka.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

grahn skrev: ↑24 feb 2022, 21:28 Python är en ny bekantskap för mig.

Hur man löser klientsidan är ju lite vad som passar och vad man har för krav.
Jag tänker mikrofoner->esp #1->x/y data>lora->lora->esp #2->webserver->Java/jquery/html5
Låt esp#1 kärna 1 mäta tider, kärna 2 hantera lora beräkna tdoa och skicka data.
Låt esp#2 kärna 1 hantera lora , kärna 2 kan köra webserver.
Då kan man lägga över grafiken och delar av logiken på mobil/platta/dator där högsta kapaciteten finns.
Tdoa beräkningen kan man såklart flytta lite fram å tillbaka.
Ännu mer imponerande då.

ESP verkar ha lite hyss med timing för sig. Det är kanske överdrivet och kan elimineras med en superloop. Men deras interrupts tycks vara långsamma i deras miljö.

Det är därför vi ramlade över på en Pi Pico och att använda en lite råare och mindre användarvänlig C/C++ miljö.

Min tanke var Pi Pico, kärna 1 mäter tid, kärna 2 beräknar träffpunkt och kommunicerar via UART med en ESP32 som kör en webserver och som kopplar vidare på banans nätverk eller agerar som accesspunkt själv.

De två plattformarna verkar vara bra på olika saker och det var lätt att hitta exempel för hur man sätter upp en ESP32 som webserver och accesspunkt.

Jag tycker inte riktigt om webserverbaserade lösningar, men det är orimligt att skriva riktiga klienter för alla plattformar som kan användas för att visa resultat.
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Akustiska måltavlor

Inlägg av Fält »

Då det kanske börjar komma prylar i morgon så ville jag ha något lite enklare att mäta med, nu är jag lite för trött för sånt här och det var fel dator så jag kunde inte kompilera det. Med största sannolikhet så finns det lite fel. Det här är bara för prov, presentationen skall flyttas till den andra kärnan och lite annat måste göras om för att det skall bli skarpt.

Kod: Markera allt

#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"

#define MEASUREMENTTIMEOUT 5000000
#define FIRSTMEASURENTPIN 2
#define LASTMEASUREMENTPIN 5

uint64_t timearray[6] = {0};
uint64_t timeout;
uint64_t referencetime=0;
uint32_t measurementcounter;

int main(void) {
    stdio_init_all();
    gpio_init(2); gpio_set_dir(2, GPIO_IN);
    gpio_init(3); gpio_set_dir(3, GPIO_IN);
    gpio_init(4); gpio_set_dir(4, GPIO_IN);
    gpio_init(5); gpio_set_dir(5, GPIO_IN);

while(1)
{
    timeout = time_us_64() + MEASUREMENTTIMEOUT; // Mät i fem sekunder innan vi ger upp.
    measurementcounter=3; // Mät tills vi har fyra värden.

    while(timeout < time_us_64() && measurementcounter) // Kolla så att tiden inte gått ut och att vi inte mätt tillräckligt m>
    {
        for(int i = FIRSTMEASUREMENTPIN ; i <= LASTMEASUREMENTPIN ; i++)  // Fusk, börjar räkna på första pinnens nummer.
        {
            if (gpio_get(i) && !timearray[i-2]) // Om pinnen är hög OCH om vi inte redan fyllt i det här fältet i tabellen.
            {
                if(!referencetime) // Om vi INTE satt reference time så är det här den mikrofonen som triggar först.
                {
                    referencetime = time_us_64();
                    timearray[i-2] = 1; // Fusk, sätter det här till 1 för att logiken i if satsen skall stämma.
                    measurementcounter--;
                }
                else
                {
                    timearray[i-2] = time_us_64() - referencetime; // Dra bort första mätningens tid från alla efterföljande m>
                    measurementcounter--;
                }
            }
        }
    }
    printf("*****************************");
    printf("Reference: %lld \n",referencetime);
    printf("Time1: %lld \n",timearray[0]);
    printf("Time2: %lld \n",timearray[1]);
    printf("Time3: %lld \n",timearray[2]);
    printf("Time4: %lld \n",timearray[3]);
}
}

Uppdaterade koden 220225.
Senast redigerad av 1 Fält, redigerad totalt 25 gånger.