ich bin nun jar ohne _
Druckbare Version
ich bin nun jar ohne _
Hallo oiermann,
ah ja, jetzt kapiere ich den TLC549.
Probier mal mit folgendem rum (keine Garantie, ich kanns ja nicht testen!):
Die Ausgabe ist natürlich jetzt noch nicht in Volt, sondern der Digitalwert (0..255), der in eine Spannung umgerechnet werden muss.Code:$regfile = "2313def.dat"
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
Config Lcdbus = 4
Config Pinb.3 = Output
Cs Alias Portb.3
Cs = 0 'Strobe low
Config Pinb.2 = Input
Eingabepin Alias Portb.2
Config Pinb.1 = Output
Io_clock Alias Portb.1
Io_clock = 0 'Clock low
Dim Cntr As Byte
Dim Ergebnis As Byte
Do
Cs = 1 'Strobe high
Cs = 0 'Strobe low
Ergebnis = 0
For Cntr = 0 To 7
Shift Ergebnis , Left , 1
Ergebnis = Ergebnis + Eingabepin
Io_clock = 1 'Clock high
Io_clock = 0 'Clock low
Next Cntr
' Waitus 17 '17us warten
' (Nur nötig, wenn sofort eine neue Messung erfolgt!)
Cls
Locate 1 , 1
Lcd Ergebnis
Wait 3
Loop
Gruß Dirk
Cool, danke Dirk :) Das werde ich morgen Nachmittag ausprobieren, jetzt hab ich noch einiges an Schulzeug zu machen (in 7 Wochen Prüfungen und bis dahin schreiben wir noch so einiges...).
Heute Nachmittag habe ich einen Wecker gebastelt, das ging relativ einfach und schnell, ich glaube mit Software in BASCOM hatte es das in 2 Stunden.
Die AVRs haben es mir angetan :)
So, ich habe das nun mal ausprobiert und im Code steige ich auch einnigermassen durch. Nur gibts da jetzt ein Problem... Es steht immer null auf dem Display.
Richtig angeschlossen ist er auf jeden Fall, ich hab es dreimal mindestens überprüft und auch einen anderen TLC549 mal reingesteckt, den ich vorher noch am PC ausprobiert habe. Da haben beide funktioniert.
//edit: google hat mir das noch gebracht, wunderbar habe ich gedacht und die pins angepasst, aber Pustekuchen. Es zeigt immer 5.10V an...
http://www.qsl.net/dg1xpz/elektronik/avr/tlc549.html
Ist ja wunderbar! Ein Bascom-Beispiel!
Das sähe bei uns ja so aus:
Die wichtigste Änderung dürfte das Warten für 2 us vor Abfragen des 1. Bits sein. Vielleicht klappts ja so.Code:Cs = 1 'Strobe high
Io_clock = 0 'Clock low
Do
Cs = 0 'Strobe low
Ergebnis = 0
Waitus 2
For Cntr = 0 To 7
Io_clock = 1 'Clock high
Shift Ergebnis , Left , 1
Ergebnis = Ergebnis + Eingabepin
Io_clock = 0 'Clock low
Next Cntr
' Waitus 17 '17us warten
' (Nur nötig, wenn sofort eine neue Messung erfolgt!)
Cs = 1
Io_clock = 1
Cls
Locate 1 , 1
Lcd Ergebnis
Wait 3
Loop
Gruß Dirk
Ne, das ist es auch nicht... Ich glaub ich geb das auf und besorg mich noch einen, der schon einen ADC eingebaut hat.
//edit: verdammt. Irgendwas war/ist kaputt. Ich hab die Schaltung genau wie in dem Link mit dem Bascom-Beispiel nochmal aufgebaut. Und es funktioniert. Nochmal so aufgebaut wie ich sie gelötet habe, Software angepasst und funktioniert auch.
Vielen Dank Dirk :) Ich hoffe, ich hab dir nicht allzuviel Mühe umsonst gemacht...
So, jetzt stehe ich vor dem nächsten Problem *verdammt*...
Ich will natürlich nicht nur Spannungen von 0 bis 5V messen können, sondern 0..10V sollten es schon sein. Also habe ich im code folgendes gemacht:
(vorher war statt der 50 eine hundert da)Code:U = Ad / 50
Lcd "Spannung: "; U ; "."
U = Ad Mod 100
Lcd U ; " V"
Und an der Elektronik hab ich einen Spannungsteiler mit zwei 10K-Widerständen hingemacht, die die Spannung halbieren. Gut und recht, nur hier mal ein paar ergebnisse:
Links die Spannung wie sie das regelbare Netzteil anzeigt, rechts die vom uC
Was mich stutzig macht, ist der erste Wert, die einen sind immer ein bisschen kleiner (gut, das kann durch den Spannungsteiler und einen 10K Schutzwiderstand zu verlusten führen, denk ich jetzt mal so)Code:3.56 3.72
6.9 6.36
7.12 6.46
8.91 8.34
10.21 9.96
...
...
und der erste ist grösser.
hier noch ein bisschen mehr:
ab 3.90Volt geht es wieder Bergab mit den Werten, an was liegt das bzw wie bekomm ich das weg?Code:3.71 3.8
3.90 3.90
Liegt das eher an der Software oder der Elektronik?