Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Sluit een sensor aan op je Raspberry Pi om je te waarschuwen wanneer er schadelijke gassen in de buurt zijn!

Om een ​​scheet te detecteren met de Raspberry Pi, moeten we een sensor gebruiken die reageert op een of meer van de vluchtige zwavelverbindingen die 1% van winderigheid uitmaken (d.w.z. de verbindingen die scheten doen ruiken). In wezen moeten we de Raspberry Pi een neus geven. De aanbevolen sensor voor dit project is de Figaro TGS2600. Wanneer lucht de sensor binnenkomt, wordt deze bekrachtigd door een kleine verwarming waarmee de elektrische weerstand kan worden gemeten. Dit wordt gedaan door een laag niveau van elektriciteit over een kleine opening van geactiveerde lucht te leiden. Hoe meer vervuild de lucht is, hoe minder weerstand het heeft en hoe beter het elektriciteit geleidt (zoals een variabele weerstand). De output van de sensor is daarom een ​​analoge spanning die op en neer gaat naargelang de vervuiling van de lucht. Hoe meer verontreinigingen, hoe hoger de uitgangsspanning.

Analoog versus digitaal

We moeten ook begrijpen dat de luchtkwaliteitssensor ons een analoog signaal geeft, en het verschil tussen een analoog en een digitaal signaal. Digitale signalen zijn in wezen binair:1 of 0; aan of uit. Analoge signalen daarentegen hebben het volledige bereik tussen aan of uit. Denk aan het stuur van een auto:het stuur is analoog omdat er een volledige besturing beschikbaar is voor de bestuurder. Je kunt heel voorzichtig door een lange bochtige bocht sturen, je kunt het stuur volledig op slot draaien, of ergens daartussenin. Als je een auto digitaal zou willen besturen, zou je eigenlijk alleen full lock links en full lock rechts hebben.

Een analoog signaal lezen met een digitaal apparaat

De uitdaging waar we voor staan ​​is het kunnen lezen van een analoog signaal op een digitale computer. De Raspberry Pi GPIO-pinnen kunnen als in- of uitgangen worden gebruikt. Uitgangsmodus is voor wanneer u spanning wilt leveren aan bijvoorbeeld een LED of een zoemer. Als we de invoermodus gebruiken, heeft een GPIO-pin een waarde die we in onze code kunnen lezen. Als er spanning op de pin zit, is de waarde 1 (HOOG ); als de pin rechtstreeks op aarde was aangesloten (geen spanning), zou de waarde 0 . zijn (LAAG ). De pinnen zijn dus digitaal, waardoor slechts 1 of 0 .

Hoe kunnen we dit oplossen? Eén manier zou zijn om een ​​ADC-chip (analoog naar digitaal converter) te gebruiken, die de analoge spanning van de sensor zou omzetten in een digitaal getal in onze code. U hoeft echter alleen een ADC te gebruiken als een echt nauwkeurige meting van de sensor was nodig. In de praktijk willen we gewoon een alarm laten afgaan als er een scheet is gedetecteerd, zodat iedereen kan rennen! Dus als je erover nadenkt, dit is een digitale detectie. Er is is een scheet of er is geen scheet:aan of uit, binair 1 of 0. We hoeven ons geen zorgen te maken over de analoge getrouwheid van de luchtkwaliteitssensor.

We weten al dat de sensor als een variabele weerstand is:hoe slechter de luchtkwaliteit, hoe lager de weerstand en hoe meer spanning er wordt doorgelaten. Logischerwijs, wanneer de sensor in contact komt met een scheet, zou de uitgangsspanning moeten pieken. Daarom hoeven we alleen deze spanningspieken te detecteren en dat kan digitaal gebeuren. We kunnen ervoor zorgen dat wanneer een piek optreedt, een GPIO-pin van LAAG naar HOOG gaat; we kunnen dan deze verandering in onze code detecteren en een alarmgeluidsbestand afspelen!

De hoge en lage drempel

Hoe weet de Raspberry Pi of een GPIO-pin HOOG of LAAG is?

Het antwoord op deze vraag is eigenlijk een deel van onze oplossing. De GPIO-pinnen werken op 3,3 volt. Dus als u een pin in de uitvoermodus op HOOG instelt, zal die pin 3,3 volt geven/leveren. Als je het echter instelt op output LOW, wordt het verbonden met aarde, maar kan het het retourpad vormen voor het voltooien van een circuit.

In de invoermodus werkt het iets anders. Je zou kunnen aannemen dat de aflezing van de pin HOOG zou zijn als deze was aangesloten op 3,3 volt en LAAG als deze was aangesloten op aarde. Er is eigenlijk een spanning drempel dat ligt ergens rond de 1,1 tot 1,4 volt. Onder de drempel is LAAG en daarboven is HOOG; dus 1,0 volt zou bijvoorbeeld LAAG aangeven, ondanks dat er daadwerkelijk wat spanning is, terwijl 1,6 volt HOOG zou zijn, ondanks dat dit een stuk minder is dan 3,3.

Als we wat weerstanden gebruiken om de uitgangsspanning van de luchtkwaliteitssensor te verlagen tot net onder deze drempel, dan zal de piek veroorzaakt door een scheet het van LAAG naar HOOG doen kantelen, en hebben we onze digitale scheetdetectie.

Bedraad de luchtkwaliteitssensor

Dit is het onderaanzicht van de luchtkwaliteitssensor. De pinnummers hebben de volgende functies:

  1. Verwarming (-)
  2. Sensorelektrode (-)
  3. Sensorelektrode (+)
  4. Verwarming (+)

Er zijn dus twee verschillende circuits die we moeten accommoderen. De eerste is de verwarmer (pinnen 1 en 4) die wordt gebruikt om de lucht te activeren, en de andere is de sensor zelf (pinnen 2 en 3). De output (-) kant van de sensor is waar we onze weerstanden zullen aansluiten. Neem het breadboard en duw de vier pinnen van de sensor erin, zodat deze zich over de centrale opening uitstrekt, zoals hieronder weergegeven. Mogelijk moet u de pinnen een beetje buigen, maar dit is niet schadelijk voor de sensor. Zorg ervoor dat het kleine lipje zich in dezelfde richting bevindt als weergegeven.

belangrijk lees a.u.b.
Het bovenstaande diagram toont een Raspberry Pi-model B, als je een B+ of de nieuwe Pi 2 gebruikt, zijn de eerste 26 GPIO-pinnen allemaal hetzelfde. U kunt dus dezelfde pinnen gebruiken als aangegeven in de diagrammen.

De sensor kan op 5 volt werken, maar we gaan hem hier op 3,3 volt draaien, omdat dit veiliger is voor gebruik met een GPIO-ingang. Gebruik de jumperdraden om de hierboven getoonde oranje verbindingen te maken; deze levert 3,3 volt aan pinnen 3 en 4 van de sensor (beide positieve elektroden). De kleur van de draad die je gebruikt maakt niet uit. Sluit vervolgens de negatieve (-) aansluiting van de verwarming rechtstreeks aan op aarde, zoals hierboven aangegeven door de zwarte draden.

We moeten nog iets doen met de negatieve kant van de sensor, rij 1 in de rechterbovenhoek van het breadboard.

Bedraad de triggerpin

Schakel de Raspberry Pi uit, als deze nog niet is uitgeschakeld, door het volgende in te voeren:

sudo halt 

Koppel de stroom even los; we zullen het later weer aansluiten.

Laten we vervolgens de uitgang van de sensor verbinden met een van de GPIO-pinnen:dit zal de trigger-pin zijn die we in onze code zullen controleren om te zien of er een scheet is opgetreden. Gebruik hiervoor GPIO 4. Neem een ​​jumperdraad en maak de onderstaande witte verbinding.

Neem vervolgens een weerstand van 47 kΩ (weerstanden hebben een kleurcode om u te helpen ze te identificeren) en sluit deze aan tussen de sensoruitgang en aarde zoals hierboven weergegeven. Dit zal een deel van de spanning die afkomstig is van de sensoruitgang overhevelen, om het te helpen verlagen naar het 1,1 tot 1,4 volt-gebied van de GPIO-drempel voor onze triggerpin. Deze enkele weerstand zal echter niet genoeg zijn om de klus te klaren, dus lees verder.

Bouw een weerstandsladder DAC

Het probleem dat we nu hebben, is dat ondanks de toevoeging van de 47kΩ-weerstand, de luchtkwaliteitssensor een vrij groot uitgangsspanningsbereik heeft. 0 volt zou zijn wat we in een vacuüm zouden vinden, terwijl de maximale 3,3 zou zijn wat we zouden zien van een vreselijke, oogverblindende, stille maar dodelijke scheet. Afhankelijk van de achtergrondkwaliteit van de lucht kan de uitgangsspanning van de sensor overal binnen dat bereik liggen. We hebben dus een betrouwbare manier nodig om die spanning altijd tot net onder de GPIO-drempel te brengen, onder verschillende luchtkwaliteitsomstandigheden.

Om dit te doen hebben we een andere . nodig variabele weerstand, zodat we de hoeveelheid spanning die we naar aarde overhevelen kunnen variëren. We zouden hiervoor een potentiometer kunnen gebruiken, maar je zou hem altijd handmatig op de achtergrondlucht moeten afstemmen voordat hij kan worden gebruikt. Dit is niet ideaal als je de val wilt zetten en op een nietsvermoedend slachtoffer wilt wachten. De luchtkwaliteit op de achtergrond kan in de tussentijd natuurlijk veranderen en het alarm laten afgaan zonder een scheet. Onhandig.

Het zou veel beter zijn om dit vanuit onze code te controleren. Dan kunnen we hem zo programmeren dat hij zich blijft aanpassen aan de luchtkwaliteit op de achtergrond, en de val hoeft niet handmatig te worden ingegrepen als de luchtkwaliteit verandert.

Een slimme truc die we hier kunnen gebruiken, is de weerstandsladder. Dit is waar we een reeks herhalende weerstanden hebben die we onafhankelijk in onze code kunnen in- en uitschakelen. Als elke weerstand een andere waarde in ohm heeft, kunnen we verschillende combinaties ervan gebruiken om ons iets te geven dat het gedrag van een variabele weerstand/potentiometer benadert.

De theorie

Dit volgende gedeelte lijkt misschien een beetje saai, maar de behandelde onderwerpen zullen je enorm helpen het project te begrijpen, dus ik raad je aan het niet over te slaan!

Het onderstaande diagram schematisch laat zien hoe een weerstandsladder zou worden aangesloten op de TGS2600-luchtkwaliteitssensor. De uitgangsspanning van de sensor komt uit pincode 2 , en deze is verbonden met GPIO 4. Daartussen hebben we echter verschillende plaatsen waar we de spanning kunnen afhevelen om de spanning naar behoefte naar de GPIO-pindrempel te brengen.

Tot nu toe alleen de 47kΩ R0 is aanwezig op uw breadboard, dat rechtstreeks met aarde is verbonden. De andere weerstanden (R1 naar R4 ) zijn elk parallel geschakeld naar een andere GPIO-pin. Dit geeft ons digitale controle over of elke weerstand aan of uit is. Als we de GPIO-pin configureren om INPUT te gebruiken modus schakelt de weerstand uit, omdat de GPIO-pin nergens intern op is aangesloten. Als we het echter zo instellen dat OUTPUT modus en zet vervolgens de pin LOW, dit zal de weerstand met aarde verbinden en er zal wat spanning doorheen worden overgeheveld.

Een opmerking over parallelle weerstanden. De totale weerstand van de ladder is niet de som van alle weerstanden die zijn ingeschakeld. Het zou echter zo zijn als je de weerstanden in serie zou schakelen; dat komt omdat de spanning beurtelings door elke weerstand moet stromen. Parallel zal de stroom van spanning gelijkelijk over elke weerstand worden verdeeld en het effect is dat de totale weerstand minder is . Dus hoe meer weerstanden we inschakelen, hoe lager de totale weerstand zal zijn en hoe meer spanning er naar de aarde wordt geheveld.

Omdat de ladder digitaal wordt bestuurd door weerstanden aan en uit te zetten, maar een analoge spanning van de sensor beïnvloedt, kan de schakeling een digitaal naar analoog omzetter of kortweg DAC worden genoemd. Dit is het tegenovergestelde van de eerder genoemde ADC.

In het ideale geval moeten we de weerstand op een lineaire manier variëren en een groot aantal mogelijke aan/uit-combinaties hebben die geschikt zijn voor het bereik van de uitgangsspanning van de luchtkwaliteitssensor. Bedenk wat er zou gebeuren als alle weerstanden dezelfde waarde in ohm hadden; hoeveel mogelijk uniek combinaties van weerstandswaarden kunnen er zijn?

Voor meer details:sluit een sensor aan op je Raspberry Pi om je te waarschuwen wanneer er schadelijke gassen in de buurt zijn!


Productieproces

  1. Raspberry Pi Temperature Logger
  2. Raspberry Pi-weerstation
  3. Ultrasone sensor (HC-SR04) + Raspberry Pi
  4. Bewegingssensor met Raspberry Pi
  5. Raspberry Pi Bodemvochtsensor
  6. Verander je Raspberry Pi in een Hamster Fitness Tracker
  7. Raspberry Pi temperatuur- en lichtsensor
  8. Raspberry Pi-sensor en actuatorbediening
  9. Hoe sluit je een Lego Mindstorms NXT ultrasone sensor aan op de Raspberry Pi
  10. Bouw je eerste IOT met een Raspberry Pi, DHT11-sensor en Thingspeak.
  11. Raspberry Pi-temperatuursensor