Forum: Mikrocontroller und Digitale Elektronik SPI Problem aufgrund von Spannungsversorgung (Arduino Uno & opt. Sensor))


von Dont K. (dont_k)


Lesenswert?

Hallo! Ich hoffe das passt hier rein..

Also ich versuche gerade einen optischen Maussensor mit einem Arduino 
UNO über SPI zu verbinden. Das funktioniert bis jetzt sehr gut. Ich kann 
den Sensor ansteuern und auslesen. Läuft einwandfrei.

Verbunden sind: 3.3V/5V/GND und 5 SPI Kabel (ich verwende 2 Sensoren)

ABER: Im Endeffekt soll das ganze dann nicht auf dem Arduino UNO laufen 
sondern auf einer, dem Arduino UNO sehr ähnlichen, Eigenkonstruktion 
meiner Uni. Ich nenn es jetzt der Einfachheit halber Arduino UNI. Das 
UNI verwendet den gleichen Chip wie das UNO (Atmega328), der USB Chip 
ist ausgelagert und es ist gleich ein Funkchip integriert. Die 
Stromversorgung erfolg beim UNO über USB und beim UNI über einen 7V LiPo 
Akku (keine Versorgung über USB möglich).

Wenn ich jetzt meine Kabel vom Sensor einfach am UNI statt am UNO 
anstecke, liefert die Konstruktion am Anfang brauchbare Werte 
(Revisions, etc...), aber sobald der Sensor etwas misst, kommen 
unbrauchbare Bewegungswerte heraus. Das Oszilloskop sagt mir, dass 
zumindest NCS und SCLK normal arbeiten.

Durch Ausprobieren habe ich herausgefunden, dass die SPI-Kommunikation 
mit dem UNI normal funktioniert und richtige Werte liefert, wenn ich die 
Stromversorgung (3.3V/5V/GND) statt über das UNI mit Akku, über das 
Arduino UNO und damit USB bewerkstellige.

Also:
5xSPI und (3.3V/5V/GND) am UNI --> geht nicht
5xSPI am UNI & (3.3V/5V/GND) am UNO --> geht

Zu erst habe ich gedacht es liegt vielleicht an den am UNI verbauten 
Spannungswandlern. Aber das Datenblatt sagt, dass die eigentlich besser 
sein sollten als die Spannungswandler am UNO. Kondensatoren habe ich für 
die Stromversorgung des Sensors auch insgesamt 8 verwendet (steht so im 
Datenblatt des Sensors). Die müssten eigentlich Spannungsschwankungen 
ausgleichen. Abgesehen davon sehen die Signale von (3.3V/5V) am 
Oszilloskop gleich aus (also ich erkenne keinen Unterschied zwischen UNO 
und UNI).

Elektrotechnik ist jetzt nicht wirklich mein Fachgebiet (ich studiere 
Informatik), weswegen mir langsam die Einfälle ausgehen was ich noch 
testen könnte.

Warum funktioniert die SPI Kommunikation auf einmal wenn ich die 
Spannungsversorgung nicht intern über den Akku mache sondern extern über 
ein Arduino UNO. Die Werte selbst sind unauffällig (3.3 und 5 Volt...)

Hat irgendjemand Ideen woran das liegen kann? Bzw. gibts Vorschläge was 
ich noch testen könnte, um der Sache vielleicht näher zu kommen?

Ich könnte zb versuchen herauszufinden ob die 3.3 oder die 5 Volt das 
Problem sind. Aber dazu müsste ich GND vom UNO und UNI verbinden. Kann 
ich das überhaupt machen? Also USB GND und Akku GND Verbinden? Oder 
zerschieße ich mir damit etwas?

Ahja: Da der Atmega328 mit 5V arbeitet (und damit auch das SPI), der 
Sensor aber maximal 3.3V an den Dateninputs verträgt, verwende ich einen 
selbst gebauten Spannungsteiler für alle SPI Leitungen (außer MISO).

Wenn irgendetwas an meiner Beschreibung unklar ist, führe ich das gerne 
weiter aus!

von Wolfgang B. (Firma: Wolftec GmbH) (wbeppler)


Lesenswert?

hi

grob aus der ferne: ja GND kannst verbinden

frage: sind bei beiden schaltungen die spi-kabel gleich lang (besser 
kurz) ?

ist dein akku leer ? hochohmiger inneenwiederstnd der spannnungsquelle ? 
also liefert der genug SAFT ?

gruss

w

von Dont K. (dont_k)


Lesenswert?

Hi

- Ok, das ist schon mal gut zu wissen. Werd das nachher mal testen. (Nur 
zwischen + vom Akku und GND vom USB messe ich ja keine Spannung)

- SPI-Kabel sind alle ca 10 cm lang. Ich verwende die gleichen Kabel.

- Akku ist voll. Spannung liegt bei mehr als 7V

- Ob der genug Saft liefert... Kein Plan! "Peak Suply Current" des 
Sensors ist 60 mA. Wenn ich fürs Arduino nochmal 50 rechne: 2x60mA + 50 
mA = 170 mA. Kann das schon Probleme machen? Die Laser leuchten (mit der 
Handy Cam überprüft...)

Hochohmiger Innenwiderstand? Auf was muss ich da schauen? Is ein 
bisschen mühsam den Akku auszubauen, deswegen frag ich lieber vorher ^^

von Wolfgang B. (Firma: Wolftec GmbH) (wbeppler)


Lesenswert?

also zwischen akku und egal welchem gnd solltest du was messen

und
mit dem innenwiederstand meine ich, bricht die spannnung zusammen wenn 
du den akku belastest (das tut die schaltung ja), aber ich denke nicht 
so wie du schilderst

nur eben aus der ferne ne diagnose ???

von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>Ich könnte zb versuchen herauszufinden ob die 3.3 oder die 5 Volt das
>Problem sind. Aber dazu müsste ich GND vom UNO und UNI verbinden. Kann
>ich das überhaupt machen?

Du MUSST es machen!

> Also USB GND und Akku GND Verbinden? Oder
>zerschieße ich mir damit etwas?

Nein.

>Ahja: Da der Atmega328 mit 5V arbeitet (und damit auch das SPI), der
>Sensor aber maximal 3.3V an den Dateninputs verträgt, verwende ich einen
>selbst gebauten Spannungsteiler für alle SPI Leitungen (außer MISO).

Klingt nicht optimal. Welche Werte verwendest du?

>- SPI-Kabel sind alle ca 10 cm lang. Ich verwende die gleichen Kabel.

OK.

>- Akku ist voll. Spannung liegt bei mehr als 7V

OK.

>- Ob der genug Saft liefert... Kein Plan! "Peak Suply Current" des
>Sensors ist 60 mA. Wenn ich fürs Arduino nochmal 50 rechne: 2x60mA + 50
>mA = 170 mA. Kann das schon Probleme machen?

Kommt auf deinen Spannungsregler an. Wenn der nur 100mA offiziell 
schafft, schaltet der ggf. bei 150mA++ irgendwann runter.

> Die Laser leuchten (mit der Handy Cam überprüft...)

Welche Laser?

>Hochohmiger Innenwiderstand? Auf was muss ich da schauen? Is ein
>bisschen mühsam den Akku auszubauen, deswegen frag ich lieber vorher ^^

Betreibe eine systematische Fehlersuche.

Liegen die 5 und 3,3V sauber am AVR an?
Liegen sie sauber am Sendor an?
Ist die GND-Verbindung in Ordnung?
...

von Dont K. (dont_k)


Lesenswert?

Ich messe da einfach keine Spannung. Ich habs jetzt mit einer simplen 9V 
Block Batterie und dem Heizkörper bzw dem Arduino GND probiert. Die 
Spannung ist immer 0.

Der Akku ist ja eigentlich immer belastet, weil die Schaltung konstant 
Strom zieht. Die Spannungswerte schauen dabei sehr gut aus (3.3V und 
5V). Sowohl mit dem Multimeter als auch im Oszilloskop.

von uwe (Gast)


Lesenswert?

> Ich messe da einfach keine Spannung. Ich habs jetzt mit einer simplen 9V
> Block Batterie und dem Heizkörper bzw dem Arduino GND probiert. Die
> Spannung ist immer 0.
Was soll der Heizkörper???!
Zeichne mal den Stromkreis also VCC und GND von allen Komponenten...

von Dont K. (dont_k)


Angehängte Dateien:

Lesenswert?

@Falk:


Wenn ich die beiden GND nicht verbinde: Der Spannungsteiler führt dann 
ja nicht zurück zum UNI GND sondern zum UNO GND. Kanns sein, dass ich da 
die Input Pins trotz Spannungsteiler mit Überspannung grille? (Obwohls 
merkwürdigerweise dann funktioniert). Das bereitet mir im Moment vor 
allem Kopfschmerzen weil ich wie oben beschrieben keine Spannung (also 
0V) zwischen Akku und UNO GND messe.

Als Spannungsteiler verwende ich jeweils zwei Widerstände: 10k und 15k 
(bei 100k und 150k waren die Rechtecksignale beim UNO schon zu 
schlecht.)

Laser: ADNS 9500. Ein optischer Maussensor.

Der Spannungsregler für 5V schafft lauft Datenblatt 800 mA.
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCwQFjAA&url=http%3A%2F%2Fwww.onsemi.com%2Fpub%2FCollateral%2FMC33269-D.PDF&ei=G9n1VMOkBIuAUZKSgMAB&usg=AFQjCNHcn8LgvOv_RCSzLvQOmD8zc-FCRQ&sig2=WE-KeHdT6KP74NFl2n6_wA&bvm=bv.87269000,d.d24

Für 3V 150mA:
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB0QFjAA&url=http%3A%2F%2Fwww.micrel.com%2F_PDF%2Fmic5205.pdf&ei=9Nr1VMSIIcmqywPO2YGIDQ&usg=AFQjCNEWGnMgaoHp0o7X-Ag7_rFsF4I8wg&sig2=1j2GGTyKcaerfcqwZlribw&bvm=bv.87269000,d.d24

@ uwe: Der Heizkörper müsste ja geerdet sein. Allerdings kann ich mir 
gut vorstellen, dass das bei einem Akku nichts bringt. Wie gesagt... 
Elektrotechnik ist nicht so meins. Schaltplan siehe Anfang dieses 
Postings.

: Bearbeitet durch User
von uwe (Gast)


Lesenswert?

Auch den Teil mit dem UNI und wie die Beiden Sensoren mit diesem 
verbunden sind. Ich denke du hast einfach den UNI GND nicht mit dem 
Sensor GND verbunden.

von Willi (Gast)


Lesenswert?

Dont K. schrieb:
> Also ich versuche gerade einen optischen Maussensor mit einem Arduino
> UNO über SPI zu verbinden. Das funktioniert bis jetzt sehr gut. Ich kann
> den Sensor ansteuern und auslesen. Läuft einwandfrei.

Hi, könntest du uns ein Beispiel zeigen, wie du das machst ? 
Interessiert mich sehr.

von Dont K. (dont_k)


Lesenswert?

uwe schrieb:
> Auch den Teil mit dem UNI und wie die Beiden Sensoren mit diesem
> verbunden sind. Ich denke du hast einfach den UNI GND nicht mit dem
> Sensor GND verbunden.

Doch 3.3V und 5V liegen an der Platine an. Das ist ein einfacher Stecker 
den ich einmal am UNO und einmal am UNI anstecke. In beiden Fällen passt 
die Spannung auf der Platine.

@ Willi: Oben steht der Schaltplan für 2 Chips über SPI. (Wobei ich 
gerade sehe, dass beim unteren Stecker die Beschriftungen GND und 3V 
vertauscht sind). Orientiert habe ich mich dabei am ADNS 9500 
Datenblatt. Zusätzlich hab ich noch den Spannungsteiler eingebaut. Oder 
was willst du genau wissen?

: Bearbeitet durch User
von Willi (Gast)


Lesenswert?

WIe erfolgt das Auslesen der X-Y-Koordinaten ?

Danke für die Antwort bis dahin.

von Dont K. (dont_k)


Lesenswert?

Willi schrieb:
> WIe erfolgt das Auslesen der X-Y-Koordinaten ?
>
> Danke für die Antwort bis dahin.

Die zurückgelegte Strecke wird in 4 Registern am Chip aufsummiert und 
gespeichert (16bit x, 16 bit y). Diese kann man über SPI auslesen. Jedes 
Mal wenn die Register gelesen werden, werden sie auf 0 zurückgesetzt.

von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>Ich messe da einfach keine Spannung.

WO misst du keine Spannung?

> Ich habs jetzt mit einer simplen 9V
>Block Batterie und dem Heizkörper bzw dem Arduino GND probiert. Die
>Spannung ist immer 0.

Was soll der Heizkörper?

>Strom zieht. Die Spannungswerte schauen dabei sehr gut aus (3.3V und
>5V). Sowohl mit dem Multimeter als auch im Oszilloskop.

WO gemessen?

>Wenn ich die beiden GND nicht verbinde: Der Spannungsteiler führt dann
>ja nicht zurück zum UNI GND sondern zum UNO GND. Kanns sein, dass ich da
>die Input Pins trotz Spannungsteiler mit Überspannung grille? (Obwohls
>merkwürdigerweise dann funktioniert).

> Das bereitet mir im Moment vor
>llem Kopfschmerzen weil ich wie oben beschrieben keine Spannung (also
>0V) zwischen Akku und UNO GND messe.

Ich kann dir nich folgen.

>Als Spannungsteiler verwende ich jeweils zwei Widerstände: 10k und 15k

Zu hochomig. Das funktioniert nur mit viel Glück. Mach sie mal Faktor 10 
kleiner. Oder noch besser, nutze einen gescheiten Pegelwandler, z.B. 
74HC4050.

Für den "Rückweg", sprich MISO braucht man auch einen, denn 3,3V CMOS 
Pegel funktionieren auch nur mit einer gehörigen Portion Glück an 5V 
CMOS-Eingängen. Ein 74HCT125 oder ähnliches ist dein Freund.

>Der Spannungsregler für 5V schafft lauft Datenblatt 800 mA.
>http://www.google.com/url?sa=t&rct=j&q=&esrc=s&sou...

>Für 3V 150mA:
>http://www.google.com/url?sa=t&rct=j&q=&esrc=s&sou...

Naja, aber warum nimmst du solche Exoten?

Hast du die RICHTIGEN Ausgangskondensatoren an den Reglern? Wenn du pech 
hast, schwingen die.

von Dont K. (dont_k)


Lesenswert?

Falk Brunner schrieb:

>>Strom zieht. Die Spannungswerte schauen dabei sehr gut aus (3.3V und
>>5V). Sowohl mit dem Multimeter als auch im Oszilloskop.
>
> WO gemessen?
>
Da wo die Kabel an der Platine angelötet sind. Näher an den Chips messen 
ist glaub ich nicht wirklich zielführend weil da keine Bauteile mehr in 
Reihe geschalten sind. Die Kupferbahnen gehen durch bis zum Chip. Da 
wird sich die Spannung am Weg nicht mehr ändern.

>>Wenn ich die beiden GND nicht verbinde: Der Spannungsteiler führt dann
>>ja nicht zurück zum UNI GND sondern zum UNO GND. Kanns sein, dass ich da
>>die Input Pins trotz Spannungsteiler mit Überspannung grille? (Obwohls
>>merkwürdigerweise dann funktioniert).
>
>> Das bereitet mir im Moment vor
>>llem Kopfschmerzen weil ich wie oben beschrieben keine Spannung (also
>>0V) zwischen Akku und UNO GND messe.
>
> Ich kann dir nich folgen.
>
Egal, ist vermutlich eh ein Denkfehler von mir. Genau wie die Sache mit 
dem Heizkörper. Ich war mir nicht sicher ob 5V+ Akku und 0V GND 
Heizkörper eine Spannung von 5 Volt ergeben sollte. Ich bin davon 
ausgegangen, dass das so nicht funktioniert, aber oben hat Wolfgang 
gemeint, dass ich mit jedem GND Spannung messen kann. Das war wohl ein 
Missverständniss.

>>Als Spannungsteiler verwende ich jeweils zwei Widerstände: 10k und 15k
>
> Zu hochomig. Das funktioniert nur mit viel Glück. Mach sie mal Faktor 10
> kleiner. Oder noch besser, nutze einen gescheiten Pegelwandler, z.B.
> 74HC4050.
>
> Für den "Rückweg", sprich MISO braucht man auch einen, denn 3,3V CMOS
> Pegel funktionieren auch nur mit einer gehörigen Portion Glück an 5V
> CMOS-Eingängen. Ein 74HCT125 oder ähnliches ist dein Freund.
>

Ok kanns versuchen, evtl liegts wirklich daran. Aber umso niedriger die 
Widerstände umso höher der Stromverbrauch oder liege ich da falsch? Der 
Rückweg war mir bis jetzt egal, weil ich glaube, dass das Arduino auch 
noch 1,8V als high erkennt.

>>Der Spannungsregler für 5V schafft lauft Datenblatt 800 mA.
>>http://www.google.com/url?sa=t&rct=j&q=&esrc=s&sou...
>
>>Für 3V 150mA:
>>http://www.google.com/url?sa=t&rct=j&q=&esrc=s&sou...
>
> Naja, aber warum nimmst du solche Exoten?
>
Das UNI Arduino ist nicht meine Kreation. Auf die dort verbauten Teile 
hab ich leider keinen Einfluss.
> Hast du die RICHTIGEN Ausgangskondensatoren an den Reglern? Wenn du pech
> hast, schwingen die.
Kann ich nach schauen. Mit was sind die verbunden? Wenn ich das weiß, 
suche ich sie und poste die specs.

von Willi (Gast)


Lesenswert?

Dont K. schrieb:
> Willi schrieb:
>> WIe erfolgt das Auslesen der X-Y-Koordinaten ?
>>
>> Danke für die Antwort bis dahin.
>
> Die zurückgelegte Strecke wird in 4 Registern am Chip aufsummiert und
> gespeichert (16bit x, 16 bit y). Diese kann man über SPI auslesen. Jedes
> Mal wenn die Register gelesen werden, werden sie auf 0 zurückgesetzt.

Hast du vll. ein Code oder ähnliches `? Würd mich mal interessieren, wie 
umfangreich das ist.

Danke !

von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>> WO gemessen?
>>
>Da wo die Kabel an der Platine angelötet sind.

Hey Mr. Dont! Leis mal was über Netiquette!
Wir sitzen hier nicht neben dir und sind damit nahezu BLIND!

"Daran denken, dass die Leute im Forum nicht neben einem sitzen und 
alles so vor sich sehen wie der Fragesteller "

Damit brauchen wir EXAKTE Angaben. Welches Kabel an welcher Platine?

> Näher an den Chips messen
>ist glaub ich nicht wirklich zielführend weil da keine Bauteile mehr in
>Reihe geschalten sind. Die Kupferbahnen gehen durch bis zum Chip. Da
>wird sich die Spannung am Weg nicht mehr ändern.

Das haben schon viele gesagt, bis sie einen Lötfehler gefunden haben.

>Ok kanns versuchen, evtl liegts wirklich daran. Aber umso niedriger die
>Widerstände umso höher der Stromverbrauch

Ja.

>oder liege ich da falsch? Der

Nein.

>Rückweg war mir bis jetzt egal, weil ich glaube, dass das Arduino auch
>noch 1,8V als high erkennt.

Bei 5V Vcc? Keine Sekunde. Die offiziellen Zahlen sind 0,7*Vcc, das sind 
bei 5V min. 3,5V. REAL wird es meist bei knapp über 2,5V irgendwie 
erkannt. Solide ist das aber nicht!

von uwe (Gast)


Lesenswert?

> dass ich mit jedem GND Spannung messen kann
Ist nicht bös gemeint aber es scheint tatsächlich so zu sein, daß du 
nicht weisst was der Unterschied von Spannung und Strom ist. Du scheinst 
auch nicht zu wissen was ein Stromkreis ist. Du scheinst auch nicht zu 
wissen was GND bedeutet. Wenn man das nicht weiss kann man auch keine 
Spannung messen.
Das hast du ja auch schon festgestellt...
> Ich messe da einfach keine Spannung.

Also um dir zu helfen noch einmal die Bitte den Kompletten Schaltplan 
mit allen Komponenten und eventuell noch ein Foto vom Aufbau.

von Dont K. (dont_k)


Lesenswert?

@ Willi:

Ist dir das eine Hilfe? Das ist zwar für den ADNS9800, aber aus den 
Kommentaren im Code ist ersichtlich, dass es ursprünglich für den 9500 
gedacht war.
https://github.com/joshuajnoble/ArduinoADNS-9800/blob/master/ADNS9800.ino

Das hier ist die Firmware für den ADNS 9500:
https://github.com/mrjohnk/ADNS-9500/blob/master/firmwareA0.ino

Damit ich zwei Chips parallel verwenden kann, habe ich mir noch eine 
eigene SPI.begin methode geschrieben, um mir zwei NCS Pins zu 
definieren. Das muss dann noch in den begin und end methoden 
berücksichtigt werden und es läuft eigentlich. Das sind insgesamt ca 5 
Code Zeilen zusätzlich.

von Dont K. (dont_k)


Angehängte Dateien:

Lesenswert?

Falk Brunner schrieb:

> Das haben schon viele gesagt, bis sie einen Lötfehler gefunden haben.
>

Ok gut die Antwort habe ich wohl provoziert. Ich poste in dem Beitrag 
ein Bild von der Konstruktion. Weswegen ich noch nicht denke, dass es an 
einem Lötfehler liegt, ist die Tatsache, dass ich die Stromversorgung 
nur umstecken muss und schon geht es. Das sind am Bild die drei Kabel 
(rot, grün, braun - 5V, 3.3V, GND). Wie gesagt die gemessenen 
Spannungswerte sind gleich, egal obs am UNI oder UNO steckt.

> Bei 5V Vcc? Keine Sekunde. Die offiziellen Zahlen sind 0,7*Vcc, das sind
> bei 5V min. 3,5V. REAL wird es meist bei knapp über 2,5V irgendwie
> erkannt. Solide ist das aber nicht!

Es kommt ja noch dazu, dass VCC aufgrund des Akkus beim Arduino UNI 7,4 
Volt ist. VCC ist ja die Eingangsspannung nehme ich an. Das scheint also 
wirklich das Hauptproblem zu sein. (Oder ist damit die Eingangsspannung 
des Chips, also 5V, gemeint). Die Widerstände sind aus Stromspargründen 
so hoch wie möglich, was ich aber jetzt scheinbar eh ändern muss.

http://www.mikrocontroller.net/part/74HC4050
Kann ich da einfach einen passenden Levelshifter verwenden oder muss ich 
den auch irgendwie steuern? Werd mich da mal einarbeiten...

@ uwe: Ich habe ja oben geschrieben, dass ich nicht gedacht habe, dass 
das so funktioniert. Das war ein Missverständnis aufgrund von Wolfgangs 
zweitem Posting. Ich hab das fehlinterpretiert.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>einem Lötfehler liegt, ist die Tatsache, dass ich die Stromversorgung
>nur umstecken muss und schon geht es. Das sind am Bild die drei Kabel
>(rot, grün, braun - 5V, 3.3V, GND)

Wo ist denn der UNI? Ist das die Platine ganz unten an der Konstruktion?

>Es kommt ja noch dazu, dass VCC aufgrund des Akkus beim Arduino UNI 7,4
>Volt ist. VCC ist ja die Eingangsspannung nehme ich an.

Nein, das ist die Betriebsspannung vom AVR, hier 5V.

> Das scheint also
>wirklich das Hauptproblem zu sein. (Oder ist damit die Eingangsspannung
>des Chips, also 5V, gemeint).

Genau.

> Die Widerstände sind aus Stromspargründen
>so hoch wie möglich, was ich aber jetzt scheinbar eh ändern muss.

Dann nimm einen Pegelwandler, der braucht noch weniger als deine 
hochohmigen Spannungsteiler, CMOS sei dank.

>Kann ich da einfach einen passenden Levelshifter verwenden

Ja.

> oder muss ich
>den auch irgendwie steuern?

Nein.

von Dont K. (dont_k)


Lesenswert?

Danke schonmal für deine Hilfe!

Nein... Also das UNI selbst sieht man nicht wirklich. Das ist unter 
diesem improvisiertem breadboard. Was man sieht ist oben eine Platine 
mit vielen Steckern - das mini breadboard. Die sichtbare Platine unten 
ist die Schaltung für die Chips. Die ist recht aufwändig und braucht 
zwei Ebenen, vor allem weil ich innerhalb des Würfels keinen Platz habe. 
Eine dritte Ebene kommt durch die Spannungsteiler dazu.

Ich werd mir jetzt einmal Pegelwandler anschauen und dann hier einen 
posten und fragen ob der passt, wenn das ok ist. Zum Glück ist das 
System einigermaßen modular und es ist nicht übermäßig viel Aufwand den 
einzubauen.

Danke nochmal für die schnelle Hilfe!

EDIT: Irgendwie werde ich aus dem Datenblatt für den 74HC4050 nicht 
schlau. Ich finde nirgends die Spannung auf die geregelt wird. Also ich 
sehe jede Menge Spannungen auf Seite 6, aber ich werde nicht wirklich 
schlau daraus.

: Bearbeitet durch User
von Dont K. (dont_k)


Lesenswert?

Ok... Hab mir jetzt die entsprechenden Seiten hier durchgelesen.

Kann ich einfach den 74HC4050 verwenden?

VCC 74HC4050 an 3.3V UNI
GND 74HC4050 an GND  UNI

Und die Datenrichtung ist jeweils A nach Y.

Also:

SCLK UNI --> A1 -74HC4050- Y1 --> SCLK ADNS9500
MOSI UNI --> A2 -74HC4050- Y2 --> MOSI ADNS9500
MISO UNI <-- Y3 -74HC4050- A3 <-- MISO ADNS9500
NCS1 UNI --> A4 -74HC4050- Y4 --> NCS1 ADNS9500
NCS2 UNI --> A5 -74HC4050- Y5 --> NCS2 ADNS9500

Das ergibt irgendwie Sinn wenn ich die Spannung am Weg zum Chip von 5V 
zu 3V konvertieren will. Aber am Rückweg? Woher soll da der 74HC4050 
wissen, dass ich gerne 5V auf Y3 hätte?

Oder verstehe ich die Funktionsweise falsch, bzw brauche einen 
anderen/zwei Levelshifter?

von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>Ich werd mir jetzt einmal Pegelwandler anschauen und dann hier einen
>posten und fragen ob der passt, wenn das ok ist. Zum Glück ist das
>System einigermaßen modular und es ist nicht übermäßig viel Aufwand den
>einzubauen.

Noch ein Tip. Ich vermisse eine Masseleitung am Stecker der SPI-Pins. 
Die sollte man ergänzen. Denn sonst kann man sich im Extremfall recht 
große, häßlich Masseschleifen zusammenbauen, welche den doch nicht ganz 
so langsamen SPI-Signalen nicht gefallen. Siehe Wellenwiderstand. 
Eine Terminierung brauchst du hier aber NICHT!

>EDIT: Irgendwie werde ich aus dem Datenblatt für den 74HC4050 nicht
>schlau.

Schlecht. Der IC ist an Einfachheit kaum zu überbieten.

> Ich finde nirgends die Spannung auf die geregelt wird. Also ich
>sehe jede Menge Spannungen auf Seite 6, aber ich werde nicht wirklich
>schlau daraus.

Wo liegt denn das Problem? Du versorgst den IC mit 3,3V und er wird an 
den Ausgängen Digitalsignale mit 0/3,3V ausgeben. Die Eingänge 
verkraften Spannungen bis 15V, somit auch 5V. Fertig ist der 
Pegelwandler.

von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>Kann ich einfach den 74HC4050 verwenden?

Sagt ich bereits.

>VCC 74HC4050 an 3.3V UNI
>GND 74HC4050 an GND  UNI

Ja.

>Und die Datenrichtung ist jeweils A nach Y.

Genau.

>SCLK UNI --> A1 -74HC4050- Y1 --> SCLK ADNS9500
>MOSI UNI --> A2 -74HC4050- Y2 --> MOSI ADNS9500
>NCS1 UNI --> A4 -74HC4050- Y4 --> NCS1 ADNS9500
>NCS2 UNI --> A5 -74HC4050- Y5 --> NCS2 ADNS9500

Ja.

>MISO UNI <-- Y3 -74HC4050- A3 <-- MISO ADNS9500

NEIN! Hier brauchst du einen 2. IC, denn das ist die andere Richtung, 
von 3,3V auf 5V.

>Das ergibt irgendwie Sinn wenn ich die Spannung am Weg zum Chip von 5V
>zu 3V konvertieren will.

>Aber am Rückweg? Woher soll da der 74HC4050
>wissen, dass ich gerne 5V auf Y3 hätte?

Kann er nicht.

>Oder verstehe ich die Funktionsweise falsch, bzw brauche einen
>anderen/zwei Levelshifter?

HEUREKA! 74HC1G125 in SOT23 ist dein Freund.

von Dont K. (dont_k)


Lesenswert?

Perfekt! Danke!

Mein Problem war halt, dass Levelshifter etwas neues für mich sind und 
"positive supply voltage". Jetzt nicht sonderlich aussagekräftig ist. 
Das kann alles sein, wenn mans nicht weiß. ^^

Außerdem habe ich wohl die Formulierung, ich soll "einen gescheiten 
Pegelwandler" nutzen, zu wörtlich genommen. Wenn der 74HC1G125 passt 
ists ok, ich wollte nur nochmal nachfragen, um nicht aufgrund eines 
Missverständnisses meine Chips zu grillen.

Wenn Interesse besteht, poste ich nachher hier obs wirklich daran 
gelegen hat.

von Falk B. (falk)


Lesenswert?

Das wäre nett.

von Falk B. (falk)


Lesenswert?

Uuups, Tippfehler!

74HCT1G125

Das T ist wichtig!

AHCT geht auch.

: Bearbeitet durch User
von Dont K. (dont_k)


Lesenswert?

Oh eins noch:

Ich werde zwei 74HC4050 verwenden und bei einem einfach alle Lanes bis 
auf MISO freilassen. Zumindest bis alles so läuft wie geplant. Ich muss 
von denen eh 10 Stück mindestens bestellen.

Den 74HC1G125 bekomme ich leider nur in zu großen Stückzahlen, und es 
wäre damit teurer. Wenn Platz ein Problem wird, werde ich mich weiter 
umsehen.

Schönen Abend noch!

EDIT: Ok den 74AHCT1G125 bekomme ich einfach. Ich schätze die Buchstaben 
nach diesem Code sind ein für den Formfaktor.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Dont K. (dont_k)

>Ich werde zwei 74HC4050 verwenden und bei einem einfach alle Lanes bis
>auf MISO freilassen.

Der Sinn dieser Sache erschließt sich mir nicht ganz. Diese IC kann 
NICHT voon 3,3 auf 5V pegelwandeln!

>Den 74HC1G125 bekomme ich leider nur in zu großen Stückzahlen, und es
>wäre damit teurer.

Bis du weich? Mein Gott, dan Kram gibt es fast überall! Und deine Uni 
wird doch mal 10 Euro locker machen können!

>EDIT: Ok den 74AHCT1G125 bekomme ich einfach. Ich schätze die Buchstaben
>nach diesem Code sind ein für den Formfaktor.

Ja. Da gibt es SOT-23, das ist noch leicht lötbar. SC-70 ist deutlich 
kleiner und schon ganz schöne Fummelei.

von Dont K. (dont_k)


Lesenswert?

So und hier die Rückmeldung:

Die Levelshifter haben das Kommunikationsproblem behoben. thx @ all
Damit ist dieses Problem gelöst!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.