Winkelsensor, Poti oder Lichtschranke?
Hi.
Ich hab hier einen Verteiler, der verschiedene Getränke mischen soll.
Ich habe aber Probleme mit der Positionsermittlung.
Zuerst aber mal ein Bild (Draufsicht):
Bild hier
Ein Grundkörper, in diesem ist eine Kreistasche herausgerfräst, in der eine Scheibe läuft. Die Scheibe ist mit einer Taktscheibe verbunden, in die Bohrungen mit einer Teilung von 15° gebohrt wurden.
Von vorne:
Bild hier
Unten im Grundkörper sieht man hier ebenfalls die Bohrungen; gleiche Teilung wie in der Taktscheibe (15°).
Der Sensor (Isometrisch von unten):
Bild hier
Die eine zusätzliche Bohrung ist zur Bestimmung des Referenzpunktes. In die Bohrungen der Abfrageeinheit kommt jeweils eine IR-Lichtschranke.
Nun zum Problem:
Der Verteiler, soll die verschiedenen Positionen anfahren können, dabei wird einfach der Referenzpunkt angefahren und ab diesem gezählt.
Manchmal funktioniert das und manchmal nicht und das Ding verzählt sich.
Ich glaube es liegt an dem zu langsamen Abfragen, allerdings benutze ich einen Java-Mikrocontroller, der das leider nicht schneller kann.
Was kann ich verbessern?
Meine Vorschläge:
- einen Winkelsensor, bzw. ein Poti (das aber keinen Endanschlag haben sollte), so hätte ich immer einen absoluten Wert, aber ist das genau genug?
- den Durchmesser der Taktscheibe vergrößern (ich kann sie ja fast bis auf das doppelte vergrößern, allerdings will ichs nicht machen, wenn es nachher doch nichts bringt - wieder die Frage ob es genau genug ist.)
- die Scheibe langsamer drehen lassen, nur wie? (Wird angetrieben mit einem VW-Scheibenwischermotor auf der langsamen Stufe)
Eigentlich kann ich mir nicht vorstellen, das der Mikrocontroller nicht mitkommt mit dem zählen, denn soo schnell ist das ja auch wieder nicht. vielleicht liegt es auch an der Programmierung.
Hier ein Code-Schnipsel zum aufwärtsbewegen, auch wenn hier wahrscheinlich keiner einen Mikrocontroller mit java programmiert...
Code:
static private void moveUp(int x) {
while (GLOBAL.MIX_POS < x) { //solange aktuelle Position kleiner als neue
powerUp(true); //Motor-Linkslauf einschalten
while (isPos()) {} //warten bis auf Position
while (!isPos()) {} //warten bis nichtmehr auf Position
powerUp(false); //Motor-Linkslauf ausschalten
GLOBAL.MIX_POS++; //aktuelle Position um eins erhöhen
TOOLS.pause(MOTOR_PAUSE_MOVE); //kurze Pause, sonst klappts gar nicht mit dem zählen (10ms)
}
}
Wie würdet ihr das lösen?
Bin natürlich auch für jede andere Idee dankbar!
Liste der Anhänge anzeigen (Anzahl: 1)
So,
ich hab nun mal soweit alles zusammen und mein erstes Bascom-Programm steht auch schon.
Ich habs mit Interrupts probiert, aber ich glaube die Signale sind zu unsauber.
Nun, hab ne neue Taktscheibe gebastelt, größer als die alte und nicht mit Löchern, sondern mit Schlitzen, das scheint genauer zu sein, nachdem was man so liest.
Da ich immernoch nicht ganz klar komme mit dem Entprellen etc. dachte ich mir ich probier mal diese Oszilloskope für die Soundkarte aus. Unten seht ihr das Ergebnis. Ich hab leider keine Ahnung, ob das korrekt eingestellt war, aber das sieht doch gut aus, oder nicht?
Wenn man den Timer0 als zähler nutzt, kann man dann auch mal vorwärts
und mal rückwärts zählen oder geht der nur in eine Richtung?
Hab noch was vergessen:
Die untere Grenze ist 265mV, die obere 3,2V - am besten sollte man das doch auf 5V aufpeppeln, oder? Schmitt-Trigger?
Was ich auch noch sagen wollte, mit einem 100nF Kerko zum Entprellen wirds eher schlimmer statt besser. Was könnte man sonst noch machen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich glaub das geht nicht, ich kann den Interrupt nur
LOW ACTIVE (Also kontinuierlich wenn LOW ist)
FALLING (fallende Flanke)
RISING (steigende Flanke)
einstellen.
Ich hab mit einem nachgeschalteten BC547 jetzt 0V / 5V. Ein Bisschen besser ist das Zählen jetzt geworden, ich hoffe so sollte es gehen. Nochmal richtige Versuche werde ich heute Mittag oder Abend machen.
Hab nochmal nen Bild gemacht, diesmal nen Screenshot. Die Zeitachse lässt sich nicht einblenden, deshalb hab ich es mal bemaßt.
Mein Multimeter sagt auch 14,6...15,0Hz (68,02ms...66,66ms) - Was sich ja duch das Oszi bestätigt.
Bild hier
Hab da noch ne Frage zu a und b:
Ich nehme an...
a) ist der Übergang von Hell/Dunkel
b) ist der Übergang von Dunkel/Hell
kommt das von der Lichtschranke oder vom Transistor oder von was?