Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
arduino:sensoren [2022/05/01 10:52] – khirling | arduino:sensoren [2022/06/21 11:15] (aktuell) – [Unterschiede in der Kommunikation zwischen Mikrocontroller und Sensor] khirling | ||
---|---|---|---|
Zeile 10: | Zeile 10: | ||
===== Unterschiede in der Kommunikation zwischen Mikrocontroller und Sensor ===== | ===== Unterschiede in der Kommunikation zwischen Mikrocontroller und Sensor ===== | ||
- | Der Sensor kann die zu messende Größe in eine physikalische Größe umwandeln, diese muss nun dem Mikrocontroller übermittelt werden. Hierzu müssen geeignete | + | Der Sensor kann die zu messende Größe in eine physikalische Größe umwandeln, diese muss nun dem Mikrocontroller übermittelt werden. Hierzu müssen geeignete |
- **Analoger Eingang**: Der einfachste Fall ist, dass der Sensor aus einem Halbleiterelement besteht. Durch eine Spannungsteiler-Schaltung am Arduino kann der Widerstand des Halbleiterelements bestimmt werden. Das analoge Signal wird mit Hilfe des Analog-Digital-Wandlers des Mikrocontroller in ein digitales Format umgewandelt und steht zur weiteren Verarbeitung bzw. Auswertung zur Verfügung. Mit Hilfe des Datenblattes oder einer vorab durchgeführten Kalibrierung kann daraus die zu messende Größe bestimmt werden. | - **Analoger Eingang**: Der einfachste Fall ist, dass der Sensor aus einem Halbleiterelement besteht. Durch eine Spannungsteiler-Schaltung am Arduino kann der Widerstand des Halbleiterelements bestimmt werden. Das analoge Signal wird mit Hilfe des Analog-Digital-Wandlers des Mikrocontroller in ein digitales Format umgewandelt und steht zur weiteren Verarbeitung bzw. Auswertung zur Verfügung. Mit Hilfe des Datenblattes oder einer vorab durchgeführten Kalibrierung kann daraus die zu messende Größe bestimmt werden. | ||
- | - **Digitaler Eingang**: Enthält der Sensor schon selbst einen Mikrocontroller, | + | - **Digitaler Eingang**: Enthält der Sensor schon selbst einen Mikrocontroller, |
- | - **I2C -Schnittstelle**: | + | - **I2C -Schnittstelle**: |
- | * OLED-Display mit Treiberchip SSD1306: 0x3C oder 0x3D | + | |
- | * BMP180 (Luftdruck- und Temperatursensor): | + | |
+ | Beim I2C -Protokoll kann ein Master mit bis zu 127 Slavegeräten kommunizieren. | ||
+ | |||
+ | Die Datenkommunikation verläuft über zwei Leitungen. Findet keine Kommunikation statt, so sind beide Leitungen auf HIGH. Im Normalfall darf auf der Datenleitung der Pegel nur geändert, wenn die auf dem Clockleitung der Pegel auf LOW ist. Die Ausnahmen sind das Start- und das Stopsignal. | ||
+ | |||
+ | Ablauf | ||
+ | |||
+ | * Start \\ Der Master sendet ein Startsignal. | ||
+ | * Adresse \\ der Master sendet die 7 Bit Adresse des Slaves | ||
+ | * Write / Read \\ Nach der Adresse kommt noch ein bit (write 0 / read 1), z.B: Temperatursensor sendet Daten an den Master, | ||
+ | * Bestätigungsbit | ||
+ | * Datenpaket \\ Die Daten bestehen aus jeweils 1 Byte (8Bit)und einem anschließenden Bestätigungs-Bit Es können beliebig viele Datenpakete geschickt werden. | ||
+ | * Stop \\ Durch das Stop-Signal geht die Datenleitung auf High während wie Clockleitung auch auf High ist. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | - \\ Beispiele: | ||
+ | | ||
+ | | ||
+ | - SCL (serial clock (Takt - Leitung)) | ||
+ | - SDA (serial data (Daten - Leitung)) \\ Je nach Gerät sind verschiedene Datenübertragungsraten möglich. Beim OLED - Display wird diese mit Wire.setClock(400000L) auf 400 kBit/s (=400 kHz) eingestellt. \\ Die Programmierung ist denkbar einfach. Man muss nur die jeweilige Bibliothek installieren und zu Beginn des Programms über den include - Befehl einbinden. Ebenso sollt man noch die Wire - Bibliothek, die für die I2C- Kommunikation notwendig ist, einbinden. | ||
+ | - **UART**: steht für Universal Asynchronous Receiver-Transmitter. Es braucht 2 Pins für die Kommunikation Die 2 Verbindungen sind. | ||
+ | - TX (Übertragung) | ||
+ | - RX (Empfang) \\ Die Verbindungen werden über kreuz verbunden. TX des Sensors mit RX des Mikrocontrollers und umgekehrt. Bei UART werden die zu übertragenden Bytes mit einem Startbit und einem Paritäts- und Stoppbit versehen und seriell übertragen.\\ | ||
+ | Im Vergleich zu I2C kann beim UART - Kommunikationsprotokoll nur eine Kommunikation zwischen zwei Geräten hergestellt werden. | ||
==== Verwendete Sensoren ==== | ==== Verwendete Sensoren ==== | ||
Zeile 23: | Zeile 48: | ||
- [[.: | - [[.: | ||
- [[.: | - [[.: | ||
+ | - [[.:CO2| Kohlenstoffdioxid]] |