Hallo, ich möchte mittels Drehschalter 7 verschiedene Spannungen auf den Eingang des internen ADC im µC (ATmega32) legen, um die Umdrehungszahl eines Motors zu steuern. Als Referenzspannung verwende ich die interenen 2,56V des Cotrollers. Da der ADC eine Auflösung von 10-Bit hat, beträgt die Abstufung: 2,56 V / 1024 = 2,5 mV. Umdrehungen Referenzspannung Analogwert Digitalwert 0 2,56 V 0,02 V 8 5 2,56 V 0,04 V 16 10 2,56 V 0,08 V 32 15 2,56 V 0,16 V 64 20 2,56 V 0,32 V 128 25 2,56 V 0,64 V 256 30 2,56 V 1,28 V 512 Die Digitalwerte lasse ich softwaremäßig auslesen & je nach Digitalwert lege ich eine Integer-Variable für die Umdrehungszahl fest. Von der Umdrehungszahl ziehe ich die gezählten Impulse (1 Impuls je Umdrehung) ab, sobald diese abgelaufen ist, wechselt die Drehrichtung des Motors. Ich habe noch nie mit einem ADC gearbeitet und würde gerne wissen, was von der Idee an sich zu halten ist. Danke. Gruß Salamander
Tag, ja kann man machen. Warum machst Du die Abstufung der werte so ungleichmäßig? Der Abstand von 0,02V zu 0,04V ist sehr klein wogegen der Abstand von 0,64V zu 1,28V sehr groß ist. Mach es doch gleichmäßig, z.B. 2,56 / 7. Sind dann ca. 0,36V per 5 Umdrehungen. Dann ließe sich die Umdrehungszahl auch einfach berechnen... Bendenke auch, dass die interne Referenz nicht hoch genau ist und durch Tolleranzen anderer Bauteile werden sich abweichungen der Messwerte ergeben. Will sagen, was machst Du wenn Du 0,32V anlegst und Dein ADC statt 128, 129 ausspuckt? Am Rande sei gesagt, so ein ADC versteht sich auch gut mit einem Poti... man könnte dann die Anzahl der Umdrehungen Stufenlos einstellen. Gruß Poeler
Salamander schrieb: > Ich habe noch nie mit einem ADC gearbeitet und würde gerne wissen, was > von der Idee an sich zu halten ist. Zusätzlich zu dem, was Poeler (Gast) schon gesagt hat: Ich würde AVCC als Referenz nehmen und den Spannungsteiler oder das Poti, dass die Analogwerte erzeugt, auch damit versorgen. Dann heben sich die Fehler, die durch Spannungstoleranzen entstehen, auf. Gruß Dietrich
Du machst die Unterteilung des ADC-Bereichs Logaritmisch? Ist das durch die Widerstände am Drehschalter gegeben? Wie sieht die Schaltung aus? Ich würde den Bereich linear Aufteilen. Entweder mit einem Poti, oder mit dem Drehschalter, der zwischen identischen Seriewiderständen (Asl Spannungsteiler )abgreift. Einen einfachen ADC Code, der auf dem ATmega32 läuft findest du übrigens unter: http://www.electronicsplanet.ch/mikrocontroller/avrcodesammlung/ATmega16ADCSingleConversion.htm Gruss David
@ Salamander Möchte dir deinen Entwurf nicht ausreden, da er eine gewisse Originalität besitzt, aber ein Drehencoder wäre einfacher.
@ Fred Wie wäre ein Drehencoder einfacher? Man kan aus den Daten die der Encoder liefert ja nur Richtung und Takt bestimmen, wie soll man da ohne zusätzliche Anzeige wissen was gerade eingestellt ist. @ All Eine ALternative wäre natürlich ein Drehcodierschalter, der z.B. über 4 Pins seine Stellung verrät. Hier wären dann 16 Stellungen möglich, man müsste allerdings auch 4 IO Pins opfern. Ach Mensch, wenn man doch nur wüsste was es werden soll... ;-) Gruß Poeler
Morgen zusammen, vielen Dank erstmal für die hilfreichen Antworten. Anbei habe ich einen Schaltplan angehängt, der allerdings nicht die Ausgangsseite des µC betrachtet. An den Achsen zweier Motoren am Ausgang sind Drehgeber (Typ AEDB-9140-A13) befestigt, dieser gibt pro Umdrehung ein Impuls aus, diesen Impuls subtrahiere ich von der eingestellten Umdrehungszahl pro Richtungswechsel, wobei ich nur einen der beiden Drehgeber auswerte. Der Anschluss der Drehgeber ist im Schaltplan ebenfalls nicht eingezeichnet. Poeler schrieb: > Mach es doch gleichmäßig, z.B. 2,56 / 7. Sind dann ca. > 0,36V per 5 Umdrehungen. Dann ließe sich die Umdrehungszahl auch einfach > berechnen... Also ich habe jetzt wie vorgeschlagen eine lineare Abstufung der Spannungswerte vorgenommen (Auflösung von 0,365V). AVCC ist meine Referenzspannung. Ich habe in meinem Beitrag zuvor geschrieben, dass ich die interne Refernzspannung des µC nutze. Damit meinte ich den Pin AVCC. Poeler schrieb: > Am Rande sei gesagt, so ein ADC versteht sich auch gut mit einem Poti... > man könnte dann die Anzahl der Umdrehungen Stufenlos einstellen. Eine stufenlose Einstellung der Umdrehungszahl ist nicht notwendig. Die Drehzahl soll stufenlos über ein Poti einstellbar sein (im angehängten Schaltplan R10), aber soweit bin ich noch nicht.
Salamander schrieb: > AVCC ist meine Referenzspannung. Ich habe in meinem Beitrag zuvor > geschrieben, dass ich die interne Refernzspannung des µC nutze. Damit > meinte ich den Pin AVCC. Dann solltest Du die Widerstandskette R1...R7 auch an AVCC hängen. An AREF gehört nur der Kondensator C3, die Widerstände kannst Du damit nicht treiben. Gruß Dietrich
Martin Wende schrieb: > Mach aus den 10nF mal 22pF Danke für den Hinweis. Die Werte der Kondensatoren habe ich geändert. Dietrich L. schrieb: > Dann solltest Du die Widerstandskette R1...R7 auch an AVCC hängen. An > AREF gehört nur der Kondensator C3, die Widerstände kannst Du damit > nicht treiben. Ich benötige doch einen Spannungspegel von 2,56V, um meine Widerstandkette zu treiben. Dies erreiche ich doch dadurch, dass ich im ADMUX Register die Bits REFS0 & REFS1 auf '1' setze. Würden somit an Pin AVCC also die 2,56V anliegen? Gruß Salamander
Hi >Ich benötige doch einen Spannungspegel von 2,56V, um meine >Widerstandkette zu treiben. Dies erreiche ich doch dadurch, dass ich im >ADMUX Register die Bits REFS0 & REFS1 auf '1' setze. Würden somit an Pin >AVCC also die 2,56V anliegen? Nein. Mach es so wie Dietrich L. (dietrichl) vorgeschlagen hat (Widerstände an AVCC) und stelle mit REFS0/1 VCC als Refernzspannung ein. MfG Spess
spess53 hat meinen Vorschlag schon bestätigt, aber folgendes noch zu Erklärung: Salamander schrieb: > Ich benötige doch einen Spannungspegel von 2,56V Warum? Du kannst genauso AVCC nehmen und setzt die Referenz auf "AVCC" (REFS0 = 1 & REFS1 = 0). Spannungsschwankungen von AVCC gehen in dem Fall nicht in die Messung ein, da ja ratiometrisch gemessen wird (http://de.wikipedia.org/wiki/Ratiometrisch). Im Prinzip ging das auch mit der internen Referenz von 2,56V und die "sieht" man bei Deiner Einstellung auch am Pin AREF. Aber das Signal darf nicht belastet werden, sonst bricht die Spannung an AREF zusammen und die das Ergebnis der A/D-Wandlung wird falsch. An AREF darf und soll nur der Kondensator. Gruß Dietrich
@Salamander Beachte doch bitte, dass, egal ob Du nun geschaltete Widerstände, oder ein Potentiometer abfragst, Du nie auf Gleichheit abfragst. Also <= 64 // ?? bis incl. 64 oder <= 128 // 65 bis incl. 128 aber nie == 64 bzw. == 128 Für den Test: Schließe doch einfach mal ein Poti an ein DVM und versuche einen vorher festgelegten Wert, so auf die Schnelle, einzustellen und zwar genau.
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.