Forum: Mikrocontroller und Digitale Elektronik Analog Input? aber wie?


von Fztz T. (Firma: tztz) (kkkko)


Lesenswert?

hallo

Ich möchte gern einen analogen wert einlesen. Der wert kann im bereich 0 
bis 3500 liegen. Ist das mit einem Atmeg8 möglich?
Wie müsste man da vorgehen, bin noch ganz neu in der elektrotechnik. 0 
würde ja 0V entsprechen und wo liegt die obere grenze?
3500 bedeutet 5V?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Unklare Frage. Was meinst du mit "analogem Wert"? Ist der analoge Wert 
z.B. eine Spannung in Millivolt, ist das sehr einfach möglich. Der 
Atmega8 hat einen ADC.

von Morphil (Gast)


Lesenswert?

Richtig 0 entspräche 0Volt. Der Mega8 hat aber leider nur einen 10Bit 
(0-1023) AD-Wandler, um den Wert 3500 zu erfassen braucht man 12Bit 
(0-4095). Wenn die Referenzspannung aus 5Volt eingestellt ist entspricht 
5V dem Wert 1023.
Wenn es ein AVR bleiben soll gibt es drei Möglichkeiten:
1. einen externen ADC anschließen
2. z.B. den XMega128 verwenden (12Bit ADC intern)
3. überabtasten (16 mal einlesen, aufsummieren, zwei bit nach rechts 
schieben)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> einen analogen wert einlesen.
> Der wert kann im bereich 0 bis 3500 liegen.
Die meisten Werte in unserer Umwelt sind analog (Temperatur, Gewicht, 
Geschwindigkeit, Druck, Feuchtigkeit...). Mit einem AD-Wandler kannst du 
idR. nur elektrische Werte (Strom, Spannung, Frequenz) in digitale 
Signale umwandeln. Wie diese Signale dann interpretiert werden (als 
Zahl, als Bitmuster wie z.B. LED-Balkenanzeige) ist Definitionssache.

Bei uC ist der Bereich noch weiter eingeschränkt, der kann "nur" 
Analog-Spannungen zwischen 0V und Vref wandeln.

Die Frage ist also:
Was hast du (Sensor...)?
und
Was willst du (Anzeige...)?

von Fztz T. (Firma: tztz) (kkkko)


Lesenswert?

Danke für eure hilfe. also folgende problembeschreibung.
ich simuliere gerade einen einfachen dc-motor.  dieser bekommt am 
eingang eingan ein pwm signal und erzeugt mir eine drehzahl von 0 bis 
3500 (probiert hab ich es noch nicht). mein simulationsprogramm bietet 
mir einen aanalog output oder pwm output an. nun da es mit dem analog 
output nicht so einfach ist,wie wäre es wenn ich den pwm output nutze, 
indem ich sage:

0 1/min entspricht 0% Duty cycle

3500 1/min entspricht 100% Duty cycle

würde das gehen? dann könnte der uc einfach diese pwm signale einlesen 
und weitervereiarbeiten oder?
ich denke manchmal viel zu einfach :) wahrscheinlich hackt es wieder an 
dem pwm output genauigkeit (Bit auflösung)?

Grober hintergrund, ich möchte eine LED in abhängigkeit der 
Geschwindigkeit blinken lassen. ;)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zwar mag der Motor sich mit bis zu 3500 U/min drehen, aber das muss 
nicht mit einer Auflösung von 1 U/min erfasst werden, schon gar nicht, 
wenn nur eine LED in Abhägigkeit der Drehzahl blinken soll.

Letzteres ließe sich ganz simpel mit einem Zählerbaustein realisieren, 
der mit einem Drehzahlpuls gespeist, bis --sagen wir mal 10-- zählt und 
dann die LED umschaltet.

Damit blinkt die Drehzahl bei 3500 U/min 350 mal in der Minute, also 
knapp sechs mal in der Sekunde. Bei langsameren Drehzahlen entsprechend 
langsamer.


Wenn ein µC verwendet wird, kann der natürlich den Drehzahlimpuls zählen 
und selbst die Drehzahl daraus ableiten, da ist weder eine analoge 
Spannung mit einem ADC zu messen noch ein PWM-Signal zu decodieren.

von Fztz T. (Firma: tztz) (kkkko)


Lesenswert?

Ja da hast du recht.

Aber würde es denn generell gehen, dass ich meine drehzahl über pwm nach 
aussem ausgebe?

ich habe mal gerechnet
bei TTL Pegel hätten wir

0V (0%) und 5V (100%)
bei 10 Bit Auflösung wären es ca. 5mV (0,001 Ratio)

(3500 U/min)/1023 = 3,42

Das wäre die genauigkeit bei 10 Bit.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Grober hintergrund, ich möchte eine LED in abhängigkeit der
> Geschwindigkeit blinken lassen. ;)
Also später in richtiger Hardware?

> Aber würde es denn generell gehen, dass ich meine drehzahl über pwm
> nach aussem ausgebe?
Wo ist aussen? Real-Life?

> Das wäre die genauigkeit bei 10 Bit.
Was soll denn diese stumpfsinnige Zahlenspielerei. Wenn eine LED blinkt, 
dann reicht dir später eine zeitliche Auflösung von 10% locker aus. 
Selbst ein Schlagzeuger hat keine bessere Genauigkeit ;-)

Simulation heißt nicht, irgendwas im_Rechner zusammenzuklicken, um 
danach virtuell eine LED blinken zu lassen.
Simulation heißt Nachbildung_der_Realität. Du solltest also einen 
echten Motor nehmen und dessen Daten simulieren.
Nur das macht Sinn.

Und davor eine ausgiebige Aufwands-, Fehler- und Auflösungsbetrachtung 
durchführen. Ich brauche z.B. keine 0,1%-Vorwiderstände für eine LED, 
auch wenn ich mir so einen Widerstand herrechnen kann ;-)

von Fztz T. (Firma: tztz) (kkkko)


Lesenswert?

hallo

es geht ja nicht wirklich um die LEDs. die dienen nur als kleiner test 
;)
ich will ja später ein PWM signal erzeugen in abhängigkeit der Drehzahl.
ich will ja einen echten motor nachbilden.
muss nur wissen ob ich es mit der drehzahl/PWM ausgang hinbekomme. :(

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> ich will ja einen echten motor nachbilden.
Welcher Motor gibt PWM als Drehzahlsignal aus?
Ich kenne hier nur Pulse/Umdrehung, und das ist nicht PWM.

> muss nur wissen ob ich es mit der drehzahl/PWM ausgang hinbekomme. :(
Ja, was denn eigentlich?

von P. S. (Gast)


Lesenswert?

a) Basic lernen
b) C lernen
c) Elektronik lernen
d) Mikrokontroller lernen
 i) LED blinken
 ii) LCD ansteuern
 iii) A/D Wandler auslesen
 iiii) PWM erzeugen

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter Stegemann wrote:
> a) Basic lernen
> b) C lernen
> c) Elektronik lernen
> d) Mikrokontroller lernen
>  i) LED blinken
>  ii) LCD ansteuern
>  iii) A/D Wandler auslesen
>  iiii) PWM erzeugen
Lass a) weg.
Lern stattdessen Assembler, damit tust du dich bei d) leichter   ;-)

von Peter Diener (Gast)


Lesenswert?

Hallo,

was nützt es dir, wenn du an eine Sinulationsumgebung einen AVR 
anschließt, der nichts anderes macht, als etwas anzuzeigen? Das kann man 
auch gleich als Anzeige mit in die Simulation einbinden.

Und wenn du es realisieren willst, wirst du keinen Sensor bekommen, der 
dir ein PWM Signal aus einer Drehzahl macht. Und wenn du einen nimmst, 
der aus der Drehzahl eine Spannung macht, ist das purer Unsinn, wenn 
danach ein AVR zur Auswertung kommen soll.

Wie wäre es denn mit einer einfachen Lichtschranke auf der Motorwelle, 
die bei jeder Umdrehung einen Rechteckpuls liefert? Den gibt man am AVR 
auf ein Zählregister (Timer) und wertet dieses zyklisch aus.

Aber was soll der Unsinn mit 
Simulationsprogramm->Datenkonvertierung->Analog->Datenkonvertierung->Dig 
ital->AVR->Anzeige

Wie wär es mit Simulationsprogramm->Anzeige.

Peter

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.