Kampi
12.02.2013, 18:23
Hallo Forum,
heute sind endlich meine DS1820 1Wire Sensoren Muster angekommen (Muster sind schon was feines....spart man super viel Geld mit ^.^).
Nun wollte ich 1Wire per Python realisieren und habe dafür folgenden Code:
import RPi.GPIO as GPIO
import time
import os
from pizypwm import *
# Kommandos
Convert = 0x44
Read = 0xBE
Write = 0x4E
Copy = 0x48
Recall = 0xB8
Read_Power = 0xB4
# Datenpin
Data_Out = 7
# Pin 4 als Ausgang deklarieren
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Data_Out, GPIO.OUT)
GPIO.output(Data_Out, True)
def Send_Data(Daten):
# Umwandeln in einen Binaerstring
Dual = bin(Daten)
Dual = Dual[2:10]
# Binaerstring ausgeben
for Stelle in range(len(Dual)):
if Dual[Stelle] == "1":
GPIO.output(Data_Out, False)
time.sleep(1.0/1000000.0)
GPIO.output(Data_Out, True)
else:
GPIO.output(Data_Out, False)
time.sleep(60.0/1000000.0)
GPIO.output(Data_Out, True)
while True:
Send_Data(Read_Power)
time.sleep(1)
Allerdings zeigt mir mein Oszi zwischen den High Pegeln eine Zeit zwischen 150µs - 200µs an (was vieeeeeeeeel zu viel ist).....die Zeit zwischen High Pegeln soll bei einer "1" 1-15µs und bei einer "0" 60-120µs betragen...
Kennt jemand eine Möglichkeit dies vernünftig zu realisieren?
Danke schon mal!
heute sind endlich meine DS1820 1Wire Sensoren Muster angekommen (Muster sind schon was feines....spart man super viel Geld mit ^.^).
Nun wollte ich 1Wire per Python realisieren und habe dafür folgenden Code:
import RPi.GPIO as GPIO
import time
import os
from pizypwm import *
# Kommandos
Convert = 0x44
Read = 0xBE
Write = 0x4E
Copy = 0x48
Recall = 0xB8
Read_Power = 0xB4
# Datenpin
Data_Out = 7
# Pin 4 als Ausgang deklarieren
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Data_Out, GPIO.OUT)
GPIO.output(Data_Out, True)
def Send_Data(Daten):
# Umwandeln in einen Binaerstring
Dual = bin(Daten)
Dual = Dual[2:10]
# Binaerstring ausgeben
for Stelle in range(len(Dual)):
if Dual[Stelle] == "1":
GPIO.output(Data_Out, False)
time.sleep(1.0/1000000.0)
GPIO.output(Data_Out, True)
else:
GPIO.output(Data_Out, False)
time.sleep(60.0/1000000.0)
GPIO.output(Data_Out, True)
while True:
Send_Data(Read_Power)
time.sleep(1)
Allerdings zeigt mir mein Oszi zwischen den High Pegeln eine Zeit zwischen 150µs - 200µs an (was vieeeeeeeeel zu viel ist).....die Zeit zwischen High Pegeln soll bei einer "1" 1-15µs und bei einer "0" 60-120µs betragen...
Kennt jemand eine Möglichkeit dies vernünftig zu realisieren?
Danke schon mal!