PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC und Poti



wodka
11.01.2006, 11:31
Hallo Leute,

mir ist das noch mit dem Analog-Digitalwandler unklar.. Habe mal ein kleines Schaltbild erstellt. Würde es so gehen, wie groß muss das Poti sein. Im Datenblatt steht was mit 100k ??

Cybrix
11.01.2006, 11:45
du musst auf jedenfall noch Agnd ,avcc und aref beschalten
Agnd kommt an die masse
AVCC kommt an die versorguungsspannung
und an Aref legst du deine referenz spannung an wahrscheinlich ja 5V

wodka
11.01.2006, 12:42
ja davon bin ich ausgegangen, hatte das nur schnell gemacht... Aber sonst müsste es doch funktionieren so oder ??

Ich möchte im endeffekt eine LED am andern ausgang dimmen ( ABER im AUTO). Gibt es ein IC od. ähnl. das man die Einstellung galvanisch trennen kann oder reicht es wenn ich ein spannungsteiler mit poti mache ?? und GND verbinde ??

Cybrix
11.01.2006, 12:50
also ich verstehe wieso du ein atmega fürs dimmen verwenden möchtest!

dann könntest du doch gleich ein poti für die led nehmen!

und falls du das mit dem atmega realiesieren willst brauchst du hinter irgendinem Port ja noch ein D/A wandler

wodka
11.01.2006, 12:57
Ich will ja dann mehr mit dem mega im auto machen. Nur eine aufgabe ist es LED per Pulsweitenmodulation zu dimmen..
Mit dem Poti möchte ich ja nur den Timer verändern.. Das müsste doch gehen oder. Kann ja Das Poti auch über 5V laufen lassen.

Ich möchte dieses Board nun bauen, halt nur noch mit der Funktion, das man ein Poti zur Verfügung hat, wo man Analog was regeln kann..

http://www.mds-5.de/webinfo/data/images/Schaltplan.gif

Wäre super über eine Idee wo und wie ich das Poti nun anbringe und welche Größe!??.. Ein Ausgang der zum ULN2803 geht kann ja benutzt werden als Eingang, dann beiben halt nur noch 7, das reicht mir aber..

Schönen Gruß

Cybrix
11.01.2006, 13:28
du musst das so machen das max 5 Volt anliegen und minimal 0V am poti wenn du die referenzspannung an 5 Volt legst!

wodka
11.01.2006, 20:22
ja vielen Dank...

Ich habe nun mal ein Schaltbild beigefügt. Guckt mal bitte auf den ADC0. Wäre der Jumper für das Poti gesteckt, müsste es doch gehen mit dem analogen Eingang oder ?

Welche Größe an Poti und Widerstand nimmt man denn ( 100k ) und brauch ich eigentlich den widerstand davor, weil ich will ja die Spannung garnicht verringern(teilen) sondern 5V als max-Wert haben.

** ups so nun hochgeladen

Cybrix
11.01.2006, 20:40
ich würde denn vorwiderstand als strombegrenzer nehmen und dann ein verhältniss von 100: 1 vom poti und widerstand dann wirkt sich der wiederstand nicht so groß aus

wodka
11.01.2006, 20:44
ja dafür hatte ich ihn auch bedacht, lag also nicht falsch *löl*

Also 100k Poti und 1k Widerstand.

Cybrix
11.01.2006, 21:08
z.B. so könntest du das machen

wodka
19.01.2006, 18:47
Hallo leute, ich habe über den ADC 0 eine 100k Poti mit 1k Widerstand dran. Nun möchte ich auf einem anderen Port eine LED dimmen. Es funzt fast wunderbar, aber wenn ich das Poti drehe, kann ich 3-4 mal hell und dunkel dimmen.. Warum so oft ??

Hier ist mein aktueller Code:



$regfile = "m8def.dat"

'Quarzfrequenz
$crystal = 8000000

'Hier wird der Timer und der Teiler festgelegt
Enable Timer0
Config Timer0 = Timer , Prescale = 64
On Timer0 Timer_irq

Config Pinb.2 = Output

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Portc = &B00000000
Start Adc

Led1 Alias Portb.2


Dim X As Byte
Dim Helligkeit As Byte

Helligkeit = 255


Enable Interrupts

Do

X = Getadc(0)
Helligkeit = X

Loop


Timer_irq:

Toggle Led1

If Led1 = 1 Then
Timer0 = 255 - Helligkeit
Else
Timer0 = Helligkeit
End If

Return

felack
20.01.2006, 12:27
Das liegt daran, dass du vom AD-Wandler Werte zwischen 0 und 1023 (10 Bit) geliefert bekommst, das Byte für Helligkeit kann aber nur Werte bis 255 (8 Bit) annehmen kann. Deshalb ergibt sich bei 256, 512 und 768 für die Helligkeit der Wert 0 und steigt dann wieder an.

Änderung am Programm:

X= Getadc(0)
X = X/4
Helligkeit =X

dann sollte es gehen

felack

askazo
20.01.2006, 16:00
ich würde denn vorwiderstand als strombegrenzer nehmen
Wieso sollte man bei einem Poti einen Strombegrenzer brauchen?
Da der Eingang des ADC sehr hochohmig ist (min. 55MOhm), ist der Strom, der durch das Poti fließt, quasi unabhängig von der Schleiferposition. In Deinem Falle 5V/100k = 50µA. Du brauchst dort definitiv keinen Vorwiderstand.

Zum Programm:
Eleganter als die Division ist es eigentlich, die unteren 2 Bit einfach fallen zu lassen, also das ADC-Ergebnis um 2 Bit nach rechts zu schieben.

askazo

felack
21.01.2006, 11:47
Dann müsste es so aussehen

X= Getadc(0)
SHIFT X,right ,2
Helligkeit =X

dann sollte es noch etwas schneller gehen

felack

izaseba
21.01.2006, 12:14
Eleganter als die Division ist es eigentlich, die unteren 2 Bit einfach fallen zu lassen, also das ADC-Ergebnis um 2 Bit nach rechts zu schieben.

Erennt der Compiler das nicht von alleine?

Gruß Sebastian

askazo
21.01.2006, 17:41
Gute Frage, da müsste man sich mal den generierten Assemblercode von beiden Varianten anschauen und vergleichen...
Aber abgesehen davon ist der Quelltext mit shift auch leichter verständlich - finde ich zumindest.

askazo

izaseba
21.01.2006, 18:07
Genau, das habe ich auch gemacht, leider bei avr-gcc aber ich denke Bascom erzeugt genauso ein Code, ich habe in einer Funktion eine 16 Bit Zahl durch 4 geteilt:

return b/4;

das ist das Assemblerergebnis:


10c: 96 95 lsr r25
10e: 87 95 ror r24
110: 96 95 lsr r25
112: 87 95 ror r24
114: 08 95 ret


soviel zum Thema

dann sollte es noch etwas schneller gehen


Also nicht schneller,sondern schöner, so weißt jeder direkt, daß man durch Rechtsschieben durch Zweierpotenzen teilen kann.

Was wirklich schneller wäre, das ADC Ergebnis links auszurichten(ADLAR)
und das untere Byte ganz wegzulassen.

Gruß Sebastian

wodka
22.01.2006, 10:51
Danke für die gute Beteiligung...

Nur Leider gehen beiden Varianten bei mir nicht.. Er dimmt nie vom Anfangs- bis zum Endwert :-(


X= Getadc(0)
SHIFT X,right ,2
Helligkeit =X

od.

X= Getadc(0)
X = X/4
Helligkeit =X



Ich hänge nochmal den Schaltplan ran, AVCC und so weiter sind ja bei mir mit angeschlossen..

felack
23.01.2006, 13:04
was macht das Programm denn falsch ??

felack