hallo, habe ein kleines testprogramm für den DS1820 funktioniert sowet,aber wie bekomme ich meine gemessene Temperatur aufs display. mfg kay
hallo, kann mir denn niemand weiterhelfen die daten aufs display darzustellen für eine antwort wäre ich sehr dankbar mfg kay
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD insbesondere der Abschnitt http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Zahlen_ausgeben
Nimm BASCOM und quäl dich nicht mit Assembler ;-) Damit ist es eigentlich banal einen Wert auf einem LCD ausgeben zu lassen. Aber für manche ist ja der Weg das Ziel.
hallo, so habe es jetzt mal so wie in http://www.mikrocontroller.net/articles/AVR-Tutori... versucht funktioniert immer noch nicht ,bin bald am verzweifeln vielleicht könnte mir jemand weiterhelfen danke mfg kay
> funktioniert immer noch nicht Na dann sieh's ein - du kannst das einfach nicht, lass es sein... ;) Nein , im ernst: wie wäre es mit einer Fehlermeldung, mit der irgendjemand was anfangen kann? - WAS FUNKTIONIERT NICHT????? - was erwartest du, was passiert stattdesen?? Und rück ein paar Informationen raus: - welchen AVR benutzt du? - Ist die Schaltung korrekt(evtl. hier posten)? - Hast du da wirklich einen ds1820 (beim Hersteller steht "No longer available")? - reagiert der ds1820 (evtl. mit LED, USART o.ä. anzeigen)? - Kannst du konstante daten auf dem LCD anzeigen (zeichen, strings etc..)? - wenn das geht: kannst du eine konstante Zahl anzeigen? hth. Jörg ps.: vielleicht bin ich auch nur ein übertriebener "strukturiertes-Programmieren"-Fan, aber zig-tausend Warte-Funktionen sieht für mich grausam aus (auch die werden im AVR-Tutorial behandelt)
hallo, > - WAS FUNKTIONIERT NICHT????? > - was erwartest du, was passiert stattdesen?? der eingelesene temperaturwert des ds1820 bekomme ich nicht auf mein lcd angezeigt sonder nur wirre zeiche > Und rück ein paar Informationen raus: > - welchen AVR benutzt du? atmega128-16 mit 14,745600MHz > - Ist die Schaltung korrekt(evtl. hier posten)? schaltung ist so aufgebaut wie im daten blatt der DS1820 ist an PortD.0 angeschlossen sensor: gng->gnd , Vdd->5Volt , DQ->PD.0 mit Pullup 4,7K > - Hast du da wirklich einen ds1820 (beim Hersteller steht "No longer > available")? ja habe ich bei reichelt bestellt > - reagiert der ds1820 (evtl. mit LED, USART o.ä. anzeigen)? ja geht > - Kannst du konstante daten auf dem LCD anzeigen (zeichen, strings > etc..)? > - wenn das geht: kannst du eine konstante Zahl anzeigen? ja das funktioniert mfg kay
Kay B. wrote: > hallo, > > so habe es jetzt mal so wie in > http://www.mikrocontroller.net/articles/AVR-Tutori... > versucht funktioniert immer noch nicht ,bin bald am verzweifeln > vielleicht könnte mir jemand weiterhelfen > danke > mfg > kay Als ich schrieb "insbesondere der Abschnitt" hiess das nicht, dass du die ganze LCD-Initialisierung weglassen sollst ;-) Im Moment erkenne ich in deinem Programm 1/ Die Ansteuerung des Sensors 2/ Eine seltsame LCD-Routine allerdings ohne Initialisierung und mit anderen Namen und anderem Code als in dem von mir empfohlenen http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD 3/ komische, mir nicht erklärliche Anweisungen
1 | LOCATE 0,5 ;Position |
2 | print8 ztausend |
3 | print8 tausend |
4 | print8 hundert |
5 | print8 zehner |
Wahrscheinlich gehört das zu der Library
1 | .include"LCD_4x27ohneBusyRW.inc" ;LCD-Routinen f?eilen-LCDs mit HD44780 |
2 | .include"PRINT.inc" ;LCD-Augabe-Routinen mit HD44780 |
Da du weder deren Sourcecode noch einen Link angegeben hast, kann ich nicht viel sagen, wie die Library sinnvoll zu benutzen ist.
hallo , habs jetzt die lcd ansteuerung soübernommen wie im http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD jetzt zeigt der ds1820 046 grad an obwohl es hier nur 21grad sind?? gibt es denn noch eine ander möglichkeit die warteschleifen zu umgehen vielleicht könnte mal jemand drüberschauen. mfg kay
Aus dem Datenblatt:
The temperature sensor
output has 9-bit resolution, which corresponds to 0.5°C steps.
>jetzt zeigt der ds1820 046 grad an obwohl es hier nur 21grad sind??
Wenn man 46 durch zwei teilt kommt man auf 23.
guten morgen, die temperratur wird richtig dargestellt das geht erstmal nuN HÄTT ICH DA NOCH EINE FRAGE, ich würde gerne 4 DS1820 am bus anschliessen aber wie lese ich nun von jeden DS1820 die ident aus und wie spreche den sensor zb. Nr.3 an oder Nr.1 vielleicht könnte mir da nochmal einer weiterhelfen danke mfg kay
hallo kann mir denn denn keiner weiterhelfen für eine antwort wäre ich dankbar kay
Hallo, da gibt's 2 Möglichkeiten ... 1; du baust dir die Routine, die mehrere Sensoren erkennen kann -> ist im Datenblatt beschieben (schwirig!) 2; du kannst die ID des Sensors auch auslesen (0x33), schaffe einfach eine Möglichkeit die ID über dein Display auszugeben. Schliesse dann alle Sensoren nacheinander einzeln an, und lies die ID's aus. Dann kannst du die ID's in dein Prog. einbauen. Das Kommando zur Konvertierung kannst du noch an alle Sensoren schicken (0xCC 0x44). Beim auslesen musst du die Sensoren einzeln ansprechen (0x55 + 64Bit ID). Sascha
Sascha Weber wrote: > Hallo, > > da gibt's 2 Möglichkeiten ... > 1; du baust dir die Routine, die mehrere Sensoren erkennen kann > -> ist im Datenblatt beschieben (schwirig!) > > 2; du kannst die ID des Sensors auch auslesen (0x33), schaffe einfach > eine Möglichkeit die ID über dein Display auszugeben. Schliesse dann > alle Sensoren nacheinander einzeln an, und lies die ID's aus. Dann > kannst du die ID's in dein Prog. einbauen. Das Kommando zur > Konvertierung kannst du noch an alle Sensoren schicken (0xCC 0x44). Beim > auslesen musst du die Sensoren einzeln ansprechen (0x55 + 64Bit ID). > > Sascha hallo, ich habe die 2.möglichkeit versucht aber bekomme immer nur 127 angezeigt, hab dann bei read_scratchpad:0x33 eingefügt, kriege das einfach nicht hin egal welchen sensor ich einsetze vielleicht könnte mir einer bitte ein bischen weiterhelfen beim auslesen der ID. mfg kay
Sascha Weber wrote: > hat das auslesen der ID funktioniert ?? > > Sascha nein mfg kay
0x33 senden und dann 8 Byte einlesen -> sollte die ID ergeben. Sascha
Sascha Weber wrote: > 0x33 senden und dann 8 Byte einlesen -> sollte die ID ergeben. > > Sascha hallo, so ich habe bei ""read_scratchpad:0x33 eingefügt"" anstelle von 0xBE kriege aber immer nur 127 angezeigt habe das programm nochmal angehängt
an Stelle von SKIP-Rom (0xCC) brauchst du den Befehl Match-ROM (0x55) deine Routine: write 0xCC ;SKIP-ROM (an alle Sensoren) write 0x44 ;Convert T ;Pause write 0x55 ;an alle Sensoren write 0xBE ;READ Scratchpad 8x read um das Scratchpad einzulesen mit ID: write 0x55 ;SKIP-ROM (an alle Sensoren) write 0x44 ;Convert T ;Pause write 0x55 ;Match-ROM (an Sensor mit ID) 8x write (ID) ;ID des Sensors senden write 0xBE ;READ Scratchpad 8x read um das Scratchpad einzulesen ---------------- um die ID auszulesen write 0x33 ;READ-ROM 8x read um die ID des angeschlossenen Sensors zu lesen (nur 1 Sensor!!) Sascha
hallo, werd das morgen mal umsetzen muss jetzt nach arbeit mfg kay
hallo, hallo so die ID eines einzelnen sensors kann ich auslesen, 4-sensoren möchte ich gerne am buss anschliessen. sensor1=ID068 sensor1=ID072 sensor1=ID008 sensor1=ID021 nun habe ich bei ""rom_id"" anstelle von 0x33(id eines enzelnen sensors) 0x55 und werden nur nullen angezeigt wie spreche nun die einzelnen sensoren mit ihrer ID an(die ID hab ich ja jetzt) UND WIE BEKOMME und wie bekomm ich die einzelnen temperraturwerte der sensoren aufs display vielleicht kann mir da bitte nochmal einer weiterhelfen mfg kay
@Kay > hallo so die ID eines einzelnen sensors kann ich auslesen, > 4-sensoren möchte ich gerne am buss anschliessen. > sensor1=ID068 > sensor1=ID072 > sensor1=ID008 > sensor1=ID021 > das ist keine ID! Die ID ist 64bit lang, das macht dann 8Byte > nun habe ich bei ""rom_id"" anstelle von 0x33(id eines enzelnen sensors) > 0x55 und werden nur nullen angezeigt 0x55 + 8Byte ID + 0xBE > wie spreche nun die einzelnen sensoren mit ihrer ID an(die ID hab ich ja > jetzt) UND WIE BEKOMME und wie bekomm ich die einzelnen temperraturwerte > der sensoren aufs display PS: hab gestern Abend auch paar Fehler eingetippt ... Sascha
hallo, habe bei skip_rom 0x55 geschrieben anstelle von 0xcc aber es werden mir nur nullen angezeigt und als temperraturwert 128 verändert sich auch nicht, bin bald amverzweifeln, hab den code nochmal drangehängt kay
hallo sascha, habe es jetzt so umgeändert wie im anhang von dir beschrieben die ID und die Temperratur werden angezeigt, wenn ich das richtig verstanden habe wäre das für einen sensor, habe denn quelltext mal angehängt vielleicht wäre es möglich mal drüberzuschauen obs so richtig ist danke mfg kay
nun ja ... >rcall reset_pulse >rcall rom_id ;Match Rom senden ;OK ID des Sensors auslesen >rcall read_sens ;hat hier nix zu suchen > > rcall reset_pulse > rcall skip_rom > rcall convert_t ;OK - alle Sensoren auffordern die Temp. zu messen > rcall reset_pulse ;OK > rcall skip_rom ;hier muss jetzt rcall read_sens ;hin um DIESEN einen Sensor auszuwähen ;SKIP-Rom würde wieder alle Sensoren gleichzeitig ansprechen > rcall read_scratchpad ;und dessen Daten auszulesen > rcall reset_pulse -------- Um mehrere Sensoren auszulesen schreibst du die ID's von Display ab und baust sie in das Programm fest ein. (Am besten als Tabelle im Flash ablegen) Sascha
HALLO; ERSTMAL DANKE FÜR DIE MÜHE, ich habe jetzt eine ID-tabelle erstmal nur für einen sensor ID_Tabelle: ;sensor 1 .db "008076023056000004000037",0 aber wie rufe ich mit meiner tabelle den sensor auf ;*********************************************************************** ** read_sens: ldi ZL, LOW(ID_Tabelle*2) ldi ZH, HIGH(ID_Tabelle*2) ;;EINEN Sensor auslesen ldi temp, 0x55 ; MATCH-ROM mov befehl, temp rcall write_command ;lds befehl,id_rom+0 ;rcall write_command ;lds befehl,id_rom+1 ;rcall write_command ;lds befehl,id_rom+2 ;rcall write_command ;lds befehl,id_rom+3 ;rcall write_command ;lds befehl,id_rom+4 ;rcall write_command ;lds befehl,id_rom+5 ;rcall write_command ;lds befehl,id_rom+6 ;rcall write_command ;lds befehl,id_rom+7 ;rcall write_command ret VIELLEICHT KÖNNTEST DU MIR DA NOCH EINBISCHEN WEITERHELFEN SO DIE ARBEIT RUFT DANKE MFG KAY
> ich habe jetzt eine ID-tabelle erstmal nur für einen sensor > ID_Tabelle: ;sensor 1 > .db "008076023056000004000037",0 ;die ID sind 8 Zahlen -->> 008 076 023 056 000 004 000 037 .db 8,76,23,56,0,4,0,37 > > aber wie rufe ich mit meiner tabelle den sensor auf > ;*********************************************************************** ** > > read_sens: > > > ldi ZL, LOW(ID_Tabelle*2) > ldi ZH, HIGH(ID_Tabelle*2) > ;;EINEN Sensor auslesen > ldi temp, 0x55 ; MATCH-ROM > mov befehl, temp > rcall write_command ;OK ldi temp3,8 ;8 Byte ausgeben loop: lpm befehl,Z+ ;Byte aus Flash holen rcall write_command dec temp3 brne loop > ret Sascha
hallo Sascha, erstmal vielen dank für die gedult und mühe nun wollte ich das in ein anderes programm einbinden da aber indem keine oberen register mehr frei sind, das geht dann nun nicht danke nochmals mfg kay
hallo , die ausgabe auf den lcd funktioniert so nun wollte ich die ausgabe nicht aufs lcd sonder über uart da bekomme ich bei ID immer 255 und bei der temperatur immer 000 angezeigt, als mcu verwende ich jetzt ein mega8 4Mhz vielleicht könnte mir jemand weiterhelfen mfg kay
hallo, so das senden zum pc funktioniert jetzt nun wolte ich die daten nicht zum pc schicken sondern zum mega128 aber wie werte ich sie nun aus um sie aufs display zubekommen. wäre sehr freundlich wenn mir einer von euch bitte ein bischen weiterhelfen könnte bin bald am vezweifeln danke mfg kay
HALLO, kann mir denn keiner weiterhelfen bitte die ausgabe zum pc funktioniert würde gerne die daten anstatt zum pc zum mega128 schicken uart0 bloss wie verarbeite ich die ankommenden daten sind ja nur 3 ziffern zB.023 , 23Grad über eine antwort wäre ich sehr dankbar mfg kay
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.