Forum: Mikrocontroller und Digitale Elektronik Arduino: I2C-Touchpad auslesen?


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Das ist mein erstes I2C-Projekt und entsprechend dämlich stelle ich mich 
an. Ich habe also zunächst auf Basis der Wire-Lib ein ganz simples 
Testprogramm geschrieben, was die Adressen im Bereich von 0 bis 127 
durchgeht, jeweils 1 Byte anfordert und wenn was kommt, dieses anzeigt.

Dabei ist A5 am Arduino Nano der Takt (SCL) und A4 sind die Daten (SDA). 
Das habe ich mir zunächst (ohne angeschlossenes Touchpad) mit einem Oszi 
angesehen.

SCL wird offenbar jeweils nur für ein par Takte eingeschaltet, ich kann 
also regelmäßige "Taktpakete" aus 1:1 Rechteckimpulsen sehen. Bei SDA 
sehe ich ebenfalls die Bits, im Gegensatz zu den Taktpaketen verändern 
sie sich entsprechend den aufgerufenen Adressen.

Verbinde ich SCL vom Nano mit SCL vom Touchpad, wird sogar die 
Kurvenform besser (sauberere Rechtecke). Verbinde ich dagegen SDA vom 
Touchpad mit dem vom Nano, verschwinden die vorher sichtbaren 
Datenpakete und die Daten schlagen quasi auf den Takt durch (kann ich 
mit 2-Kanal-Oszi sehen).

Was kann das sein? Ein simpler Kurzschluss ist ausgeschlossen, ich habe 
die Lötstellen und die Steckbrett-Verkabelung mehrfach auf- und 
abgebaut.

Das Touchpad ist ausser mit SDA und SCL noch mit Masse und 3,3V vom 
Arduino verbunden. Als Pullup an SDA und SCL  habe ich 2 gerade 
herumliegende 24k-Widerstände nach Plus 3,3V geschaltet ...

Tips? Danke.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und das Touchpad verwendet sicher I2C? Das ist ungewöhnlich.

Wenn es aus einem alten Notebook stammt und Du wegen des Vorhandenseins 
von Leitungen namens "Clock" und "Data" auf I2C tippst - da liegst Du 
daneben, das wird die im PC-Bereich übliche PS/2-Schnittstelle sein. Die 
verwendet ebenfalls separate Takt- und Datenleitungen und braucht auch 
Pullups, aber das Protokoll ist deutlich simpler.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Rufus Τ. F. schrieb:
> Und das Touchpad verwendet sicher I2C? Das ist ungewöhnlich.

Ja, ist kein altes, ausgebautes, sondern ein TPS43 von Azoteq.

von Dieter S. (Gast)


Lesenswert?

Und mit welcher Spannung betreibst du den Nano?
Bei 5 Volt muss ein Levelshifter dazwischen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Dieter S. schrieb:
> Und mit welcher Spannung betreibst du den Nano?
> Bei 5 Volt muss ein Levelshifter dazwischen.

Hmm ... Der Nano wird primär am USB mit 5V betrieben.

Ich nehme aber doch an, dass der "intern" mit 3,3V läuft, oder? Ist dazu 
nicht der Spannungsregler drauf? Oder wo kommen die 3,3V her, die auf 
dem Board "angeboten" werden? Und wozu sind die sonst gut?

von Jan H. (jan_m_h)


Lesenswert?

Frank E. schrieb:
> Ich nehme aber doch an, dass der "intern" mit 3,3V läuft, oder? Ist dazu
> nicht der Spannungsregler drauf? Oder wo kommen die 3,3V her, die auf
> dem Board "angeboten" werden? Und wozu sind die sonst gut?

Der läuft mit 5 Volt. Der 3,3V Regler ist dazu da, damit man 3,3V Chips 
dran mit Levelshifter betreiben kann.

von i2c (Gast)


Lesenswert?

>Ich nehme aber doch an, ...  Und wozu sind die sonst gut?

Ganz falscher Ansatz!
Datenblätter und Schaltpläne sind die Grundlagen, nicht sinnfreie 
Vermutungen.

von Walter S. (avatar)


Lesenswert?

Frank E. schrieb:
> Ich nehme aber doch an, dass der "intern" mit 3,3V läuft, oder?

wieviel MHz hat der Nano?
Wenn 16 dann läuft er mit 5V

von Brain 2.0 (Gast)


Lesenswert?

Frank E. schrieb:
> Dieter S. schrieb:
> Und mit welcher Spannung betreibst du den Nano?
> Bei 5 Volt muss ein Levelshifter dazwischen.
>
> Hmm ... Der Nano wird primär am USB mit 5V betrieben.
>
> Ich nehme aber doch an, dass der "intern" mit 3,3V läuft, oder? Ist dazu
> nicht der Spannungsregler drauf? Oder wo kommen die 3,3V her, die auf
> dem Board "angeboten" werden? Und wozu sind die sonst gut?

Ein klares NEIN. Der Nano wird in fast allen Fällen mit 5 Volt betrieben 
und dann hast du an den Pins im High-Zustand auch diese 5 Volt.

von Dieter S. (Gast)


Lesenswert?

Ja, wie meine Vorgänger alle schon beschrieben haben, der Nano arbeitet 
i.d.R. mit 5 Volt. Da kommst du dann nicht um einen Levelshifter herum. 
Hatte ich ja auch schon geschrieben. Anders wirst du dein Touchpad 
schnell killen.

von Walter S. (avatar)


Lesenswert?

Dieter S. schrieb:
> der Nano arbeitet
> i.d.R. mit 5 Volt.

das i.d.R. heißt aber: es könnte auch 3,3V sein
ich verwende so einen weil ich mir so eben den Levelshifter sparen  kann

von Dieter S. (Gast)


Lesenswert?

Walter S. schrieb:
> Dieter S. schrieb:
>> der Nano arbeitet
>> i.d.R. mit 5 Volt.
>
> das i.d.R. heißt aber: es könnte auch 3,3V sein
> ich verwende so einen weil ich mir so eben den Levelshifter sparen  kann

Richtig, nur diese sind sehr selten und daher sollte der TO das 
unbedingt prüfen, was er bisher noch nicht getan bzw. bestätigt hat.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Dieter S. schrieb:
> Walter S. schrieb:

> Richtig, nur diese sind sehr selten und daher sollte der TO das
> unbedingt prüfen, was er bisher noch nicht getan bzw. bestätigt hat.

Es ist ein China-Nano mit CH341-USB-Chip und aufgelöteter 
USB-Mini-Buchse.

Woran erkenne ich, ob es evtl. eine 3,3V-Version ist?

Im Prinzip mit Messen, das ist klar, ist aber bei dem SMD-Chip garnicht 
so einfach ... ich werde mir mal die Logikpegel mit Oszi bzw. Multimeter 
vornehmen ... oder gibts noch andere Merkmale?

von Dieter S. (Gast)


Lesenswert?

Frank E. schrieb:
> Es ist ein China-Nano mit CH341-USB-Chip und aufgelöteter
> USB-Mini-Buchse.
> Woran erkenne ich, ob es evtl. eine 3,3V-Version ist?
>
> Im Prinzip mit Messen, das ist klar, ist aber bei dem SMD-Chip garnicht
> so einfach ... ich werde mir mal die Logikpegel mit Oszi bzw. Multimeter
> vornehmen ... oder gibts noch andere Merkmale?

Das wurde doch schon gepostet.
Hat der Nano eine Taktfrequenz von 16 MHz, dann ist es ein 5 Volt Typ. 
Hat er 8 MHz, dann 3,3 Volt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frank E. schrieb:
> Im Prinzip mit Messen, das ist klar, ist aber bei dem SMD-Chip garnicht
> so einfach ..

Wieso? Du musst ja nur einen I/O-Pin auf Ausgang schalten und einen 
High-Pegel anlegen - dann hast Du ein schönes Signal auf einem der Pins 
am Platinenrand.

von Dieter S. (Gast)


Lesenswert?

Der Nano hat doch aber auch einen direkten Spannungsausgang, auf dem die 
Betriebsspannung des Atmega anliegt.
Hier im Pinout als 5 Volt gekennzeichnet.

http://pighixxx.com/nanopdf.pdf

Nicht die 3,3 Volt, das ist die Spannung aus dem Serial-USB-Wandler.

von Frank E. (Firma: Q3) (qualidat)


Angehängte Dateien:

Lesenswert?

Das Problem ist gelöst, die Ursache war VIEL blöder als vermutet:

Auf der Platine sind die Anschlüsse falsch bedruckt!!! In dem Tütchen, 
in dem das Touchpad geliefert wird, ist zwar eine Art Beipackzettel, 
aber wer guckt da schon drauf?

(ich habe nicht den Connector benutzt, sondern die Lötpads)

Habe heute morgen nochmal Alles vom Bredboard gerissen und neu aufgebaut 
und dabei wegen der Anschlüsse mal nicht auf das Touchpad, sondern auf 
den daneben liegenden Zettel gesehen .... Arghhh!!!

Und siehe da, es geht! Trotz 3,3V-Technik (gespeist aus dem 
Nano-Anschluss 3,3V) und direktem Kontakt mit den I2C-Pins (A4 u. A5) 
des Nano ...

Das Bild ist ein wenig verwackelt ... sorry.

: Bearbeitet durch User
von Dieter S. (Gast)


Lesenswert?

Frank E. schrieb:
> Das Problem ist gelöst, die Ursache war VIEL blöder als vermutet:
>
> Auf der Platine sind die Anschlüsse falsch bedruckt!!! In dem Tütchen,
> in dem das Touchpad geliefert wird, ist zwar eine Art Beipackzettel,
> aber wer guckt da schon drauf?
>
> (ich habe nicht den Connector benutzt, sondern die Lötpads)
>
> Habe heute morgen nochmal Alles vom Bredboard gerissen und neu aufgebaut
> und dabei wegen der Anschlüsse mal nicht auf das Touchpad, sondern auf
> den daneben liegenden Zettel gesehen .... Arghhh!!!
> Und siehe da, es geht! Trotz 3,3V-Technik (gespeist aus dem
> Nano-Anschluss 3,3V) und direktem Kontakt mit den I2C-Pins (A4 u. A5)
> des Nano ...
>
> Das Bild ist ein wenig verwackelt ... sorry.

Damit läufst du Gefragt das Pad zu killen, da der Nano mit 5 Volt 
betrieben wird und an den I2C-Pins auch 5 Volt anliegen.

Aber wenn man schon nicht einen Beipackzettel liest, muss man ja auch 
den Beiträgen hier im Forum nicht glauben.

Warum stellst du hier überhaupt Fragen rein, wenn du niemandem glaubst?

Ich versteh das nicht.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Dieter S. schrieb:
> Damit läufst du Gefragt das Pad zu killen, da der Nano mit 5 Volt
> betrieben wird und an den I2C-Pins auch 5 Volt anliegen.
> Aber wenn man schon nicht einen Beipackzettel liest, muss man ja auch
> den Beiträgen hier im Forum nicht glauben.
> Warum stellst du hier überhaupt Fragen rein, wenn du niemandem glaubst?
> Ich versteh das nicht.

Meine ursprüngliche Frage gezog sich nicht auf die 5V-Verträglichkeit, 
sondern auf das merkwürdige Verhalten, was so garnicht mit I2C 
zusammenpassen wollte. Das hat sich ja nun aufgrund der falschen 
Anschlußbelegung geklärt.

Die möglichen Probleme wegen der 5V kamen erst später in die Diskussion, 
als eine mögliche Ursache für das Nicht-Funktionieren der 
Datenübertragung.

Vom Hersteller selber wird ein Arduino-Code nebst Anschluß-Skizze (in 
ASCII-Grafik mit Benennung der Pins) und OHNE Level-Shifter 
mitgeliefert. Anscheinend sind die Pads "5V compilant" oder wie das 
heisst ... (was gar nicht so selten vorkommt). Da wird nix gekillt ...

Trotzdem Danke für all die Tips.

: Bearbeitet durch User
von Dieter S. (Gast)


Lesenswert?

Frank E. schrieb:
>
> ...Anscheinend sind die Pads "5V compilant" oder wie das
> heisst ... (was gar nicht so selten vorkommt). Da wird nix gekillt ...

Da du keine Datenblätter liest, wirst du es erst erfahren, wenn 
Rauchzeichen aufsteigen.
Mach weiter so. Viel Erfolg. :-)

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Dieter S. schrieb:
> Frank E. schrieb:
>>
>> ...Anscheinend sind die Pads "5V compilant" oder wie das
>> heisst ... (was gar nicht so selten vorkommt). Da wird nix gekillt ...
>
> Da du keine Datenblätter liest, wirst du es erst erfahren, wenn
> Rauchzeichen aufsteigen.
> Mach weiter so. Viel Erfolg. :-)

Lesen (und Verstehen) scheinen nicht deine Stärke zu sein. Wenn der 
Hersteller quasi den Bauplan mitliefert, darf ich den doch wohl ernst 
nehmen, oder?

von Michael U. (amiga)


Lesenswert?

Hallo,

Frank E. schrieb:
> Vom Hersteller selber wird ein Arduino-Code nebst Anschluß-Skizze (in
> ASCII-Grafik mit Benennung der Pins) und OHNE Level-Shifter
> mitgeliefert. Anscheinend sind die Pads "5V compilant" oder wie das
> heisst ... (was gar nicht so selten vorkommt). Da wird nix gekillt ...

wohl die Mehrheit meiner (China-)Arduino-Teile behauptet sowas.
Ob eine SD-Card z.B. mit Reihenwiederständen und damit ausnutzen der 
Schutzdionen (vermutlich außerhalb der Specs) damit auf Dauer klarkommt, 
ignoeriere ich bei meinen Bastelein auch, solange:
a) der Kram die üblichen China-Preise gekostet hat
b) solange noch ein zweites in Reserve liegt

Dann überlebe ich den Verlust bei Ausfall und kann dann eben was 
vernünftiges draus machen kann.

Komischerweise haben es bisher alle Module auch über Wochen 
Versuchsbetrieb überlebt...

Solange es also Sachen sind, wo mich auch ein plötzlicher Ausfall nicht 
stört, bleibt es bei mir vorerst dabei.

Gruß aus Berlin
Michael

von Dieter S. (Gast)


Lesenswert?

Michael U. schrieb:
> wohl die Mehrheit meiner (China-)Arduino-Teile behauptet sowas.
> Ob eine SD-Card z.B. mit Reihenwiederständen und damit ausnutzen der
> Schutzdionen (vermutlich außerhalb der Specs) damit auf Dauer klarkommt,
> ignoeriere ich bei meinen Bastelein auch, solange:

Dann bist du in jedem Fall auf der sicheren Seite.
Widerstände setze ich da auch ein und so reicht es wohl meistens.
Aber ohne diese finde ich es schon kritisch.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dieter S. schrieb:
> Damit läufst du Gefragt das Pad zu killen, da der Nano mit 5 Volt
> betrieben wird und an den I2C-Pins auch 5 Volt anliegen.

Das tun sie nur, wenn die I2C-Pullups gegen 5V geschaltet sind. 
Ansonsten sind I2C-Pins Open-Collector- bzw. Open-Drain-Anschlüsse.

I2C mit 3V-Pullups an einem 5V-µC ist allerdings etwas grenzwertig, weil 
der Highpegel etwas zu niedrig sein dürfte, um sicher und sauber erkannt 
zu werden.

Ratsam ist daher der Einsatz eines I2C-Pegelwandlers wie z.B. PCA9517.

von Dieter S. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Das tun sie nur, wenn die I2C-Pullups gegen 5V geschaltet sind.
> Ansonsten sind I2C-Pins Open-Collector- bzw. Open-Drain-Anschlüsse.

Oh ja, stimmt. Das hatte ich außer Acht gelassen.
Dank...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Dieter S. schrieb:
> Rufus Τ. F. schrieb:
>> Das tun sie nur, wenn die I2C-Pullups gegen 5V geschaltet sind.
>> Ansonsten sind I2C-Pins Open-Collector- bzw. Open-Drain-Anschlüsse.
>
> Oh ja, stimmt. Das hatte ich außer Acht gelassen.
> Dank...

Ich habe nat. 2x 10k Pullup nach 3,3V gesetzt.

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.