Grobmotoriker
16.03.2014, 17:02
Hallo zusammen,
ich habe mir Sender und Empfänger der Begrenzungsschleife aus dem Wiki dieser Webseite nachgebaut. Nun möchte ich die Werte des Empfängers mit einem Raspberry PI, einem PCF8951P und Python auslesen. Dazu nutze ich ungefähr diesen Code:
from smbus import SMBus
bus = SMBus(0)
print("Read the A/D")
print("Ctrl C to stop")
bus.write_byte(0x48, 0) # set control register to read channel 0
last_reading =-1
while(0 == 0): # do forever
reading = bus.read_byte(0x48) # read A/D
if(abs(last_reading - reading) > 2):
print(reading)
last_reading = reading
Als Spulen habe ich 3 zur Auswahl: 2 Relais (1x 400Ohm, 1x 600Ohm) und 1 Miniaturdrossel (genaue Werte unbekannt).
Wenn ich das Programm nun starte, erhalte ich unregelmäßige Werte: Bei den Relais-Spulen schwanken sie zwischen 122 und 128, bei der Miniaturdrossel zwischen 2 und 6 - jeweils unabhängig davon, ob ich mich innerhalb oder außerhalb der Begrenzungsschleife befinde. Eine Programmierung mit Grenzwerten ist demnach schwierig, weil alle Werte quasi überall auftreten können.
Sehr ihr hier irgendwelche Optimierungsmöglichkeiten? Passt der Code? (Habe schon versucht, statt dem "abs" ein "int" zu setzen - leider ohne Erfolg)
Danke & Grüße
Grobi
ich habe mir Sender und Empfänger der Begrenzungsschleife aus dem Wiki dieser Webseite nachgebaut. Nun möchte ich die Werte des Empfängers mit einem Raspberry PI, einem PCF8951P und Python auslesen. Dazu nutze ich ungefähr diesen Code:
from smbus import SMBus
bus = SMBus(0)
print("Read the A/D")
print("Ctrl C to stop")
bus.write_byte(0x48, 0) # set control register to read channel 0
last_reading =-1
while(0 == 0): # do forever
reading = bus.read_byte(0x48) # read A/D
if(abs(last_reading - reading) > 2):
print(reading)
last_reading = reading
Als Spulen habe ich 3 zur Auswahl: 2 Relais (1x 400Ohm, 1x 600Ohm) und 1 Miniaturdrossel (genaue Werte unbekannt).
Wenn ich das Programm nun starte, erhalte ich unregelmäßige Werte: Bei den Relais-Spulen schwanken sie zwischen 122 und 128, bei der Miniaturdrossel zwischen 2 und 6 - jeweils unabhängig davon, ob ich mich innerhalb oder außerhalb der Begrenzungsschleife befinde. Eine Programmierung mit Grenzwerten ist demnach schwierig, weil alle Werte quasi überall auftreten können.
Sehr ihr hier irgendwelche Optimierungsmöglichkeiten? Passt der Code? (Habe schon versucht, statt dem "abs" ein "int" zu setzen - leider ohne Erfolg)
Danke & Grüße
Grobi