jo Wie verwende ich einen Poti und den AD-Wandler um einen Wert zwischen 0-255 auszuwählen ? jo Axel
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
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
Moin Holger, ich schrieb ja, in der einfachsten Form. Gruß, Günter
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?
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.