Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ad-wandler [2016/06/28 11:36] – created peltzer | ad-wandler [2023/07/03 10:15] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ==== Analog - Digital - Wandler ==== | ||
+ | |||
+ | === Bild === | ||
+ | |||
+ | {{20151105_104330.jpg? | ||
+ | |||
+ | === Was ist es? === | ||
+ | |||
+ | Der Raspberry Pi besitzt nur digitale Ein- und Ausgänge, das heißt: Es können nur die Werte 1 oder 0 eingelesen werden. Mit Hilfe eines Analog-Digital-Wandlers können Analoge Signale von 0%-100% in feiner Abstufung erkannt werden. Ein AD-Wandler kommuniziert über den SPI Bus mit dem Raspberry Pi. Der AD-Wandler kann bis zu 8 analoge Geräte einlesen, diese können per Pythonscript ausgelesen, verarbeitet und angezeigt werden. | ||
+ | |||
+ | === Fritzing === | ||
+ | |||
+ | {{ad_wandler.jpg? | ||
+ | |||
+ | === Hinweise === | ||
+ | unterschiedliche Vorgehensweisen bei Raspberry Pi 2 und Raspberry Pi 3 beachten!! | ||
+ | |||
+ | |||
+ | (A) SPI Bus enabeln : (beim Pi3 nicht notwendig !, hier im raspi-config | ||
+ | den SPI Bus enablen !!!) | ||
+ | |||
+ | sudo nano / | ||
+ | |||
+ | bei der Zeile | ||
+ | blacklist spi-bcm2708 | ||
+ | ein # davorsetzen (# | ||
+ | (B) SPI-Modul automatisch laden beim booten: | ||
+ | |||
+ | sudo nano / | ||
+ | |||
+ | einfach die Zeile | ||
+ | spidev | ||
+ | hinzufügen, | ||
+ | sudo reboot | ||
+ | |||
+ | |||
+ | (C) Checken, ob SPI-Geräte vorhanden sind: | ||
+ | ls / | ||
+ | Antwort: / | ||
+ | |||
+ | (D) spidev Bibliothek installieren (wenn nicht schon geschehen...), | ||
+ | Pi3 nicht notwendig !!! | ||
+ | |||
+ | {{spidev_install.jpg? | ||
+ | |||
+ | (E) MCP3008 auslesen mit sudo nano spitest.py | ||
+ | |||
+ | |||
+ | <file python spitest.py> | ||
+ | import spidev | ||
+ | import time | ||
+ | spi = spidev.SpiDev() | ||
+ | spi.open(0, | ||
+ | while True: | ||
+ | channel=0 # Wir lesen Kanal 0 aus | ||
+ | wert=spi.xfer2([1, | ||
+ | verschiedenen Stellen aus | ||
+ | print wert # Array wird angezeigt | ||
+ | time.sleep(2) | ||
+ | print (wert[1] &3) * 256 + wert[2] # Wir verrechnen die Bytes im | ||
+ | Array | ||
+ | time.sleep(2) | ||
+ | </ | ||
+ | |||
+ | |||
+ | === CODE === | ||
+ | |||
+ | <file python ad-wandler.py> | ||
+ | |||
+ | # | ||
+ | |||
+ | import spidev | ||
+ | import time | ||
+ | |||
+ | spi = spidev.SpiDev() | ||
+ | spi.open(0, | ||
+ | |||
+ | while True: # | ||
+ | antwort = spi.xfer([1, | ||
+ | if 0 < = antwort[1] <=3: | ||
+ | wert = ((antwort[1] * 256) + antwort[2]) * 0.00322 | ||
+ | print wert ," V" | ||
+ | time.sleep(1) | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||