Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
ad-wandler [2016/06/28 11:36] peltzerad-wandler [2023/07/03 10:15] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +==== Analog - Digital - Wandler ====
 +
 +=== Bild ===
 +
 +{{20151105_104330.jpg?nolink&500|}}
 +
 +=== 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?nolink&500|}}
 +
 +=== 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 /etc/modprobe.d/raspi-blacklist.conf
 +
 +bei der Zeile
 +blacklist spi-bcm2708
 +ein # davorsetzen (#spi-bcm2708)
 +(B) SPI-Modul automatisch laden beim booten:
 +
 +sudo nano /etc/modules
 +
 +einfach die Zeile
 +spidev
 +hinzufügen, speichern, beenden und rebooten:
 +sudo reboot
 +
 +
 +(C) Checken, ob SPI-Geräte vorhanden sind:
 +ls /dev/spidev*
 +Antwort: /dev/spidev0.0 /dev/spidev0.1
 +
 +(D) spidev Bibliothek installieren (wenn nicht schon geschehen...), beim
 +Pi3 nicht notwendig !!!
 +
 +{{spidev_install.jpg?nolink&300|}}
 +
 +(E) MCP3008 auslesen mit sudo nano spitest.py
 +
 +
 +<file python spitest.py>
 +import spidev
 +import time
 +spi = spidev.SpiDev()
 +spi.open(0,0) # bus und client bekommen beide die Nummern 0
 +while True:
 +channel=0 # Wir lesen Kanal 0 aus
 +wert=spi.xfer2([1, 128+(channel<<4), 0]) # Wir lesen 3 Bytes an
 +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)
 +</file>
 +
 +
 +=== CODE ===
 +
 +<file python ad-wandler.py>
 +
 +#!/usr/bin/python
 +
 +import spidev            #Bibliotheken importieren
 +import time
 +
 +spi = spidev.SpiDev()    #spi als Funktion definieren
 +spi.open(0,1)
 +
 +while True:                   #eigentliche Programmschleife, die als Ausgabe Voltzahlen liefert
 +antwort = spi.xfer([1,128,0])
 +if 0 < = antwort[1] <=3:
 +wert = ((antwort[1] * 256) + antwort[2]) * 0.00322
 +print wert ," V"
 +time.sleep(1)
 +
 +
 +</file>
 +
 +