Hacking Automotive ultraljudssensorer (2 / 3 steg)
Steg 2: programvara
Nu för vissa program.
Nedan är ett par av LSA (logik staten analyzer) tomter som visar kommunikationen mellan modulen UPA och sensorer.
Planen är att förstå dessa tomter till en punkt där jag kan ha MBed återge dem. Om MBed kunde skapa puls tågen kunde sedan kanske sensorn övertygas att fungera normalt.
Ta en titt på oscilloskop handlingen nedan. Det är en bra sak jag fick av min duffs och uppkopplad min räckvidd. Räckvidd gör det möjligt att skilja mellan mikro- och sensor i form av som aktivt talar på bussen. Omfattningen tomten visar en ping-kommandot skickas och sensorns omedelbart svar. Skillnaden kan göras baserat på spänningsnivån under en låg nivå på bussen. UPA drar bussen till en lägre spänning än sensorn gör. Tja, kom denna upptäckt säker väl till pass!
Utveckla MBed källkoden blev en mater långsamt reproducera puls tåget som jag fångat med LSA.
Direkt efter uppstart verkar det att UPA skickar en massa data till sensorerna. Två sensorer monterade mitt i fascian får en uppsättning data och två utanför sensorer får en annan uppsättning. Jag gissar två center sensorerna är inställda med en högre vinst värde än utanför två sensorer. Det är också sannolikt dessa värden är olika mellan olika fordon plattformar. Spelar egentligen ingen roll, jag har fångat båda och kan återge antingen en med MBed.
Efter initieringen pulserar det är ett annat par av pulser. Kanske ett par reset-kommandon? Inte säker. Igen, jag har källkoden för den MBed som kan återge dem.
Slutligen, UPA modulen går in i aktiv sensor skanningsläget. Denna skanningsläget består av pinga och lyssnar på sensorer i en resursallokering mode. Observera att en sensor kan ange att ping, eller bara lyssna. Så, en annan knep. I samma ögonblick i tiden kommandon UPA en sensor att pinga samtidigt som det drar en annan sensor (eller två) att lyssna. Om ett objekt är rätt framför sensorn som genererade ping kommer inte sedan att sensorn förmodligen höra det returnera ekot. Detta är känt som ring-ner problemet. När en sensor ger en ping finns det en tidsfördröjning innan den kan ta emot ekon tillbaka. En nära objektets avkastning echo är sannolikt förlorade i denna dröjtiden. En enda sensor lyssna har inte en ring-ner döda tid. Därför de ultraljud energin produceras på en sensor (pinga sensorn), energi studsar en närliggande objekt och återgår till en annan sensor. Cool eh?
Låt mig upprepa ring ner problemet eftersom min beskrivning ovan var nog förvirrande. En sensor kan fungera som en Ultraljuds högtalare, eller, som en Ultraljuds mikrofon. Växla mellan högtalare läge till mikrofon läge tar lite tid eftersom ansiktet av sensorn fortfarande vibrerar under en kort tid efter Piezoelementet slutar. Uppehållstiden mellan läge kallas ring ner och alla enskilt element sensorer har detta problem. Ring-down dikterar hur nära ett objekt kan upptäckas. För dessa sensorer är som ca 16cm.
Med den maskinvara och programvara på plats kan sensorerna nu styras utan mycket problem. Bifogade MBed koden initierar sensorer och sedan börjar aktivt pinga dem.
MBed koden kan ändras lätt för att stämma andra program. Målet var att helt enkelt ge en grund av kod som kan anpassas till andra användningsområden.
Uppdatering: Efter lite tester upptäckte jag sensorn kommer att svara på ping kommandon även om initieringsdata inte skickas till sensorn vid uppstart. Sensorn måste spara kalibreringsdata i flash eller EEPROM. Modulen UPA ska skicka data på varje makt cykel bara för bra åtgärd.