Viele Nachfragen aber auch Anfragen, ob ich nicht (in Lohnarbeit) die Hardware zusammenlöten könnte.
Die doch recht einfache Geschichte, scheint für manchen, nicht so technikaffinen Interessierten, ein großes Hindernis zu sein.
Als Alternative habe ich mich umgeschaut, was es inzwischen so gibt und bin auf den PCF8591 A/D Wandler Modul
gestoßen.
Hardware: Fotos klick zum Vergrößern
PCF8591 Modul, bei Ebay 3 Euro incl. Versand! Keine Lötarbeiten!
Anschluss:
Der PCF8591 Modul arbeitet mit dem i2c-Bus.
A0 wird mit Plus der externen zu messenden Spannung verbunden.
Achtung!
Diese darf nicht 3.3Volt überschreiten. Wer höhere Spannungen messen will,
z.B. an einem Solarakku o.ä. muss mit einem Spannungsteiler arbeiten.
i2c einrichten:
Hier wird es etwas tricky. Dazu gibt es im Netz jede Menge Info. Ich fasse es mal zusammen wie es bei mir funktionierte.
Ab Kernel 3.18 findest du unter
- Code: Alles auswählen
sudo raspi-config
Advanve - i2C aktivieren
weiter
- Code: Alles auswählen
sudo apt-get install python-smbus
und
- Code: Alles auswählen
sudo apt-get install i2c-tools
dann
- Code: Alles auswählen
sudo reboot
Dann überprüfen wir und fügen evtl.hinzu
- Code: Alles auswählen
sudo nano /etc/modules
Wichtig: bei meinem neuen B+ funktionierte es erstmal nicht, nach langem suchen die Lösung im Netz gefunden.
in die config.txt muss noch hinzugefügt werden:
- Code: Alles auswählen
sudo nano /boot/config.txt
Jetzt sollte alles gehen , test mit:
- Code: Alles auswählen
sudo i2cdetect -y 1
das Ergebnis sieht dann so aus:
Einfaches Python Skript zum auslesen:
- Code: Alles auswählen
#!/usr/bin/python2
import smbus
import time
bus = smbus.SMBus(1)
add = 0x48
ch0=0x00
ch1=0x01
ch2=0x02
ch3=0x03
def readAD():
analog = bus.read_byte(add)
return analog
def writeDA(value):
bus.write_byte_data(add, 0x44, value)
while(0==0):
an0 = readAD()
an1 = readAD()
an2 = readAD()
an3 = readAD()
print 'Licht = %3d Volt = %3d Poti = %3d Temp = %3d' % (an0, an1, an2, an3)
writeDA(an0)
time.sleep(0.5)
writeDA(0x00)
Geht wunderbar...das Skript muss dann noch erweitert werden zum Sammeln, Umrechnen und Darstellen der Werte,
und evtl. Transport auf eine Webseite. (laufendes Skript mit ctrl C unterbrechen)