Forum: Mikrocontroller und Digitale Elektronik Analog-Digital-Umwandlung


von Karl Studeny (Gast)


Lesenswert?

Ich habe eine Frage zum Beitrag "Wie sag ich's meinem AVR?"
 Im Teil 3k) Analog-Digital-Umwandler wird beschrieben wie man
 den Digitalwert auf einem Port über LED's ausgeben kann. Das
 funktioniert auch einwandfrei.Ich versuche nun schon Wochenlang
 den Wert über ein LCD auszugeben,leider ohne Erfolg.Ziel ist es
 eine Temperatur über einen NTC zu messen,die Temperatur auf einem
 LCD anzeigen und einen Lüfter in abhängigkeit von der Temperatur
 zu steuern. Da ich Anfänger bin habe ich keine Ahnung wie ich das 
machen könnte.
 Ich würde mich über jede Hilfe freuen
 Grüße Karl

von Jochen (Gast)


Lesenswert?

Was hast die für einen µC, und wo liegt genau das Problem
kannst du das Display nicht ansteuern oder ???

von A. Arndt (Gast)


Lesenswert?

Hallo,

ich würde erstmal als Temperatursensor den Dallas-One-Wire Chip DS 1820 
oder DS18S20 einsetzen, ein Digitales Thermometer, welches man einfach 
an den I/O-Port anschliesst und auslesen kann, die Werte können dann von 
Binär in z.B. Dezimal angezeigt werden. (Dieses Bauteil kostenlos 
bestellen / siehe Beitrag im Forum unter www.AR-Online.de) Bauteil 
kostet sonst 4,00 EUR bei mit zu bestellen plus Porto 1,53 EUR aber man 
spart sich viel Arbeit mit dem Auswerten mit z.B. Tabellen.
Datenblatt übrigens auch unter www.Ar-Online.de !
Das Auslesen geht z.B. mit FAST-AVR problemlos durch fertige 
Assistenten, bei FASTAVR (Basic-Compiler) liegt schon ein fertiges 
Programm mit dem 18S20 bei.

Hier mal das Listing :

'////////////////////////////////////////////////////////////////
'///  FastAVR Basic Compiler by MICRODESIGN, www.FastAVR.com  ///
'///  Temperature measurement program, 0.1C res,              ///
'///  1820.bas                                                ///
'////////////////////////////////////////////////////////////////
$Device= 2313
$Stack = 32
$Clock = 3.6864
$Lcd   = PORTD.4, rs=PORTB.4, en=PORTB.5, 16, 4
$1Wire = PORTD.3
$Source= On

Dim T As Word
Dim d0 As Byte, d1 As Byte, d2 As Byte, d3 As Byte
Dim d4 As Byte, d5 As Byte, d6 As Byte, d7 As Byte
Dim crc As Byte

Declare Sub Read1820()
Declare Sub CalcTmp()

Lcd "DS1820 T="

Do
  If 1Wreset Then
    1Wwrite &hcc; &h44
    WaitMs 250
    1Wreset
    1Wwrite &hcc; &hbe
    Read1820()
  Else
    Locate 1,10: Lcd "---"
  End If
  WaitMs 200
Loop

'/////////////////////////////////////////////////////
Sub Read1820()

1Wread d0,9        ' read all 9bytes
If Crc8(d0,9)=0 Then  ' check Crc, if OK
  CalcTmp()      ' calc temp
Else
  Locate 1,10: Lcd "CRC"
End If
End Sub

'/////////////////////////////////////////////////////
Sub CalcTmp()  ' calc for 0.1C resolution
' T is 10 times greater (integer)

If d0.1 Then Decr d0  ' if odd decrement
T=(50*d0-25+(100*(d7-d6))/d7)/10
Locate 1,10: Lcd T
End Sub


Das wars.

Prüfe doch erstmal, ob Du das Display in Gang bekommst, zeigt es schon 
mal Zahlenwerte richtig an, z.B. einen Zähler ?

Gibt es Fehlermeldungen usw. ?

Gruss

A. Arndt

von Karl Studeny (Gast)


Lesenswert?

Danke für die schnellen Antworten

Ich verwende einen AT90S4433 und als Assembler AVRASM.
Ich kann im Display schreiben (auch Sonderzeichen),
ich kann auch den umgewandelten Analogwert auf LED's
binär ausgeben. Meine Frage, wie kann ich jetzt den Binärwert
eines Register's in eine Dezimalzahl umwandeln und am Display
ausgeben?

Grüße Karl

von Marco (Gast)


Lesenswert?

ich habs so gemacht:
binär so lange -100 bis binär <100 ist, subtraktionen zählen und als 
Hunderterstelle ausgeben.
Jetzt binär so lange -10 bis binär <10 ist, subtraktionen zählen und als 
Zehnerstelle ausgeben.
Der Rest ist die Einerstelle.

von princess (Gast)


Lesenswert?

hey ,

ich brauche unbedingt hilfe in der sache AD-Umwandler.
Verstehe absolut nichts und muss ein referat in drei wochen halten!!!
wäre schön wenn mir jmd sagen könnte , was das ist , wozu es verwendet 
wird und wie man es verwendet.

gruß

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
Noch kein Account? Hier anmelden.