mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD-Wandler abfragen an ATtiny13 10bit


Autor: Rufus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Spezis,

ich habe mir das Lernpaket Mikrocontroller mit einem ATtiny13 von 
Franzis gekauft, und habe zusätzlich einen ADXL202 
(Beschleunigungssensor). Anhand der mitgelieferten Übungsaufgaben habe 
ich mir eine Schaltung zusammengebaut (auf einem Bread board).

Nun zu meinem Problem:
der ADXL202 scheint gut zu funktionieren, ich Messe nur die Y-Achse. In 
Waage Messe ich eine Ausgangsspannung von 2.6V, wenn ich den Konstrukt 
um etwa 45° (links/rechts) kippe verändert sich die Spannung um +/-0,2V.
Nun diese Spannung lege ich dann an den µC. Die gemessene Spannung soll 
über die serielle Schnittstelle am Terminal sichtbar werden, soweit 
klappt das ja auch. Aber mein Ergebnis lautet immer nur ...3 255 3 255 3 
255...
Bei 10 bit Auflösung entspricht das Ergebnis dem digitalen Wert 3*256 + 
255 = 1023. Die gemessene Spannung beträgt dann 5V*1023/1023 = 5V.
Es sind aber (in der Waage) 2,6V ??? Wo ist der Fehler?

Im Anhang findet ihr den Code. Ich hoffe es kann mir einer helfen.

MfG
Rufus

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist denn Deine Referenzspannung festgelegt und wie ist sie 
beschaltet?

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte eigentlich die Referenzspannung beträgt VCC=5V (extern), weil 
die REFS0 im Register ADMUX nicht gesetzt ist. (s. Quellcode)

.
.
RdADC:
      out   ADMUX,A
      sbi   ADCSRA,ADSC   ;Wandlung starten
.
.


Die interne Referenzspannung würde 1,1V betragen, wenn

.
.
RdADC:
      out   ADMUX,A
      sbi   ADMUX,ADLAR   ;Left adjust
      sbi   ADMUX,REFS0   ;1,1V Refernz
      sbi   ADCSRA,ADSC   ;Wandlung starten
.
.
oder bin ich auf dem Holzweg?

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

hab mich nun mit dem Datenblatt des ATtiny13 etwas beschäftigt. Meine 
Feststellung war, dass ich doch nicht auf dem Holzweg bin :)

bis auf...

.
.
sbi   ADMUX,ADLAR   ;Left adjust
.
.

denn diese Zeile ist interessant bei 8 bit AD-Wandler abfrage.

Aber meine eigentliche Frage ist noch offen, ich wiederhole:

Die gemessene Spannung soll
über die serielle Schnittstelle am Terminal sichtbar werden, soweit
klappt das ja auch. Aber mein Ergebnis lautet immer nur ...3 255 3 255 3
255...
Bei 10 bit Auflösung entspricht das Ergebnis dem digitalen Wert 3*256 +
255 = 1023. Die gemessene Spannung beträgt dann 5V*1023/1023 = 5V.
Es sind aber (in der Waage) 2,6V ??? Wo ist der Fehler?

Bitte um hilfe

MfG
Rufus

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage ist welchen Kanal wandelst du eigentlicht ?
Setze deine Variable A (also deine Kanalnummer) mal auf einen festen 
Wert. Also auf den Kanal wo der Sensor dran haengt.

Gruss Helmi

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Helmi,

das wird doch schon hier definiert..

->    .def   A      = r16

    ;Port B
->    .equ   Eingang    = 3


AdcInit:
->      ldi   A,3         ;Clock / 4
      out   ADCSRA,A
      sbi   ADCSRA,ADEN ;AD einschalten
.
.
RdADC:
->      out   ADMUX,A
      sbi   ADCSRA,ADSC   ;Wandlung starten

also "A" ist ADC3(PB3) oder nicht?

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>also "A" ist ADC3(PB3) oder nicht?

Nein !

Du rufst RdADC doch so auf

      rcall  RdCOM
      rcall  RdADC

und in RdCOM aenderst du doch A oder etwa nicht.
Was steht dann in A ?

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
immernoch 3

hab gerade mit AVRStudio nochmal simuliert. A ist bis zum Einlesen des 
pinb3 = 3



ich glaube ich sollte vielleicht mit einem einfacherem AD-Wandler 
anfangen.

Ich steige jetzt selber überhaupt nicht mehr durch

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorsicht mit dem Simulator ! Bei den IOs ist dem nicht immer zu trauen.
Was macht die richtige Hardware denn ?
Setze das Register A in der ADC Routine mal auf 3 und probier das dann 
mal aus nicht im Simulator.

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.