Feedback van een optische sensor lezen

Optische sensor

Optische sensoren, indien gebruikt met lineaire actuatoren,functie vergelijkbaar met Hall-effect sensoren, behalve dat ze licht detecteren in plaats van magnetische velden [1]. Optische sensoren werken met licht van een LED of een andere lichtbron die door een encoderschijf wordt geleid. Deze encoderschijf is voorzien van sleuven zodat het licht er periodiek doorheen kan. Aan de andere kant van de schijf bevindt zich een fotodetector, die het licht detecteert wanneer het door de sleuven in de schijf gaat en een uitgangssignaal genereert [1]. Terwijl de actuator beweegt, draait de encoderschijf en wordt licht gedetecteerd door de fotodetector die een blokgolf van spanningspulsen produceert. Deze pulsen kunnen op dezelfde manier worden gebruikt als de pulsen van een hall-effectsensor om te bepalen hoever de actuator is bewogen.

Optische sensor

Positionele feedback van een optische sensor

Aangezien optische sensoren qua output vergelijkbaar werken met Hall-effectsensoren, zal deze blogpost kort beschrijven hoe ze hun output kunnen lezen voor positionele feedback. Als je op zoek bent naar meer details, bekijk dan ons bericht over het lezen van positionele feedback van een hall-effectsensor, want veel zal vergelijkbaar zijn.

Net als hall-effectsensoren hebben optische sensoren 3 pinnen om verbinding mee te maken; de ene is de ingangsspanning, de andere is de aarde en ten slotte is de ene het uitgangssignaal. Om de pulsen op het uitgangssignaal te gebruiken voor positieterugkoppeling, moet u een microcontroller om de geproduceerde pulsen te tellen. U zult gebruik willen maken van de externe interrupt-pinnen van uw microcontroller om deze pulsen nauwkeurig te tellen. Omdat externe onderbrekingen worden geactiveerd door een verandering in spanning, kunnen ze worden gebruikt om elke puls te detecteren wanneer deze optreedt. Nadat u uw interrupt in de code van uw microcontroller heeft ingesteld, moet u een interruptserviceroutine instellen die de pulsen telt wanneer ze optreden. De functie countSteps () in het onderstaande codevoorbeeld wordt gebruikt om het aantal pulsen van de optische sensor te tellen.

Om deze pulsen te gebruiken om een ​​positiewaarde te bepalen, moet u de vorige positie van de lineaire actuator kennen en de richting waarin de lineaire actuator beweegt. Terwijl u bepaalt in welke richting uw lineaire actuator beweegt, kunt u eenvoudig een variabele instellen om de richting van de actuator in uw code te volgen. Deze variabele kan worden gebruikt om te bepalen of u de pulsen van uw vorige positie moet optellen of aftrekken. Nadat u uw positie heeft bijgewerkt, moet u de getelde pulsen op nul zetten. Het onderstaande codevoorbeeld toont u een functie die de positie bijwerkt op basis van het aantal getelde pulsen. Als je eenmaal een positie hebt in termen van pulsen, kun je deze omzetten in inches met behulp van de pulse per inch-specificatie van je lineaire actuator.

Homing uw lineaire actuator

Om positionele feedback van een optische sensor nauwkeurig te gebruiken, moet u altijd de startpositie van uw lineaire actuator weten. Hoewel wanneer u uw systeem voor het eerst inschakelt, uw microcontroller niet kan zien of de actuator is uitgeschoven of niet. Dit vereist dat u uw lineaire actuator op een bekende positie plaatst. Om je lineaire actuator, moet u hem naar een bekende positie rijden, zoals volledig ingetrokken. Met de onderstaande Arduino-code als voorbeeld hebben we een WHILE-lus opgezet die onze lineaire actuator naar onze bekende positie zal sturen. In dit voorbeeld zullen we weten dat we ons op onze bekende positie bevinden door te controleren of de onderbreking al dan niet is geactiveerd door te controleren of de variabele stappen is gewijzigd. We moeten er ook voor zorgen dat er genoeg tijd is verstreken om te verwachten dat de interrupt wordt geactiveerd, hiervoor maken we gebruik van de millis () -functie en vergelijken we deze met de vorige tijdstempel. Zodra we hebben vastgesteld dat de lineaire actuator op onze uitgangspositie staat, stoppen we met het aandrijven van de actuator, resetten de variabele stappen en verlaten we de WHILE-lus.

Omgaan met valse triggers

Hoewel optische sensoren niet zo gevoelig zijn voor elektrische ruis als potentiometers, kunnen elektrische ruis en het stuiteren van schakelaars nog steeds van invloed zijn op het uitgangssignaal en kunnen valse pulsen worden geteld. Een paar extra pulsen hebben niet veel invloed op de positionering, maar na verloop van tijd kan het een groter probleem worden. U kunt deze problemen bestrijden door gebruik te maken van een interne timer om valse triggers uit te filteren. Omdat u kunt bepalen hoe vaak u verwacht dat nieuwe pulsen worden gedetecteerd, kunt u filteren wanneer de onderbreking werd veroorzaakt door ruis. In het onderstaande codevoorbeeld is trigDelay de tijdsvertraging tussen elke puls. Als de onderbreking vóór deze vertraging werd geactiveerd, wordt de puls niet geteld. De duur van deze vertraging is afhankelijk van uw toepassing, maar als deze te kort is, wordt de ruis niet goed weggefilterd en als deze te lang is, mist hij de werkelijke pulsen van de optische sensor.

Een andere manier om valse triggers te bestrijden, is door de positiewaarde te corrigeren telkens wanneer de actuator een bekende positie bereikt. Net als het homing van de lineaire actuator, als u de lineaire actuator naar een volledig ingetrokken of uitgeschoven positie hebt gestuurd of als u gebruik maakt van externe eindschakelaars, weet u hoeveel pulsen er nodig zijn om die positie te bereiken. U kunt dan eenvoudig de positiewaarde corrigeren met die waarde wanneer u die bekende positie bereikt. In het onderstaande codevoorbeeld wordt dit gedaan voor de volledig uitgeschoven en volledig ingeschoven posities. Deze methode biedt een praktische oplossing om ervoor te zorgen dat uw positiewaarde nauwkeurig blijft.

Samenvatting

Optische sensoren die worden gebruikt voor positieterugkoppeling bieden een grotere nauwkeurigheid en resolutie in vergelijking met Hall-effectsensoren en potentiometers, terwijl ze vergelijkbare sterke en nadelen hebben als Hall-effectsensoren. Hoewel ze de absolute positie niet meten en een bekende startpositie nodig hebben om een ​​positiewaarde te leveren, zorgt het grote aantal pulsen per inch voor een betrouwbare positionering en zorgt ervoor dat meerdere lineaire actuatoren gelijktijdig bewegen. Gebruikmakend van onze FA-SYNC-X actuator controller of tvia aanvullende code, kunt u er zelfs voor zorgen dat de actuatoren gelijk bewegen, ongeacht de belasting.

Kijk voor een compleet codevoorbeeld op onze blog op hoe positionele feedback van een hall-effectsensor te lezen zoveel zal vergelijkbaar zijn. Waarden zoals puls per inch en tijdsvertragingen tussen pulsen zijn enkele van de wijzigingen die u moet aanbrengen om die code te gebruiken om uw optische sensor nauwkeurig te gebruiken.

 

[1] Paschotta, R. Artikel over optische sensoren. Opgehaald van:https://www.rp-photonics.com/optical_sensors.html

Tags:

Share this article

Aanbevolen collecties

Hulp nodig bij het vinden van de juiste actuator?

Wij precisie engineer en vervaardiging van onze producten, zodat u directe fabrikanten prijzen. Wij bieden dezelfde dag verzending en deskundige klantenondersteuning. Probeer onze Actuator Calculator te gebruiken om hulp te krijgen bij het kiezen van de juiste actuator voor uw toepassing.