Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

DS18S20 direkt lesen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
triti



Anmeldungsdatum: 23.04.2009
Beiträge: 44

BeitragVerfasst am: 06.03.2010, 21:59    Titel: DS18S20 direkt lesen Antworten mit Zitat

Hallo!
Bitte, wenn jemand viel Zeit hat.... lächeln

Ich möchte gern den DS18S20 direkt in QBasic4.5 lesen. 5 davon sind falsch bestellt worden (statt DS18B20, bekomme ich nächste Woche) und die möchte ich gerne ohne Mikrokontroller verwenden.
Wenn das geht, kann ich nämlich mit der Eingangserweiterung von Skilltronic mehrere nacheinander lesen.

Wie man den Sensor anschließt habe ich das gefunden:
http://public.rz.fh-wolfenbuettel.de/~hamannm/general/digitempd.html
oder: www.haeussler.name/blogs/hobby/elektronik/rs232-1-wire-interface/
(Wenn ich das richtig verstehe dann wird dort der Sensor über DTR mit Strom versorgt. out (1020),1 und der Sensor tut.)

------------
1) Wenn der Sensor mit Strom versorgt ist, liefert der dann dauernd Daten an RxD?
Oder braucht er einen Befehl damit er etwas liefert?

------------
1) Im Datenblatt (das mir leider viel zu hoch ist)
http://datasheets.maxim-ic.com/en/ds/DS18S20.pdf
auf Seite 4 steht:
TEMPERATURE/DATA RELATIONSHIP Table 2 - digital output
+25.0°C 0000 0000 0011 0010

Das ist aber dezimal 98. ??
25 ist 100101. Hmm.
------------


3) Der Mikrokontroller Picaxe-08 gibt mit vom Sensor DS18B20 mit dem Befehl sertxd an den COM
die Temperatur (die steht in der Variable #b1).
sertxd (#b1,"#")
Das Zeichen # hänge ich am Schluss dazu, das ist das "Ende".

Einlesen kann ich das mit:
OPEN "com1:4800,N,8,1,TB32,RS,OP,CD0,DS0" FOR RANDOM AS #1
DO
IF LOC(1) > 0 THEN
y$ = INPUT$(1, 1)
if y$="#" then print: goto weiter:
PRINT y$;
END IF
weiter:
t$ = INKEY$
IF t$ = CHR$(27) THEN EXIT DO
LOOP
CLOSE #1


Kann ich den DS18S20 (nicht den BS18B20) so lesen:
IF LOC(1) > 0 THEN
y$ = INPUT$(12, 1) 'ganzer digital output 0000 0000 0011 0010 auf 1x?
PRINT y$;
END IF

Wenn ja: wie kommt man dann auf richtig auf + xx.x °C ?


Ich versuche jetzt weiter das Datenblatt zu verstehen....

lg
Triti
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.03.2010, 18:44    Titel: Antworten mit Zitat

http://privatprojekte.de/temperaturmessung.html
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
triti



Anmeldungsdatum: 23.04.2009
Beiträge: 44

BeitragVerfasst am: 10.03.2010, 11:58    Titel: Antworten mit Zitat

Danke, aber da steht auch nicht wie man den Sensor richtig direkt ansteuert.
MIT Mikroprozessor kann ich das ja aber nicht mit einem nackten DS18S20 (oder halt auch DS18B20) am COM.
lg
Triti
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AndreasDo



Anmeldungsdatum: 15.11.2010
Beiträge: 10
Wohnort: Dortmund

BeitragVerfasst am: 11.07.2012, 17:12    Titel: Antworten mit Zitat

Ein über 2 Jahre alter Thread ... wird gerade wieder akut für mich.

Ich fürchte, Dein Ansatz wird nicht funktionieren (wie auch meiner schon nicht, s. http://forum.qbasic.at/viewtopic.php?p=94592).
1Wire-Kompenten werden zwar an die serielle Schnittstelle angeschlossen, liefern aber nicht direkt seriellen Signale. Mit "OPEN COM" ist der Fehler quasi schon begangen - alles, was Du jetzt sendest oder empfängst, wird gem. RS232-Spezifikation übertragen, und das verstehen die 1Wire-Komponenten nicht. Beispiel: um Dein "INPUT$(12, 1)" zu unterstützen, müsste der kleine BS-Baustein eine lange Bitkette bereitstellen (12 x 8 Bit, + 12 Stoppbits).

Du musst vielmehr direkt auf die Hardware zugreifen und den seriellen Bus in genau den richtigen Takten hoch- und runtersetzen. Wie das in QBasic / FreeBasic funktioniert, hat sich mir noch nicht erschlossen.

Ich plane, entweder die Maxim-C-Bibliothek (Maxim ist der Erfinder und Hersteller der 1Wire-Komponenten) einzubinden oder ein paar Zeilen direkt in Assembler zu integrieren - beides gelingt mir nicht.
Wie einfach wäre die Welt, wenn es eine Basic-Bibliothek gäbe, die Funktionen wie "READ", "RESET", "SEARCH" etc. bereitstellen würde ...
_________________
Grüße,
Andreas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 12.07.2012, 21:20    Titel: Antworten mit Zitat

µC's kriegst du nachgeschmissen (speziell auf eBay). Es wäre vom Aufwand her vielleicht fast einfacher (und besser erweiterbar für andere Projekte^^) einen Arduino (oder einen Billigklon - ich hatte mit denen eigentlich noch nie negative Erfahrungen) zu nehmen und den Sensor dort anzuschließen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AndreasDo



Anmeldungsdatum: 15.11.2010
Beiträge: 10
Wohnort: Dortmund

BeitragVerfasst am: 13.07.2012, 10:01    Titel: Antworten mit Zitat

Cherry hat Folgendes geschrieben:
µC's kriegst du nachgeschmissen (speziell auf eBay). Es wäre vom Aufwand her vielleicht fast einfacher (und besser erweiterbar für andere Projekte^^) einen Arduino (oder einen Billigklon - ich hatte mit denen eigentlich noch nie negative Erfahrungen) zu nehmen und den Sensor dort anzuschließen...

Klar ist ein Mikrocontroller eine valide Lösung.
Aber:
- Ich habe rein gar keine Ahnung davon und seiner Programmierung und stehe damit dann quasi vor dem gleichen Problem
- Ich möchte die Komplexität möglichst reduzieren: das ganze soll an Bord eines Boots und ist ohnehin kritischen Betriebsbedingungen ausgesetzt
- Es gibt eine Alternative, die preislich vermutlich in der gleichen Liga spielt: http://www.fuchs-shop.com/de/shop/17/1/13372195/

Der LinkUSB enthält (im Gegensatz zu meinem 1-Wire-Adapter) eigene Logik und bietet an der virtuellen COM-Schnittstelle am PC einfache AT-Commands zur Steuerung des 1-Wire-Busses, ist also ein echter 1Wire-To-COM Adapter. Der wirds wohl werden.
_________________
Grüße,
Andreas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 13.07.2012, 18:43    Titel: Antworten mit Zitat

Wenn man die Pins der RS232-Schnittstelle "manuell" und einzeln ansteuert/taktet, ist es schon möglich, damit verschiedene andere Übertragungsverfahren in Software umzusetzen.
Aber ich glaube, normalerweise würde man versuchen, solche Lösungen zu umgehen.

AndreasDo hat Folgendes geschrieben:
- Ich möchte die Komplexität möglichst reduzieren: das ganze soll an Bord eines Boots und ist ohnehin kritischen Betriebsbedingungen ausgesetzt

Ich finde, gerade durch dieses Emulieren in Software über die RS232-Pins würdest du dir zusätzliche Komplexität und Fehlerquellen schaffen.

Mit einem Mikrocontroller könntest du die Komplexität der Sensoren-Kommunikation hinter einer robusten, einfachen Schnittstelle kapseln.
Diese könntest du vom PC aus über OPEN COM ganz normal ansteuern/auslesen und hättest gleichzeitig den Effekt, dass du die Hardware später anpassen oder auswechseln kannst, ohne dass du deine Software auf dem PC verändern müsstest.
Wenn deine Software nur Kommandos wie "GetTemperature" (natürlich über irgendein sinnvolles Protokoll) an den µC sendet und dieser dann darauf - entsprechend des Protokolls - antwortet, ist es für deine Software nämlich auch egal, ob die Sensoren schlicht PTC/NTC sind und über den ADC des µC angeschlossen sind oder über irgendeinen digitalen Bus angehängt sind.
Durch den Mikrocontroller und die zu definierende Schnittstelle (auf Basis von RS232-Kommunikation) könntest du PC-softwareseitig von den Schaltungsdetails völlig abstrahieren.
Und Kommunikation über die serielle Schnittstelle mit 9600 Baud oder so funktioniert unter Windows, Linux und DOS überall problemlos, d.h. du hast keine Probleme, das Timing in allen Umgebungen irgendwie hinzubekommen.
Indem du eine Schnittstelle bzw. ein Protokoll definierst und das öffentlich machst, könnte außerdem eine Entwicklergemeinde selbst Module für dein System entwickeln. Du müsstest als Softwareanbieter nicht wissen, wie die Sensoren genau funktionieren, solange sie sich an deinen Kommunikationsstandard halten.

Wenn du dich mal mit µC beschäftigen möchtest, kann ich dir mikrocontroller.net übrigens sehr empfehlen. Ich fand die Inhalte (und *pssst* hinter vorgehaltener Hand!) auch das Forum da immer sehr hilfreich. zwinkern
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz