Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Sensormodule und Visuino - Kapitel 4

In diesem Kapitel werden angesprochen

  • Erschütterungs- oder Klopfsensor Modul
  • Neigungssensor Modul
  • Vibrationsschalter Modul
  • IR-Receiver, IR-Emitter Modul und Servo

 

Fangen wir mit den drei Schaltermodulen an; sie sind pinkompatibel und mit einem 10k Widerstand zwischen Pin2 und Pin3 aufgebaut. Der Widerstand kann, je nach Beschaltung, als Pull-up oder Pull-down Widerstand betrieben werden (s. Abb. 1). Die auslösende Sensoreigenschaft variiert; alle drei Sensoren haben unterschiedliche Empfindlichkeiten, die sich nicht verändern lässt. Es sind einfache, mechanisch wirkende Schalter.

 

Die Schaltermodule

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 1 - Drei einfache mechanische Schalter-Module mit (von links nach rechts):

  1. Neigungssensor
  2. Vibrationssensor
  3. Erschütterungssensor

Schaltermodul mit Erschütterungssensor

Abb. 1 - Pinbelegung Erschütterungsschalter sowie Pull-up bzw. Pull-down Beschaltung

Übung 1 - Empfindlichkeit von drei Schaltermodulen

 

1 - Pflichtenheft oder Was soll die Schaltung können?

Es werden die drei Schaltermodule mit zwei Schaltungsaufbauten nacheinander getestet.

  1. Zunächst wird die Arbeitsweise eines einfach aufgebauten mechanischen Erschütterungsschalters getestet.
    Dazu wird eine LED mit Vorwiderstand (470 Ohm) als Indikator benutzt. Sie soll aufleuchten, sobald der Schalter bewegt (erschüttert) wird (s. Abb. 2a). Einen möglichen Schaltungsaufbau auf einem Steckbrett zeigt Abb. 3.
    Das Ard-Board dient hier nur als Energiequelle.
    Die stark unterschiedliche Empfindlichkeit der beiden anderen pinkompatiblen Schaltermodule wird in diesem Teil ebenfalls überprüft.

     
  2. In einem etwas veränderten zweiten Schaltungsaufbau (s. Abb. 2b) wird die Schalterinformation an D2 eines Ard-Boards übergeben; als Indikator für eine Erschütterung wird diesmal die eingebaute LED auf dem Board benutzt (bei mir ist es ein:Arduino UNO WiFi Rev2). Liegt eine 1 an (Erschütterung), leuchtet die LED kurz auf. Alle drei Schaltermodule werden jetzt noch einmal überprüft.

 

2 - Material

  • Arduino- oder Arduino kompatibles Board (Ard-Board)
  • Steckbrett und Steckdraht (Ma-Ma, Fe-Ma)
  • 1x 470 Ohm Widerstand, 1x LED
  • Arduino IDE und Visuino auf dem Rechner bereits installiert

 

3 - Schaltskizzen- Schalter-Module -> Ard-Board

 

 

 

 

 

 

 

 

 

 

Abb. 2a

Der Ausgang S des Schalter-Moduls wird mit dem Vorwiderstand der LED verbunden. Das Ard-Board fungiert hier nur als Energiequelle.

 

 

 

 

Abb. 3

Das Modul mit dem Schaltsensor ist "fliegend" mit drei MA-FE Kabeln aufgebaut. Dadurch lassen sich Erschütterungen (kurze Stöße) leichter simulieren.

Die LED leuchtet immer dann auf, wenn der Sensor kurz angestoßen wird.

Ergebnis zu 1

Sobald der Sensor angestoßen wird (z.B. Fingerschnipps), leuchtet die LED kurz auf -> der Schalter wird kurz geschlossen. Das Verhalten ist bei den drei zu untersuchenden Schaltern deutlich unterschiedlich.

  • Beim Neigungssensor kann man durch vorsichtige Bewegung erreichen, dass die LED länger leuchtet.
  • Bei den anderen beiden Sensoren blitzt die LED nur kurz auf, wenn der Sensor angestoßen wird. Ggf. muss die LED etwas abgedunkelt werden, da der Lichtblitz sehr kurz sein kann.

 

 

 

 

 

 

 

Abb. 2b

Der Ausgang S des Schalter-Moduls ist mit D2 verbunden. Der Zustand des Schalters wird über die intern verbaute LED des jeweils benutzten Ard-Boards (LED_Builtin) verbunden.
 

4 - Blockaufbau zu Schaltskizze 2 im Programm Visuino

 

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon ganz rechts das eingesetzte Ard-Board aus.

 

Schritt 2 - Objekte auswählen

Gib in Filtersuche "infra" ein, wähle das Objekt "MAXIM 1 Wire Thermometer" (s. Abb. 3) und ziehe es in die Arbeitsfläche.

 

Schritt 3 - Verbindungen herstellen

  • Ard-Board Digital[2] Out -> In LED
  • Speicher das Programm ab.

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 4

Beschaltung des Ard-Board Blocks; hier am Beispiel eines Arduino UNO WiFi Rev2.

Schritt 4 - Kompilieren und Hochladen des Programmcodes

  • Öffne in Visuino unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein. Viel Spaß beim Experimentieren!

Schritt 5 - Experimentierfeld

  • Tausche den Erschütterungssensor nacheinander gegen den Neigungs- und den Vibrationssensor aus. Beobachte die LED. Es sollte bestätigt werden, dass der Vibrationssensor im Vergleich zum Erschütterungssensor eine deutlich geringere Empfindlichkeit besitzt.

IR Fernbedienung

 

Fernbedienungen, die über IR einen Fernseher oder eine Audioanlage ein-/ausschalten (s. Abb. 4a), sind uns sehr geläufig. In der folgenden Übung werden wir uns einmal anschauen, was da eigentlich übertragen wird, wenn man eine der Tasten einer IR-Fernbedienung drückt.

Viele dieser Fernbedienungen basieren auf dem NEC-Protokoll, das die 0 (LOW) und 1 (HIGH) mit 38,5 kHz moduliertem IR-Licht nach einem festgelegten Muster darstellt:

Jedes Bit besteht aus einem 560 µs langen HIGH-Puls, gefolgt von einem

  • LOW-Puls für eine 0 oder LOW mit einer Übertragungszeit insgesamt für HIGH und LOW Puls von 1,125 ms.
  • LOW-Puls für eine 1 oder HIGH mit einer Übertragungszeit insgesamt für HIGH und LOW Puls von 2,25 ms.

Normalerweise besteht bei einem NEC-Protokoll eine Nachricht aus vier Bytes.

In nachfolgender Übung 2 werden wir uns genau dieses anschauen; liegt das NEC-Protokoll bei der von uns benutzten Fernbedienung vor und setzt sich eine Nachricht tatsächlich aus vier Bytes zusammen oder kommen noch Startbits und Abschlussbits hinzu?

 

 

 

 

 

Abb. 4a

Eine IR-Fernbedienung, die ich meinem Kit Smart Robot Car V4.0 der Fa. Elegoo entnommen habe. Jede andere IR-Fernbedienung kann in den Übungen eingesetzt werden.

Übung 2 - IR-Empfänger Modul

 

1 - Pflichtenheft oder Was soll die Schaltung können?

  1. Welche Informationen werden bei einer IR-Fernbedienung eigentlich ausgetauscht und wie sind die Informationen codiert? Das soll hier näher untersucht werden. Ich nehme als IR-Fernbedienung eine von ELEGOO aus dem Smart Robot Car V4.0, aber jede andere Fernbedienung (Fernseher, Audio-Anlage) kann ebenfalls genommen werden.

 

 

 

 

 

 

 

Abb. 5

IR-Empfänger Modul Pinbelegung

2 - Material

  • Arduino- oder Arduino kompatibles Board (Ard-Board)
  • Steckbrett und Steckdraht (Ma-Ma, Fe-Ma)
  • IR-Empfänger Modul
  • IR-Sender (z.B. Fernbedienung für Fernseher o.ä.)
  • Digital-Oszilloskop (z.B. PicoScope 2000 Series)
  • Arduino IDE und Visuino auf dem Rechner bereits installiert

 

3 - Blockaufbau- IR-Empfänger-Modul -> Ard-Board

Abb. 6 - IR-Receiver Modul und Ard-Board

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon ganz rechts das von dir eingesetzte Ard-Board aus.

 

Schritt 2 - Objekte auswählen

Gib in Filtersuche "infra" ein, wähle das Objekt "InfraredReceiver" (s. Abb. 7) und ziehe es in die Arbeitsfläche.

 

Schritt 3 - Verbindungen herstellen

  • Ard-Board Digital[2] Out -> Sensor InfraredReceiver1
  • InfraredReceiver1 Out -> In Serial Serial[0] (9600)
  • Verbinde das Kabel D0 des PicoScope 2000 mit dem Anschlußpin Y des IR-Receiver Moduls.
  • Speicher das Programm ab.

 

 

 

 

 

 

 

 

Abb. 7

Objekt-Inspektor mit dem Objekt InfraredRemoteReceiver

Schritt 4 - Kompilieren und Hochladen des Programmcodes

  • Öffne in Visuino unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein. Viel Spaß beim Experimentieren!

 

Schritt 5 - Experimentierfeld

  • IR Fernbedienungen finden sich heute in jedem Haushalt. Schaue dir die Codierungen der verschiedenen Markenhersteller an.

 

Ergebnisse zur Übung 2

Abb. 8 zeigt das Ergebnis der Codierung für die Tasten "1", "2" und "3".

 

 

 

 

 

 

 

 

 

 

Abb. 8

Codierung der Tasten 1, 2 und 3 (von oben nach unten) einer Fernbedienung der Fa. Elegoo.

Das nachfolgende Oszillogramm zeigt die bitweise Darstellung für die Taste "1" meiner Fernbedienung. Eine Nachricht besteht aus jeweils vier Byte:

  • 00 FF 68 97 in hexadezimaler Codierung oder
  • 0000 0000 1111 1111 0110 1000 1001 0111 in binärer Form und
  • 16.738.455 in dezimaler Umrechnung. Diese Zahl ist im Terminalfenster dargestellt.

Für die Pfeiltasten "nach rechts" bzw. "nach links" auf der IR-Fernbedienung wurden die folgenden Codierungen ausgegeben:

  • nach links  : 16720605
  • nach rechts: 16761405

Übung 3 - IR-Fernbedienung und Servo

 

1 - Pflichtenheft oder Was soll die Schaltung können?

  1. Mit den Informationen aus Übung 2 wird eine Schaltung aufgebaut und ein Blockdiagramm unter Visuino entwickelt, das einen Servo (Data -> D3) über zwei Pfeiltasten der Fernbedienung anspricht.

 

2 - Material

  • Arduino- oder Arduino kompatibles Board (Ard-Board)
  • Steckbrett und Steckdraht (Ma-Ma, Fe-Ma)
  • IR-Empfänger Modul
  • IR-Fernbedienung
  • einfacher Servo
  • Arduino IDE und Visuino auf dem Rechner bereits installiert

 

3 - Schaltungsaufbau

 

 

 

 

 

 

 

 

 

Abb. 9

Aufbau von Servo, IR-Receiver Modul und Arduino Board. Angesteuert wird der Servo über eine IR-Fernbedienung.

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 9a - Schaltskizze

4 - Blockaufbau- IR-Empfänger-Modul, Servo -> Ard-Board

 

Insgesamt werden fünf Blöcke benötigt:

  • Ard-Board Block
  • IRReceiver Block
  • UpDownCounter Block
  • IntegerToAnalog Block
  • Servo Block

 

Das Ard-Board empfängt das IR Signal über D2 und übergibt es an den Block IRReceiver. Dort wird es decodiert, im Block UpDownCounter der entsprechende Impuls bestimmt, im Block IntegerToAnalog verstärkt und über den Block Servo an D3 des Ard-Boards übergeben. Parallel wird der ausgelöste Schaltcode im Terminalfenster (Serial) ausgegeben.

Abb. 10 - IR Receiver Modul mit Servo; die Steuerung erfolgt über eine IR-Fernbedienung

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon ganz rechts das von dir eingesetzte Ard-Board aus.

 

Schritt 2 - Objekte auswählen

Ziehe die folgenden Objekte in die Arbeitsoberfläche (s. Abb. 10):

  • Gib in Filtersuche "infra" ein und wähle das Objekt "InfraredReceiver" (s. Abb. 7).
  • Gib im Suchfeld des Objekt-Fensters "up" ein und wähle das Objekt "Up/DownCounter".
  • Gib in Filtersuche "integer" ein und wähle das Objekt Converters - Integer - "IntegerToAnalog".
  • Gib in Filtersuche "servo" ein und wähle das Objekt Analog - "Servo".

 

Schritt 3 - Blöcke verbinden

  • Ard-Board Digital[2] Out -> Sensor InfraredReceiver1
  • InfraredReceiver1 Out -> In Serial Serial[0] (9600)
  • Decode NEC Command1 Out -> Up UpDownCounter1
  • Decode NEC Command2 Out -> Down UpDownCounter2
  • Decode NEC Command3 Out -> Reset UpDownCounter3
  • UpDownCounter1 Out -> In IntegerToAnalog1
  • IntegerToAnalog1 Out -> In Servo1
  • Servo1 Out -> Digital Digital[3]
  • Speicher das Programm ab.

 

Schritt 4 - Kompilieren und Hochladen des Programmcodes

  • Öffne in Visuino unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein. Viel Spaß beim Experimentieren!

 

Ergebnisse zur Übung 3

Der Servo wird nach dem Start des Programms in die Ruheposition gedreht. Mit jedem Tastendruck auf eine der beiden Pfeiltasten auf der IR-Fernbedienung dreht sich das Steuerhorn nach links oder rechts.

Wird die OK Taste gedrückt, dreht das Steuerhorn in die Ausgangsposition -> ganz nach rechts.

240420

Druckversion | Sitemap
© Reinhard Rahner - Gettorf