Liebe Forenmitglieder,
ich moechte zwei Motorsteuerungen (Ansteuerung von Servo und Motor) eines RC-Bootes mit dem Raspberry Pi ansteuern. Hierfür muss an den jeweiligen Eingang der Motorsteuerung ein Spannungssignal zwischen 0,25V und 0,35 V gegeben werden. Zur Erzeugung dieses Spannungssignals möchte ich einen 2-Kanal Digitalpotentiometer verwenden.
Mein Ansatz:
Ich habe mir das Buch "Raspberry Pi Das umfassende Handbuch" von Kofler Kühnast und Scherbeck (5. Auflage) gekauft und darin ist auf S. 427 die Ansteuerung eines Digitalpotentiometers MCP4132 beschrieben.
Da ich aber zwei Widerstände gleichzeitig und verschieden verändern muss, reicht mir dieses Bauteil nicht aus. Ich erkläre kurz die Ansteuerung, wie sie in dem Buch beschrieben ist:
(Links Raspberry Pi GPIO, Rechts MCP4132)
Anschluss:
Pin1 (3,3 V) an VDD
Pin26 (CE1) an CS
Pin23 (SCLK) an SDK
Pin19 (MOSI) an SDI
Pin21 (MISO) an SDO
Pin6 (GND) an VSS
Eine Ansteuerung dieses Potis ist ebenfalls ausführlich beschrieben:
#!/usr/bin/python3
import spidev
import time
import RPi.GPIO as GPIO
spi = spidev.SpiDev()
spi.open(0,1)
spi.max_speed_hz = 5000
spi.xfer([0x00, 0x80])
In dem Beispielcode wird durch "spi.open(0,1)" CE1 angesteuert. Durch folgenden Befehl wird dadurch die Taktfrequenz des "Serial-Clock-Signals" auf 5kHz festgelegt.
Der Befehl
sendet zwei Byte an den Poti, der erste Byte setzt den Befehl Write Data, der zweite setzt den Befehl Maximalwert des Widerstandes.
Ein sehr simpler Code.
Nun möchte ich das gleiche für meinen Digitalpoti erreichen.
Das Datenblatt befindet sich im Anhang, ein Bild von der Pinbelegung ebenfalls.
Entsprechend der Pinbelegung wuerde ich wie folgt vorgehen:
(Links Raspberry Pi, Rechts AD8402)
Pin1 (3,3 V) an VDD (Pin 11)
Pin26 (CE1) an CS (Pin7)
Pin23 (SCLK) an CLK (Pin9)?
Pin19 (MOSI) an SDI (Pin8)
Pin21 (MISO) an ?
Pin6 (GND) an DGND (Pin5)?, AGND (Pin1) ?
Das Abgreifen und Anlegen der Spannung gelingt zwischen A1, B1, W1. Ich wuerde A1 und A2 an Pin1(3,3V) anlegen. und B1 und B2 an GND an W1 und W2 wuerde ich die Spannung abgreifen.
Wisst ihr, ob die bisherigen Pinbelegungen richtig vorgenommen wurden und wie der Rest der Pins belegt werden muss? (RS, CS, SHDN...)
RS setzt den Widerstandswert auf den mittleren Wert. Was der SHDN-Pin macht ist mir nicht so ganz klar geworden. Ich zitiere mal aus dem Datenblatt:
Quote
The SHDN pin forces the resistor to an end-
to-end open-circuit condition on the A terminal and shorts the
wiper to the B terminal, achieving a microwatt power shutdown
state. When SHDN is returned to logic high, the previous latch
settings put the wiper in the same resistance setting prior to
shutdown.
...
Both parts have a power shutdown SHDN pin that places the
VR in a zero-power-consumption state where Terminal Ax is
open-circuited and the Wiper Wx is connected to Terminal Bx,
resulting in the consumption of only the leakage current in the
VR.
Display More
Kann mir jemand erklaeren, was damit gemeint ist? Brauche ich diese Pin-Belegungen fuer eine simple Ansteuerung?
Ich habe mich noch nie mit solch einem Datenblatt beschaeftigt. Koennt ihr daraus ablesen, wie ich dann tatsaechlich das oben genannte Programm erweitern muss und ich wie Daten zu dem DigitalPoti senden muss, um an beiden Pins W1 und W2 die Spannung individuell abgreifen kann?
Ich hoffe, einer von euch kennt sich mit solchen Dingen aus, ich bin dort leider noch ein Anfaenger und wuerde mich freuen, wenn mir jemand sagen kann, wie ich die Daten zum Poti senden muss und wo das in dem Datenblatt ersichtlich ist.
Vielen Dank und viele Gruesse,
Salzforscher