Ich möchte gern folgenden 12 Bit ADAC-Wandler (LTC 1293) an meinem Raspberry Pi verbauen:
http://www.farnell.com/datasheets/1575649.pdf
Im Internet habe ich folgendes Programm zum Ansteuern eines 10 Bit ADAC-Wandlers gefunden:
https://www.raspiprojekt.de/anleitungen/...l=&start=3
Leider verzweifel ich schon seit einigen Wochen daran, dass ganze für meinen ADAC Wandler umzuschreiben.
Mittlerweile habe ich mein Programm so modifiziert, dass er sämtliche Befehle zwischen 0b00000000 und 0b11111111 testet (also zwischen 0 und 255). Natürlich habe ich dem Datenblatt entsprechend Ein- und Ausgabe geändert, aber das funktioniert einfach nicht bei mir.
Wer kann mir beim modifizieren des Pythonscripts helfen?
Analog Digitalwandler Pythenscript zum Ansteuern modifiziere
Danke für den Hinweis. Hier der richtige Link:
https://www.raspiprojekt.de/anleitungen ... l=&start=3
https://www.raspiprojekt.de/anleitungen ... l=&start=3
- pillmuncher
- User
- Beiträge: 1482
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Was genau funktioniert nicht?Verrain hat geschrieben:...aber das funktioniert einfach nicht bei mir.
Dazu müsstest du das Script erst mal herzeigen.Verrain hat geschrieben:Wer kann mir beim modifizieren des Pythonscripts helfen?
In specifications, Murphy's Law supersedes Ohm's.
Das Problem ist, dass aus dem AD Wandler kein Output-Signal rauskommt.
Ich habe die das Programm folgendermaßen nach dem Datenblatt angepasst:
Damit wird jeder möglicher Inputbefehl gesendet. Wir haben sogar jeden Zyklus in einer 2. Schleife 10 mal wiederholen lassen um Störungen auszuschließen.
Interessanterweise wurde in einem anderen Forum bemerkt, dass der Powersupply für unseren AD Wandler 5V beträgt, der RasPi aber nur mit 3,3V arbeitet (wie auch der AD Wandler für den das ursprüngliche Programm geschrieben wurde). Aktuell vermute ich also, dass es daran liegt.
Trotzdem vielen Dank für das Nachfragen, sollte es weiterhin Probleme geben, melde ich mich nochmal
Ich habe die das Programm folgendermaßen nach dem Datenblatt angepasst:
Code: Alles auswählen
#Python Timerklasse importieren
import time
#Python Raspberry Pi GPIO Klasse importieren
import RPi.GPIO as GPIO
# Festlegung der Nutzung der vorgegebenen Nummerierung der GPIOs
GPIO.setmode(GPIO.BCM)
# Namen von True und False zum besseren Verständnis festlegen (Klarnamen)
HIGH = True # 3,3V Pegel (high)
LOW = False # 0V Pegel (low)
# SCI Funktion
def getAnalogData(adCh, CLKPin, DINPin, DOUTPin, CSPin, j):
# Pegel definieren
GPIO.output(CSPin, HIGH)
GPIO.output(CSPin, LOW)
GPIO.output(CLKPin, LOW)
cmd = adCh
cmd |= j # Kommando zum Abruf der Analogwerte des Datenkanals adCh
# Bitfolge senden
for i in range(9):
if (cmd & 0b10000000): # 8. Bit prüfen und mit 0 anfangen
GPIO.output(DINPin, HIGH)
else:
GPIO.output(DINPin, LOW)
# Clocksignal negative Flanke erzeugen
GPIO.output(CLKPin, HIGH)
GPIO.output(CLKPin, LOW)
cmd <<= 1 # Bitfolge eine Position nach links verschieben
# Datenabruf
adchvalue = 0 # Wert auf 0 zurücksetzen
for i in range(13):
GPIO.output(CLKPin, HIGH)
GPIO.output(CLKPin, LOW)
adchvalue <<= 1 # 1 Postition nach links schieben
if(GPIO.input(DOUTPin)):
adchvalue |= 0x01
time.sleep(0.5)
return adchvalue
# Konfiguration Eingangskanal und GPIOs
CH = 0 # Analog/Digital-Channel
CLK = 18 # Clock
DIN = 24 # Digital in
DOUT = 23 # Digital out
CS = 25 # Chip-Select
# Pin-Programmierung
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(DIN, GPIO.OUT)
GPIO.setup(DOUT, GPIO.IN)
GPIO.setup(CS, GPIO.OUT)
while True:
for j in range(256):
print getAnalogData(CH, CLK, DIN, DOUT, CS, j)
Interessanterweise wurde in einem anderen Forum bemerkt, dass der Powersupply für unseren AD Wandler 5V beträgt, der RasPi aber nur mit 3,3V arbeitet (wie auch der AD Wandler für den das ursprüngliche Programm geschrieben wurde). Aktuell vermute ich also, dass es daran liegt.
Trotzdem vielen Dank für das Nachfragen, sollte es weiterhin Probleme geben, melde ich mich nochmal
@Verrain: Kann es sein das die beiden Schleifen jeweils 1 Bit zu viel senden und empfangen (wollen)? Ich habe nur kurz über das Datenblatt geschaut und da sieht es so aus als wenn 8 Bit gesendet werden müssen, wobei das erste Bit immer 1 sein muss, und 12 Bit gelesen werden können.