Stap 5: Korting op de plank sensoren (olietemperatuur en oliedruk)
De plank sensoren worden gebruikt met aftermarket meters om autoliefhebbers en racers meer detail over motor functie dan is beschikbaar via het dashboard te bekijken en mogelijk zelfs de OBD-II-poort. Ze moeten worden geïnstalleerd in de auto volgens de aanwijzingen van de fabrikant nauwkeurig en veilig lezingen geven.
De sensoren die ik gebruik hier allebei van een bedrijf genaamd Autometer wie heeft het maken van meters voor vele jaren en waarvan de producten worden gebruikt door vele professionele race teams (zelfs degenen die ze niet sponsoren). Ze zijn ook komende met percelen tonen wat elektrisch als de sensoren werken. Beide gebeuren om te werken met het veranderen van de weerstand waarden in een kromlijnige mode met betrekking tot de dingen die ze zin. Microcontrollers of meer in het bijzonder analoog naar digitaal conversieprogramma's werken op spanning logica en digitale waarden toewijzen aan spanningen pakte off van ingangen. Velen zijn 5 en 3 volt logica.
Om de weerstand omzetten in spanning iets genaamd een divider spanning wordt gebruikt. Een verdeler van spanning is een eenvoudige schakeling waarmee de variabele weerstand van de sensor en een onveranderlijke weerstand een uitgangsspanning ergens tussen 0 en de ingangsspanning. Voor meer informatie over dat kijk hier: en hier https://learn.sparkfun.com/tutorials/voltage-dividers
In het geval van de analoog naar digitaal converter op de edison krijg je 1024 stappen in een bereik van 5 volt, dat vrij standaard op microcontrollers vandaag is (u krijgt het zelfde ding op de arduino). Je moet om te kunnen gebruiken van het maximum aantal dat digitale stappen van 1024 optimaliseren voor een bepaald deel van de weerstand tegen het lezen van de curve voor uw sensoren. Gelukkig dit gebeurd voor uw en een eenvoudige formule is geschreven om dit probleem op te lossen.
RS=sqrt(RMIN×RMAX)
Kies de korting op de plank weerstand die zich het dichtst bij het antwoord.
In de foto's voor deze pagina ziet u hookup diagrammen voor deze sensoren. Opmerking dat meestal het schroefdraad deel van de sensoren is de grond en krijgt een grounder naar de motor gewoon door het schroeven in de galerij stekker of sensor distributie je gebruikt. U kunt deze sensoren gemakkelijk testen door verwarming wat olie in een pan of gebruik van een fiets pomp.
Hier is mijn code voor de twee sensoren:
#oiltemp sensor#based on the autometer 2258(9) fluid temp sender #use with a 150 ohm resistor at R2 and the sensor at R1 of a voltage divider import mraa
def getOilTemp(pin): try: a = mraa.Aio(pin) tval = a.read() if (tval < 120): return (0) if (tval < 904): return((-.194 * tval + 195)) if ((tval >= 120 )and(tval < 179)): return (-7.111 * tval + 1981) if ((tval >= 179 )and(tval < 252)): return (-3.407 * tval + 1318) if ((tval >= 252 )and(tval < 293)): return (-2.081 * tval + 984) if ((tval >= 293 )and(tval < 381)): return (-1.375 * tval + 777) if ((tval >= 381 )and(tval < 473)): return (-.853 * tval + 578) if ((tval >= 473 )and(tval < 563)): return (-0.578 * tval + 448) if ((tval >= 563 )and(tval < 571)): return (-4.78 * tval + 392) if ((tval >= 571 )and(tval < 602)): return (-0.447 * tval + 374) if ((tval >= 602 )and(tval < 643)): return (-0.397 * tval + 344) if ((tval >= 643 )and(tval < 714)): return (-0.335 * tval + 304) if ((tval >= 714 )and(tval < 800)): return (-0.269 * tval + 257) if ((tval >= 800 )and(tval < 844)): return (-.228 * tval + 224) if ((tval >= 844 )and(tval < 878)): return (-.207 * tval + 207) if ((tval >= 878 )and(tval < 904)): return (-.194 * tval + 195) except: print("can't ADC for this sensor")
#oil pressure sensor#based on the autometer 2242 oil pressure sender #voltage divider with the sensor as R2 and R1 as a 100 Ohm resistor. #returns a value that is the actual value * 10 import mraa
def getOilPressure(pin): try: a = mraa.Aio(pin) tval = a.read() if (psival > 722): return 0 if (psival < 257): return 9999 if ((psival <= 722)and(psival > 619)): return 1747 - (psival*240)/100 if ((psival <= 619)and(psival > 520)): return 1802 - (psival*250)/100 if ((psival <= 520)and(psival > 411)): return 1694 - (psival*230)/100 if ((psival <= 411)and(psival > 257)): return 1418 - (psival*160)/100 except: print("can't ADC for this sensor")
Gelieve opgemerkt dat ik hebben verdeeld de gebogen reactie-functie in verschillende stappen. In sommige gevallen waar de curve is wiskundig complexe (of de microcontroller is niet bedreven in dat soort wiskunde) kan dit responstijden verkorten.