ADC Frage

  • 1
  • 2
  • Seite 1 von 2
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

ADC Frage

 · 
Gepostet: 22.12.2014 - 13:20 Uhr  ·  #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
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: ADC Frage

 · 
Gepostet: 22.12.2014 - 13:58 Uhr  ·  #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
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: ADC Frage

 · 
Gepostet: 22.12.2014 - 15:23 Uhr  ·  #3
You do not give your var definitions. Without this it is difficult to help.
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: ADC Frage

 · 
Gepostet: 22.12.2014 - 15:45 Uhr  ·  #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
Geschlecht: keine Angabe
Alter: 69
Beiträge: 16
Dabei seit: 11 / 2009
Betreff:

Re: ADC Frage

 · 
Gepostet: 22.12.2014 - 17:49 Uhr  ·  #5
Hi beginner,

FloatAsLong ????
Typecasting ???

fan
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: ADC Frage

 · 
Gepostet: 22.12.2014 - 18:06 Uhr  ·  #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
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: ADC Frage

 · 
Gepostet: 22.12.2014 - 21:07 Uhr  ·  #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
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: ADC Frage

 · 
Gepostet: 23.12.2014 - 09:34 Uhr  ·  #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
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   139   153 · Page-Gen-Time: 0.034783s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI