ADC Frage

  • 1
  • 2
  • Page 1 of 2
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

ADC Frage

 · 
Posted: 22.12.2014 - 13:20  ·  #1
Hallo, ich spiele gerade mit dem ADC an einen AtMega rum.

Uv:= GetAdc(1);
tmp:= Uv * 0.00488;

Dabei bekomme ich einen Fehler und weiß nicht weiter, könntet ihr mir einen Tipp geben ?

mfg
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: ADC Frage

 · 
Posted: 22.12.2014 - 13:58  ·  #2
Also das habe ich jetzt hinbekommen, das ich mir die Spannung am ADC richtig auf LCD angezeigt wird

Uv:= GetAdc(1);
tmp:= (Float(Uv) * 0.00488);


Das wäre meine ganze Formel, nur das bekomme ich nicht mehr hin
//ohm:= ((1000*(tmp/5)) / (1-(tmp/5))); //calculating the unknown resistance
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: ADC Frage

 · 
Posted: 22.12.2014 - 15:23  ·  #3
You do not give your var definitions. Without this it is difficult to help.
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: ADC Frage

 · 
Posted: 22.12.2014 - 15:45  ·  #4
Sorry Merlin

Code

  Uv   : word;     
  tmp  : float;
  tmp1 : longword;
  tmp2 : longword;
  tmp3 : longword;
  ohm  : word;



//ohm:= ((1000*(tmp/5)) / (1-(tmp/5))); //calculating the unknown resistance
//              tmp3          tmp3
    LCDxy(0, 0);
    Uv:= GetAdc(1);
    tmp:= (Float(Uv) * 0.00488);    //tmp fload
    
    tmp1:= FloatAsLong(tmp);        //tmp1 longword
    
    tmp3:= tmp1 div 5;
    tmp1:= tmp3 * 1000;  //49600    //tmp2 longword

    tmp2:= tmp3 - 1;

    tmp3:= tmp2 div tmp1;
    
   // tmp3:= LongAsFloat(tmp1);



    Write(LCDout, 'Rx              ');
    Write(LCDout, 'Rx ' + IntToStr(ohm));
    mDelay(20);




Ich blick da nicht mehr durch.

mfg
AVRfan
Benutzer
Avatar
Gender: n/a
Age: 68
Posts: 16
Registered: 11 / 2009
Subject:

Re: ADC Frage

 · 
Posted: 22.12.2014 - 17:49  ·  #5
Hi beginner,

FloatAsLong ????
Typecasting ???

fan
Attachments
ADC Frage
Filename: 2014-12-22_182047.jpg
Filesize: 32.37 KB
Title:
Download counter: 130
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: ADC Frage

 · 
Posted: 22.12.2014 - 18:06  ·  #6
Hallo, na ja ich habe es doch noch geschafft, höhere Widerstände als 100 Ohm werden
gut ermittelt mit der Schaltung die ich jetzt habe. Naja 1kOhm Widerstand in Reihe mit dem Prüfling.

Aber unter 10 Ohm brauche ich so nicht weiter zu machen.



Code

var
  Uv   : word;     //
  tmp  : float;
  tmp1 : float;
  tmp2 : float;
  tmp3 : float;
  ohm  : string[8];
  ADC1 : word;     //ADC
{--------------------------------------------------------------}
{ functions }
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
  DDRC := %11111000;
  PortC:= %11111000;
  LCDcursor(false, false);
  EnableInts;
  LCDxy(0, 0);
  loop
//ohm:= ((1000*(tmp/5)) / (1-(tmp/5))); //calculating the unknown resistance
    Uv:= GetAdc(1);
    tmp:= (Float(Uv) * 0.004819);
    tmp3:= tmp / 5;
    tmp1:= tmp3 * 1000;
    tmp2:=  1 - tmp3;
    tmp:= tmp1 / tmp2;
    ohm:= FloatToStr(tmp);
    LCDxy(0, 0);
    Write(LCDout, 'Rx ' + ohm);
    mDelay(5);
    lcdclr;
  endloop;
end Dampf_Coil.

Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: ADC Frage

 · 
Posted: 22.12.2014 - 21:07  ·  #7
Ich hab ja keine Ahnung wie die zugehörige Schaltung aussieht, aber ich würde eine Konstantstromquelle für die Versorgung des Widerstandes nehmen und einen ADC mit 12...14...16...18 Bit. Der MCP3421 ist relativ günstig, bei Reichelt zu bekommen und hat eine interne Referenz mit 0.05% und 18 Bit ..... I2C.

Gruss
Harry
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: ADC Frage

 · 
Posted: 23.12.2014 - 09:34  ·  #8
Guten morgen Harry,
ich brauche ein mOhmmeter das sehr genau von 0-10 Ohm anzeigt.
Meine ersten Gehversuche war halt mit einem AtMega 8 und den internen ADC vom AtMega8
Und halt auch die Programmierung, wie ich den ADC auslese (GedAdc(1))
Danach die richtige Darstellung als ohm im LCD Display.

Bei Reichelt kostet dein chip gerade mal 2,15€ den werde ich mir auch holen
und damit etwas aufbauen.
  • 1
  • 2
  • Page 1 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   140   155 · Page-Gen-Time: 0.03341s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI