Vraag:
Schaalspanning voor Arduino Analog In, Beyond Voltage Dividers
terrace
2009-12-09 11:18:19 UTC
view on stackexchange narkive permalink

Ik heb onlangs een aantal glasvezelbochtsensoren gebouwd en ik wil de waarden die ik daarvan krijg via een Arduino in een computer lezen. Ik meet het licht met deze fotodiode van Industrial Fiber Optics. Momenteel geef ik de LED aan de andere kant en de fotodiode 2.2V. Mijn vraag heeft te maken met het feit dat de spanningsfluctuaties zoals gemeten door een multimeter op de fotodiode lineair zijn, maar vrij klein omdat de vezel vervormd is, zelfs behoorlijk radicaal. Met de vezel recht, afhankelijk van de vezel (het is moeilijk om ze identiek te scoren), schommelt de spanning bijvoorbeeld rond de 1,92V en met het buigen zal deze oplopen tot bijvoorbeeld 1,93-1,94V. Ik maak me geen zorgen over het identiek krijgen van de voltages, aangezien ik in software kan schalen.

Waar ik me zorgen over maak is verlies van resolutie bij het doen van A / D met de Arduino. Als mijn spanningsfluctuaties in de orde van grootte van 10mV zijn, zal de 10-bit A / D van de Arduino dan niet in godsnaam kwantificeren, zelfs als ik de spanning naar 5V stap met een spanningsdeler? Wat ik zoek is een analoge scaler. Hoe kan ik dat bereik uitrekken tussen 1,92 en 1,94 om het volledige bereik te dekken, van 0V tot 5V, zodat ik kan profiteren van het volledige bereik van de Arduino A / D?

Ik heb het gevoel dat dit moet een gangbare operatie in de elektronica zijn, maar ik heb het nooit formeel bestudeerd, dus er zijn veel dingen aan mij verloren.

(Misschien denk je, zoals Davr was, "waarom gebruik je glasvezel voor het detecteren van buigingen? Waarom zou je een spanningsverandering verwachten als de vezel gebogen is?" De truc is om de bekleding van één kant van de glasvezelkabel. Dit laat licht naar buiten stromen. Wanneer de kabel weggebogen wordt van de groef, komt er nog meer licht uit de kabel, waardoor er een spanningsval in de ontvanger komt, en vice versa.)

Zou u zo vriendelijk willen zijn een schema van uw ontvanger te laten zien? Levert u de voorspanning van 1,9 V?
Als je het schema voor de ontvanger zelf bedoelt, heb ik naar de bovenstaande datasheet gelinkt. Hier is het weer: http://i-fiberoptics.com/pdf/IFD91.pdf Als je bedoelt hoe ik het heb aangesloten, kun je zien op de foto. De ontvanger is de zwarte. Ik geef het 2,2 V (hoewel het op de foto een li-ionbatterij is) door de rode draad naar de zijkant van de ontvanger met de oranje stip, en ik meet de spanning over de weerstand die naar aarde gaat de andere kant.
Vijf antwoorden:
#1
+12
David Brenner
2009-12-09 12:05:11 UTC
view on stackexchange narkive permalink

Signaalconditionering in deze zin is buitengewoon gebruikelijk. Je wilt een versterker gebruiken om dat bereik van 10 mV (bijvoorbeeld) het volledige bereik van 0-5 V van de arduino te maken. Dit kan gedaan worden met op-amps zoals de LM741. Je zult waarschijnlijk ook een "spanningsklem" (bijv. Twee zenerdiodes) willen gebruiken op de uitgang van je signaalconditioner / ingang naar de ADC om er zeker van te zijn dat de waarde niet hoger is dan 5V. Als u online rondkijkt naar op-amp-gegevensbladen en / of signaalconditioneringsschakelingen, zou u handleidingen moeten vinden over precies wat u zoekt.

#2
+11
Chris Gammell
2009-12-10 04:49:53 UTC
view on stackexchange narkive permalink

Dus als ik het goed begrijp, wil je een variatie van 10 mV bovenop een 1.9V signaal kunnen "lezen"?

Als dat het geval is, zou ik twee afzonderlijke fasen voorstellen. De eerste zal een fotodiodeversterker zijn (pagina 9 is de meest standaard schakeling). Dit zal helpen om de stroom van uw fotodiode om te zetten in spanning.

De tweede trap zal een instrumentatieversterker zijn, zoals de INA-familie van Texas Instruments (de beste, maar kan ook duur zijn). Dit zal helpen om je "common mode" -signaal te verwijderen, wat in dit geval de 1,9 V is. je signaal tot aan de noodzakelijke 5 V.

Ik zeg niet dat het perfect zal zijn, maar ik denk dat dat een goed begin is.

Als laatste opmerking: ik hou van David's idee hierboven over de klemmen, ook al kunnen deze meetfouten veroorzaken bij de A / D-omzetter. Wat echter belangrijker is, is of je hem kunt zwaaien, probeer een betere opamp dan de 741. Die komen vaak voor, maar de specificaties zijn vreselijk. De 3 of 4 mV offset-spanning op de ingangsklemmen kan een klein signaal echt verpesten, zoals je probeert te meten.

~ Chris Gammell

U hebt geen instrumentatieversterker nodig. Een simpele diff-versterker is voldoende. U hebt echter een constante 1,9 V-voeding nodig om als referentie te gebruiken. Ik vermoed dat zoiets al in het circuit bestaat als de bias voor de sensor. Het zou helpen om een ​​schema te hebben. Ook moet u na het verwijderen van de bias opnieuw een bias toevoegen om deze tussen het 0 en 5 V-bereik van de ADC te krijgen.
Ik ben het ermee eens dat je er geen NODIG hebt, maar het is een goed idee. Een instrumentatieversterker is gewoon een diff-versterker met buffers ervoor (soms met toegevoegde weerstanden voor versterking). Als je alleen een diff-versterker gebruikt, ben je overgeleverd aan de weerstanden in je diff-versterker; soms zo laag als 1K. Als hij iets probeert te meten, kan die hoge impedantie (uit de buffers van een iAmp) echt helpen (d.w.z. er loopt geen stroom in het meetapparaat).
#3
+4
Jason S
2009-12-10 05:28:53 UTC
view on stackexchange narkive permalink

Stel voor dat je kijkt naar de combinatie van een differentiële PGA (programmeerbare versterkingsversterker) en een DAC, waarbij de sensoruitgang naar de "+" ingang gaat en de DAC naar de "-" ingang. (Of iets geïntegreerd dat u gelijkwaardige functionaliteit geeft.) Bekijk in feite het signaal met een lage versterking, zoek uit wat de offset is, zet die spanning op de DAC en draai de versterking op.

TI's PGA308 lijkt een goede oplossing te zijn.

Als je een goedkopere oplossing wilt, gebruik dan een differentiële versterker met vaste versterking (de standaard 4-weerstand + op-amp zou voldoende zijn ) + een stabiele, stille 8-bit DAC (stabiliteit / ruiskarakteristieken belangrijker dan nauwkeurigheid), zet de sensoruitgang weer op de "+" ingang van de diff amp en de DAC-uitgang op de "-" ingang.

Oefening voor de lezer: laat zien dat je de diff-amp-output uit verzadiging en in een lineair bereik kunt brengen door een binaire zoektechniek te gebruiken met de DAC, en ervoor te zorgen dat de versterking niet groter is dan G1 = de volledige ADC-ingangsspanning, gedeeld door de som van de nominale stapgrootte van de DAC en de DNL (differentiële niet-lineariteit). Ik zou waarschijnlijk de kleinste van (G1 / 2) en G2 gebruiken, waarbij G2 = de volledige ADC-ingangsspanning gedeeld door het sensoruitgangsspanningsbereik waar je om geeft.

Op dit moment veel te ambitieus voor mij gezien de beperkte tijd, maar bedankt voor de suggestie. Ik ben verheugd om verder te duiken in analoge signaalconditionering voor toekomstige prototypes.
Waarom heb je een DAC nodig? Genereer je er gewoon een DC-offset mee? Dat lijkt nogal overdreven.
Ja. De DAC was gebaseerd op de aanname dat de DC-offset over een breed bereik moest worden gewijzigd. Als je een systeem hebt met een spanning die slechts een smal bereik beslaat (ervan uitgaande dat je je tolerantieanalyse goed hebt uitgevoerd), dan kunnen een weerstandsdeler en een referentie voldoende zijn om een ​​offsetspanning te produceren. Of voor een beetje meer complexiteit, een weerstandsnetwerk + multiplexers (wat is wat sommige DAC's zijn). Een DAC is niet echt zo ingewikkeld of duur een apparaat, als je geen ultrahoge snelheid of ultrafijne resolutie nodig hebt.
#4
+3
davr
2009-12-09 11:45:06 UTC
view on stackexchange narkive permalink

Het gebruik van glasvezel als een buigsensor is misschien een slechte keuze, is het niet het hele punt van glasvezel waarmee u gemakkelijk licht rond hoeken kunt buigen met minimaal verlies?

Ja, maar als je de jas uittrekt en de bekleding aan één kant lichtjes afschraapt met een scheermesje, zal de hoeveelheid licht die erdoor komt variëren naarmate je de vezel buigt. Een leuke feature is dat je een bidirectioneel signaal krijgt. Als je wegbuigt van de score, komt er minder licht door, als je ernaartoe buigt, komt er meer licht door. U zou daarvoor twee traditionele buigsensoren moeten gebruiken. Ze zien er ook cool uit.
#5
+2
Zeph
2014-12-17 22:48:54 UTC
view on stackexchange narkive permalink

Je hebt twee dingen nodig: om een ​​differentiële ingang te gebruiken om te vergelijken met een 1.9v-standaard (of dichtbij), en een versterker om de resolutie van dat verschil te vergroten.

Voor de beste resultaten moeten externe hoogwaardige instrumentatieversterkers of opamps gebruiken. Maar je zou kunnen proberen de faciliteiten te gebruiken die in de microcontroller zijn ingebouwd. De Arduino Mega (ATMega2560-chip) en Arduino Leonardo bevatten beide de optie voor differentiële, versterkte ingangen naar de ADC direct op de chip. (De Uno heeft dit niet). Een ATMega2560 kan meerdere kanalen (multiplex) van versterkte differentiële ADC voor meerdere sensoren uitvoeren - lees het gegevensblad om te zien welke pincombinaties mogelijk zijn. Het heeft een 200x versterkingsoptie, die de volledige resolutie van 1024 stappen over 25 mv zou brengen. Je hoeft alleen maar dat 25 mV-venster te plaatsen waar je het nodig hebt!

Dat kan al dan niet voldoende ruisvrij zijn voor je doeleinden - het is niet zo hoogwaardig als je extern zou kunnen bouwen voor meer $$.

Het moeilijkere is misschien om een ​​stabiele en nauwkeurige 1.9v-referentie te krijgen om mee te vergelijken.

Kwam hier om dit te zeggen.+1!


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...