Stap 7: Laatste stap: de wiskunde, en de conclusies!
Dit project was leuk, en relatief eenvoudig te maken. Echter, het is een noviteit item. Ik stel nooit aan iemand dat het een goed idee om het verzadigen van de sensor zou zijn. Het is niet gezond om die dronken. U wilt niet eindigen als de man in het urinoir =)
In de toekomst, ik denk dat ik misschien een breathalyzer die een 0,00-0.13 heeft niveau van de bloedalcohol detectie. Ik heb hier een echte breathalyzer om vergelijkingen om te maken.
Als iemand van jullie nog vragen hebben, ben ik blij om te helpen. Ik hoop dat u vond dit instructable, en misschien had een lach!
BEZOEK MIJN YOUTUBE-KANAAL HIER:
http://www.YouTube.com/user/patrickikis
BEZOEK MIJN EBAY-WINKEL HIER:
http://Stores.eBay.com/hobbytronixstore
DE WISKUNDE:
Er is echt niet teveel wiskunde betrokken. De interne ADC voor de pic is met behulp van 5V en ground als verwijzingen. Omdat we hebben opgezet onze programma naar de de 10-bits ADC gegevens en negeren de minst significante bits, we zijn met behulp van een 8-bit register. Een 8-bit register kan binaire getallen die ten opzichte van decimale waarden zijn bevatten. Bijvoorbeeld:
1111 1111 = 255 decimaal = FF HEX
0000 0000 = 0 decimaal = 00 HEX
Aangezien we zijn met behulp van 5V als referentie, kunt pauze die het naar beneden ten opzichte van wat elke bit is de moeite waard in spanning. Hier is een gemakkelijke manier om het uitzoeken.
Elke bit is de moeite waard:
5V(ref) / 255 = 0.0197V, of *** 19.6mv* **
Dus 0000 0001 = 19.6mv = 01 HEX (merk op dat als u lui bent, kunt u een decimaal getal naar Hex berekening door te zoeken op google.
Aangezien de uitvoer van de sensor is "stabiel" in mijn configuratie wanneer de uitvoer 700mV is of minder. Zo aangezien wij doen een vergelijking in software moeten, moeten we om erachter te komen wat de Hex-waarde van 700mV is.
Hier is hoe wij het vinden:
Aangezien we weten dat een beetje is gelijk aan 19.6mv (0.0196), alles wat we moeten doen is verdelen van 700mv, maar dit beetje gewicht, en u hebt uw antwoord! 700mv (0.7) gedeeld door de 19.6mv (0.0196)
700mV = ongeveer 36 bits.
Zo 36 decimaal gelijk is aan 24 Hex. (0010 0100)
In het programma, zodra we het apparaat vertellen te nemen van een steekproef, doet het een kalibratie-reeks:
1) LAADT W-REGISTER MET 24 H
2) VERGELIJKEN MET DE WAARDE VAN ADC
3) IS W-REGISTER waarde groter dan ADC waarde (ADC waarde lager is dan 700mV)?
4) ALS JA, GA VERDER MET PROGRAMMA
4) ANDERS, PROEF OPNIEUW EN HERHAAL HET PROCES TOT MQ3 OUTPUT IS STABIEL
Aangezien het hoge einde van het spanningsbereik van de MQ3 in deze configuratie ongeveer 3.5VDC is, en de stabiele spanning 700mV is of onder, is de PIC geprogrammeerd vergelijkingen doen totdat het bepaalt welk niveau van dronkenschap bent u op te nemen verschillende waarden tussen. De volgende subroutine houdt het verplaatsen van waarden de de W registreren en vergelijkt het de ADC-waarde die werd bemonsterd nadat de gebruiker blies in de sensor. In de eerste stap, als de waarde van het ADC register (GEN5) kleiner is dan de waarde in WREG, zal het koos LED #1 (u zijn niet dronken). Als de waarde in het ADC register groter dan de waarde in WREG is, slaat u aan de volgende vergelijking (voor LED2). Voor de tweede vergelijking laden we een nieuw nummer in WREG dat komt neer op een hogere spanning vergelijking. Als ADC Register groter is dan inhoud van WREG, gaat u naar de volgende stap (LED3 vergelijking), zoniet, bel de routine die LED #2 oplicht.
BEPALEN:
MOVLW 0X24; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt; uw niveau van de bloedalcohol gevonden!
Bel LED1; zoniet, oplichten LED #1 (geen alcohol niveau gedetecteerd).
MOVLW 0X3B; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, u hebt uw niveau van de bloedalcohol gevonden!
Bel LED2; zoniet, oplichten LED #2 (een biertje of twee).
MOVLW 0X52; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt; uw niveau van de bloedalcohol gevonden!
Bel LED3; zoniet, oplichten LED #3 (twee of drie in het afgelopen uur - ongeveer. Waarschijnlijk; mag niet rijden).
MOVLW 0X69; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt; uw niveau van de bloedalcohol gevonden!
OPROEP LED4; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt f; ound uw niveau van de bloedalcohol!
Bel LED5; zoniet, oplichten LED #5 (dronken. Rijd niet, of hit op mensen die je kent dat je niet mag!).
MOVLW 0X95; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt gevonden; uw niveau van de bloedalcohol!
OPROEP LED5
OPROEP LED6
TERUGKEER