Hall Effect Sensor
Hall -effectsensoren kunnen de aanwezigheid van het magnetische veld detecteren en een uitgangsspanning produceren wanneer deze wordt gedetecteerd. Hall Effect -sensoren, bij gebruik metlineaire actuators, worden meestal geplaatst in de versnellingsbak van de actuator samen met een magnetische schijf. Naarmate de lineaire actuator zich uitstrekt of intrekt, wordt deze schijf de Hall -effectsensor doorgegeven waardoor de sensor een digitale uitgang produceert in de vorm van een spanningspuls. Deze pulsen kunnen worden geteld en worden gebruikt om te bepalen hoe ver de actuator is verplaatst.
Positionele feedback van een Hall -effectsensor
Een nadeel van het gebruik van een Hall -effectsensor voor positionele feedback 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 verplaatst. 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 interruptpennen van uw microcontroller om deze pulsen te tellen wanneer deze zich voordoen. Externe onderbrekingen zijn pennen die een spanningsverandering detecteren en in ons geval kunnen worden gebruikt om de spanningspuls uit de Hall -effectsensor te detecteren. U moet het gegevensblad van uw microcontroller raadplegen om ervoor te zorgen welke pinnen van uw microcontroller kunnen worden gebruikt als interruptpennen. Een Arduino Uno Pinnen 2 en 3 kunnen bijvoorbeeld worden gebruikt voor externe interrupts. Nadat u een geschikte interrupt -pin hebt geselecteerd, kunt u de draad van de uitgang van de Hall -effectsensor op die pin aansluiten en de ingangsspanning aansluiten op 5V en gemalen op een aardpen.
Het onderstaande code -voorbeeld laat zien hoe een interrupt in de Arduino IDE instelt, waarbij de interrupt wordt geactiveerd op de stijgende rand van de spanningspuls. U kunt uw interrupt instellen om op verschillende punten in een spanningsverandering te worden geactiveerd en moet uw datasheet van uw microcontroller raadplegen om de beschikbare opties te bepalen. Het laatste aspect dat u moet doen om uw interrupt in te stellen, is het schrijven van uw interrupt -serviceroutine, wat de functie is die de code zal uitvoeren telkens wanneer de interrupt wordt geactiveerd. Deze functie moet kort zijn en alleen eenvoudige taken uitvoeren, zoals het tellen van het aantal pulsen uit onze Hall -effectsensor. De functie countsteps () in het onderstaande codevoorbeeld wordt gebruikt om het aantal pulsen uit de Hall -effectsensor te tellen.
Om deze pulsen te gebruiken om een positionele waarde te bepalen, moet u de vorige positie van de lineaire actuator kennen en de richting waarin lineaire actuator reist. Uw microcontroller zal al weten welke manier u uw lineaire actuator bestuurt, 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 toevoegt of aftrekt. Nadat u uw positie hebt bijgewerkt, moet u de getelde pulsen opnieuw instellen naar nul. In het onderstaande codevolg toont u een functie die de positie bijwerkt op basis van het aantal getelde pulsen. Zodra u een positie hebt in termen van pulsen, kunt u omzetten in inches met behulp van de puls per inch specificatie van uw lineaire actuator. In het onderstaande codemonster is de puls per inch reizen 3500.
Homing Your Linear Actuator
Om positionele feedback van een Hall -effectsensor nauwkeurig te gebruiken, moet u altijd de startpositie van uw lineaire actuator kennen. Hoewel wanneer u uw systeem voor het eerst inschakelt, uw microcontroller niet kan zien of de actuator is uitgebreid of niet. Hiervoor moet u uw lineaire actuator naar een bekende functie thuiskomen. Je zou ook kunnen gebruiken Externe limietschakelaars om uw bekende positie in te stellen op ergens anders dan volledig uitgebreid of ingetrokken. Met behulp van de Arduino -code hieronder als voorbeeld, willen we een while -lus instellen die onze lineaire actuator naar uw bekende positie zal drijven, in dit geval volledig ingetrokken. We weten dat u zich in onze bekende positie bevindt, omdat de onderbreking van de Hall -effectsensor niet zal activeren. In dit geval controleren we of de stappenvariabele is gewijzigd om te bepalen of de interrupt is geactiveerd. We moeten er ook voor zorgen dat er voldoende 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 begonnen en we vergelijken dat met de vorige tijdstempel . Zodra we hebben vastgesteld dat de lineaire actuator zich in onze thuispositie bevindt, stoppen we met het besturen van de actuator, resetten de stappenvariabele en verlaten 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 van invloed zijn op het uitgangssignaal. Schakelstuiteren kan ook een probleem zijn met Hall Effect-sensoren die valse pulsen kunnen veroorzaken die moeten worden geteld, wat zou beïnvloeden hoe ver uw microcontroller denkt dat uw lineaire actuator is verhuisd. Een paar extra pulsen hebben geen invloed op de positionering, omdat er duizenden pulsen per inch zijn, maar na verloop van tijd kan het een groter probleem zijn. 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 zou verwachten dat nieuwe pulsen worden gedetecteerd, kunt u eruit filteren wanneer de interrupt werd geactiveerd door ruis. In het onderstaande codemonster is trig-delay de tijdsvertraging tussen elke puls. Als de interrupt vóór deze vertraging werd geactiveerd, wordt de pols niet geteld.
De tijdsduur van deze vertraging zal variëren op basis van uw toepassing, maar als deze te kort is, zal het de ruis niet correct filteren en als het te lang is, zal dit werkelijke pulsen van de lineaire actuator missen. De snelheid van de lineaire actuator heeft ook invloed op deze vertraging en als u de snelheid wilt aanpassen, moet deze variabele mogelijk veranderen om zich aan te passen aan de nieuwe frequentie van de verwachte pulsen. Om een exacte vertraging tussen elke puls nauwkeurig te bepalen, kunt u een logische analysator gebruiken om het werkelijke signaal van de Hall -effectsensor te bekijken. Hoewel dit niet vereist is in de meeste toepassingen, wilt u, als u zeer exacte positionering nodig heeft, misschien een precieze vertraging bepalen.
Een andere manier om valse triggers te bestrijden, is door de positionele waarde te corrigeren telkens wanneer de actuator een bekende positie bereikt. Zoals het thuishouden van de lineaire actuator, als u de lineaire actuator naar een volledig ingetrokken of uitgebreide positie hebt gereden of als u gebruik maakt Externe limietschakelaars, je weet hoe ver de actuator is verhuisd. Omdat u weet hoeveel stappen de Hall -effectsensor moet verzonden om uw bekende positie te bereiken, kunt u de waarde eenvoudig corrigeren wanneer we deze bereiken. In het onderstaande codevaal wordt dit gedaan voor de volledig uitgebreide en volledig ingetrokken posities. Aangezien de actuator niet zal bewegen zodra deze een van die posities bereikt, als we proberen de actuator te besturen en de positiewaarde niet verandert, weten we dat we ons op de limiet bevinden. Deze methode biedt een praktische oplossing om ervoor te zorgen dat uw positionele waarde nauwkeurig blijft, vooral als u uw actuator op een bepaald moment tijdens de werking volledig uitbreidt of volledig uitbreidt. U kunt deze methode gebruiken in combinatie met de hierboven beschreven methode die zou moeten helpen de nauwkeurigheid van uw positionele waarde te behouden.
Samenvatting
Het gebruik van een Hall -effectsensor voor positionele feedback biedt een veel grotere resolutie in vergelijking met de feedback van een potentiometer. Aangezien er 1000s pulsen per inch beweging kunnen zijn, bieden Hall Effect -sensoren precisie en betrouwbaarheid bij het positioneren van uw lineaire actuator. Hall Effect -sensoren bieden ook een groter vermogen om ervoor te zorgen dat meerdere lineaire actuatoren tegelijkertijd samen bewegen, omdat de pulstellingen nauwkeuriger zijn dan de veranderende spanning van de potentiometer. Gebruik maken van onze Fa-sync-x Actuatorcontroller, u kunt er zelfs voor zorgen dat de actuatoren zich in het keren bewegen, ongeacht de belasting. Voor doe -het -zelvers kunt u controleren hoe uw actuatoren tegelijkertijd bewegen met behulp van een Arduino hier.
Hieronder vindt u de volledige voorbeeldcode die in deze blog wordt gebruikt en is gebouwd om een slaglengte van 14 "te besturen Bullet Series 36 Cal. Lineaire actuator. De lineaire actuator wordt aangedreven met een Motor bestuurder, die u kunt leren instellen 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