Hall-effect-sensor
Hall-effectsensoren kunnen de aanwezigheid van een magnetisch veld detecteren en een uitgangsspanning produceren wanneer er een wordt gedetecteerd. Hall-effectsensoren, indien gebruikt metlineaire actuatoren, zijn typisch gepositioneerd in de versnellingsbak van de actuator, samen met een magnetische schijf. Terwijl de lineaire actuator uitschuift of intrekt, roteert deze schijf langs de Hall-effectsensor, waardoor de sensor een digitale uitvoer produceert in de vorm van een spanningspuls. Deze pulsen kunnen worden geteld en gebruikt om te bepalen hoever de actuator is bewogen.
Positiefeedback van een Hall-effectsensor
Een nadeel van het gebruik van een hall-effectsensor voor positieterugkoppeling is dat ze geen absolute positie meten. In plaats daarvan produceren ze pulsen die kunnen worden geteld om te bepalen hoe ver de actuator is bewogen. Om deze pulsen te gebruiken voor positionele feedback, moet u een microcontroller om de geproduceerde pulsen te tellen. Om dit te doen, moet u gebruik maken van externe interrupt-pinnen van uw microcontroller om deze pulsen te tellen wanneer ze optreden. Externe interrupts zijn pinnen die een verandering in spanning detecteren en in ons geval kunnen worden gebruikt om de spanningspuls van de Hall-effectsensor te detecteren. U moet het gegevensblad van uw microcontroller raadplegen om er zeker van te zijn welke pinnen van uw microcontroller kunnen worden gebruikt als interrupt-pinnen. Met behulp van een Arduino Uno pin 2 en 3 kunnen bijvoorbeeld worden gebruikt voor externe interrupts. Nadat u een geschikte interrupt-pin hebt geselecteerd, kunt u de draad van de Hall-effect-sensoruitgang op die pin aansluiten, evenals de ingangsspanning op 5V en aarde op een aardingspin.
Het onderstaande codevoorbeeld laat zien hoe je een interrupt in de Arduino IDE instelt, waarbij de interrupt wordt geactiveerd op de stijgende flank van de spanningspuls. U kunt uw interrupt zo instellen dat deze op verschillende punten in een spanningsverandering wordt geactiveerd en u dient het gegevensblad van uw microcontroller te raadplegen om de beschikbare opties te bepalen. Het laatste aspect dat u moet doen om uw interrupt in te stellen, is uw interruptserviceroutine schrijven, de functie die de code elke keer dat de interrupt wordt geactiveerd, uitvoert. Deze functie moet kort zijn en alleen eenvoudige taken uitvoeren, zoals het tellen van het aantal pulsen van onze hall-effectsensor. De functie countSteps () in het onderstaande codevoorbeeld wordt gebruikt om het aantal pulsen van de hall-effectsensor 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. Uw microcontroller weet al op welke manier u uw lineaire actuator aandrijft, u kunt dus eenvoudig een variabele instellen om de richting van de actuator in uw code bij te houden, die zal worden gebruikt om te bepalen of u de pulsen van uw vorige positie optelt of aftrekt. 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. In het onderstaande codevoorbeeld is de puls per inch-verplaatsing 3500.
Homing uw lineaire actuator
Om positionele feedback van een Hall-effectsensor 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 uw lineaire actuator te plaatsen, moet u deze naar een bekende positie rijden, zoals volledig ingetrokken. U kunt ook gebruik maken van externe eindschakelaars om uw bekende positie ergens anders in te stellen dan volledig uitgeschoven of ingetrokken. Met behulp van de Arduino-code hieronder als voorbeeld, willen we een WHILE-lus opzetten die onze lineaire actuator naar uw bekende positie zal sturen, in dit geval volledig ingetrokken. We weten dat u zich op onze bekende positie bevindt omdat de onderbreking van de Hall-effectsensor niet wordt geactiveerd. In dit geval controleren we of de variabele stappen al dan niet is gewijzigd om te bepalen of de onderbreking is geactiveerd. 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 die de tijd in milliseconden uitvoert sinds de code is gestart en we vergelijken dat met het 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 hall-effectsensoren niet zo gevoelig zijn voor elektrische ruis als een potentiometer, kan elektrische ruis nog steeds het uitgangssignaal beïnvloeden. Het bouncen van schakelaars kan ook een probleem zijn met Hall-effectsensoren die valse pulsen kunnen triggeren om te worden geteld, wat van invloed zou zijn op hoe ver uw microcontroller denkt dat uw lineaire actuator is bewogen. Een paar extra pulsen hebben niet veel invloed op de positionering, aangezien er duizenden pulsen per inch zijn, 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 trig-Delay 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 gefilterd en als deze te lang is, mist hij de werkelijke pulsen van de lineaire actuator. De snelheid van de lineaire actuator heeft ook invloed op deze vertraging en als u de snelheid wilt aanpassen, moet deze variabele mogelijk worden gewijzigd om zich aan te passen aan de nieuwe frequentie van de verwachte pulsen. Om nauwkeurig een exacte vertraging tussen elke puls te bepalen, kunt u een logic analyzer gebruiken om het daadwerkelijke signaal van de Hall-effectsensor te bekijken. Hoewel dit in de meeste toepassingen niet vereist is, wilt u wellicht een precieze vertraging bepalen als u een zeer exacte positionering nodig heeft.
Een andere manier om valse triggers te bestrijden, is door de positiewaarde te corrigeren telkens wanneer de actuator een bekende positie bereikt. Zoals homing van de lineaire actuator, als u de lineaire actuator naar een volledig ingetrokken of uitgeschoven positie hebt aangedreven of als u gebruik maakt van externe eindschakelaars, weet je hoever de actuator is bewogen. Omdat u weet hoeveel stappen de Hall-effectsensor moet sturen om uw bekende positie te bereiken, kunt u de waarde eenvoudig corrigeren wanneer we deze bereiken. In het onderstaande codevoorbeeld wordt dit gedaan voor de volledig uitgeschoven en volledig ingeschoven posities. Aangezien de actuator niet beweegt zodra deze een van die posities heeft bereikt, als we proberen de actuator aan te drijven en de positiewaarde verandert niet, weten we dat we aan de limiet zitten. Deze methode biedt een praktische oplossing om ervoor te zorgen dat uw positiewaarde nauwkeurig blijft, vooral als u uw actuator op een bepaald moment tijdens het gebruik volledig intrekt of volledig uitschuift. U kunt deze methode gebruiken in combinatie met de hierboven beschreven methode, die zou moeten helpen om de nauwkeurigheid van uw positiewaarde te behouden.
Samenvatting
Het gebruik van een hall-effectsensor voor positieterugkoppeling biedt een veel grotere resolutie in vergelijking met de feedback van een potentiometer. Omdat er duizenden pulsen per inch beweging kunnen zijn, bieden Hall-effectsensoren precisie en betrouwbaarheid bij het positioneren van uw lineaire actuator. Hall-effectsensoren bieden ook een grotere mogelijkheid om ervoor te zorgen dat meerdere lineaire actuatoren gelijktijdig bewegen, aangezien de pulstellingen nauwkeuriger zijn dan de veranderende spanning van de potentiometer. Gebruikmakend van onze FA-SYNC-X actuatorcontroller, kunt u er zelfs voor zorgen dat de actuatoren gelijk bewegen, ongeacht de belasting. Voor doe-het-zelvers kun je met een Arduino controleren hoe je actuatoren gelijk bewegen hier.
Hieronder staat de volledige voorbeeldcode die in deze blog wordt gebruikt en die is gebouwd om een slaglengte van 14 ”te regelen Bullet Series 36 Cal. Lineaire actuator. De lineaire actuator wordt aangedreven met een Motor bestuurder, die u kunt leren hoe u deze instelt hier.
[1] Monari, G. (juni 2013) Inzicht in resolutie in optische en magnetische encoders. Opgehaald van: https://www.electronicdesign.com/technologies/components/article/21798142/understanding-resolution-in-optical-and-magnetic-encoders