PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Widerstand messen



Arne
19.06.2005, 15:34
Hallo,

für einen 360° Rotor möchte ich mittels 3 Gang Poti den genauen Widerstand per Atmega16 messen. Die Genauigkeit sollte im Bereich .2 - .5 ° sein. Besser ist natürlich auch nicht verkehrt :D

Eignet sich besser ein großer oder kl. Widerstand?
Wie kann ich die Messung praktisch realisieren (Schaltung?!)?
Hat jemand eine bessere Idee zur Positionsbestimmung?

Danke

Zur Verfügung steht ein Atmega 16 Experimentierboard mit ungenutzten AD Wandlern!

Marco78
19.06.2005, 15:54
Ich denke ein größerer Widerstand eigenet sich besser. Den Mittelabgriff des Potis an den ADC, das eine Ende an +5V/Vref das andere Ende an Masse.
Beachte den Stromfluß und Ptot des Potis!

Ich glaube aber nicht das du damit die gewünschte Genauigkeit bekommst. Ein Drehgeber ist da vielleicht besser geeignet. Da ist nur das Problem der Nullstellung bzw wo steht die Achse nach einem Reset.

Vielleicht reicht dir das mit dem Poti erstmal zum basteln. Ich denke es wird noch jemanden geben, der andere Sensoren für sowas kennt.

Und die Forumsuche hat keine Treffer gebracht?

Florian
19.06.2005, 15:56
Hallo Arne!
Der ADC des Mega16 hat eine Auflösung von 10 Bit, also kannst Du Stufen von 360° / 1024 = 0,3515625° erreichen!
Du schließt den Schleifer des Potis einfach an den AD-Port an und die anderen beiden Pins, einen an Vcc und den anderen an GND!
Das nennt sich dann Spannungsteiler!
Je nachdem, wie nun das Widerstandsverhältnis ist, kann der ADC dann die Spannung abgreifen.
Ich hoffe Du hast es ungefähr verstanden.
Überigens ist der Gesamtwiderstand des Potis unwichtig, nur das Verhältnis zählt, ich würde aber so um die 10k nehmen!

Marco78
19.06.2005, 16:08
Überigens ist der Gesamtwiderstand des Potis unwichtig

Sofern der Strom nicht zu groß wird und die maximale Verlustleistung nicht erreicht wird ;)

Florian
19.06.2005, 16:11
Ja, genau! ;o)

*füllstoff*

Marco78
19.06.2005, 16:13
Mir war klar, das du sowas weisst. Ich wollte es nur nochmal erwähnen, damit Arne nicht ein 100Ohm Poti nimmt.

*noch mehr füllen*

Florian
19.06.2005, 16:15
Ja gut, hätte ich vielleicht erwähnen müssen! ;o)

PicNick
19.06.2005, 16:49
füllen wir gleich noch rein, daß das Poti-Widerstan auch nicht zu groß ist,
sonst schafft der ADC sein S & H nicht
(Ich glaub 10k ist maximum -----> gucke Datasheet)

Florian
19.06.2005, 17:05
Hallo Robert!
Also bei mir funktioniert es auch mit den 10k!

Arne
19.06.2005, 17:28
Danke...

will ich mal das Board bedrahten und es ausprobieren.

PicNick
19.06.2005, 18:03
@florian: Sag ich ja, 10k geht, aber viel mehr soll's angeblich nicht mehr sein

Arne
19.06.2005, 18:28
Hallo,

wenn ich bei einem 10k Poti den Schleifer an Port 40 , und die beiden Enden an 32 und 31 schalte, druckt folgender Coder nur 1023.



KAnn mir jemand Hilfestellung geben?


$regfile = "m16def.dat"
$baud = 9600
$crystal = 16000000



Config Adc = Single , Prescaler = Auto
'Now give power to the chip
Start Adc

'With STOP ADC, you can remove the power from the chip
'Stop Adc

Dim W As Word , Channel As Byte

Channel = 0
'now read A/D value from channel 0
Do
W = Getadc(channel)
Print "Channel " ; Channel ; " value " ; W
Incr Channel
If Channel > 7 Then Channel = 0
Loop
End

Florian
19.06.2005, 18:37
Hallo Arne!
Mit C kenne ich mich leider nicht allzu gut aus, aber normalerweise müsste es so wie beschrieben funktionieren!

Marco78
19.06.2005, 18:45
Mit C kenne ich mich leider nicht allzu gut aus, ...
Macht auch nix, weil der Code in BASIC ist :D



$regfile = "m16def.dat"
$baud = 9600
$crystal = 16000000

Config Adc = Single , Prescaler = Auto
Start Adc

Dim W As Word

Do
W = Getadc(0)
Print W
Loop
End

Der Code reicht auch.

Hast du auch 5V an 30 angelegt?

Arne
19.06.2005, 18:56
habe 5 Volt an 30 gelegt, Schleifer an 40. Wo müssen denn die anderen hin. Sonst ist er noch völlig unbeschaltet.

Marco78
19.06.2005, 19:07
Wo muss wer noch hin?
Die anderen beiden Anschlüße des Potis hast du doch schon angeschlossen.
Was liegt denn an 32 an?

Arne
19.06.2005, 19:11
Hallo,

es funktioniert - aber noch nicht richtig.

ich habe den Code geändert, man beachte den Zusatz reference= internal. Wenn ich nun die Enden an +5V und Gnd schalte - und den Schleifer an 40 kann ich bei einem 10k Ohm Poti Werte erreichen.
Sie gehen von 0- 1023. Allerdings kann ich nur 1/4 des Potis ausnutzen. 1023 scheint ein Maximalwert zu sein.. wie kann ich das ändern?

Ohne den Zusatz "internal reference" erhalte ich nur den Wert 1023. An Pin 30 (AVCC) habe ich keine Spannung angelegt.
Wie kann ich jetzt die ganze Bandbreite des Poti ausnutzen?
Liegt der Fehler in der Hard / Software?.

Ansonstnen wollte ich noch einen Fotowiderstand dazu schalten. Wie müsste ich den anschließen. Hat ja nur 2 Enden.
Danke


$regfile = "m16def.dat"
$baud = 9600
$crystal = 16000000



Config Adc = Single , Prescaler = Auto , Reference = Internal
'Now give power to the chip
Start Adc

'With STOP ADC, you can remove the power from the chip
'Stop Adc

Dim W As Word , Channel As Byte

Channel = 0
'now read A/D value from channel 0
Do
W = Getadc(channel)
Print "Channel " ; Channel ; " value " ; W
Incr Channel
If Channel > 0 Then Channel = 0
Loop
End

Arne
19.06.2005, 19:13
30 und 32 sind unbeschaltet.

Florian
19.06.2005, 19:15
Hi Marco78!

Macht auch nix, weil der Code in BASIC istOAPS! *lol*
Danke für den Hinweis!
So langsam müsste ich das aber auch mal auseinander ahlten können! *g*
Ein Beinchen des Potis muss an + und eins an - und das Dritte, der Schleifer, der muss an den Port!


*edit*
Du muss die Pins Aref und Avcc mit Vcc (5V) verbinden und GND mit GND verbinden.
Dann musst Du auf externe Referenzspannung umschalten!
Die interne Referenzspannung liegt bei 2,56V!

Marco78
19.06.2005, 19:21
Wenn die Referenz auf Internal steht, werden nur Spannung bis 2,56V gemessen.

an 30 und 32 müssen 5V angeschlossen sein und an 31 Masse. Dann sollte es gehen.

Den Fotowiderstand kannst/musst du auch als Spannungsteiler anschliesen.
5V an den LDR, das andere Ende des LDR an den ADC und vom ADC ein Widerstand (nimm erstmal etwa 5kOhm) gegen Masse.

EDIT: Da war Flo mit editieren schneller als ich mit antworten ;)

Arne
19.06.2005, 19:24
Danke für die schnellen Antworten.

Gleich verdrahten und ausprobieren. :D

Arne
19.06.2005, 19:33
funktioniert alles.
Danke

Florian
19.06.2005, 19:35
Herzlichen Glückwunsch!