Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Ein einfacher analoger Näherungssensor mit digitaler Schnittstelle (für Raspberry Pi) [letztes Update:7. Februar 2014]

Raspberry Pi verfügt über einen Broadcom BCM2835-Chip, der 26 GPIO-Pins (General Purpose Input/Output) steuert. Es gibt online eine C-Bibliothek oder ein RPi.GPIO-Python-Paket, mit dem die Pins gesteuert werden können. Das RPi.GPIO-Paket ist standardmäßig in den meisten Raspberry Pi-Systemen enthalten, z. B. Raspbian, eine RPi-Version des Debian-Linux-Systems.

Ein Nachteil von RPi im Vergleich zu Arduino ist, dass es keinen analogen Pin hat. Alle GPIO-Pins sind rein digital. Wenn Pin A beispielsweise ein Ausgangspin ist, kann er nur LOW (0 V) oder HIGH (3,3 V) ausgeben, dargestellt als 0 oder 1. Wenn Pin A ein Eingangspin ist, für jede Spannung unter 0,8 V, die an Pin A angelegt wird , nimmt es als LOW oder 0 an; für jede Spannung über 1,3 V (eigentlich überraschend niedrig!) wird sie als HIGH oder 1 angenommen [ref:RPi GPIO].
In der realen Welt kommt es jedoch nur selten vor, dass eine reine 0 oder 1 vorliegt. Wir erhalten immer Informationen, die in ihrem Umfang einen kontinuierlichen Wert haben können. Die Temperatur kann beispielsweise 10 °C oder 50 °F oder 100 °C oder 212 °F betragen. Diese Nummer enthält mehr Informationen als nur „kalt“ oder „heiß“. Ein Abstand kann 2 cm oder 10 m betragen und es reicht nicht aus, nur „nah“ oder „weit weg“ zu kennen.

Es gibt einige Methoden, um diesen Nachteil zu überwinden. RPi unterstützt die SPI- oder I2C-Schnittstelle, so dass wir einige externe Analog-Digital-Wandler (ADC) verwenden und die SPI- oder I2C-Schnittstelle verwenden können, um quasi-analoge Signale über diese ADCs wie MCP3008, TLC549, MCP23017 usw. zu erhalten. Diese Chips kostet in der Regel mehrere Euro. Mit zusätzlichen kommerziellen Sensoren kann das gesamte Teil jedoch mehr als 20 bis 30 US-Dollar kosten, und es ist schwierig, das System kompakt zu gestalten. Für Roboterprojekte benötigt man normalerweise mehr als einen Sensor, und die Kosten können sich leicht summieren.

Tatsächlich ist es in vielen Situationen tatsächlich möglich, die Verwendung dieser externen Geräte zu vermeiden und trotzdem analog zu erhalten Signale über die digitale Stifte!

Der Schlüssel besteht darin, das analoge Signal in die Zeitdauer umzuwandeln. Denn Zeit ist immer analog!

Ich baue einen einfachen Infrarot-Näherungssensor mit mehreren Infrarot-LEDs, einem Fototransistor, einem 2N3904 NPN-Transistor, einem 100nF-Keramikkondensator und mehreren Schwachstromwiderständen. Und ich bin in der Lage, analoge Messwerte zu erhalten.

Alle Elemente gehören zu den billigsten auf dem elektronischen Markt.

Dabei spielt es keine Rolle, welche LEDs, Fototransistoren oder NPN-Transistoren verwendet werden. Sie sind ziemlich gleich.

Das einzige, was ein bisschen von Bedeutung sein könnte, ist der 100nF (0,1uF) Kondensator. Ich habe eine Keramik mit niedrigem Profil verwendet, was wahrscheinlich nicht die beste Wahl ist. Ein Keramik- oder Folienkondensator der Klasse 1 ist hier besser geeignet.

Verbinden Sie die +5V- und GND-Drähte mit einer externen 5V-Stromversorgung, verbinden Sie auch die GND-Draht mit der Masse der Raspberry Pi GPIO-Pins. Wählen Sie einen GPIO-Pin, beispielsweise Pin A, als Trigger und verbinden Sie ihn mit dem Trigger-Kabel. Wählen Sie einen anderen GPIO-Pin, beispielsweise Pin B, als Signaleingang/-ausgang und verbinden Sie ihn mit dem OUT-Kabel.

Um die Entfernung eines Objekts zu messen, senden wir ein Triggersignal, um die Infrarot-LEDs zu aktivieren. Das von diesen LEDs emittierte Licht wird dann vom Objekt vor dem Sensor reflektiert. Der Fototransistor in der Mitte sammelt das reflektierte Licht und erzeugt einen proportionalen Strom. Dieser Strom wird verwendet, um die Spannung am Kondensator (I=CdV/dt) zu integrieren. Durch die Überwachung der Zeit, die die Kondensatorspannung benötigt, um einen bestimmten Schwellenwert zu erreichen, haben wir ein Gefühl dafür, wie viel Strom vom Fototransistor erzeugt wurde oder wie viel Licht reflektiert wurde. Offensichtlich ist das reflektierte Licht umso mehr, je näher das Objekt ist. Durch sorgfältiges Kalibrieren des Timings des Sensors sollten wir in der Lage sein, eine ziemlich genaue Messung der Entfernung zu erhalten.

Hier ist die detaillierte Abfolge der Operationen.1. Den Kondensator auf Null setzen

Stellen Sie zuerst Pin B als Ausgangspin ein und setzen Sie ihn auf Null.

GPIO.setup(PIN_B,GPIO.OUT)
GPIO.output(PIN_B,0)
time.sleep(0.01)

Dadurch wird jegliche Restspannung am Kondensator entladen. Beachten Sie, dass die RC-Zeit zum Entladen des Kondensators t =RC =500 Ohm * 100 nF =50 us =0,00005 s beträgt. Durch Beibehalten von Null Volt an Pin B für 200RC Zeit stellen wir sicher, dass der Kondensator vollständig entladen ist (die Restspannung sollte e−200=10−87 mal die ursprüngliche Restspannung betragen).2. Stellen Sie Pin B als Eingang ein

Jetzt verwenden wir Pin B als Eingangspin, um Daten vom Phototransisto zu erhalten.
GPIO.setup(PIN,GPIO.IN)

3. Bringen Sie die LEDs zum Leuchten

Es ist Zeit, die Infrarot-LEDs einzuschalten.

GPIO.setup(PIN_A,GPIO.OUT)
GPIO.output(PIN_A,1)

Dadurch wird die Spannung des Trigger-Pins auf 3,3 V eingestellt. Da der BE-Knoten von 2N3904 um 0,7 V abfällt, beträgt die Spannung an R1 2,6 V. Der Strom durch R1 beträgt dann I=2,6V/4,3kΩ=0,6mA. 2N3904 verstärkt diesen Strom dann um das ~150-fache, was zu einem Strom von ~ 100 mA von seinem Kollektor zum Emitter führt. Jede der LEDs leitet für kurze Zeit etwa 50 mA.4. Timing der Dauer von Pin B, die LOW bleibt

Beginnen Sie zu messen, wie lange es dauert, bis der Kondensator den Schwellenwert von RPi erreicht, damit Pin B HIGH wird

counter=0
t1=time.clock()*1000
while(GPIO.input(PIN_B)==0)&(counter<1e4):
counter =counter+1
deltat=time.clock()*1000-t1

Deltat ist die Zeitdauer von Pin B, die LOW bleibt. Da Deltat proportional zum Kehrwert des Fototransistorstroms ist (oder Menge des reflektierten Lichts ) und der Fototransistorstrom ist ungefähr proportional zum Kehrwert des Abstands , Deltat ist ungefähr proportional zum Abstand .
deltat∝1I∝1leichte∝Entfernung

Der (counter<1e4)-Term soll verhindern, dass die Integration des Kondensators aufgrund eines extrem niedrigen Fototransistorstroms oder einer äquivalenten unendlichen Entfernung zu lange dauert.

Für mehr Details:Ein einfacher analoger Näherungssensor mit digitaler Schnittstelle (für Raspberry Pi) letztes Update vom 7. Februar 2014]


Herstellungsprozess

  1. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  2. 1-Draht-Temperatursensor DS1820 am Raspberry Pi (GPIO direkt)
  3. Integration von Sensordaten mit Raspberry Pi-Mikroprozessor
  4. Ultraschallsensor (HC-SR04) + Raspberry Pi
  5. Linienverfolgungssensor mit RPi
  6. Lesen analoger Sensoren mit einem GPIO-Pin
  7. DIY Infrarot-Bewegungssensorsystem für Raspberry Pi
  8. Analoge Sensoren ohne analoge Eingänge auf dem Raspberry Pi
  9. Raspberry Pi 1-Draht digitaler Thermometersensor (DS18B20)
  10. Raspberry Pi digitaler Hall-Sensor in JAVA