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


von Rufus (Gast)


Angehängte Dateien:

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wie ist denn Deine Referenzspannung festgelegt und wie ist sie 
beschaltet?

von Rufus (Gast)


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?

von Rufus (Gast)


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

von Helmut L. (helmi1)


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

von Rufus (Gast)


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?

von Helmut L. (helmi1)


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 ?

von Rufus (Gast)


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

von Helmut L. (helmi1)


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.

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.