ADC mit einem Wert 0-255 (Atmega16)

#864003
Lesenswert?

Guten morgen, also ich habe da so meine Probleme mit dem Verständnis der 
mikrocontroller. Ich befasse mich zur zeit mit dem Atmega16 am Stk500 
Board.
Nun wollte ich eine feste AnalogSpannung an einem PORTA ausgeben lassen.

Wie soll das gehen wenn ich doch nur Werte von 1 und Null zuweisen kann?

Ich müsste doch irgendwie Werte zwischen 0 und 255 an einen einzigen 
port senden, den der Mikrocontroller dann als AnalogSpannung zwischen 
0-5 Volt ausgibt.

Ich blicke da nicht so ganz durch. Das Tutorial enthält leider auch kein 
Beispiel dazu. Vielleicht könnt ihr eure Codes posten?
#864007
Lesenswert?

Hallo,

Du verwechselst da was: der ADC ist ein Analog-Digital-Converter, Du 
gibst also eine analoge Spannung zwischen 0...5V (als Beispiel!) in den 
Pin rein und bekommst einen Wert zwischen 0 und 1023 vom ADC geliefert.

Was Du meinst, wäre ein DAC, Digtal-Analog-Converter, sowas hat ein AVR 
nicht eingebaut.
Du kannst eine digtal-Analog-Wandlung beim AVR mit etwas Zusatzaufwand 
per PWM erreichen, wenn Du sowas brauchst, such mal unter PWM nach.

Gruß aus Berlin
Michael
#864008
Lesenswert?

Du verwechselst einen ADC (Analog --> Digital) mit einem DAC (Digital 
--> Analog). Der ATMega16 hat nur einen ADC, und der macht aus einem am 
Pin anliegenden Analogwert einen digitalen Wert. Einen einfachen DAC, 
mit dem man analoge Spannungen ausgeben kann, kann man mit einer 
Pulsweitenmodulation (PWM) mit einem der Timer realisieren. Oder bei 
gehobenen Ansprüchen einen externen DAC benutzen.
#864011
Lesenswert?

Also ich will einfach einen Pin als Ausgang definieren und einen wert 
ausgeben lassen, der sich nicht ändert, z. B. 3V. Wie teile ich es dem 
Mikrocontroller denn mit?

Ich kann ja schlecht schreiben PORTD=3V

wobei hier das nächste Problem anfängt. PORTD sind 8 pins und nicht 
einer.
Gast #864017
Lesenswert?

Das geht so einfach nicht! Bei einem Analog-Digital-Converter must du 
einen Analogen Wert eingeben und du bekommst das Digitale Signal. 
Soetwas hat ein Atmega16 Eingebaut.
Bei einem Digital-Analog-Converter giebst du Digital ein und Bekommst 
ein Analogen Signal herraus. Soetwas hat kein Atmega!!!!!
Ein µC kann nur 5V oder 0V ausgeben!!!


MfG Bauteiltöter
#864020
Lesenswert?

Dankeschön , das hift mir weiter. Aber mit dem PWM habe ich das nicht 
hinbekommen, sitze schon zwei Tage dran! Oder ich kann es schlecht 
überprüfen? Wiekann ich denn messen ob was am PWM ausgegeben wird? Bin 
im Besitz eines 10MHz Oszis und Multimeter. Das Multimeter zeigt immer 
Spannungsschwankungen an aber keine feste Spannung.

Bei der K8055 kann ich doch auch einen festen Wert messen an dem PWM 
ausgängen, wenn ich mit der Software die Werte einstelle. z.B. 
entspricht der
eingestellte wert 127 ca. 2,5V.
Gast #864022
Lesenswert?

Hi

>Wiekann ich denn messen ob was am PWM ausgegeben wird?...

Oszi an das PWM-Pin und Kurve ansehen. Es sollte ein Rechteck mit 
einstellbaren Tastverhältnis zu sehen sein. Die Analogspannung bekommst 
du, wenn du ein RC-Filter nachschaltest.

MfG Spess
#864236
Lesenswert?

Juhu, ich habs geschafft, naja fast.

Ich kann meine PWM setzen und auf einen festen Wert einstellen

im Beispel 128 also ca. 2,5V

Aber wieso nur am Ausgang OCR1A, ich möchte PWM an OCR1B ebenfalls
realisieren.

Hat jemand eine Lösung?

Hier mein Code:

#include <avr/io.h>
#define F_CPU 8000000

int main  (void)
{

   DDRD=0b1111111;

// PWM Konfig.

   TCCR1B |= (1<<CS10);  //
   TCCR1A |= (1<<WGM10)|(1<<COM1A1); //PWM 8 Bit

       OCR1A=128;

       OCR1B=128;

  return 0;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren