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

Watersensor met hoge gevoeligheid op MCP3008

Gebruik de Phantom YoYo High Sensitivity Watersensor op de MCP3008 8-kanaals 10-bit ADC met SPI-interface.

Inleiding

Achtergrond

In een aankomend project gebruik ik de MCP3008 om verschillende sensoren te bewaken. In dit project wil ik de details bespreken van het gebruik van de Phantom YoYo High Sensitivity Water Sensor op de MCP3008 8-Channel 10-Bit ADC met SPI-interface met de Raspberry Pi 2, Windows 10 IoT Core en C#.

De MCP3008 gebruiken

Een ADC is een analoog naar digitaal converter. Een analoog signaal wordt omgezet naar een getal en ingelezen in uw applicatie. De MCP3008 is een 10 bit ADC, wat betekent dat hij 10 bits gebruikt om de waarde op het kanaal weer te geven. De waarde wordt weergegeven als een getal van 0 tot 1023 (voor een totaal van 1024 mogelijke waarden). Dit getal wordt vervolgens omgezet in een zinvolle waarde. Laten we bijvoorbeeld zeggen dat ik een spanning op een van de kanalen wil meten en de waarde die van het kanaal wordt afgelezen is 523. Ik weet dat de maximale spanning 3,3V is. De spanning op het kanaal wordt berekend met de formule

Waarde / Max. waarde * Vref

oplossen voor mijn spanning die ik krijg

523 / 1023 * 3.3

wat een waarde geeft van 1.687V . Ik heb deze waarde berekend door eerst de meetwaarde te normaliseren en vervolgens de genormaliseerde meetwaarde te vermenigvuldigen met de bekende maximale waarde van 3,3V.

Wanneer het belangrijk is om een ​​nauwkeurige spanningsmeting te krijgen, raad ik u ten zeerste aan om de werkelijke spanning van de Raspberry Pi te meten en deze waarde in uw berekeningen te gebruiken om een ​​nauwkeurigere conversie van de ADC te krijgen. Toen ik de mijne meette, ontdekte ik dat de output 3.301V was (de waarde die in de broncode wordt gevonden). Niet ver van de werkelijke, maar andere soorten borden kunnen meer verschillen.

Dit is natuurlijk logisch als ik de spanning wil berekenen, maar elke sensor heeft een andere betekenis. Voor elke sensor die is aangesloten op een kanaal op de MCP3008 moet ik de specifieke details weten en de meetwaarde op de juiste manier interpreteren.

Het bedraden van de MCP3008 is eenvoudig. De chip zelf is gemarkeerd met een inkeping aan het ene uiteinde die pin 1 en 16 voorstelt (zie de datasheet hier).

Pinnen 1 tot en met 8 zijn de acht ingangspinnen en worden kanalen 0 tot 7 genoemd. Kanaal 0 is pin 1. Pin 16 is Vdd en wordt aangesloten op de spanningsbron (ofwel 3,3V of 5V op de Raspberry Pi). Pin 9 maakt verbinding met de grondpin op de Raspberry Pi. Pinnen 15 en 14 worden gebruikt om naar het analoge circuit te verwijzen. Pin 15 is Vref en wordt door de MCP3008 gebruikt om te bepalen wat de maximale spanning op een van de kanalen zou zijn. In mijn voorbeeld heb ik deze pin aangesloten op de 3.3V-bron op de Raspberry Pi. Wanneer een spanning op een van de kanalen wordt toegepast, past de MCP de uitlezing aan zodat 1023 3,3 V vertegenwoordigt en 0 0 V vertegenwoordigt. Hierdoor kan de berekening die ik hierboven heb gebruikt werken. Pin 14 is de analoge aardpen. In mijn voorbeeld heb ik het aangesloten op de grondpin op de Raspberry Pi. Als het nodig is om het analoge circuit geïsoleerd te houden van het digitale circuit, dan zou deze pin worden verbonden met aarde op het analoge circuit. De overige vier pinnen, 10 tot en met 13, zijn de SPI Serial Interface-pinnen die worden gebruikt om met de Raspberry Pi te communiceren. Het bedradingsschema dat ik bij deze projecten heb gevoegd, laat zien hoe deze pinnen op de Raspberry Pi kunnen worden aangesloten.

In dit project heb ik een eenvoudige spanningsmeting opgenomen om dit concept te demonstreren. De uitlezing van de watersensor toont een alternatieve interpretatie van de waarde die van het kanaal wordt afgelezen.

Projectoverzicht

De sensor

In dit project heb ik twee circuits in één aangesloten. De eerste is een eenvoudige potentiometer waarmee een spanning kan worden gevarieerd op een van de MCP3008-pinnen (kanaal 0). Dit is gewoon om te demonstreren hoe de MCP3008 werkt. Het tweede circuit is de watersensor die is aangesloten op een tweede kanaal (kanaal 1) op de MCP3008.

De Phantom YoYo-watersensor heeft drie pinnen. De eerste pin is aarde (met het label '-' op het apparaat) die wordt aangesloten op de grondpin op de Raspberry Pi. De volgende pin is de voeding (aangeduid met '+' op het apparaat) en deze wordt aangesloten op de 3.3V-pin op de Raspberry Pi (het apparaat kan ook worden aangesloten op 5V). De derde en laatste pin is het signaal (met het label 's' op het apparaat. Deze pin heeft het spanningssignaal dat varieert op basis van de hoeveelheid water op het apparaat. Let op:dit apparaat is GEEN waterniveausensor. Het detecteert eenvoudig hoeveelheden water die in contact komen met het apparaat. De bronpin wordt aangesloten op een van de ingangen op de MCP3008.

Het circuit

Het circuit om de sensor te ondersteunen is heel eenvoudig. Het apparaat maakt rechtstreeks verbinding met het bord Raspberry Pi zonder dat er extra componenten nodig zijn.


Projectsoftware

De toepassing

De applicatie die ik voor dit project heb gemaakt, is een universele Windows-applicatie en toont twee meter in het hoofdaanzicht. De eerste meter toont de huidige spanning die wordt gemeten op het potentiometercircuit. De tweede toont een uitlezing van de watersensor die is genormaliseerd naar een waarde van 0 tot 100. De software maakt ook een kalibratie van de watersensor mogelijk. De link naar de broncode vindt u onderaan de pagina.

De MCP3008-bibliotheek

Het softwareproject bevat ook een apart project voor interactie met de MCP3008. Deze code kan in uw applicatie worden gebruikt om de MCP3008-chip eenvoudig in uw projecten te integreren.

Om het te gebruiken, declareert u eerst een klasseobject als volgt:

privé Mcp3008 _mcp3008 =null;

In de OnNavigatedTo evenement voeg de volgende code toe:

_mcp3008 =nieuwe Mcp3008(0);

await_mcp3008.Initialize();

Gebruik de volgende coderegel om de spanning van kanaal 0 te lezen:

floatspanning =_mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);

Let op het gebruik van Channel.Single0 wat aangeeft dat de waarde van één kanaal wordt gelezen. Het is mogelijk om aan te geven dat het apparaat het verschil tussen twee pinnen leest. Dit kan worden gespecificeerd als Mcp3008.Channels.Differential0, wat aangeeft dat de meting moet worden genomen als het verschil tussen kanaal 0 en kanaal 1, waarbij kanaal 0 positief is en kanaal 1 negatief. De broncode is een document en geeft tooltips met uitleg over elke waarde.

Als u klaar bent met het gebruik van het object, meestal in uw OnNavigatedFrom gebeurtenis gooi het object weg.

_mcp3008.Dispose();

_mcp3008 =null;

Aan de slag

Stel het circuit samen

Gebruik deze handleiding om het circuit samen te stellen en gebruik het diagram onderaan de pagina als richtlijn (merk op dat de kleur van de draden optioneel is en is gekozen om het circuit gemakkelijk te volgen te maken wanneer het is gebouwd).

Opmerking: dit project gebruikt een optionele multimeter om de spanning over de potentiometer te meten. Dit wordt gedaan om de waarde te vergelijken met de waarde die door de MCP3008 wordt gelezen. Let op dit is optioneel. Als u geen multimeter heeft, kunt u deze spanning niet vergelijken. Dit wordt gedaan om aan te tonen dat de waarde die door de MCP3008 wordt gelezen, dezelfde is als de waarde die wordt gelezen door de multimeter. Stel de multimeter in om gelijkspanning te meten zoals weergegeven in de onderstaande afbeelding (uw multimeter kan er anders uitzien).

Fluke 87 multimeter
  • Plaats de T-vormige schoenmaker aan de linkerkant van de bard (waar de cijfers beginnen bij 1). De twee meest linkse pinnen staan ​​in E3 en F3 op het bord. De twee meest rechtse pinnen bevinden zich op E22 en F22
  • Plaats de 50K Ω potentiometer op de posities J56, J58 en J60 met de instelknop naar de 5v-kant van het breadboard gericht
  • Plaats de weerstand van 10K tussen I58 en I53
  • Plaats de MCP3008 in E31 naar E38 en F31 naar F38  (de hoek van de chip met de ingesprongen cirkel wordt geplaatst op E31 )
  • Optioneel:  Plaats het ene uiteinde van een zwarte man-naar-man trui op positie G60 (als u een multimeter gebruikt, sluit dan de zwarte draad aan op deze draad)
  • Optioneel:  Plaats het ene uiteinde van een rode man-naar-man trui op positie G58 (als je een multimeter gebruikt, sluit dan de rode draad aan op deze draad)
  • Sluit een blauwe mannelijke op mannelijke verbindingsdraad aan tussen F60 en Grond
  • Sluit een oranje mannelijke op mannelijke jumperdraad aan tussen F58 en C31 (kanaal 1 van de MCP3008)
  • Sluit een oranje mannetje op een mannetje aan tussen F53 en 3,3V+
  • Sluit een rode mannelijke op mannelijke verbindingsdraad aan tussen J31  en 3,3V
  • Sluit een rode mannelijke op mannelijke verbindingsdraad aan tussen J32 en 3,3V
  • Sluit een zwarte mannelijke op mannelijke verbindingsdraad aan tussen J33 en Grond
  • Sluit een groene mannelijke op mannelijke verbindingsdraad aan tussen J34 en A14
  • Sluit een gele mannelijke op mannelijke verbindingsdraad aan tussen J35 en A13
  • Sluit een witte mannelijke op mannelijke verbindingsdraad aan tussen J36 en A12
  • Sluit een groene mannelijke op mannelijke jumperdraad aan tussen J37 en J14
  • Sluit een zwarte mannelijke op mannelijke verbindingsdraad aan tussen J38 en Grond
  • Sluit het vrouwelijke uiteinde van een blauwe vrouwelijke naar mannelijke jumper aan op de S pin op de watersensor. Sluit het mannelijke uiteinde aan op C32 (kanaal 1 op de MCP3008)
  • Sluit het vrouwelijke uiteinde van een rode vrouwelijke naar mannelijke jumper aan op de pin op de watersensor. Sluit het mannelijke uiteinde aan op 3,3V
  • Sluit het vrouwelijke uiteinde van een zwarte vrouwelijke naar mannelijke jumper aan op de pin op de watersensor. Sluit het mannelijke uiteinde aan op Massa
  • Optioneel: Sluit de zwarte kabel van stap 5 aan op de gemeenschappelijke aansluiting op uw multimeter (gebruik een haakklemconnector voor de beste resultaten)
  • Optioneel: Sluit de rode kabel van stap 6 aan op de spanningsaansluiting op uw multimeter (gebruik een haakklemtype connector voor de beste resultaten)
  • Sluit de lintkabel aan tussen de Raspberry Pi en de schoenmaker



De applicatie starten

Kies DebuggenARM  configuratie en Externe machine . Klik nu met de rechtermuisknop op het project en selecteer Eigenschap en vervolgens  klik op Foutopsporing label. Plaats vervolgens het IP-adres van de Raspberry Pi 2 in het veld Externe machine en verwijder het vinkje bij Verificatie gebruiken .

Druk op F5 . De applicatie wordt op het apparaat geïmplementeerd, wat de eerste keer een paar minuten kan duren.

De onderstaande video is een demonstratie van de toepassing:

Opmerking: De applicatie gebruikt een lineaire 360°-meter om de hoeveelheid water weer te geven. Ik moet opmerken dat deze sensor geen lineaire correlatie heeft of enige andere correlatie die ik ken tussen de hoeveelheid water en de waarde van de sensor. Het produceert kleinere waarden als er een paar druppels zijn, versus hogere waarden als er meer water aanwezig is. Ik gebruik de lineaire meter meer om het concept van de ADC te helpen begrijpen. Het is mogelijk om de watersensor te bedraden op dezelfde manier als hoe ik mijn opto-geïsoleerde AC-spanningssensor heb aangesloten om een ​​hoog of laag signaal te produceren dat kan worden opgepikt door een GPIO-pin. Dit apparaat kan worden bedraad om een ​​nat of droog signaal te geven. Dat gezegd hebbende, sluit ik deze watersensor aan op een ADC omdat ik het verschil tussen een beetje water en veel water wil detecteren en de aanpak die in dit project wordt beschreven, bereikt dit doel.

Bron:   Watersensor met hoge gevoeligheid op MCP3008


Productieproces

  1. Gazonsproeier
  2. Deegrol
  3. Vaatwasser
  4. Beeldsensor met laag stroomverbruik, hoge framesnelheid
  5. Raspberry Pi 1-draads digitale thermometersensor (DS18B20)
  6. Analoge sensor input raspberry pi met behulp van een MCP3008:bedrading/installatie/basisprogramma
  7. Watersensor met hoge gevoeligheid op MCP3008
  8. Zachte sensor verhoogt vingertopgevoeligheid voor robots
  9. ToughMet® 3TS Buis TS105 (C72900)
  10. Hoge waterdrukpompen voor irrigatie
  11. Wat is een automatische waterpomp?