Erstellen Sie einen Objekterkennungs-DC-Motorcontroller

So erstellen Sie eine perfekte Facebook Unternehmensseite (Kann 2019).

$config[ads_text] not found
Anonim

Erstellen Sie einen Objekterkennungs-DC-Motorcontroller


Übung Kontrolle.

Vorherige Artikel in der Reihe:

Baue einen LED-Flasher

Baue einen Drucktastenschalter

Einführung

Im vorherigen Build Raspberry Pi Controller-Projekt haben Sie gelernt, wie man einen programmierbaren LED-Flasher baut. Um den LED-Blinkzyklus zu starten, musste ein Tastendruckschalter gedrückt werden. Obwohl der taktile Druckknopfschalter ein grundlegendes manuelles Verfahren zum Bereitstellen eines Eingabesteuersignals für das RPi zum Verarbeiten und Bereitstellen einer geeigneten Ausgabeantwort ist, kann ein automatischer Steueransatz durch Verwendung eines Sensors erreicht werden. Fotozellen oder lichtabhängige Widerstände (LDRs) werden oft verwendet, um das Licht nachts automatisch einzuschalten. Das typische Nachtlicht verfügt über eine Fotozelle, die aufgrund einer Widerstandsänderung die Dunkelheit erkennt. Wenn von der Fotozelle Dunkelheit festgestellt wurde, geht das Licht an. Nach dem gleichen Arbeitsprinzip eines typischen Nachtlichts können wir auf ähnliche Weise einen kleinen Gleichstrommotor betreiben. In diesem Projekt erstellen Sie einen Objekterkennungs-DC-Motorcontroller. Das Blockdiagramm für unseren Objekterkennungs-DC-Motorcontroller ist in 1 gezeigt. Die elektronischen Komponenten, die erforderlich sind, um den Objekterkennungs-DC-Motorcontroller zu bauen, sind in der Teileliste gezeigt.

Abbildung 1 . Die Elektro-Elektronik und eingebettete Hardware benötigt, um die Objekterkennung DC-Motor-Controller zu bauen.

Projekt Teileliste

  • Raspberry Pi (Modell A +, B, B + oder Pi 2)
  • (Q1) 2N2222 NPN-Transistor oder gleichwertig
  • (R1) 220 Ohm Widerstand (rot, rot, braun, gold), 1 / 4W, 5%
  • (D1) 1N4001 Gleichrichterdiode oder gleichwertig
  • (M1) 3-6VDC Motor oder gleichwertig
  • (Pi 1) Raspberry Pi Cobbler oder gleichwertig
  • (R2) Fotozelle
  • lötfreies Steckbrett
  • DMM (Digitalmultimeter) oder VOM (Volt-Ohm-Milliamperemeter)
  • Überbrückungsdrähte (handgeschliffen 22 AWG (American Wire Gauge)) Volldrähte oder Adafruit Breadboarddrähte Produkt-ID: 153)
  • (VCC1) 6VDC Batteriepackung
  • 1, 5 VDC AAA oder AA Batterien x 4
  • (S1) Tastschalter

Lichterkennung und die Fotozelle

Eine Fotozelle ist ein lichtempfindlicher Widerstand. Ein anderer Begriff, der in elektrischen Lehrbüchern oder Magazinen für Elektronik-Bastler verwendet wird, ist der lichtabhängige Widerstand oder LDR. Wenn Sie noch nie eine Fotozelle gesehen haben, zeigt Abbildung 2 die elektrische Symbol- und Komponentenansicht eines LDR.

Abbildung 2 . Die elektrische Symbol- und Komponentenansicht einer Fotozelle

Die elektrische Reaktion der Fotozelle auf Licht ist die Veränderung des Widerstands. Je mehr Licht die Fotozelle auf ihrer empfindlichen Oberfläche empfängt, desto mehr sinkt ihr Widerstand auf einige hundert Ohm ab. Im Dunkeln ist der Fotozellenwiderstand in den Megaohm. Ein einfaches Experiment kann durchgeführt werden, um zu sehen, wie sich der Widerstand der Fotozelle basierend auf den Lichtpegeln ändert. Nehmen Sie zuerst ein DMM (Digital-Multimeter) und stellen Sie es auf Ohm. Stellen Sie die Ohmmeterskala auf die 20-Kiloohm-Einstellung ein. Befestigen Sie die positiven und negativen Messleitungen des DMM über die Fotozelle, wie in Abbildung 3 gezeigt. Der auf dem Ohmmeter angezeigte Wert liegt bei einigen Tausend Ohm.

Abbildung 3 . Das Ohmmeter des Verfassers liest einen Wert von 3.11Kilo-Ohm. Hinweis : Die Widerstandswerte variieren je nach Umgebungslicht, das von der Fotozelle empfangen wird.

Als nächstes stellen Sie die Skala auf die höchste Megaohm-Einstellung ein. Legen Sie Ihre Hand über die Fotozelle und Sie sehen einen Widerstandswert in einigen Millionen Ohm, wie in Abbildung 4 gezeigt.

Abbildung 4 . Das Ohmmeter des Autors liest einen Wert von 1, 587 Megaohm.

Die besten Ergebnisse erzielen Sie, wenn Sie einen Kollimator (ein Gerät, das das Licht verschmälert) machen, indem Sie den Lauf eines Tintenstiftes schneiden und das Innere schwarz anstreichen. Nach dem Trocknen den Kollimator über die Fotozelle legen. Wenn der Kollimator über der Fotozelle platziert wird, wird das Umgebungslicht (außen) davon abgehalten, den Widerstandswert des Ohmmeters zu beeinflussen. Ich machte einen Kollimator unter Verwendung des "Fingergriffs" eines nicht arbeitenden Tintenschreibers, wie in 5 gezeigt. Der in 4 erhaltene Widerstandsmesswert basierte auf meinem Homebrew- "Fingergriff" -Kollimator. Diese minimalen und maximalen Fotozellenwiderstandswerte ermöglichen es uns, einen einfachen Lichtsensorschalter mit dem RPi auf einem lötfreien Steckbrett zu verbinden.

Abbildung 5. Der Homebrew-Kollimator des Autors, der aus einem Tintenstift-Fingergriff besteht.

Aufbau eines einfachen Lichtsensorschalters

Wir werden die Fotozelle zusammen mit einem Pull-up-Widerstand verwenden, um einen einfachen Lichtsensorschalter zu machen. Fig. 6 zeigt ein Prinzipschaltbild des einfachen Lichtsensorschalters, der mit einem RPi-GPIO-Pin verdrahtet ist. Der Spannungsabfall ist proportional zum Widerstand der Fotozelle. Wenn Sie beispielsweise ein Objekt oder Ihre Hand über die Fotozelle legen, wird über den LDR ein Spannungsabfall von etwa +3, 3 VDC erzeugt. Wenn Sie das Objekt oder Ihre Hand entfernen, verringert sich der Widerstand der Fotozelle, wodurch ein proportionaler kleiner Spannungsabfall entsteht. Der Spannungsabfall wird vom RPi GPIO Pin gelesen. Der Python-Code liest die Abwesenheit und das Vorhandensein des Lichts als entweder + 3, 3 VDC oder 0 VDC. So wird das elektrische Verhalten eines gewöhnlichen taktilen Drucktasters - digitaler Schalter durch Verwendung einer einfachen Lichtsensorschaltung emuliert. Die nächste Phase des Projekts besteht darin, einen durch einen Transistor betriebenen Gleichstrommotor zu bauen und zu testen.

Abbildung 6 . Ein einfacher Lichtsensorschalter, der mit einer Fotozelle und einem Pull-Up-Widerstand aufgebaut ist. Hinweis: Der Pull-up-Widerstand ist eine programmierte elektrische Komponente, die eine einzelne Zeile Python-Code verwendet.

Baue die Transistormotortreiberschaltung auf

Die nächste Phase des Projektbaus besteht darin, eine elektronische Schaltung zu verdrahten, die einen kleinen Gleichstrommotor betreibt. Ein einzelner bipolarer Sperrschichttransistor (BJT) mit einem geeigneten Verstärkungsfaktor ( B eta) kann verwendet werden, um einen kleinen Gleichstrommotor zu betreiben oder anzutreiben. Sie können einen Transistor-Gleichstrommotortreiber leicht aufbauen, indem Sie die Schaltung auf einem lötfreien Steckbrett aufbauen, wie in Abbildung 7 gezeigt. Ich habe auch das Schaltbild der elektronischen Schaltung als zusätzliches Verdrahtungsreferenzmaterial in Abbildung 8 gezeigt. Sobald die Schaltung aufgebaut wurde Das lötfreie Steckbrett, das Drücken des Tastendruckschalters schaltet den kleinen Gleichstrommotor ein, der mit der Kollektorleitung des Transistors verdrahtet ist. Wenn sich der Gleichstrommotor nicht dreht, entfernen Sie den Akku aus dem Stromkreis und überprüfen Sie die Verkabelung und die korrekte Ausrichtung der Komponenten der 1N4001-Gleichrichterdiode und des NPN-Transistors 2N2222 erneut. Nachdem die Verdrahtungsfehler behoben wurden, schließen Sie den Akku wieder an und testen Sie den Schaltkreis erneut. Herzlichen Glückwunsch zum Aufbau einer funktionsfähigen Transistor-Motortreiberschaltung! Sehen wir uns jetzt an, wie die DC-Motortreiberschaltung funktioniert, indem wir die grundlegende Transistortheorie überprüfen.

Abbildung 8. Das Schaltbild der elektronischen Schaltung eines typischen Transistor-DC-Motortreibers

Grundlegende Transistor-Theorie

Der Transistor ist in der Lage, den Gleichstrommotor aufgrund des elektrischen Quellenstroms zu betreiben, der von dem + 6VDC Batteriesatz durch die Kollektor - Emitter - Zuleitungen zu Masse fließt. Die DC-Motorwicklung ist in Reihe zwischen der Kollektorleitung und dem + 6VDC-Batteriepack. Der elektrische Strom aus dem + 6VDC-Batteriepack fließt durch die Wicklung des Gleichstrommotors, so dass dieser sich drehen kann. Damit der elektrische Strom durch die Kollektor-Emitter-Leitungen und die DC-Motorwicklung fließt, muss der Transistor eingeschaltet werden. Um einen Transistor einzuschalten, muss eine elektronische Schaltungstechnik, die Vorwärts-Vorspannung genannt wird, verwendet werden. Die Vorspannung eines Transistors in Vorwärtsrichtung besteht aus einer Eingangsspannung, die an den Basis-Emitter-Übergang angelegt wird und größer als 0, 7 V (700 mV) ist. Außerdem muss der Transistor basierend auf dem Halbleiterkomponententyp richtig verdrahtet sein. BJT-Komponententypen bestehen aus einer PNP- oder NPN-Pin-Konfiguration. Der 2N2222-Transistor ist eine NPN-Komponente.

Die Kollektor- und Emitterleitungen sind negativ (N-Material), wobei die Basis positiv ist (P-Material). Abbildung 9 zeigt die Pin-Konfiguration und den Gehäusetyp für den NPN-Transistor 2N2222. Wie in Abbildung 8 gezeigt, ist die Basis mit einem taktilen Druckknopfschalter und einem 220-Ohm-Begrenzungswiderstand mit dem geerdeten Emitter (dem schwarzen Kabel) an der positiv-roten Leitung + 6VDC angeschlossen. Ein 220-Ohm-Widerstand ist an der Basis des Transistors angebracht, um den vollen Batteriestrom und die Wärme zu reduzieren. Der 220 Ohm Widerstand ist ein netter Widerstandswert, um eine ausreichende Menge an Basisstrom fließen zu lassen, so dass der Transistor richtig einschaltet. Außerdem verhindert die 1N4001-Diode, dass der rückwärtige Spitzenrückstrom von der DC-Motorwicklung den Transistor beschädigt, wenn er ausgeschaltet wird. Wenn Sie mehr über dieses Halbleiterbauelement erfahren möchten, lesen Sie den Artikel von AAC über Bipolar Junction Transistors für zusätzliche elektrische Theorie Informationen. Gehen wir zur endgültigen Hardware-Erstellung des Projekts über.

Abbildung 9. Der elektronische Symbol- und Komponentenpakettyp für den NPN-Transistor 2N2222

Endgültige Hardware-Erstellung

Wenn die Treiberschaltung des Transistormotors ordnungsgemäß funktioniert, sind wir nun bereit, den endgültigen Hardwarebau für das Projekt abzuschließen. Die letzte elektrische Verdrahtung für die Objekterkennung / DC-Motorsteuerung besteht darin, die Treiberschaltung an den Raspberry Pi anzuschließen. Im LED-Flasher-Projekt wurde der Adafruit Pi Cobbler verwendet, um den Opto-Isolator und unterstützende Schaltungskomponenten mit den GPIO-Pins des geeigneten RPi zu verbinden. Der Pi Cobbler bietet den Vorteil, dass alle RPi-GPIO-Pins auf dem lötfreien Steckbrett für die elektrische Verdrahtung von elektronischen Schnittstellenschaltungen zugänglich sind. Daher wird in diesem Projekt die gleiche Schaltungsdraht-Montagetechnik verwendet. Abbildung 10 zeigt die lötfreie Steckplatine für den Objekterkennungs-DC-Motorcontroller. Wiederum wird das in Fig. 11 gezeigte elektronische Schaltbild als zusätzliche Verdrahtungsressource bereitgestellt.

Abbildung 11 . Die elektronische Schaltplan für die Objekterkennung DC-Motor-Controller

Ich habe ein Beispiel für den Objekterkennungs-DC-Motorcontroller mittels meiner als nächstes gezeigten Prototypeinheit bereitgestellt. Ich benutzte eine alte Erector-Set-Metallbasis mit einem angeschlossenen Meccano-DC-Motor für meinen Prototypen. Ein Videoclip, der zeigt, wie der Controller arbeitet, finden Sie im nachfolgenden Link. Der letzte Schritt, um unseren Objekterkennungs-DC-Motorcontroller betriebsbereit zu machen, besteht darin, den Python-Code hinzuzufügen.

Abbildung 12. Endgültiger Build der DC-Motorsteuerung des Objekterkenners des Autors. Der 2N2222-Transistor hat genug Beta, um den Meccano-Erektor-Motor ordnungsgemäß zu betreiben, ohne ihn zu überhitzen.

Der Python-Code für die Objekterkennung

Der unten gezeigte Python-Code ist eine Programmwiederverwendung aus dem LED-Flasher-Projekt. Die Variablennamen wurden geändert, um die physischen Komponenten widerzuspiegeln, die mit dem RPi verdrahtet sind. Der Code funktioniert, indem ein Objekt über die Fotozelle gelegt wird, um den DC-Motor einzuschalten. Eine zweite Platzierung des Objekts über dem Sensor schaltet den DC-Motor aus. Wie bereits erwähnt, ist der Pull-up-Widerstand eine programmierte Komponente, die die folgende Zeile des Python-Codes verwendet:

GPIO.setup (fotozellen_pin, GPIO.IN, pull_up_down = GPIO.PUD_UP)

Das gesamte Python-Programm kann in das LXTerminal eingegeben werden, indem der nano-Editor mit dem Linux-Befehl ~ sudo nano object detection.py geöffnet wird. Das Python-Programm kann auch auf der SD-Karte Ihres RPi gespeichert werden, indem Sie auf den Code-Button unten klicken.

 # ***********Object Detection code****************** # # inspired by Simon Monk, Raspberry Pi Cookbook, 2013 # # modified by Don Wilcher Dec 18, 2015 # # Placing a object over the photocell will turn on the dc motor. # Placing an object over the photocell a 2nd time turns off the motor. # Add libraries to python script import RPi.GPIO as GPIO import time # Include BCM I/O pins into python script and define pin numbers GPIO.setmode(GPIO.BCM) photocell_pin = 4 motor_pin = 18 # Create photocell pin as an active low switch (use RPi internal pullup resistor) # and define motor pin as an output. GPIO.setup(photocell_pin, GPIO.IN, pull_up_down = GPIO.PUD_UP) GPIO.setup(motor_pin, GPIO.OUT) # Define and set (initialize) the motor output state as False and the old input event as True motor_state = False old_input_event = True # pbswitch event monitoring loop: check pbswitch_pin and toggle dc motor output based on input events # being True or False while True: new_input_event = GPIO.input(photocell_pin) if new_input_event == False and old_input_event == True: motor_state = not motor_state old_input_event = new_input_event GPIO.output(motor_pin, motor_state) time.sleep(0.1)#provides a 100 msec motor actuation on/off time 

Python-Objekt-Erkennungscode

Geben Sie den Linux-Befehl ~ sudo python object_detection.py nach der Eingabeaufforderung auf dem Bildschirm ein, wenn Python-Code in das LX-Terminal eingegeben wurde. Nimm ein Objekt und lege es über die Fotozelle: der Gleichstrommotor sollte sich drehen. Legen Sie das gleiche Objekt über den LDR, um den Motor auszuschalten. Ein großer Glückwunsch ist in Ordnung! Sie verfügen jetzt über einen DC-Motorcontroller für die Objekterkennung. Eine Anwendung für eine Objekterkennungsvorrichtung ist ein berührungsloser Startschalter für ein Fördersystem. Anstatt einen Standard-Drucktastenschalter zu verwenden, um das Förderband zu starten, wird eine einfache Handbewegung ausgeführt. Erkunden Sie andere Anwendungen mit Ihrem Objekterkennungs-DC-Motorcontroller und zeichnen Sie sie in einem Labor-Notebook auf. Nächstes Mal werden wir untersuchen, wie man einen Ereigniszähler unter Verwendung des RPi zusammen mit litteBits-Modulen erstellt.

Nächster Artikel in der Serie: Raspberry Pi Controller bauen: IR Remote Event Counter

Gib diesem Projekt einen Versuch für dich selbst! Holen Sie sich die Stückliste.