Talande Breathalyzer Mark II (7 / 7 steg)
Steg 7: Sista steget: matematik och slutsatser!
Detta projekt var kul, och relativt enkla att göra. Det är dock en nyhet objekt. Jag skulle aldrig föreslå någon att det vore en bra idé att mätta sensorn. Det är inte hälsosamt att få det berusat. Du vill inte sluta som killen i pissoaren =)
I framtiden, jag tror jag kan göra en Alkoholmätare som har en 0,00-0,13 promillehalt upptäckt. Jag har en riktig breathalyzer här för att göra jämförelser.
Om någon av er har några frågor, jag hjälper gärna till. Jag hoppas du gillade detta instructable, och kanske hade ett skratt!
BESÖK MIN YOUTUBE-KANAL HÄR:
http://www.youtube.com/user/patrickikis
BESÖK MIN EBAY BUTIK HÄR:
http://Stores.ebay.com/hobbytronixstore
MATEMATIK:
Det är verkligen inte för mycket matematik involverad. Den inre ADC av pic använder 5V och marken som referenser. Eftersom vi har skapat vårt program för att den 10-bitars ADC data och ignorera de minst signifikanta bitarna, vi använder en 8-bitars register. En 8-bitars register kan hålla binära tal som är i förhållande till decimalvärden. Till exempel:
1111 1111 = 255 decimal = FF HEX
0000 0000 = 0 decimal = 00 HEX
Eftersom vi använder 5V som referens, kan bryta ner det i förhållande till vad varje bit är värt i spänning. Här är ett enkelt sätt att räkna ut.
Varje bit är värt:
5V(Ref) / 255 = 0.0197V, eller *** 19.6mv* **
Så 0000 0001 = 19.6mv = 01 HEX (Observera att om du är lat, kan du hitta en decimal till Hex beräkningen genom att söka google.
Eftersom produktionen av sensorn är "stabil" i min konfiguration när utgången är 700mV eller mindre. Så eftersom vi har att göra en jämförelse i programvara, måste vi räkna ut vad Hexvärde av 700mV är.
Här är hur vi hitta den:
Eftersom vi vet att en bit är lika med 19.6mv (0.0196), allt vi behöver göra är att dela upp 700mv, men denna lite vikt, och du har ditt svar! 700mv (0,7) dividerat med 19.6mv (0.0196)
700mV = ungefär 36 bitar.
Så 36 Decimal är lika med 24 Hex. (0010 0100)
I programmet, när vi berättar för att enheten ska ta ett prov, gör det en kalibrering sekvens:
1) BELASTNING W-REGISTER MED 24 H
2) JÄMFÖR DEN MED VÄRDET FRÅN ADC
3) är W-REGISTER värde större än ADC värde (ADC värde är mindre än 700mV)?
4) OM JA, GÅ VIDARE MED PROGRAMMET
4) ANNARS, PROVA IGEN OCH UPPREPA PROCESSEN TILLS MQ3 UTGÅNG ÄR STABIL
Eftersom den övre delen av intervallet spänning av MQ3 i den här konfigurationen är ungefär 3.5VDC, och stabil spänningen är 700mV eller under, är PIC programmerad att ta olika värden i mellan och göra jämförelser tills den bestämmer vilken nivå av fylleri du är på. Följande subrutinen håller flytta värden i den W registrera och jämför det med ADC-värdet som har tagits efter användaren blåste i sensorn. I det första steget, om värdet av det ADC registret (GEN5) är mindre än värdet i WREG, kommer det valde LED #1 (du inte är berusad). Om värdet i ADC registret är större än värdet i WREG, sedan hoppa du till nästa jämförelsen (för LED2). För andra jämförelse, läsa vi in ett nytt nummer i WREG som motsvarar en högre spänning jämförelse. Om ADC Register är större än innehållet i WREG, gå till nästa steg (LED3 jämförelse), om inte, ring den rutin som lyser upp LED #2.
BESTÄMMA:
MOVLW 0X24; Flytta värdet i WREG för referens
CPFSGT GEN5; om ADC värdet är större än WREG, hoppa över nästa instruktion, om inte, du har; hittat din alkohol nivå!
Ring LED1; annars tänds LED #1 (ingen alkohol nivå upptäckt).
MOVLW 0X3B; Flytta värdet i WREG för referens
CPFSGT GEN5; om ADC värdet är större än WREG, hoppa över nästa instruktion, om inte, du har hittat din alkohol nivå!
Ring LED2; annars tänds LED #2 (en öl eller två).
MOVLW 0X52; Flytta värdet i WREG för referens
CPFSGT GEN5; om ADC värdet är större än WREG, hoppa över nästa instruktion, om inte, du har; hittat din alkohol nivå!
Ring LED3, om inte, tänds lysdiod #3 (två eller tre under den senaste timmen - ungefär. Sannolikt, bör inte köra).
MOVLW 0X69; Flytta värdet i WREG för referens
CPFSGT GEN5; om ADC värdet är större än WREG, hoppa över nästa instruktion, om inte, du har; hittat din alkohol nivå!
KALLA LED4; Flytta värdet i WREG för referens
CPFSGT GEN5; om ADC värdet är större än WREG, hoppa över nästa instruktion, om inte, du har f; ound din alkohol nivå!
Ring LED5, om inte, tänds LED #5 (berusad. Inte driva, eller slå på människor du känner att du inte borde!).
MOVLW 0X95; Flytta värdet i WREG för referens
CPFSGT GEN5; om ADC värdet är större än WREG, hoppa över nästa instruktion, om inte, du har hittat; din alkohol nivå!
KALLA LED5
KALLA LED6
ÅTERGÅ