Ich habe ein Mikrocontroller-basiertes Projekt (mit einem Atmega328), das das Vorhandensein eines festen Objekts erkennen muss, das auf der Projektbox platziert ist. Was wäre der beste Weg, dies zu erreichen? Ich habe über die Verwendung eines lichtempfindlichen Widerstands in einer Spannungsteilerkonfiguration nachgedacht, aber das Problem, das ich damit habe, ist, dass, wenn sich die Projektbox in einem dunklen Raum befindet, möglicherweise kein Licht erkannt wird, wenn das Objekt entfernt wird.
Jeder Beitrag dazu wäre dankbar, da ich nicht sicher bin, wie zuverlässig meine Spannungsteilerlösung ist. Die auf der Projektbox platzierten Objekte sind solide und bestehen aus Glas oder Kunststoff. Und die einzige Ausgabe, die von dem Sensor, den ich verwende, benötigt wird, ist eine logische Null oder Eins, um anzuzeigen, ob ein Objekt vorhanden ist oder nicht. Beachten Sie, dass die Objekte möglicherweise konkave Böden haben, sodass der Sensor in der Lage sein muss, sie zu identifizieren, selbst wenn sie bis zu 1-2 cm vom Sensor entfernt sind.
Ein paar Optionen fallen mir ein.
Verwenden Sie einen Ultraschall-Entfernungsmesser oder, wenn Sie der Meinung sind, dass das Objekt undurchsichtig genug ist, einen Infrarot-Näherungssensor . Setzen Sie den Sensor oben in die Box, zeigen Sie nach oben und aus einem Loch, das Sie dort geschnitten haben, und fragen Sie ihn gelegentlich ab. Wenn die gemessene Entfernung schnell abnimmt und eine Methode zur Rauschfilterung für eine festgelegte Anzahl von Abtastungen niedrig bleibt, steht Ihnen ein Objekt im Weg.
Eine andere Möglichkeit besteht darin, die Lastsensoren auf der Unterseite der Box anzubringen. Unter der Annahme, dass das Objekt tatsächlich auf der Kiste platziert wird, wird die erfasste Last zunehmen und kann das Vorhandensein eines Objekts anzeigen.
Machen Sie die Oberseite der Kiste federnd, das heißt, sie hebt sich leicht von einem festen Ruhepunkt ab. Platzieren Sie nun einen Dehnungsmessstreifen in der Lücke. Wenn ein Objekt auf die Oberseite gelegt wird, wird es niedergedrückt und verbiegt den Dehnungsmessstreifen. Dies bedeutet das Vorhandensein eines Objekts.
Die oben genannten Optionen geben Ihnen nicht unbedingt eine logische Eins/Null für die Anwesenheit, aber auch kein optischer Sensor.
Wenn Sie mechanisch versiert sind, können Sie sogar einen oder mehrere Drucktastenschalter verwenden. Platzieren Sie zum Beispiel auf dem Deckel Ihrer Projektbox drei/vier Druckschalter und befestigen (kleben) Sie eine Plattform für das Objekt darauf. Diese Methode ist jedoch möglicherweise nicht sehr zuverlässig. Ich würde versuchen, zu viele bewegliche Teile zu vermeiden.
Ich persönlich würde mich für den optischen Entfernungs-/Näherungssensor entscheiden.
Sie könnten einen kapazitiven Sensor auf der Oberseite der Box implementieren. Kunststoff hat eine relative Dielektrizitätskonstante von etwa 2,0 oder mehr und Glas von mehr als 4,0. Beide sollten also leicht von Luft zu unterscheiden sein, die im Wesentlichen 1,0 ist.
Die Arduino CapSense- Bibliothek verwendet eine sehr einfache GPIO-Pin-basierte Methode zur Kapazitätsmessung. Sie könnten dies problemlos in Ihrem Projekt tun. Der interessanteste Teil wäre die Gestaltung des Sensorlayouts, um die Zuverlässigkeit der Erkennung des interessierenden Objekts ohne falsche Messwerte zu maximieren, z. B. wenn sich die Hand einer Person in der Nähe der Oberfläche befindet.
Der Sensor würde durch das Glas- oder Kunststoffobjekt arbeiten, wodurch die Randfeldkapazität zwischen den zwei Sensorelektroden zunimmt, wenn das Objekt vorhanden ist, verglichen mit der Kapazität, wenn nur Luft über der Sensoroberfläche vorhanden ist. Eine Elektrode würde mit Masse und die andere Elektrode mit dem "Empfangsstift" der MCU verbunden, wie im folgenden Diagramm:
Ich gehe davon aus, dass Sie zwei Elektroden verwenden und die Randfeldkapazität für die Erfassung verwenden möchten, anstatt das in der obigen Abbildung verwendete "Ein-Elektroden" -Modell, da das Kunststoff- oder Glasobjekt nicht gut gekoppelt ist Boden.
Sie könnten einen Punktsensor verwenden, z. B. einen kreisförmigen Sensor und eine umgebende Masseebene, oder Sie könnten einen breiteren Sensor mit ineinandergreifenden koplanaren Elektroden implementieren.
Sie könnten eine Variation eines "Magic-Eye" -Detektors (Strahlunterbrechung) ausprobieren.
Ohne Objekt zum Blockieren des Strahls wäre der Ausgang des Fototransistors LOW. Mit einem Objekt in der Art würde der Ausgang HIGH gehen.
Wenn das Objekt ein metallisches Material enthält, ist eine sehr einfache (und billige) Option die Verwendung einer induktiven Abtastung. Sie können eine Drahtspule mit einigen Schleifen herstellen und diese als Induktivität in einem LC-Oszillator verwenden. Es ist ziemlich einfach, ein Arduino (oder einen anderen Controller de Jour) zu verwenden, um die Resonanzfrequenz des Oszillators zu stimulieren und zu messen. Wenn ein Objekt (insbesondere ein metallisches Objekt) in die Nähe oder in die Schleife kommt, ändert sich die Induktivität der Schleife ebenso wie die Schwingungsfrequenz. Somit können Sie das Vorhandensein des Objekts durch Beobachten der Schwingungsfrequenz erkennen. Diese Technik funktioniert je nach Material gut. Theoretisch ändert fast jedes Kernmaterial den Wert der Induktoren, aber das SNR könnte fragwürdig sein. Ich habe vor ein paar Monaten einen ähnlichen Sensor in etwa 30 Minuten zerhackt, um zu versuchen, nichtmetallische Materialien zu erkennen. Obwohl sich die Frequenz ändert, ist das SNR niedrig, sodass Sie möglicherweise eine kompliziertere Signalverarbeitung benötigen, um das Objekt zu unterscheiden. An diesem Punkt möchten Sie wahrscheinlich andere Sensoren (Ultraschall, IR, Wägezelle usw.) in Betracht ziehen, da das Schöne an dieser Option die Einfachheit/Kosten sind.
Auf diese Weise erkennen übrigens Bremslichter die Anwesenheit von Autos. Wenn Sie jemals eine Schleife gesehen haben, die an einer Ampel in den Bürgersteig geschnitten wurde, ist dies tatsächlich der Ort, an dem sie Drahtspulen einbetten, um das L im LC-Oszillator zu erzeugen.
Ignacio Vazquez-Abrams
David Högberg
Benutzer36129
Andi aka
John u