Danke dir, das klingt wirklich ratsam
Wenn die Quelle China oder ebay ist, dann kann das sicherlich vorkommen. Ich habe schon mehrere von Microchip direkt verbaut und noch nie Probleme gehabt.
Danke dir, das klingt wirklich ratsam
Wenn die Quelle China oder ebay ist, dann kann das sicherlich vorkommen. Ich habe schon mehrere von Microchip direkt verbaut und noch nie Probleme gehabt.
Hallo zusammen,
ich habe mehrere DS18S20 und DS18B20 Sensoren an einen Raspberry Zero
angeschlossen (Pin4). Pullup habe ich schon von 4k7 auf 1k8 geändert,
bekomme aber weiterhin sporadisch CRC Fehler (wechselnde Sensoren).
Die Einleseroutine liest den Sensor mehrmals bei Auftreten eines CRC
Fehlers aus. Das Einlesen erfolgt über das 1-wire Dateisystem und
funktioniert soweit.
Die 10 Sensoren sind an einen Verteiler angeschlossen, Leitungslänge
jeweils ca. 1,5-3m. Sollte eigentlich kein Problem darstellen.
VCC ist auf dem Raspi noch einmal gegen GND mit 100nF geblockt.
Wie kann ich das Auftreten der CRC-Fehler verringern? Habt ihr ähnliche
Probleme?
Ausleseroutine (read function):
sensor_device = '/sys/bus/w1/devices/' + str(sensor_slave) + '/w1_slave'
try:
file = open(sensor_device)
filecontent = file.read() # Read content from 1-wire slave file
file.close() # Close[/size] [size=12]1-wire slave file[/size]
stringvalue = filecontent.split("\n")[1].split("")[9] # Extract temperature string
if filecontent.find("NO") > 0:
temperature = error_temp
print "CRC failure" + sensor_slave
else:
temperature = float(stringvalue[2:]) / 1000 # Convert temperature value
Alles anzeigen
Und die Auswerteroutine:
file = open(sensor_slaves)
w1_slaves = file.readlines() [size=12]# Read 1-wire slaves list
file.close() # Close 1-wire slaves list
# Print header for results table
if verbose_level>0: print('Sensor ID | Temperature')
if verbose_level>0: print('-----------------------------')
# Repeat following steps with each 1-wire slave
for line in w1_slaves:
w1_slave = line.split("\n")[0] # Extract 1-wire slave
for i in range(20): # try 20 reads on CRC failure
temperature = read_sensor( w1_slave) # call read function
if (temperature != error_temp): break # success
temperature=10
time.sleep(0.3)
sensor_count = sensor_count + 1
if temperature!=error_temp:
if read_level:sensordata.append((w1_slave, temperature)) # store temperature in database
return(sensor_count)
Alles anzeigen
Anbei die Dateien.
Hallo rpi444,
anbei die gewünschten Informationen. Falls noch etwas fehlt, bitte melden.
Besten Dank!
Hallo,
ich betreibe einen WLAN-Aadpter EN7811 an einem Raspi Zero. Leider bekomme ich wohl keine IP-Adresse zugewiesen von meiner Fritzbox.
1) iwlist scanning zeigt die umgebenen Funknetze korrekt an, insofern gehe ich davon aus, dass der Stick erst einmal funktioniert.
2) Schlafmodus des EN7811 ist auch ausgeschaltet
3) /var/log/syslog zeigt mir "IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Kann es sein, dass der DHCP daemon zu früh aufgibt und dadurch keine Adresse zugeteilt wird?
Falls ja, wie kann man die Wartezeit auf Synchronisation mit dem WiFi-Netzwerk verändern?
Bin für jeden Hinweis dankbar.
Und _wie_ ändere ich den Registerwert? Möglichst per Shell-Befehl oder config-Eintrag?
man kann den Strom für einige wenige GPIO softwareseitig auf 16 mA einstellen.
Und genau dieses "wie" finde ich nicht.
Vielleicht meldet sich ja noch jemand, der weiss wie es geht.
Das ist mir klar. Ich möchte dennoch den Strom erhöhen.
Hat sich wohl durch ein "groupadd dialin" erledigt.
Hallo,
ich möchte gerne den Strom pro GPIO von 8mA auf 12mA oder 14mA erhöhen.
Kann man das über Shell-Befehle realisieren oder in einer Config-Datei eintragen?
Viele Grüße,
Raspi77
Hallo,
ich habe bisher meinen Stromzähler über eine Photodiode ausgelesen und die Werte in einer Datenbank gespeichert. Leider funktioniert es aktuell nicht mehr.
Angebunden ist die Photodiode (TEKT5400S) über einen Pullup (1K an 3V3) an RX, ausgelesen wird der Pin über /dev/ttyAMA0.
Die Änderungen an der boot/config.txt habe ich durchgeführt und geprüft.
Wenn ich RX/TX mit einem Jumper brücke, dann bekomme ich in minicom erwartungsgemäß ein Echo der eingegebenen Zeichen.
Eingestellt ist die Schnittstelle auf 9600, 8N1.
Hat jemand eine Idee, was ich noch prüfen könnte? Warum kann ich keine Zeichen empfangen?
Viele Grüße
Raspi77
Zeig mal Dein select-statement und die php-Datei. Das useUTC muss in die globals:
$(function () {
Highcharts.setOptions({
global: {
useUTC: false
}
});
$('#container').highcharts({
chart: {...}
Schwierig, siehe z.B. hier: http://www.wetter.com/news/das-probl…_aid_15338.html
Hallo Thomas,
ich habe eine Frage zu der Zeile:
pointStart: Date.UTC(2006, 0, 01),
Wie passt das zu den aufgezeichneten Daten im Jahr 2014 zusammen? Werden die aufgezeichneten Zeiten für die Y-Achse dann überhaupt ausgewertet?
So, das Problem ist gelöst. Nachdem ich mir einen Wolf gesucht habe, wie
denn die smbus Funktionen genau funktionieren, habe ich festgestellt,
dass die Funktion read_word_data vor dem Lesen ein write(!) absendet,
mit welchem sich das Statusregister des MAX127 (Channel0) setzen lässt.
Leider liefert die Funktion das LSB zuerst, so dass man die Bytes noch
tauschen muss. Von dem LSB werden dann auch nur die bits 4-7 benötigt,
daher der right-shift um 12 Stellen.
In x2 wird das ganze dann wieder zu einem word zusammengebaut.
import os
import smbus
bus=smbus.SMBus(1)
address=0x28
# I2C-Aufruf:
# S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
# Write-Register wird gleich mit gesetzt (Addr W = write)
x1=bus.read_word_data(address,0x80)
print 'x1 %s' % x1
print '-----------'
lsb = x1>>12
print 'lsb %s' % lsb
msb=x1 & 0x00FF
print 'msb %s' % msb
x2= (msb<<8) + lsb
print 'Ergebnis %s' % x2
print '-----------'
Alles anzeigen
Hier der Link zur Doku:
https://www.kernel.org/doc/Documentation/i2c/smbus-protocol
> Ausserdem hast Du den Bus hoffentlich nicht auf 5V gezogen, oder
Nein, dazwischen hängt der ADUM1250 als Level-Shifter.
Hardwareaufbau:
RasPi -- ADUM1250 -- MAX127
Zwischen ADUM1250 und MAX127 sind als Pullups 4k7 Ohm an SDA und SCL vorhanden. Sind 4k7 eventuell zu wenig?
Hallo,
ich habe einen MAX127 AD-Wandler angeschlossen. i2cdetect zeigt mir auch die korrekte Adresse 0x28 an.
Der Baustein wird wie folgt genutzt:
1) Setzen des Control-Registers für Channel0 (i2cset -y 1 0x28 0 0x80) mit dem Wert 0b10000000
2) Das Abholen der Werte erfolgt durch einen Read-Befehl, worauf der Baustein 2 Data-Bytes sendet.
Wie kann ich diese beiden Data-Bytes abholen?
i2cget sendet etweder nur ein Byte: i2cget -y 1 0x28 --> 0xFF
oder man muss eine zusätzliche Adresse mit angeben, die dieser Baustein aber nicht haben möchte:
i2cget -y 0x28 0 w -->0x4eFF
Anbei das Datenblatt des Bausteins MAX127.
Hat jemand vielleicht ähnliche Probleme und kann mir helfen?
Besten Dank
Raspi77
Hallo Thomas,
kannst Du bitte noch ein Bild von der Ausgabe beifügen und/oder hier posten?
Merci
Noch besser wird es mit dem zusätzlichen Einfügen (zwischen function und container) von:
Highcharts.setOptions({
global: {
useUTC: false
}
});