Remote bil övervakning och spårning med Intel Edison (5 / 5 steg)
Steg 5: Off hyllan sensorerna (oljetemperatur och oljetryck)
Från hyllan sensorer används med eftermarknad mätare att bilentusiaster och racers Visa fler detaljer om motorns funktion än är tillgänglig via instrumentpanelen och eventuellt även OBD II hamnen. De bör installeras i bilen enligt tillverkarens anvisningar att ge exakta och säkra behandlingar.
Båda sensorerna jag använder här är från ett företag som heter Autometer som har tillverkat mätare i många år och vars produkter används av många professionella race team (även sådana som de inte sponsra). De är också kommande med tomter som visar vad som händer elektriskt när sensorerna fungerar. Båda dessa råkar arbeta med ändring Motståndsvärden i en krökt mode när det gäller de saker de känner. Mikrokontroller eller mer specifikt analog till digital omvandlare fungerar på spänning logik och tilldela digitala värden för spänningar plockas upp av insatsvaror. Många är 5 och 3 volt logik.
För att konvertera motstånd till spänningen något som kallas en Spänningsavdelare används. En spänningsavdelare är en enkel krets som använder sensorn och en oföränderlig resistor variabel motstånd till en utspänning någonstans mellan 0 och mata inspänningen. För mer information om att titta här: och här https://learn.sparkfun.com/tutorials/voltage-dividers
För analog till digital omvandlare på edison får du 1024 steg i en 5 volt spänner, som är ganska standard på mikrokontroller idag (du får samma sak på arduino). För att använda den maximala räckvidden av de 1024 digitala steg måste du optimera för en viss del av motståndet mot att läsa kurva för dina sensorer. Lyckligtvis detta har gjorts din och en enkel formel har skrivits att lösa problemet.
RS=sqrt(RMIN×RMAX)
Sedan plocka den off hyllan motståndet som är närmast svaret.
På bilderna på denna sida ser du hookup diagram för dessa sensorer. Observera att oftast den gängade delen av sensorerna är marken och får startförbud till motorn helt enkelt genom att skruva det i Galleri kontakten eller sensor distribution pekar du använder. Du kan enkelt testa dessa sensorer genom uppvärmning lite olja i en stekpanna eller använda en cykel pump.
Här är min kod för två sensorer:
#oiltemp sensor
#based på autometer 2258(9) vätska temp avsändaren
#use med en 150 ohm resistor på R2 och sensorn på R1 av en spänningsavdelare
importera mraa
def getOilTemp(pin):
försök:
en = mraa. AIO(PIN)
tval = a.read()
om (tval < 120):
avkastning (0)
om (tval < 904):
tillbaka ((-.194 * tval + 195))
om ((tval > = 120) och (tval < 179)):
Return (-7.111 * tval + 1981)
om ((tval > = 179) och (tval < 252)):
Return (-3.407 * tval + 1318)
om ((tval > = 252) och (tval < 293)):
Return (-2.081 * tval + 984)
om ((tval > = 293) och (tval < 381)):
Return (-1.375 * tval + 777)
om ((tval > = 381) och (tval < 473)):
Return (-.853 * tval + 578)
om ((tval > = 473) och (tval < 563)):
Return (-0.578 * tval + 448)
om ((tval > = 563) och (tval < 571)):
Return (-4.78 * tval + 392)
om ((tval > = 571) och (tval < 602)):
Return (-0.447 * tval + 374)
om ((tval > = 602) och (tval < 643)):
Return (-0.397 * tval + 344)
om ((tval > = 643) och (tval < 714)):
Return (-0.335 * tval + 304)
om ((tval > = 714) och (tval < 800)):
Return (-0.269 * tval + 257)
om ((tval > = 800) och (tval < 844)):
Return (-.228 * tval + 224)
om ((tval > = 844) och (tval < 878)):
Return (-.207 * tval + 207)
om ((tval > = 878) och (tval < 904)):
Return (-.194 * tval + 195)
utom:
skriva ut ("kan inte ADC för denna sensor")
#oil trycksensor
#based på autometer 2242 olja tryck avsändaren
#voltage divider med sensor som R2 och R1 som en 100 ohms motstånd.
#returns ett värde som är det faktiska värdet * 10
importera mraa
def getOilPressure(pin):
försök:
en = mraa. AIO(PIN)
tval = a.read()
om (psival > 722):
returnera 0
om (psival < 257):
returnera 9999
om ((psival < = 722) och (psival > 619)):
returnera 1747 - (psival * 240) / 100
om ((psival < = 619) och (psival > 520)):
returnera 1802 - (psival * 250) / 100
om ((psival < = 520) och (psival > 411)):
returnera 1694 - (psival * 230) / 100
om ((psival < = 411) och (psival > 257)):
returnera 1418 - (psival * 160) / 100
utom:
skriva ut ("kan inte ADC för denna sensor")
Vänligen notera att jag har delat den böjda svar funktionen i flera steg. I vissa fall där kurvan är matematiskt komplicerade (eller mikrokontroller inte är skickliga på att typ av matematik) kan detta förkorta svarstiderna.