ad wandler xmeag32

  • 1
  • 2
  • Page 2 of 2
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 71
Posts: 256
Registered: 11 / 2009
Subject:

Re: ad wandler xmeag32

 · 
Posted: 08.02.2013 - 07:29  ·  #9
hallo tobias,

ich hab das nun doch mal an einer vorhandenen xmega16d4-platine probiert und gleich gesehen, dass ich da falsches geschrieben hab,sorry.

korrekt gehts mit:
lo(ADCWord0):= ADCACH0RESL;
hi(ADCWord0):= ADCACH0RESH;

ich habe einen spannungsteiler am eingang drangehängt, der liefert mir werte um 3350. die schwankungen (3351-3362) dürften normal sein. hängen wohl auch vom pcb-design ab.

das gleiche ergebnis erhalte ich hier auch mit dem avrco-treiber mit getadcA(0);

golf
Attachments
ad wandler xmeag32
Filename: ADC0 Xmega16D4.JPG
Filesize: 31.74 KB
Title:
Download counter: 127
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: ad wandler xmeag32

 · 
Posted: 08.02.2013 - 20:41  ·  #10
Hi Tobias,

sowas bestellt man als kostenloses Sample bei Maxim ;)

Gruss
Harry
ThomasW69
 
Avatar
 
Subject:

Re: ad wandler xmeag32

 · 
Posted: 12.02.2013 - 09:33  ·  #11
Ich hake mich mal hier ein weil ich auch gerade auf einem XMEGA256A3U mit dem ADC kämpfe.
Ich habe einen Drucksensor, der Werte im Bereich von 0,5V-4,5V liefert. Über einen 1/2 Spannungsteiler setze ich diese Werte auf den Bereich zwischen 0,25 -2,25V. Diese Werte liegen auch wunderbar am entsprechenden ADC-Pin an. Als Referenz habe ich eine externe Referenzspannungsquelle mit 2,5V.
Je nach Messwert schwanken die Spannungswerte am PIN auch im gewünschten Bereich. Jetzt sollte man annehmen, dass beim Auslesen mit GetADCA auch ein entsprechender Wert gelesen wird. Leider kommt immer nur 4095 (außer ich klemme den Sensor ab, dann kommt 0)
Kann es sein, dass der ADC im falschen Modus läuft?

Code

Import SysTick, RTClock,  SerPortD0,  ADC_A, DAC_B TWI_E, SysLedBlink, USBSmart;
....
  //ADC Wandler
  ADCrefA = REFextA; // extern reference, input pins at PortA
  ADCprescA = 32; // prescaler 32
  ADCchansA = [3..6]; // channel 3 to 6

....

Procedure  ReadSensorsInt;
  ww:word;
begin

  ww:= GetADCA(0);
  Writeln(Serout,'ADC0:'+inttostr(ww));
  ww:= GetADCA(1);
  Writeln(Serout,'ADC1:'+inttostr(ww));
  ww:= GetADCA(2);
  Writeln(Serout,'ADC2:'+inttostr(ww));
  ww:= GetADCA(3);
  Writeln(Serout,'ADC3:'+inttostr(ww));
  ww:= GetADCA(4);
  Writeln(Serout,'ADC4:'+inttostr(ww));
  ww:= GetADCA(5);
  Writeln(Serout,'ADC5:'+inttostr(ww));
  ww:= GetADCA(6);
  Writeln(Serout,'ADC6:'+inttostr(ww));
  ww:= GetADCA(7);
  Writeln(Serout,'ADC7:'+inttostr(ww));
end;



Der Sensor hängt an ACDA3 und GetADCA(3) liefert als einziger einen Wert (nämlich immer 4095) obwohl z.B. nur 1,8V am PIN anliegen. Alle anderen liefern 0, sind aber auch nicht beschaltet.
Was ich in der Treiber-Konfiguration im Handbuch vermisse ist die Einstellung in welchem modus der ADC arbeitet (single oder differential). Muss ich das selbst über ADCACHxCTRL und
ADCACHxMUXCTRL einstellen? ICh vermute nämlich, dass der ADC im falschen Modus läuft.
ThomasW69
 
Avatar
 
Subject:

Re: ad wandler xmeag32

 · 
Posted: 12.02.2013 - 13:03  ·  #12
Letzten Post bitte vergessen.
Die Referenzsspannungsquelle war ausgefallen. Bei 0V Referenzspannung ist natürlich das kleinste Rauschen ein Wert von 4095
:banghead:
nexxes
 
Avatar
 
Subject:

Re: ad wandler xmeag32

 · 
Posted: 12.02.2013 - 20:59  ·  #13
Guten Abend,
auch wenn sich der Post schon wieder erledigt hat, habe ich hoffnug das meine Schaltung mit dem neuen xmega dann auch funnst bzw. der AD-wandler mir dann gute Werte liefert. Werde dann auch einen U typ verwenden (32A4U). Naja nur das mit der Lieferung ist so eine Sache.....

tobias
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 71
Posts: 256
Registered: 11 / 2009
Subject:

Re: ad wandler xmeag32

 · 
Posted: 13.02.2013 - 10:49  ·  #14
hallo tobias,
ich melde mich nochmal. entgegen meiner früherer probleme sehe ich jetzt aktuell keine probleme mehr mit dem avrco-adctreiber. ich habe jetzt auch mal den atxmega32a4u erhalten und auf ein gleiches kleines board gesetzt wie früher den xmega16d4. prinzipiell würde mir die genauigkeit voll ausreichen, besonders wenn man die messungen noch mittelt. der adc ist ja schnell genug dafür.
ich sehe keine unterschiede zum bisherigen xmega16d4. mit externer referenz ists wohl etwas ruhiger, der avcc-pin auf meiner platine ist jedoch ganz normal mit 3,3V verbunden ohne spule oder ferrite, die platine war ja nicht dafür gedacht. interne ref sollte also doch meist reichen.
(bei offenen adcpins sind werte bei 2600 oder 2200 normal, ebenfalls ist ein offset bei 0V bei der standarteinstellung unsigned single-ended normal, siehe xmega au manual).

aktuelle Messungen : Xmega32A4U ADC2 mit ca 220mV beschaltet

Ref intern Bandgap 1,1V , hier höhere differenzen durch die kleinere ref

ADC0:1081
ADC0:1080
ADC0:1078
ADC0:1084
ADC0:1082
ADC0:1082
ADC0:1079
ADC0:1076
ADC0:1076
ADC0:1081
ADC0:1082
ADC0:1078
ADC0:1082
ADC0:1078
ADC0:1086
ADC0:1079
ADC0:1079
ADC0:1084
ADC0:1077
ADC0:1082
ADC0:1083
ADC0:1074
ADC0:1084
ADC0:1083
ADC0:1079
ADC0:1081
ADC0:1077
ADC0:1080
ADC0:1082
ADC0:1079
ADC0:1084
ADC0:1076
ADC0:1082
ADC0:1080

RefA extern 2V mit ADR440

ADC0:631
ADC0:633
ADC0:631
ADC0:632
ADC0:633
ADC0:634
ADC0:631
ADC0:633
ADC0:633
ADC0:633
ADC0:633
ADC0:632
ADC0:631
ADC0:632
ADC0:632
ADC0:632
ADC0:630
ADC0:631
ADC0:632
ADC0:632
ADC0:633
ADC0:632
ADC0:631
ADC0:631
ADC0:633
ADC0:632
ADC0:631
ADC0:630
ADC0:629
ADC0:630
ADC0:631
ADC0:631
ADC0:632
ADC0:632

golf
  • 1
  • 2
  • Page 2 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   108   123 · Page-Gen-Time: 0.036994s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI