Forum: Mikrocontroller und Digitale Elektronik Poti zur Dateneingabe verwenden


von Axel(ojojo) (Gast)


Lesenswert?

jo

Wie verwende ich einen Poti und den AD-Wandler um einen Wert zwischen 
0-255 auszuwählen ?

jo Axel

von Günter König (Gast)


Lesenswert?

Moin moin Axel,

in der einfachsten Form gehts folgendermaßen:

Ersten Anschluß des Potis an 1,245V legen.
Zweiten Anschluß des Potis an Masse.
Schleifer (mittlerer Anschluß) an ADC 0.

In der Codesammlung findest du bestimmt Routinen, mit denen du den AVR 
füttern kannst.
Dann (wie gesagt im einfachsten Fall) einen Port als Ausgang wählen und 
dort 8 LED`s anschliessen. LED`s so anordnen, das Bit 0 rechts steht 
(LSB) und Bit 7 am weitesten links (MSB). Die anderen 6 LED`s dazwischen 
anordnen.  Je nach angelegter Spannung geben die LED`s jetzt das 
Bitmuster der Spannung wieder.

Gruß,
Günter

von Holger Buss (Gast)


Lesenswert?

Hey Axel,

Du kannst auch 5V ans Poti anlegen. Der ADC erzeugt dann Werte von 0 bis 
1023. Wenn Dir die Zahl zu gross ist, kannst Du ja zwei mal rechts 
schieben.

Gruss,
Holger

von Günter König (Gast)


Lesenswert?

Moin Holger,
ich schrieb ja, in der einfachsten Form.

Gruß,
Günter

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Die Eingabe von Werten via Poti
ist für Hobbyanwendungen ein clevere Sache.
Ich versuche es so einfach wie möglich.


Das Poti mit einem Bein an 0V und mit dem
anderen Bein an +5V. Den Schleifer verbindest
Du mit dem AD-Eingang z.B. bei mir AD7.
Die Referenzspannung von 5V muß auch angelegt werden.

Dieser Pseudocode für den 8535 funktioniert bei mir.

Per Interrupt holst Du den AD-Wert in zwei Hilfsvariablen

SIGNAL (SIG_ADC)  // Interrupt kommt wenn der Wandler mit der Conversion 
fertig ist
  {
  lo_val = inp(ADCL);
        // Wert des AD-Wandlers in Variable            transferieren
  hi_val = inp(ADCH);
        // Wichtig: immer zuerst
               das low-byte lesen
  }


main()

Hiermit schaltest Du einen Analogeingang (hier 7) intern auf den 
AD-Wandler

outp(7, ADMUX);    // Den Analog Eingangsmultiplexer auf Eingang AD7 
stellen


z.B. in einer Schleife startest Du die Wandlung

outp((1<<ADEN)|(1<<ADSC)|(0<<ADFR)|(1<<ADIE)|(1<<ADPS0)|(1<<ADPS1)|(1<<A 
DPS2),ADCSR);
  // AD-Wandler einschalten => ADEN
  // AD-Wandlung starten => ADSC
  // AD-Wandlung 1 = free running, 0 = single conversion => ADFR
  // AD Complete Interrupt freigeben => ADIE
  // ADPS0-2 bei 8MHz die Konversationsfrequenz auf 8MHz/128= 62500 Hz 
stellen
  // ADCSR = AD-Steuerregister

Irgendwann ist dann der Wandler fertig...
und Du kannst den 10Bit Wert auf 8Bits umwandeln.

ad = 0;
ad = (hi_val<<6) | (lo_val>>2);

in ad ist dann Dein Wert

Ich hoffe Du es ist klar geworden?

von M. Johann Petersen (Gast)


Lesenswert?

Ich würde gerne einen analogen Joystick an den ADC anschliessen.

Wie kann ich das machen, da ja die Potis dort nicht als Spannungsteiler 
sondern nur als einstellbarer Widerstand beschaltet sind?

von Andreas S. (andreas) (Admin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Spannungsteiler bauen (siehe Anhang).

von M. Johann Petersen (Gast)


Lesenswert?

Danke Andreas!

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.