Terugvoer van 'n Hall-effeksensor met...
Terugvoer van 'n Hall-effeksensor met video
Gepos deur Firgelli Automations Team aan Junie 09, 2020
Hall-effeksensors kan die teenwoordigheid van magnetiese veld opspoor en 'n uitsetspanning lewer wanneer een opgespoor word. Hall-effekte sensors, wanneer dit saam metlineêre aandrywers, word gewoonlik in die ratkas van die aandrywer geplaas, tesame met 'n magnetiese skyf. Terwyl die lineêre aandrywer verleng of terugtrek, draai hierdie skyf verby die saal-effekteksensor wat veroorsaak dat die sensor 'n digitale uitset lewer in die vorm van 'n polsspanning. Hierdie pulse kan getel en gebruik word om te bepaal hoe ver die aandrywer beweeg het.
Posisionele terugvoer van 'n Hall-effeksensor
Die nadeel van die gebruik van 'n saal-effekteksensor vir posisionele terugvoer is dat hulle nie 'n absolute posisie meet nie. In plaas daarvan produseer hulle pulse wat getel kan word om te bepaal hoe ver die aandrywer beweeg het. Om hierdie pulse te gebruik vir posisionele terugvoer, moet u 'n mikrobeheerder om die geproduseerde pulse te tel. Om dit te doen, moet u eksterne onderbrekingspennetjies van u mikrobeheerder gebruik om hierdie pulse te tel soos dit voorkom. Eksterne onderbrekings is penne wat 'n verandering in spanning opspoor en kan in ons geval gebruik word om die spanningspuls van die saal-effeksensor op te spoor. U moet die datablad van u mikrobeheerder raadpleeg om te verseker watter penne van u mikrobeheerder as onderbrekingspenne gebruik kan word. Met behulp van 'n Arduino Uno pen 2 en 3 kan byvoorbeeld vir eksterne onderbrekings gebruik word. Nadat u 'n toepaslike onderbrekingspin gekies het, kan u die draad van die uitgang van die hall-effekteksensor aan die pen verbind, sowel as die ingangsspanning op 5V en die aarde op 'n aardpin aansluit.
Die onderstaande kode-voorbeeld wys hoe u 'n onderbreking in die Arduino IDE instel waar die onderbreking aan die stygende rand van die spanningspuls geaktiveer sal word. U kan u onderbreking instel om op verskillende punte in 'n spanningsverandering geaktiveer te word. Raadpleeg die datablad van u mikrobeheerder om die beskikbare opsies te bepaal. Die laaste aspek wat u moet doen om u onderbreking op te stel, is om u onderbrekingsdiensroetine te skryf, dit is die funksie wat die kode sal uitvoer elke keer as die onderbreking geaktiveer word. Hierdie funksie moet kort wees en slegs eenvoudige take verrig, soos die aantal pulse van ons saal-effeksensor tel. Die funksie countSteps () in die onderstaande kode-voorbeeld word gebruik om die aantal pulse van die hall-effeksensor te tel.
Om hierdie pulse te gebruik om 'n posisiewaarde te bepaal, moet u die vorige posisie van die lineêre aandrywer ken en die rigting waarin die lineêre aandrywer beweeg. U mikrokontroleerder sal reeds weet in watter rigting u u lineêre aandrywer bestuur, sodat u eenvoudig 'n veranderlike kan opstel om die rigting van die aandrywer in u kode op te spoor, wat gebruik sal word om te bepaal of u die pulse van u vorige posisie optel of aftrek. Nadat u u posisie opgedateer het, moet u die getelde pulse op nul stel. Die onderstaande kode-voorbeeld wys u 'n funksie wat die posisie opdateer op grond van die getelde pulse. Sodra u 'n posisie in terme van pulse het, kan u dit in sentimeter omskakel met behulp van die puls per duim-spesifikasie van u lineêre aandrywer. In die onderstaande kode-voorbeeld is die polsslag per duim 3500.
Besoek u lineêre aandrywer
Om die posisie-terugvoer van 'n saal-effeksensor akkuraat te kan gebruik, moet u altyd die beginposisie van u lineêre aandrywer ken. Alhoewel die eerste keer dat u die stelsel aanskakel, kan u mikrobeheerder nie weet of die aandrywer verleng is of nie. Dit sal vereis dat u u lineêre aandrywer in 'n bekende posisie moet huisves. U kan ook gebruik maak van eksterne eindskakelaars om u bekende posisie op 'n ander plek in te stel as volledig uitgebrei of ingetrek. As u die onderstaande Arduino-kode gebruik, wil ons 'n WHILE-lus instel wat ons lineêre aandrywer na u bekende posisie sal dryf, in hierdie geval volledig ingetrek. Ons weet dat u op ons bekende posisie is, want die onderbreking van die saal-effeksensor sal nie veroorsaak nie. In hierdie geval gaan ons na of die stapveranderlike verander het om te bepaal of die onderbreking veroorsaak is. Ons moet ook seker maak dat genoeg tyd verloop het om te verwag dat die onderbreking geaktiveer sou word, hiervoor maak ons ​​gebruik van die millis () -funksie wat die tyd in millisekondes uitvoer sedert die kode begin het, en ons vergelyk dit met die vorige tydstempel . Nadat ons vasgestel het dat die lineêre aandrywer by ons tuisposisie is, hou ons op om die aandrywer te bestuur, stel ons die stapveranderlike weer in en verlaat ons die WHILE-lus.
Die hantering van Valse Triggers
Terwyl saaleffek-sensors nie so sensitief is vir elektriese geraas as 'n potensiometer nie, kan elektriese geraas steeds die uitsetsein beïnvloed. Skakel-weiering kan ook 'n probleem wees met sensore met saaleffekte wat kan veroorsaak dat vals pulse getel kan word, wat sal beïnvloed hoe ver u mikrobeheerder dink dat u lineêre aandrywer beweeg het. 'N Paar ekstra pulse sal nie die posisie baie beïnvloed nie, want daar is 1000 pulse per duim, maar dit kan mettertyd 'n groter probleem wees. U kan hierdie probleme bestry deur gebruik te maak van 'n interne timer om vals snellers uit te filter. Aangesien u kan bepaal hoe gereeld u sal verwag dat nuwe pulse opgespoor word, kan u uitfilter wanneer die onderbreking deur geraas veroorsaak is. In die onderstaande kode-voorbeeld is trig-Delay die tydsvertraging tussen elke pols. As die onderbreking voor hierdie vertraging veroorsaak is, sal die pols nie getel word nie.
Die tydsduur van hierdie vertraging sal afhang van u toepassing, maar as dit te kort is, sal dit nie die geraas behoorlik uitfilter nie en as dit te lank is, sal dit die werklike pulse van die lineêre aandrywer mis. Die snelheid van die lineêre aandrywer beïnvloed ook hierdie vertraging en as u die spoed wil aanpas, moet hierdie veranderlike dalk verander om aan te pas by die nuwe frekwensie van die verwagte pulse. Om die presiese vertraging tussen elke pols akkuraat te bepaal, kan u 'n logiese ontleder gebruik om die werklike sein vanaf die saal-effeksensor te sien. Alhoewel dit in die meeste toepassings nie nodig is nie, wil u dalk 'n presiese vertraging bepaal as u baie presies moet posisioneer.
Nog 'n manier om valse snellers te bestry, is om die posisionele waarde reg te stel elke keer as die aandrywer 'n bekende posisie bereik. Soos om die lineêre aandrywer te hervestig, as u die lineêre aandrywer na 'n volledig teruggetrekte of uitgebreide posisie gedryf het, of as u gebruik maak van eksterne eindskakelaars, sal jy weet hoe ver die aandrywer beweeg het. Aangesien u weet hoeveel stappe die hall-effeksensor moet stuur om u bekende posisie te bereik, kan u die waarde eenvoudig regstel as ons dit bereik. In die onderstaande kode-voorbeeld word dit gedoen vir die posisies wat volledig uitgebrei en volledig ingetrek is. Aangesien die aandrywer nie sal beweeg sodra dit een van die posisies bereik het nie, weet ons dat ons aan die limiet is as ons die aandrywer probeer bestuur en die posisiewaarde nie verander nie. Hierdie metode bied 'n praktiese oplossing om te verseker dat u posisionele waarde akkuraat bly, veral as u die aandrywer op 'n sekere tydstip tydens u werking volledig intrek of uittrek. U kan hierdie metode gebruik in samewerking met die metode hierbo beskryf, wat sal help om die akkuraatheid van u posisiewaarde te handhaaf.
Die gebruik van 'n saal-effekteksensor vir posisionele terugvoer bied 'n baie groter resolusie in vergelyking met die terugvoer van 'n potensiometer. Aangesien daar 1000 pulse per duim beweging kan wees, bied die saal-effek-sensors akkuraatheid en betroubaarheid in die posisionering van u lineêre aandrywer. Hall-effeksensors bied ook 'n groter vermoë om te verseker dat meervoudige lineêre aandrywers gelyktydig saam beweeg, aangesien die polstellings akkurater is as die veranderende spanning van die potensiometer. Gebruik van ons FA-SYNC-X as aandrywerbeheerder, kan u selfs verseker dat die aandrywers in eenheid beweeg, ongeag die lading. Vir DIYers kan u kyk hoe u aandrywers in harmonie beweeg met behulp van 'n Arduino hier.
Hieronder is die volledige voorbeeldkode wat in hierdie blog gebruik word, gebou om 'n lengte van 14 '' te beheer Bullet Series 36 Cal. Lineêre aandrywer. Die lineêre aandrywer word aangedryf met behulp van a motorbestuurder, wat u kan leer om op te stel hier.
 Monari, G. (Junie, 2013) Die begrip van die resolusie in optiese en magnetiese kodeerders. Ontvang vanaf: https://www.electronicdesign.com/technologies/components/article/21798142/understanding-resolution-in-optical-and-magnetic-encoders