Snack-Automat .. wie funktioniert das Homing?

Hi Leute :slight_smile:

Ich habe eine interessante Aufgabe bekommen: ein Snackautomat, dessen Elektronik nicht mehr funktioniert, mit einer eigenen Elektronik ausstatten, die mittels eines Zufallsgenerators kleine Gewinne ausspielt. Die Motoren, die an den Spiralen für die Warenausgabe sind, funktionieren noch, machen mich aber etwas ratlos, wie das Homing (eine Umdrehung erkennen) funktionieren soll..

Die 40 verbauten Motoren sind 24V/4W-DC-Getriebemotoren. Zu den Motoren gehen immer nur 2 Kabelanschlüsse: V+ (bei allen Motoren durchgeschleift) und V- (zur Ansteuerung jedes einzelnen Motors).

Das wars. Keine zusätzlichen Ausgänge für Sensoren oder den verbauten Mikrotaster. Dieser wird 1x pro Umdrehung gedrückt und wenn der Motor weiterdreht wieder gelöst. Er schaltet aber dabei nichts aus oder um, sondern wechselt einfach nur zwischen "V- an den Motor-" und "V- an den Motor-", also zum selben Kontakt. Ein Schaltbild der Platine sollte hier etwas mehr Aussagekraft haben:

Das bedeutet doch, daß der einzige Impuls, der zur Umdrehungserkennung ausgewertet werden kann, der superkurze Augenblick ist, in dem der Kontakt im Mikroschalter umspringt (mit einer LED getestet, die beim >klick< kurz ausgeht).

Wie könnte ich nun diesen Schaltvorgang relativ zuverlässig erkennen und demnach auswerten? Ich dachte zuerst an Strommessung des Verbrauchers (Motor) mittels ACS712 mit 5A-Setup (kleinst möglich verfügbar), konnte aber entweder aufgrund der niedrigen Leistung des Motors oder starkem "Rauschen" bei der Messung keine Ausschläge im Seriellen Plotter feststellen..

const int analogInPin = A0; 
int sensorValue = 0;       

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = 0;
  for (int i = 0; i < 2; i++) {
   sensorValue = sensorValue + analogRead(analogInPin);
  }
  sensorValue = sensorValue / 2; 
  Serial.print("sensor = ");
  Serial.println(sensorValue);
}

Ist das überhaupt der richtige Ansatz?

Gibt es noch eine andere Möglichkeit, den Motor so lange mit Spannung/Strom zu versorgen, bis durch Drücken des Tasters am Motor der Strom unterbrochen wird und damit die Spannung abgeschaltet wird? Quasi wie eine Schaltung "Relais mit Selbsthaltung"?

Das werden sogar einige prellende Flankenwechsel sein, von denen dich nur einer interessiert:
Wahrscheinlich ist ein Puls deutlich länger als die anderen, aber am einfachsten ist wohl, den ersten zu nehmen. Die 200 ... 300 usec für die zwei analogRead sind im Vergleich deutlich länger und nicht so gut auszuwerten fürchte ich.

Hallo,
vorausgesetzt Dein Schaltbild stimmt ist es meiner Meinung nach ja so, das der Schalter einen Sprungkontakt haben muss. Bei einem Schleppkontakt könnte es ja zufällig passieren das der Motor in der Mitte stehen bleibt, dann würde er nie mehr loslaufen können. Damit ist der Impuls allerdings dann ziemlich kurz.

Vermutlich willst Du ja den Motor einschalten und bei erkennen des Impulses ausschalten.
Ich denke du benötigst eventuell ein zusätzliches Bauteil als "Trigger-Verstärker". Wenn der Schalter den kurzen Zeitpunkt geöffnet ist sollte die Spannung an dem Schalter, Richtung Motor, über den Widerstand und Motor ja eigentlich positiv sein. Das könntest Du ja mal messen. Zum testen den Draht am Schalter abklemmen. Damit sollte man dann einen digitalen Eingang eventuell mit einem Interrupt abfragen können. Da der Motor mit 24 V läuft würde ich eventuell einen Optokoppler nehmen.

Spannungsteiler und zus. Z-Diode als Schutzbeschaltung ging sicher auch noch.

Es sollte doch Null Komma Kein Problem sein, das kleine Platinchen umzubauen.

Ich auch.. :worried: wie gesagt, im Rauschen der Messwerte kaum erkennbare Unterschiede zwischen Strom fließt/fließt nicht zu erkennen. Eventuell kann man den Sensor ja auf einen Messbereich bis 1A (statt aktuell 5A) umstellen und das Schwanken (z.B. Werte von 510-524 ohne Motor) noch hardwaremässig glätten, aber da brauch ich eine genaue Anleitung..

Das ist genau der Eingriff, den ich zu vermeiden versuche: eine zusätzliche Leitung an jedem Motormodul, um die anliegende Spannung zu überwachen. Diese Lösung behalte ich aber auf jeden Fall im Hinterkopf. Ich bräuchte ja dafür auch nur einen (Interrupt-)Eingang, da ja immer nur 1 Motor gleichzeitig laufen würde. Und wenn ich diesen Schritt bereit bin, zu gehen, dann würde ich auch gleich den kompletten Taster umklemmen, um den ganzen Bereich "nicht gedrückt" abzufragen und nicht nur den Umschaltmoment. Wahrscheinlich wird es auch darauf hinauslaufen..

Im Augenblick bin ich einfach nur neugierig wie "die" das wohl in ihrer Elektronik mit der aktuellen Beschaltung gelöst haben könnten.

0 komma kein Problem ... x 40 :sweat_smile:
Ja, es läuft wohl auf Fleißarbeit raus...

Nehmen wir mal an das Schaldbild ist falsch.
Ich würde es so machen:

Der Endschalter ist so eine Art Selbsthaltung. Der Motor hat fix 24V und Masse. Der Endschalter unterbricht die Masse der Stromversorgung in der Position der Abflachung. Der Motor steht. Eine zusätzliche Masseleitung der den Endschalter überbrückt läßt den Motor aus der Parkposition herausfahren und der Motor dreht sich genau 1 Umdrehung bis der Endschalter wieder an der flachen Seite der Achse losgelasen wird. Der Masseimpuls muß nur so lange sein bis sich die Achse aus dem Flachen Teil dreht und kann danach als Positionsindikator verwendet werden: Massepotential: Der Motor dreht sich noch; Versorgungsspannung (über Motor) Motor steht.

Also die Kabel sind an den Faston Anschlüssen P2 und P3 angebracht und der schwarze Stecker ist unbenutzt?

Datenblatt des Motors/Getriebe: https://www.kenta.it/wp-content/uploads/2019/06/k930.pdf Das sagt nicht viel über die Platine aus.

Grüße Uwe

korrekt. Und die schwarze Buchse hat dieselben Anschlüsse (P2+P3) parallel. Aber in diesem Automat gibt es dazu keine Gegenstücke.

Ist verstanden. Und bei gleichem Aufwand (Platine umbasteln, Taster umbelegen, zusätzliche Leitung) haben beide Variationen ihren Charme..: Selbstkalibrierung vs. Überwachung, ob Umdrehungen tatsächlich statt finden.

Neuer Versuch mit Stromsensor:

Nach dem ersten eher unbefriedigendem Test mit dem ACS712...

...wollte ich noch einen anderen ausprobieren: INA219


... und bin nicht ganz unbegeistert:
die Ausschläge des Stroms während der beiden Schaltvorgänge (Anfang und Ende der abgeflachten Stelle der Drehachse) sind nun deutlich zu erkennen :nerd_face:

Ich will nicht sagen, daß das die finale Lösung werden wird, da das noch immer eine sehr schnelle ungestörte Abfrage/hohe Sample-Rate benötigt. Zusätzliche Aufgaben lassen den Augenblick des Schaltens verpassen. Habe ich gemerkt, als ich zusätzlich zum Strom noch andere Werte auf dem Plotter ausgeben lassen wollte.
Aber zumindest werde ich die urpsrünglich angestrebte Variante mit Stromüberwachung doch noch etwas weiter verfolgen. Alle Vorschläge zur Alternativumsetzung werden weiterhin wertgeschätzt und im Hinterkopf behalten! :innocent:

Man muß die Stromverminderung ja nicht digital erkennen. Man kann dazu auch eine analoge Schaltung bauen, die zusätzlich das Signal verlängert. (zB Komparator mit einem OPAMP und ein Monoflop.

Grüße Uwe

Hallo derGeppi

Hast du dafür noch die Steuerelektrik greifbar?

Ich bin grad am Ausschlachten. Sobald ich den Teil bestimmt habe, an dem die Motoren dran hängen, lade ich Bilder hoch :slight_smile:

Kurz eingelesen dazu und kann nur sagen: Signalverlängerung klingt gut! Aber .. so gar keine Ahnung, wie, wo und mit welchen Bauteilen ich da ansetzen sollte. Wenn ich so eine Baugruppe vor die Schaltung der Platine am Motor einsetzen kann, wäre das eine Überlegung wert. Wenn ich für diese Schaltung allerdings an der Platine was verändern oder anschließen müsste (z.B. nach dem Taster), dann bleibe ich eher bei der direkten Auswertung des Tasters wie in #8 favorisiert.

Hallo,
ich denke ehr das Uwe das analoge Signal von deinem Strommessmodul gemeint hat. Wenn Du da einen OP einsetzt mit einer entsprechenden Beschaltung dann kannst Du mit einer hohen Verstärkung ein Signal erzeugen das z.B bei 5V liegt und bei den peek ein Signal das für z.B 100 ms auf OV liegt. Dann kannst Du das mit einem digitalen Eingang abfragen.

Ich müsste jetzt erst mal wieder nach so einer Schaltung suchen aber Uwe hast die Begriffe Komperator und Monoflop schon genannt.

Ein ATMega328P (und viele weitere) haben schon einen analogen Komparator eingebaut, Ihm kann sogar Interrupts auslösen.

Das kann ich fast nicht glauben.
Kannst Du die Platine mal abschrauben und die Unterseite zeigen?
Irgendwie fehlt mir P1 in Deinem Schaltbild....

Hallo,

der Schalter liegt niemals in Reihe.

Ich glaube schon das der Schaltplan stimmt:
image

P1 ist sehr wahrscheinlich parallel zu P2 und P3

2 Likes

Hallo,

Masse kann schon zusammengeführt sein. Das bedeutet dennoch nicht das der Schalter unbedingt in Reihe liegt. Überlegen wir einmal weiter. Kommt der Motor ungünstig zum stehen, kann er nie wieder loslaufen. Allein deswegen kann der Schalter nicht in Reihe liegen. Der Schalter wird sicherlich zum zählen der Umdrehungen verwendet. Jedoch ganz sicher nicht zum Motorstrom schalten.

Da bin ich nicht Deiner Meinung.

Endschalter haben eine mechanischen Aufbau, sodaß auch bei sehr langsamer Betätigung der gemeinsame Kontakt nicht in der Mitte zwischen den anderen 2 Kontakten hängen bleiben kann. Die Endschalter haben eine Feder, die sobald der Komutationspunkt erreicht ist, den gemeinsamen Kontakt von einem zum anderen Kontakt (NO bzw NC) wechselt. Es ist also nicht der Betätigungsarm der die Kontakte direkt betätigt, sondern eine Feder dazwischen.

Hier drückt der Betätigungsknopf die Feder nach unten und diese bewegt ab einer gewissen Auslenkung den Arm mit dem Kontakt.
grafik
grafik
Hier ist diese Feder ein Teil des Arms. Durch den Teil des Arms der sich gegen den Mittelkontakt abstützt. Wenn Der Betätigungsknopf nach unten drückt hüpft ab einer gewissen Auslenkung der Arm nach unnten und die Feder biegt sich nach oben.

grafik

Oder auch hier ist die Feder in der Mitte der halbrunde Teil zwischen Mittelkontakt (Links) und NC (Rechts).

Darum kann das von Dir befürchtete Szenario nicht auftreten.

Grüße Uwe