Seite 1 von 1
Analog Digitalwandler Pythenscript zum Ansteuern modifiziere
Verfasst: Samstag 24. Januar 2015, 18:35
von Verrain
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?
Re: Analog Digitalwandler Pythenscript zum Ansteuern modifiz
Verfasst: Samstag 24. Januar 2015, 18:58
von BlackJack
@Verrain: Der Link zu raspiprojekt.de ist kaputt.
Re: Analog Digitalwandler Pythenscript zum Ansteuern modifiz
Verfasst: Sonntag 25. Januar 2015, 05:12
von Verrain
Re: Analog Digitalwandler Pythenscript zum Ansteuern modifiz
Verfasst: Dienstag 27. Januar 2015, 00:21
von Verrain
Niemand der mir helfen kann?
Re: Analog Digitalwandler Pythenscript zum Ansteuern modifiz
Verfasst: Dienstag 27. Januar 2015, 00:30
von pillmuncher
Verrain hat geschrieben:...aber das funktioniert einfach nicht bei mir.
Was genau funktioniert nicht?
Verrain hat geschrieben:Wer kann mir beim modifizieren des Pythonscripts helfen?
Dazu müsstest du das Script erst mal herzeigen.
Re: Analog Digitalwandler Pythenscript zum Ansteuern modifiz
Verfasst: Mittwoch 28. Januar 2015, 01:41
von Verrain
Das Problem ist, dass aus dem AD Wandler kein Output-Signal rauskommt.
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)
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

Re: Analog Digitalwandler Pythenscript zum Ansteuern modifiz
Verfasst: Mittwoch 28. Januar 2015, 09:27
von BlackJack
@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.