In een opstelling heb ik een kabeltrommel aan een plafond welke wordt aangedreven met een wormwielmotor. In deze wormwielmotor zit een hall sensor welke pulsjes geeft aan een microcontroller (avr). De verhouding is zo gekozen dat er per centimeter dat de kabel daalt 1 pulsje wordt gegeven aan de avr. Bovenin zit een sensor zodat als de kabel op het hoogste niveau is de motor stopt (dit gaat ook via de avr).
Echter nu is het volgende probleem: stel ik laat de kabel 2 meter naar beneden lopen, en vervolgens weer 2 meter omhoog dan zit er altijd een kleine afwijking in de afstand. Dit komt omdat als ik de motor stop - ookal rem ik hem langzaam af (pwm) - hij toch altijd even door draait. Dan praat je over enkele millimeters.
Probleem is dat na veel bewegingen deze millimeters centimeters worden. Ik ben op zoek naar een hogere nauwkeurigheid. Een tweede probleem is dat als de kabel naar beneden loopt en snel weer omhoog moet, de motor wordt omgepoold en nog steeds naar beneden loopt (vertraging wormwiel). Hierdoor staat in de software dat de pulsjes moeten worden opgeteld voor 'omhoog' ipv 'omlaag'. Enige optie is om de motor helemaal laten af te remmen en vervolgens om te polen.
Ik heb verschillende opties:
- Een hall sensor langs de trommel en op de trommel verschillende magneten plaatsen zodat de nauwkeurigheid enkele millimeters wordt.
- Een markering aanbrengen op de kabel om de 50 cm om zodoende de motor hall sensor te kunnen kalibreren tijdens het bewegen.
Iemand een idee?
Gebruik twee HALL sensoren, dan kun je een zogenaamde quadratuur encoder maken. Je kunt dan kijken welke kant het wiel opdraait, je software kan dan netjes de boel optellen of aftrekken.
Verder zou ik de eindsensor gebruiken om de tellers te resetten. Dus, helemaal omhoog -> eindsensor -> tellers op 0. Dan voorkom je dat er een afwijking ontstaat na meermalen op- en neer te zijn gegaan. Dit principe wordt ook gebruikt bij opstellingen die nauwkeurig via stappenmotoren worden aangedreven. Ook al weet je precies hoeveel stappen je hebt gedaan, er kan altijd eentje gemist zijn (slippen, storing, etc). Door nu een eindsensor te hebben weet je weer precies waar je motor staat.
Benadski
Kom eens langs bij RevSpace of één van de andere spaces!
Twee hallsensoren gebruiken, die net als een rotary-encoder pulsen afgeven, dus LL, LH, HH, HL etc. Dan kun je richting bepalen, je houdt dan wel die paar mm afwijking, maar enkele cm's zal dat niet meer worden.
EDIT: Te laat! 
Op de luchtramen van een kas zit een electromotor en een soort meetkast. De computer berekend door de tijd dat hij de motor laat draaien de raamstand en voor hoogste/laagste stand zit er een schakelaar op, zodat hij steeds weer op 0 begint. Mischien kan je je hierin verdiepen.
