Arduino för enkel DSP applikation (motor Knock sensor)
Arduino för enkel DSP applikation (motor Knock sensor)
Hej,
Jag funderar på att försöka mig på och bygga en "knock" sensor till min bil med en Arduino. "Knackning" är när bränslet tänds tidigare än vad det skall, detta är skadligt för motorn. Alla moderna motorer har sensorer för detta. Typiskt händer det ifall man har för låg oktanhalt, motorn överhettad eller kör en aggresiv motorinställning. (https://en.wikipedia.org/wiki/Engine_knocking)
I princip så behöver jag koppla in en mikrofon till en Arduino och med mjukvara detektera ett 6.8Khz knock/ping ljud.
Mikrofonen sitter på motorn, det är väldans massa oljud i motorn så filtret måste vara väldigt bra. En svårighet är att själva knock ljudet blir maskerat av allt annat oljud från motorn.
Tänker mig något bandpass filter av hyfsat hög grad och använda Arudinos inbyggda ADC.
Tror ni Arduinon har tillräckligt med prestanda?
Den måste göra lite andra enklare saker med som polla IO för lampor, knappar och läsa av I2C.
Här är en bild from Audacity på knock ljudet: Finns en MP3 attachat också. Knock ljudet kommer vid 24s och 31s .
Tack!
Jag funderar på att försöka mig på och bygga en "knock" sensor till min bil med en Arduino. "Knackning" är när bränslet tänds tidigare än vad det skall, detta är skadligt för motorn. Alla moderna motorer har sensorer för detta. Typiskt händer det ifall man har för låg oktanhalt, motorn överhettad eller kör en aggresiv motorinställning. (https://en.wikipedia.org/wiki/Engine_knocking)
I princip så behöver jag koppla in en mikrofon till en Arduino och med mjukvara detektera ett 6.8Khz knock/ping ljud.
Mikrofonen sitter på motorn, det är väldans massa oljud i motorn så filtret måste vara väldigt bra. En svårighet är att själva knock ljudet blir maskerat av allt annat oljud från motorn.
Tänker mig något bandpass filter av hyfsat hög grad och använda Arudinos inbyggda ADC.
Tror ni Arduinon har tillräckligt med prestanda?
Den måste göra lite andra enklare saker med som polla IO för lampor, knappar och läsa av I2C.
Här är en bild from Audacity på knock ljudet: Finns en MP3 attachat också. Knock ljudet kommer vid 24s och 31s .
Tack!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Arduino för enkel DSP applikation (motor Knock sensor)
Jag tror alla nya bensinbilar har en knacksensor eller två, är det inte bättre att använda en sådan istället för en vanlig mikrofon? Man slipper alla ovidkommande ljud/oljud och får väl i princip ganska bra grundsignal från knackgivaren när motorn knackar?
Re: Arduino för enkel DSP applikation (motor Knock sensor)
Det är nog enklare att använda en kontaktmikrofon för den applikation.
Typ ett piezoelement.
Typ ett piezoelement.
Re: Arduino för enkel DSP applikation (motor Knock sensor)
Jag är nu mer intresserat i hur man skulle få en Arduino till att sampla snabbt nog OCH hinna köra en DSP-behandling av data.
Re: Arduino för enkel DSP applikation (motor Knock sensor)
Torde vara absolut enklast att skaffa en interfacekrets och ansluta den via SPI till Aurdino
http://www.ti.com/lit/an/slyt580/slyt580.pdf
http://www.ti.com/lit/ds/symlink/tpic8101.pdf
http://www.ti.com/tool/TIDA-00152?DCMP= ... designs-en#
http://www.ti.com/lit/an/slyt580/slyt580.pdf
http://www.ti.com/lit/ds/symlink/tpic8101.pdf
http://www.ti.com/tool/TIDA-00152?DCMP= ... designs-en#
Re: Arduino för enkel DSP applikation (motor Knock sensor)
På ungefär samma sätt som man skulle få det att funka på en ATMEGA?Icecap skrev:Jag är nu mer intresserat i hur man skulle få en Arduino till att sampla snabbt nog OCH hinna köra en DSP-behandling av data.
Eller så satsar man på en STM32 baserad Arduino.
Matar man sen knacksensorn med signaler från tändmodulen så vet man ju också när det är lönt att sampla eller inte.
Och på så sätt skapar man sig tid när man kan processa datan.
Eller så fokuserar man på att någon säger Arduino och blir helt blockerad..
Re: Arduino för enkel DSP applikation (motor Knock sensor)
Har en Arduino liggande så tänkte det kunde vara bra att använda den.
Frekvensen är beroende på motorvolymen så svårt att ta något annat system rakt av. Min motor är en gammal rak sexa med enkel överliggande kamaxel och solid lifters. De har mycket oljud för sig. Turbo versionen kom med ett knock system men Nissan lyckades inget vidare med det. Fast detta var på tidigt 80.
Finns eftermarknads system men de är också svåra att anpass til denna motorn.
Tror problemet ligger i filter längden och sample window. Jag hade tänkt ett bandpass FIR filter. Men undrar om det finns något smartare sätt som inte kräver så mycket beräkningar
Frågan kankse skall vara, vad är ett resurs snålt sätt att detektera en energy peak av en viss frekvens av i en signal?
(Tack för tipset med interface kretss)
Tack
Frekvensen är beroende på motorvolymen så svårt att ta något annat system rakt av. Min motor är en gammal rak sexa med enkel överliggande kamaxel och solid lifters. De har mycket oljud för sig. Turbo versionen kom med ett knock system men Nissan lyckades inget vidare med det. Fast detta var på tidigt 80.
Finns eftermarknads system men de är också svåra att anpass til denna motorn.
Tror problemet ligger i filter längden och sample window. Jag hade tänkt ett bandpass FIR filter. Men undrar om det finns något smartare sätt som inte kräver så mycket beräkningar
Frågan kankse skall vara, vad är ett resurs snålt sätt att detektera en energy peak av en viss frekvens av i en signal?
(Tack för tipset med interface kretss)
Tack
Re: Arduino för enkel DSP applikation (motor Knock sensor)
Om du tar en färdig knacksensor från en bil så är den avstämd för just den motorn.
Här är två intressanta länkar:
http://garage.grumpysperformance.com/in ... info.3515/
http://www.diycardoctor.com/knock_sensor.htm
Här är två intressanta länkar:
http://garage.grumpysperformance.com/in ... info.3515/
http://www.diycardoctor.com/knock_sensor.htm