BME 3300 BAC Meter (7 / 8 stap)

Stap 7: Software

We hebben onze onderstaande voorbeeldcode geplakt. Deze code wordt ervan uitgegaan dat de spanning scheidingslijn is verbonden met pin A0, de groene LED is aangesloten op de digitale i/o-Pin 2 en de rode LED is aangesloten op de digitale i/o-Pin 3.

Claire & Kyle

Arduino Code voor afstudeerproject

de code van de bibliotheek omvatten:

#include

initialiseren van de bibliotheek met de nummers van de pennen van de interface

LiquidCrystal lcd(8,9,4,5,6,7);

input pincode instellen om te worden pin A0

Const int analogInPin = A0; Analoge invoer pin die de potentiometer is aangesloten op

int sensorValue = 0; waarde van het circuit leest

int loadResistor = 1465; waarde van de weerstand van de belasting die we hebben besloten te gebruiken (BAC van 0,08 overeenkomt met R van nauwe weerstandswaarde van 1440 zo gewend om te maximaliseren gevoeligheid op dit punt)

int greenLEDPin = 2; digitale IO-pin waarop onze groene LED is aangesloten

int redLEDPin = 3; digitale IO-pin waarop rode LED is aangesloten

initialiseren van alle variabelen voor de berekening van BAC

float actualVoltage;

float transducerResistance;

float gasConcentration;

float bloodConcentration;

float BAC;

float BACvalues [50];

float finalBAC;

float som;

VOID Setup {}

de LCD's aantal kolommen en rijen instellen:

LCD.begin (16, 2);

seriële communicatie 9600 bps te initialiseren:

Serial.begin(9600);

Stel de pinnen waar LEDs zijn aangesloten op de uitgang

pinMode(greenLEDPin,OUTPUT);

pinMode(redLEDPin,OUTPUT);

}

void loop {}

Wanneer de breathalyzer is eerst aangesloten (intro)

onze namen en de klassenaam afdrukken

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Claire & Kyle");

lcd.setCursor(0,1);

LCD.Print ("BMT 3300L");

Zorg ervoor dat het begin van de LEDs uitgeschakeld en de som begint bij 0

digitalWrite(greenLEDPin,LOW);

digitalWrite(redLEDPin,LOW);

som = 0;

Lees de analoge waarde:

sensorValue = analogRead(analogInPin);

de sensor-waarde omzetten in de werkelijke ingangsspanning

actualVoltage = float (sensorValue) * 5/1024;

hier zeggen als knop wordt ingedrukt, gaat u naar het startscherm breathalyzer (pre-test)

Als (actualVoltage > = 0 & & actualVoltage < = 2,00) {}

instructies voor de test uitprinten

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Blow (3 seconden)");

lcd.setCursor(0,1);

LCD.Print ("Push to start");

delay(1000);

Lees de analoge waarde:

sensorValue = analogRead(analogInPin);

de sensor-waarde omzetten in de werkelijke ingangsspanning

actualVoltage = float (sensorValue) * 5/1024;

zo lang als de knop niet is ingedrukt, de instructies voor de test vieren vertoning

terwijl (actualVoltage > = 2.00 || actualVoltage < = 0) {}

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Blow (3 seconden)");

lcd.setCursor(0,1);

LCD.Print ("Push to start");

delay(1000);

Lees de analoge waarde:

sensorValue = analogRead(analogInPin);

de sensor-waarde omzetten in de werkelijke ingangsspanning

actualVoltage = float (sensorValue) * 5/1024;

}

Dit is nadat de knop is ingedrukt (b/c niet langer in de while lus)

Start de test uitvoeren

Vertel hen te blazen, de BAC op elk punt uitprinten

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Blow nu");

lcd.setCursor(0,1);

LCD.Print ("BAC =");

delay(1000);

doorlopen en BAC opnemen over de beproeving tijd

voor (int ii = 0; ii < 50; ii ++) {}

Dit is de code voor het daadwerkelijk berekenen van BAC uit het circuit

Lees de analoge waarde:

sensorValue = analogRead(analogInPin);

de sensor-waarde omzetten in de werkelijke ingangsspanning

actualVoltage = float (sensorValue) * 5/1024;

berekenen de weerstand van de transducer

transducerResistance = 5 * loadResistor/actualVoltage - loadResistor;

de weerstand van de transducer en de gevoeligheid van de transducer gebruiken om te bepalen van de gasconcentratie

Sinds wij kan alleen zin > 50ppm, gebaseerd op kalibratie ingesteld BAC op 0 wanneer weerstand groter dan 1900 is

Als (transducerResistance < 1900) {}

gasConcentration = - 0.257 * transducerResistance + 538.55;

}

else {}

gasConcentration = 0;

}

de gasconcentratie gebruiken voor het berekenen van de concentratie in het bloed

bloodConcentration = gasConcentration/0.21;

gebruik van de concentratie van bloed aan output de BAC

BAC = bloodConcentration/10000;

de resultaten naar de seriële monitor wilt afdrukken:

Dit is handig voor ons tijdens de testfase om te volgen wat er gebeurt

Serial.Print ("sensor =");

Serial.Print(sensorValue);

Serial.Print ("\t spanning =");

Serial.Print(actualVoltage);

Serial.Print ("\t weerstand =");

Serial.Print(transducerResistance);

Serial.Print ("\t gasconcentratie =");

Serial.Print(gasConcentration);

Serial.Print ("\t bloed concentratie =");

Serial.Print(bloodConcentration);

Serial.Print ("\t BAC =");

Serial.println(BAC);

de resultaten op de LCD-afdrukken:

tijdens de test, drukt u elk gegevenspunt met zeggen te blazen

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Blow nu");

lcd.setCursor(0,1);

LCD.Print ("BAC =");

LCD.Print(BAC);

BACvalues [ii] = BAC;

}

de definitieve BAC om weer te geven door het gemiddelde van de waarden op de punten van de middelste tijd te berekenen

de eindpunten uitgesloten omdat ze niet worden aan het begin of einde blazen kunnen

de noodzaak om te filteren omdat resultaten zeer stabiel waren vinden niet

voor (int kk = 15; kk < 35; kk ++) {}

som = som + BACvalues [kk];

}

de definitieve BAC om weer te geven door het gemiddelde over het relevante tijdschema te krijgen

finalBAC = som/20;

code om te schakelen de LEDs

Als de BAC lager dan de wettelijk toegestane limiet is, schakelt u de groene LED

if(BAC<0.08) {}

digitalWrite(greenLEDPin,HIGH);

digitalWrite(redLEDPin,LOW);

}

Als de BAC niet onder de wettelijke limiet is, het inschakelen van de rode LED

else {}

digitalWrite(greenLEDPin,LOW);

digitalWrite(redLEDPin,HIGH);

}

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Test voltooid");

lcd.setCursor(0,1);

LCD.Print ("BAC =");

LCD.Print(finalBAC);

delay(10000);

Serial.Print ("definitieve BAC =");

Serial.println(finalBAC);

}

delay(1000);

}

Gerelateerde Artikelen

Rits bac met verzegelde lippen

Rits bac met verzegelde lippen

voor dit gebruikte ik een rits van Joanns de langste men ze had.  Ik gebruikte latex om de rits vasthouden aan de achterkant. Ik geript een oude witte t-shirt
Eenvoudige BAC Detector apparaat

Eenvoudige BAC Detector apparaat

Algemene doelstellingen:Het bouwen van een werkende bloed Alcohol concentratie Analyzer met behulp van een Pt-elektrode gas sensor dat alcohol in de adem tot 10% nauwkeurigheid zullen meten. Het circuit zal ook een Arduino Uno, een LCD-scherm en een
Duct Tape boot!

Duct Tape boot!

Dit weekend-project zal verbaas uw vrienden en tal van enterianment. Het bewijst dat buis nemen elk ding kan doen.Project tijd: over 5 uurMaterialen20 rollen plakband.Hog panneling.Ongeveer 200 zip-banden.Vier (zodat de binnenkant niet plakkerig).Opt
Deelvenster Meter weerstation met Photon

Deelvenster Meter weerstation met Photon

Voor mij is bespreking van het weer meer dan nutteloos geklets. Dus toen ik ook geïnteresseerd in de web-toegelaten elektronica (het Internet van dingen), ik meteen wist dat mijn eerste IoT-project zou worden gerelateerd aan het eerste wat ik doe als
DIY-aan de slag met DRONES (met externe kalibratie)

DIY-aan de slag met DRONES (met externe kalibratie)

Wat zijn ze en wie hen gebruikt? Sommigen noemen hen drones, sommige gelden het label "quadcopters", al hebben ze een aantal rotoren of zelfs vliegtuigen worden - een afkorting voor hen "onbemande antenne systemen" (UAS). Ik liever noe
AC met LEDs (Part 2) - en maken deze handige teller licht.

AC met LEDs (Part 2) - en maken deze handige teller licht.

In het gebruiken van AC met LEDs (deel 1) hebben we gekeken naar een eenvoudige manier uit te voeren van LEDs met een transformator aangesloten op AC Mains.Hier, zullen we kijken bij het krijgen van onze LEDs te werken zonder een transformator en bou
Bouwen van een klimmuur thuis met een verstelbare overstek

Bouwen van een klimmuur thuis met een verstelbare overstek

mijn klimmuur nam één weekend te bouwen en kost ongeveer 300 pond en de helft uit die werd besteed aan de hand houdt.Er zijn tal van online bronnen voor het bouwen van een klimmuur de volgende links die ik zelf heb gebruikt terwijl de bouw van mijn m
Bijhouden van torentje met PIC en C IR

Bijhouden van torentje met PIC en C IR

Dit is een goede leren-project dat is leuk om te bouwen - ik veel gelopen waardoor het. Ik denk dat dit vrij een beetje al gebeurd, maar ik vond niet dat een eenvoudige manier om dit te doen met foto's. Toen ik eindelijk het werkt, ik dacht dat ik zo
Vervanging voor chirurgische lamp lampen met behulp van LED circuit

Vervanging voor chirurgische lamp lampen met behulp van LED circuit

stap voor stap instructies voor het bouwen en implementeren van de vervanging chirurgische lamp lamp systeem met behulp van een LED-circuit ontwikkeld door Mohammed Shafir en Zoe Englander als onderdeel van de cursus BME 262-ontwerp voor de derde wer
Meten van Li-ion cel capaciteit met een arduino

Meten van Li-ion cel capaciteit met een arduino

Abstract: Programmeren van een arduino en bouw een circuit voor het meten van de bruikbare capaciteit van lithium-ion cellen.De motivatie voor dit project kwam tot stand omdat ik heb een heleboel 18650 lithium-ion-cellen die ik uit laptopbatterijen g
Sous Vide Thermoplongeur Typ 'Roner' avec une machine à wasbekken / / / Sous Vide onderdompeling type 'Roner' met een wasmachine

Sous Vide Thermoplongeur Typ 'Roner' avec une machine à wasbekken / / / Sous Vide onderdompeling type 'Roner' met een wasmachine

Voici commentaar réaliser un thermoplongeur type 'Roner' avec une machine à wasbekken.Liste d'achat:-une machine à wasbekken (gratuit dans mon cas)-VN-thermokoppel achat sur Aliexpress pour 6 €-Une Boîte à fusible "IP65" achat à Brico nl Frankri
Draagbare aandrijving van de zon-Tracking zonnepaneel met A Windup klok

Draagbare aandrijving van de zon-Tracking zonnepaneel met A Windup klok

ik heb net ontwierp en bouwde een zelfgemaakte zonne-tracker dan kunnen gemakkelijk instellen nauwkeurig uitgelijnd op de hoogte van de zon (zoals dagelijks, met de seizoenen verandert), en ook getrouw het bijhouden van de zon, vanaf zonsopgang tot z
Arduino Bac rekenmachine

Arduino Bac rekenmachine

Dit is een instructable op hoe maak je een eenvoudige schakeling met behulp van een sensor van de alcohol MQ-3 om te meten BAC niveau. We zullen gebruiken arduino code en een arduino schild lcd om het berekende niveau van de BAC weer te geven.Stap 1:
Zonne-Spinner - Magbot (200 rpm met geen motor)

Zonne-Spinner - Magbot (200 rpm met geen motor)

Cool zonne-Spinner van JunkTotale uitgaven: US$ 0,75 thats right, 75 centen! Alles was hersteld van oude elektronische rommelDit zonne-aangedreven sieraad draait op maximaal 200 rpm in direct zonlicht en werd gemaakt over 5hrs.2 spinners in vroege oc