I2C Anschluss an Arduino Due funktioniert nicht

Edit: Leider bin ich nach einiger Zeit und vielen guten Vorschägen trotzdem nicht weiter gekommen mit meinem Problem. Ich habe nun einen Thread im englischen Forum zu demselben Problem erstellt, hier der Link dazu.

Liebe Arduino Commuity,

ich habe leider folgendes Problem: Ich habe einen Lidar (Garmin Lidar Lite v3), wie im Datenblatt vermekt, über I2C an einen Arduino Uno angeschlossen. Damit funktionert der Beispielcode der mit der Library des Lidars kommt.

Nun habe ich versucht den Lidar an den Arduino DUE mit I2C anzuschließen (Pins 20 und 21), wobei das Beispielprogramm jedoch nur ausgibt, dass keine Distanz gemessen werden kann. Ich habe genau denselben Aufbau wie im Datenblatt ausprobiert.

Mit einem Multimeter habe ich versucht zu messen wie viel Spannung an dem Kondensator (s. Schlatung im Datenblatt) anliegt, beim Arduno Uno waren es ca. 3,5 V und beim Due ca. 4,5 V, obwohl sie beide Male mit 5V und GND verbunden waren.
Auch beim I2C Anschluss ergaben sich beim Arduino Due größere Werte.

Ich habe leider keine Ahnung wie I2C genau funktioniert und weiß leider nicht weiter…
Hat jemand eine Idee?

VG EcxaByte

Was sagt der I2C-Scanner?

Welchen LevelShifter verwendest Du?

Welche PullUp-Widerstände verwendest Du?

Ich hab leider keinen der Begriffe schon mal gehört, kannst du vielleicht etwas genauer werden? Der Aufbau gleicht 1:1 dem aus dem Datenblatt (Link s.o.)

Die Schaltung im Datenblatt ist für einen Uno, der mit 5Volt arbeitet.

Der DUE hat aber 3,3Volt und die Pins sollten dann auch mit 3,3V arbeiten.
Dein Garmen Lidar braucht aber 5 Volt, das gibt Probleme, wenn du nicht zwingend mit einem Levelshifter für I2C arbeitest.

HotSystems:
Die Schaltung im Datenblatt ist für einen Uno, der mit 5Volt arbeitet.

Der DUE hat aber 3,3Volt und die Pins sollten dann auch mit 3,3V arbeiten.
Dein Garmen Lidar braucht aber 5 Volt, das gibt Probleme, wenn du nicht zwingend mit einem Levelshifter für I2C arbeitest.

Klingt logisch, danke! Wie muss ich den Levelshifter dann genau anschließen? Ich habe diesen Levelshifter zufällig hier, ich verstehe aber nicht genau welche Spannung jetzt wie genau angeschlossen werden muss.

Ich habe diesen Levelshifter zufällig hier,

Dann lese die Doku dazu!

https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide

Danke für den Link, wenn ich das jetzt richtig verstanden habe ist die richtige Konfiguration wie folgt:

An den High Voltage Input schließe ich 5V und GND des Arduino Due an,
an den Low Voltage Input schließe ich 3,3V und GND des Arduino Due an,
die SCL und SDA Anschlüsse des Lidars schließe ich an zwei verschiedene Channels an dem High Voltage Anschluss an (z.B. Channel 1 und 2)
und die SCL und SDA Pins des Arduino Due verbinde ich mit den passenden Low Voltage Anschlüssen der Channels.

Stimmt das soweit?

Da GND des Due mit dem GND des Due verbunden ist (blöder Satz), brauchst Du GND nur einmal zu verbinden.

Aber was noch fehlt, sind noch die Verbindungen GND und 5V an Lidar.

Beim Hookup Guide - Board Overview findest Du R3 und R4, das sind die PullUp-Widerstände. Auf manchen Boards wie hier sind die drauf, sonst muß man sie ergänzen, denn ohne geht es nicht.

agmue:
Da GND des Due mit dem GND des Due verbunden ist (blöder Satz), brauchst Du GND nur einmal zu verbinden.

Aber was noch fehlt, sind noch die Verbindungen GND und 5V an Lidar.

Beim Hookup Guide - Board Overview findest Du R3 und R4, das sind die PullUp-Widerstände. Auf manchen Boards wie hier sind die drauf, sonst muß man sie ergänzen, denn ohne geht es nicht.

Danke für den Tipp bzgl. GND.
Ja genau, den Lidar schließe ich dann auch an die 5V Quelle an.

Okay dann sollte es ja passen. Falls es trotzdem nicht klappen sollte melde ich mich nochmal. Vielen Dank an alle Helfer :slight_smile:

Genereller Tipp für I2C: Erst den I2C-Scanner auf dem Arduino laufen lassen. Wenn der die richtige Adresse ausspuckt, mit komplizierteren Programmen weitermachen.

Leider klappt es noch immer nicht... :frowning:

Der Arduino MultiSpeed I2C Scanner gibt folgendes aus:

TIME	DEC	HEX		50	100	200	300	400	500	600	700	800	[KHz]
----------------------------------------------------------------------------------------------------------------
12062	0	0x00		.	.	.	.	.	.	.	.	.
12065	1	0x01		.	.	.	.	.	.	.	.	.
12067	2	0x02		.	.	.	.	.	.	.	.	.
12070	3	0x03		.	.	.	.	.	.	.	.	.
12073	4	0x04		.	.	.	.	.	.	.	.	.
12076	5	0x05		.	.	.	.	.	.	.	.	.
12079	6	0x06		.	.	.	.	.	.	.	.	.
12082	7	0x07		.	.	.	.	.	.	.	.	.
12084	8	0x08		.	.	.	.	.	.	.	.	.
12087	9	0x09		.	.	.	.	.	.	.	.	.
12090	10	0x0A		.	.	.	.	.	.	.	.	.
12093	11	0x0B		.	.	.	.	.	.	.	.	.
12096	12	0x0C		.	.	.	.	.	.	.	.	.
12099	13	0x0D		.	.	.	.	.	.	.	.	.
12102	14	0x0E		.	.	.	.	.	.	.	.	.
12105	15	0x0F		.	.	.	.	.	.	.	.	.
12108	16	0x10		.	.	.	.	.	.	.	.	.
12110	17	0x11		.	.	.	.	.	.	.	.	.
12113	18	0x12		.	.	.	.	.	.	.	.	.
12116	19	0x13		.	.	.	.	.	.	.	.	.
12119	20	0x14		.	.	.	.	.	.	.	.	.
12122	21	0x15		.	.	.	.	.	.	.	.	.
12125	22	0x16		.	.	.	.	.	.	.	.	.
12128	23	0x17		.	.	.	.	.	.	.	.	.
12131	24	0x18		.	.	.	.	.	.	.	.	.
12134	25	0x19		.	.	.	.	.	.	.	.	.
12137	26	0x1A		.	.	.	.	.	.	.	.	.
12140	27	0x1B		.	.	.	.	.	.	.	.	.
12142	28	0x1C		.	.	.	.	.	.	.	.	.
12145	29	0x1D		.	.	.	.	.	.	.	.	.
12148	30	0x1E		.	.	.	.	.	.	.	.	.
12151	31	0x1F		.	.	.	.	.	.	.	.	.
12154	32	0x20		.	.	.	.	.	.	.	.	.
12157	33	0x21		.	.	.	.	.	.	.	.	.
12160	34	0x22		.	.	.	.	.	.	.	.	.
12163	35	0x23		.	.	.	.	.	.	.	.	.
12166	36	0x24		.	.	.	.	.	.	.	.	.
12169	37	0x25		.	.	.	.	.	.	.	.	.
12172	38	0x26		.	.	.	.	.	.	.	.	.
12175	39	0x27		.	.	.	.	.	.	.	.	.
12177	40	0x28		.	.	.	.	.	.	.	.	.
12180	41	0x29		.	.	.	.	.	.	.	.	.
12183	42	0x2A		.	.	.	.	.	.	.	.	.
12186	43	0x2B		.	.	.	.	.	.	.	.	.
12189	44	0x2C		.	.	.	.	.	.	.	.	.
12192	45	0x2D		.	.	.	.	.	.	.	.	.
12195	46	0x2E		.	.	.	.	.	.	.	.	.
12198	47	0x2F		.	.	.	.	.	.	.	.	.
12201	48	0x30		.	.	.	.	.	.	.	.	.
12204	49	0x31		.	.	.	.	.	.	.	.	.
12207	50	0x32		.	.	.	.	.	.	.	.	.
12210	51	0x33		.	.	.	.	.	.	.	.	.
12212	52	0x34		.	.	.	.	.	.	.	.	.
12215	53	0x35		.	.	.	.	.	.	.	.	.
12218	54	0x36		.	.	.	.	.	.	.	.	.
12221	55	0x37		.	.	.	.	.	.	.	.	.
12224	56	0x38		.	.	.	.	.	.	.	.	.
12227	57	0x39		.	.	.	.	.	.	.	.	.
12230	58	0x3A		.	.	.	.	.	.	.	.	.
12233	59	0x3B		.	.	.	.	.	.	.	.	.
12236	60	0x3C		.	.	.	.	.	.	.	.	.
12239	61	0x3D		.	.	.	.	.	.	.	.	.
12242	62	0x3E		.	.	.	.	.	.	.	.	.
12244	63	0x3F		.	.	.	.	.	.	.	.	.
12247	64	0x40		.	.	.	.	.	.	.	.	.
12250	65	0x41		.	.	.	.	.	.	.	.	.
12253	66	0x42		.	.	.	.	.	.	.	.	.
12256	67	0x43		.	.	.	.	.	.	.	.	.
12259	68	0x44		.	.	.	.	.	.	.	.	.
12262	69	0x45		.	.	.	.	.	.	.	.	.
12265	70	0x46		.	.	.	.	.	.	.	.	.
12268	71	0x47		.	.	.	.	.	.	.	.	.
12271	72	0x48		.	.	.	.	.	.	.	.	.
12274	73	0x49		.	.	.	.	.	.	.	.	.
12277	74	0x4A		.	.	.	.	.	.	.	.	.
12279	75	0x4B		.	.	.	.	.	.	.	.	.
12282	76	0x4C		.	.	.	.	.	.	.	.	.
12285	77	0x4D		.	.	.	.	.	.	.	.	.
12288	78	0x4E		.	.	.	.	.	.	.	.	.
12291	79	0x4F		.	.	.	.	.	.	.	.	.
12294	80	0x50		.	.	.	.	.	.	.	.	.
12297	81	0x51		.	.	.	.	.	.	.	.	.
12300	82	0x52		.	.	.	.	.	.	.	.	.
12303	83	0x53		.	.	.	.	.	.	.	.	.
12306	84	0x54		.	.	.	.	.	.	.	.	.
12309	85	0x55		.	.	.	.	.	.	.	.	.
12312	86	0x56		.	.	.	.	.	.	.	.	.
12314	87	0x57		.	.	.	.	.	.	.	.	.
12317	88	0x58		.	.	.	.	.	.	.	.	.
12320	89	0x59		.	.	.	.	.	.	.	.	.
12323	90	0x5A		.	.	.	.	.	.	.	.	.
12326	91	0x5B		.	.	.	.	.	.	.	.	.
12329	92	0x5C		.	.	.	.	.	.	.	.	.
12332	93	0x5D		.	.	.	.	.	.	.	.	.
12335	94	0x5E		.	.	.	.	.	.	.	.	.
12338	95	0x5F		.	.	.	.	.	.	.	.	.
12341	96	0x60		.	.	.	.	.	.	.	.	.
12344	97	0x61		.	.	.	.	.	.	.	.	.
12347	98	0x62		V	V	V	.	V	V	V	V	V
12349	99	0x63		.	.	.	.	.	.	.	V	.
12352	100	0x64		.	.	.	.	.	.	.	.	.
12355	101	0x65		.	.	.	.	.	.	.	.	.
12358	102	0x66		.	.	.	.	.	.	.	.	.
12361	103	0x67		.	.	.	.	.	.	.	.	.
12364	104	0x68		.	.	.	.	.	.	.	.	.
12367	105	0x69		.	.	.	.	.	.	.	.	.
12370	106	0x6A		.	.	.	V	.	.	.	.	.
12373	107	0x6B		.	.	.	.	.	.	.	.	.
12376	108	0x6C		.	.	.	.	.	.	.	.	.
12379	109	0x6D		.	.	.	.	.	.	.	.	.
12382	110	0x6E		.	.	.	.	.	.	.	.	.
12385	111	0x6F		.	.	.	.	.	.	.	.	.
12388	112	0x70		.	.	.	.	.	.	.	.	.
12391	113	0x71		.	.	.	.	.	.	.	.	.
12394	114	0x72		.	.	.	V	.	.	.	.	.
12397	115	0x73		.	.	.	.	.	.	.	.	.
12400	116	0x74		.	.	.	.	.	.	.	.	.
12403	117	0x75		.	.	.	.	.	.	.	.	.
12406	118	0x76		.	.	.	.	.	.	.	.	.
12409	119	0x77		.	.	.	.	.	.	.	.	.
12412	120	0x78		.	.	.	.	.	.	.	.	.
12415	121	0x79		.	.	.	.	.	.	.	.	.
12418	122	0x7A		.	.	.	.	.	.	.	.	.
12421	123	0x7B		.	.	.	.	.	.	.	.	.
12424	124	0x7C		.	.	.	.	.	.	.	.	.
12427	125	0x7D		.	.	.	.	.	.	.	.	.
12430	126	0x7E		.	.	.	.	.	.	.	.	.
12433	127	0x7F		.	.	.	.	.	.	.	.	.

4 devices found in 378 milliseconds.

Ich weiß leider nichts damit anzufangen, hat jemand eine Idee was das Problem sein könnte?

Ja klar, du hast vermutlich etwas falsch gemacht.
Was, das sehen wir nicht.

HotSystems:
Ja klar, du hast vermutlich etwas falsch gemacht.
Was, das sehen wir nicht.

Was braucht ihr denn noch für Infos um das Problem zu ermitteln? Ich bekomme ja Signale auf dem I2C Anschluss (s.o.) und die momentane Schaltung habe ich oben beschrieben.

Ich frage mich, was du mit dem MultiSpeed Scanner willst ?

HotSystems:
Ich frage mich, was du mit dem MultiSpeed Scanner willst ?

agmue:
Genereller Tipp für I2C: Erst den I2C-Scanner auf dem Arduino laufen lassen. Wenn der die richtige Adresse ausspuckt, mit komplizierteren Programmen weitermachen.

Ich hatte das unter I2C Scanner verstanden... Ich dachte, dass man so vielleicht das Problem besser erkennen kann.

Was schlägst du denn vor?

Nee, da hast du was falsch verstanden.

Du musst diesen Scanner nehmen.
Damit erkennst du, welche Adresse dein angeschlossenes Modul hat.

Wenn keine Adresse angezeigt wird, ist noch was falsch.

Beim I2C Scanner wird “No device found” angezeigt… Ich habe Mal ein paar Fotos vom Aufbau gemacht (s. Anhang), ich habe ihn schon mehrmals kontrolliert und finde den Fehler nicht…

Ist es denn nicht eigenartig, dass mit dem Multispeed Scanner Informationen auf 0x62 Einträge angezeigt werden? Im Datenblatt steht, dass darüber Informationen gesendet werden oder nicht?

The device has a 7-bit slave address with a default value of 0x62.

der Scanner zeigt bei den meisten geschwindigkeiten an, dass da ein device dran hängt.
Super.

Was ist jetzt die Frage?

Die Frage ist warum der Beispielsketch des Lidars nicht funktioniert und warum der I2C Scanner immer "No device found" zurück gibt. Zu dem letzten Problem habe ich einen Thread gefunden aber leider nicht viel verstanden, es geht wohl um einen Bug beim Arduino Due: Link zum Thread

du schreibst

Nun habe ich versucht den Lidar an den Arduino DUE mit I2C anzuschließen (Pins 20 und 21), wobei das Beispielprogramm jedoch nur ausgibt, dass keine Distanz gemessen werden kann. Ich habe genau denselben Aufbau wie im Datenblatt ausprobiert.

wo ist im Datenblatt ein Diagramm für den Arduino DUE Anschluss?

Finde ich nicht.
Also mach du ein Schaltbild und ein ECHTFOTO von deinem Aufbau.
Jede Komponente - jedes Kabel muss klar für uns ersichtlich sein.