Hallo,
ich habe einen ADS1115 an einen Arduino angeschlossen. Doch immer wenn
ich das SCL-Kabel in den Arduino stecke friert dieser komplett ein, und
stoppt seinen Arbeitsauftrag/ Rechenprozess. Ich habe ein Scanner auf
meinen Arduino auf meinen Arduino hochgeladen, dieser zeigt im Serielen
Monitor nur "Scanning..." an, und tut ebenfalls nichts. Der
Schaltungsaufbau ist oben im Bild nachzuvollziehen.
Das Scanner Programm lautet folgendermaßen:
#include <Wire.h>
void setup(){
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop(){
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0){
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
Wenn ich Augenkrebs bekomme um deinen Schaltplan zu
erkennen dann lass ich es lieber.
Muss unerhört schwierig sein ein vernünftiges, leicht
lesbares Bild hier hochzuladen.
Arduinoquäler schrieb:> Wenn ich Augenkrebs bekomme um deinen Schaltplan zu> erkennen dann lass ich es lieber.
Ich habe Erbarmen mit Dir.
>> Muss unerhört schwierig sein ein vernünftiges, leicht> lesbares Bild hier hochzuladen.
Ist es. Aber ich habe keine Mühen gescheut, um Deine Augen zu schonen.
Nun aber frisch an's Werk! Ausreden gibt es ja nun nicht mehr.
Ich will auch mal. ;)
---
Schick doch mal einen General Call auf den weg (alles Nullen), dann
sollte er mit dem 9ten Bit ein Ack senden.
Pullup Widerstände drann?
Welche Bibliothek? "Wire.h" sehe ich selber. Was macht die auf dem Bus?
Wofür scannst Du den kompletten Adressbereich? Die I2C Adresse ist doch
fest eingestellt?
Wackel 8mal mit SCL und lass SDA auf LOW. Bei neunten Wackeln liest Du
SDA ein, muss low werden.
Datenblatt schon gelesen? Ich habe es auch eben nur kurz überflogen...
Ich tippe. SCL liegt auf Masse und nicht ADDR.
Stromtuner schrieb:> Schick doch mal einen General Call auf den weg (alles Nullen), dann> sollte er mit dem 9ten Bit ein Ack senden.
Ich bin relativ neu auf dem Gebiet, wie kann ich das senden?
> Pullup Widerstände drann?
Die sind anscheinend in dem Baustein integriert
> Welche Bibliothek? "Wire.h" sehe ich selber. Was macht die auf dem Bus?
Soll ich die rausschmeisen?
> Wofür scannst Du den kompletten Adressbereich? Die I2C Adresse ist doch> fest eingestellt?
Ja, ist er. Habe ich mich auch schon gefragt, doch ein Freund hat mir
empfohlen genau das Programm zu benutzen
> Wackel 8mal mit SCL und lass SDA auf LOW. Bei neunten Wackeln liest Du> SDA ein, muss low werden.
Soll ich SDA Schaltungstechnisch auf LOW setzen, also erden, oder soll
ich das via das Programm machen. Setze ich SDA auf GND, so zeigt das
Messgerät beim neunten mal 5V.(Ich glaube hier liegt das Problem)
> Ich tippe. SCL liegt auf Masse und nicht ADDR.
Schaltungsmäßig?
Heiko G. schrieb:> Wenn du genau die Schaltung dieser Webseite verwendest kannst du ja auch> das Beispielprogramm von dort nehmen um zu testen ob die Schaltung in> Ordnung ist. Dann weisst du zumindest ob die Hardware ein Problem hat> oder ob es an der Software liegt.
Es liegt anscheinend an der Hardware, da das Programm auch einfriert,
doch ich habe die sehr einfache Schaltung 1:1 abgebaut. Es ist langsam
echt zum verzweifeln.
t800w schrieb:> Der Wert auf SCL nähert sich 1,6 Volt an.
Wie gemessen? Mit Oszi oder mit Multimeter?
Falls mit dem Multimeter: in welchen Messbereich? AC oder DC oder AC+DC?
Falls DC: das wäre ein ziemlich "kranker" Pegel. Welchen Wert misst du
in der Situation am VCC und am GND des ADS-Boards? (Messung bitte
jeweils zum GND des Arduino-Boards durchführen).
Stromtuner schrieb:> Wofür scannst Du den kompletten Adressbereich?> Die I2C Adresse ist doch fest eingestellt?
.. und hoffentlich auch die, von der man glaubt, sie sei die richtige.
Es ist nicht die dümmste Idee, I2C zu scannen, wenn irgendwas nicht
klappt.
t800w schrieb:> ich habe die sehr einfache Schaltung 1:1 abgebaut.
Hättest Du sie auf- oder nachgebaut, würde sie evtl. funktionieren.
Probiere mal den Anhang aus. So Du hast, klemme irgend ein anderes
I2C-Teil an, RTC-Baustein oder Display.
Manfred schrieb:> Probiere mal den Anhang aus. So Du hast, klemme irgend ein anderes> I2C-Teil an, RTC-Baustein oder Display.
Ok, ich probiers morgen mal
Die Pullups sollten bereits auf dem Modul sein... du hast doch genau das
abgebildete Modul oder? Oder wenigstens ein anderes, wo auch 8 kleine
SMD Bausteine drauf sind (oder 4 kleine und 1 etwas größerer). Im
Zweifelsfall, einfach mal ein Foto von deinem Aufbau hochladen.
Trick schrieb:> Vielleicht sind die internen Pull Ups noch zusätzlich aktiviert?
Die 30..50kΩ dürfen den I2C-Betrieb nicht beeinflussen. Wozu also die
Frage?
Wolfgang schrieb:> Trick schrieb:>> Vielleicht sind die internen Pull Ups noch zusätzlich aktiviert?>> Die 30..50kΩ dürfen den I2C-Betrieb nicht beeinflussen. Wozu also die> Frage?
Deswegen
http://www.bristolwatch.com/rpi/ads1115.html
An issue to be aware of is the pull up resistors built into the boards
as shown in Fig. 2. The Raspberry Pi I2C connections is 3.3-volts and
has its own pull up resistors. This may create problems - either
remove/cut the pull ups or in my case I used a level translator to
operate the ADS1115 at 5-volts and isolate the pull up problem.
Mathias schrieb:> Die Pullups sollten bereits auf dem Modul sein... du hast doch> genau das> abgebildete Modul oder? Oder wenigstens ein anderes, wo auch 8 kleine> SMD Bausteine drauf sind (oder 4 kleine und 1 etwas größerer). Im> Zweifelsfall, einfach mal ein Foto von deinem Aufbau hochladen.
Ja, genau das.
Trick schrieb:> Deswegen> http://www.bristolwatch.com/rpi/ads1115.html> An issue to be aware of is the pull up resistors built into the boards> as shown in Fig. 2. The Raspberry Pi I2C connections is 3.3-volts and> has its own pull up resistors. This may create problems - either> remove/cut the pull ups or in my case I used a level translator to> operate the ADS1115 at 5-volts and isolate the pull up problem.
Besitzt der Arduino wirklich Schaltungsinterne Pull-Up's?
Ich habe das Problem gefunden!!!
Es war ein extrem kleines Kupferdrähtchen zwischen SCL und GND
--> Stormtuner hat somit recht
Doch ich habe schon die Pull-Ups auf dem ADS1115-Bord weggekratzt, soll
ich die wieder dran löten, oder kann man das so lassen, weil die
Messergebnisse sind perfekt.
Danke an alle!!!
Die Pullups sind ja nun nicht zu übersehen.
Danke, gutes Foto.
Läuft der ATMEL-UNO auf 5V oder auf 3.3V?
Steck doch mal den ADS auch auf 3.3V.
Wenn der arduion 5V von den Pullups (aber daran liegt es sicher auch
nicht) bekommt, selbst aber nur mit 3.3V läuft...
StromTuner
Stromtuner schrieb:> läuft nun alles auf 5V oder auf 3.3V?
Auf dem Bild sieht man doch, dass das Modul an 3.3V abgeschlossen ist.
t800w schrieb:> Ist das jetzt extrem schlimm, wenn die Pull-Ups auf dem ADS1115 fehlen?
Wenn sie da fehlen, müssen sie ja irgendwo anders sein, sonst würde es
nicht funktionieren, d.h. interne pull-ups des Arduino (oder hat er auch
externe)?
Aber wenn die zu hoch sind, dann kannst du entsprechend die i2c-Baudrate
nicht zu hoch wählen, sonst ist es eigentlich nicht schlimm.
Ziegenpeter schrieb:> Stromtuner schrieb:>> läuft nun alles auf 5V oder auf 3.3V?>> Auf dem Bild sieht man doch, dass das Modul an 3.3V abgeschlossen ist.
Schon ja, aber aus den Pins des Arduinos kommen trotzdem 5V!
Die 3.3V "Buchse" da ist nur einfach so da, damit man 3.3V zapfen kann.
Die Portpins bleiben bei 5V :)
Die korrekte Antwort ist also "alles" läuft mit 3.3V Versorgung und 5V
Signalen
Ziegenpeter schrieb:> Auf dem Bild sieht man doch, dass das Modul an 3.3V abgeschlossen ist.Abgeschlossen ist da garnichts.
Der Baustein darf 5Volt, einen 3V3-Regler sehe ich auf dem Board nicht -
wozu also diese Leitung? Aber ist doch nett, einen Adresspin mit einem
Pegel außerhalb der Spezifikation zu belegen.
Manfred schrieb:> Der Baustein darf 5Volt, einen 3V3-Regler sehe ich auf dem Board nicht -> wozu also diese Leitung? Aber ist doch nett, einen Adresspin mit einem> Pegel außerhalb der Spezifikation zu belegen.
A0 ist einer der (analogen) Eingänge des ADC. In der
"Originalschaltung", deren Bildchen der TO kopiert, wird klar, dass die
3,3V als "Testsignal" für den ADC verwendet werden. In diesem Thread
wird dem TO leider nicht klar, welchen Hintergrund die diversen
Nachfragen zu 5V/3,3V haben und dass er das einfach mal klarstellen
könnte.
Trick schrieb:> Deswegen> http://www.bristolwatch.com/rpi/ads1115.html> An issue to be aware of is the pull up resistors built into the boards> as shown in Fig. 2. The Raspberry Pi I2C connections is 3.3-volts and> has its own pull up resistors.
Der RaspberryPi läuft mit 3.3V.
Womit der hier verwendete Arduino läuft, lässt sich aus den bunten
Bildchen leider nicht erschließen. Ein gültiger Schaltplan mit Angabe zu
den Pull-Ups und/oder ein kurze Messung mit ein Multimeter könnte da
ungemein klärend wirken.
Hat schon mal jemand die Software angeschaut? Die Einrückungen und die
Klammern passen nicht zusammen. Die Kiste macht möglicherweise
datenabhängig irgendwas. Auf jeden Fall nicht das, was man auf den
ersten Blick sieht.