mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC mit einem Wert 0-255 (Atmega16)


Autor: Lukas Piet (lzaman)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lukas Piet (lzaman)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Die einzigen AVR mit DAC sind die AT90PWM...-Typen. Mit allen anderen 
kannst du keine Analogspannung direkt ausgeben. Mögliche Wege sind: PWM, 
externer DAC oder R2R-Netzwerk.

MfG Spess

Autor: Bauteiltöter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lukas Piet (lzaman)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lukas Piet (lzaman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist der RC Filter dimensioniert? Welche werte sollen R und C haben?

Autor: Daniel S. (daniels)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, mit welcher Frequenz arbeitet denn deine PWM? Danach richtet sich 
das, ich würde R und C so dimensionieren, dass ich um den Faktor 100 bis 
1000 unter der Frequenz lieg, also die Grenzfrequenz = 1/1000 * PWM 
Frequenz ist.

Autor: Lukas Piet (lzaman)
Datum:

Bewertung
0 lesenswert
nicht 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;
}

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann pack' halt COM1B1 auch noch in TCCR1A.

Autor: Lukas Piet (lzaman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke klappt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.