Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: ACD einlesen Kategorie: CC-Pro Unit & Appl.Board (von tomsfinest - 21.08.2010 12:34)
Als Antwort auf Re: ACD einlesen von Torsten - 20.08.2010 9:01

> > > > > > Hallo,
> > > > > >
> > > > > > ich habe das Projektboard Mega128. Am ADC Port4 lese ich beim Start den Wert eines Potis
> > > > > > als Nullabgleich ein. Dort erhalte ich z.B. den Wert 730 zurück.
> > > > > > Später im eigentlichen Programm (in der Interruptrotine Timer_0 alle 10ms) bekomme ich den Wert ca. 520.
> > > > > >
> > > > > > Die 520 sind aber auch normal.
> > > > > >
> > > > > > Warum wird im Sub Main ein anderer Wert eingelesen als in der Interruptrotine?
> > > > > >
> > > > > > Der Wert wird wie folgt eingelesen.
> > > > > >
> > > > > > Dim Buf as Integer
> > > > > > ADC_Set(0xC0,4)  'Port4 - Refspannung 2,56V
> > > > > > Buf = ADC_Read()
> > > > > >
> > > > > > Bei den Anderen Port benutze ich auch die anderen Referenzspannungen
> > > > > > VCC '5V
> > > > > > Ext ca. 2,8V
> > > > > >
> > > > > > Was ist im Sub-Main anders als in der Interruptrotine?
> > > > > >
> > > > > >
> > > > > > 2. Frage: Bei dem Projektboard bekomme ich in der Interruptrotine keine Debug mehr hin.
> > > > > >    Der Debugmode funktioniert nur beim Start in der Sub-Main bevor der Timer_0 gestartet wird.
> > > > > >
> > > > > > Gruss Christian
> > > > >
> > > > > Hallo,
> > > > >
> > > > > Der Wert, den der AD Wandler zurückgibt, errechnet sich wie folgt:
> > > > >
> > > > > Die Aüflösung des Wandlers ist Uref/1024
> > > > > Der Messwert ist also Uref/Umess*1024
> > > > >
> > > > > Wenn Du mit verschiedenen Referenzen arbeitest, bekommst Du natürlich auch verschiedene Messwerte!!
> > > > >
> > > > > Mit dem Debug kann ich Dir leider auch nicht helfen.
> > > > >
> > > > > Grüsse Tom
> > -----------------------------------------------------------------------------------------------------------------
> >
> > Hallo Tom,
> > danke für die Antwort. Leider wusste ich das schon und bringt mich so nicht weiter.
> >
> > Ich habe jetzt folgendes festgestellt.
> > Wenn ich ADC_Read() 2x hintereinander aufrufe sind die Werte dann Normal.
> > z.b.
> > Dim Buf as Integer
> > Dim Buf1 as Integer
> >  ADC_Set(ADC_VREF_BG,4)  'Port4 - Refspannung 2,56V
> >  Buf = ADC_Read()
> >  Buf = ADC_Read()
> >  ADC_Set(ADC_VREF_VCC,1)  'Port4 - Refspannung 5,00V
> >  Buf1 = ADC_Read()
> >  Buf1 = ADC_Read()
> >
> > Ich hatte vorher ein Applikationboard, dort braucht ich nur einmal ADC_Read aufrufen.
> > Der einzige grosse Unterschied zwischen diesen beiden Boards ist der Kondensator am Aref.
> > Beim Applikationboard ist dieser in der SMD Bauform und beim Projektboard als Tropfenform ausgeführt.
> > Kann es sein das der Kondensator mir die Probleme auslöst. Ich habe auch das gefühl das die Werte schwanken.
> > So ein Kondensator braucht ja auch eine gewisse Zeit, eh er geladen/entladen ist.
> > Ich hatte mir die gleiche Schaltung aufgebaut mit dem selben Sensoren.
> >
> > Gruss Christian
> >
> >
> >
>
>
> Hallo Christian
>
> Mit einen 10pF Kondensator gegen Masse lä�t sich der
> Porteingang stabilisierten.
>  
>  Die AD-Wandlung braucht Zeit.
>  Mein Vorschlag:
>
> word w_ad_value;
> void ThreadGetADValues(void)
>  {
>   while(true)
>    {
>     Thread_Wait(1, 1);
>     ADC_Set(ADC_VREF_VCC, PORT_NR);
>     ADC_StartInt();
>     Thread_Wait(1, 1);
> // w_ad_value verarbeiten
>     SendToAuthor(w_ad_value);
>     }
>   }
>
>  void InterruptADC(void)
>    {
>    w_ad_value = ADC_ReadInt() & 0x03FF;
>    Irp_GetCount(INT_ADC);
>    Thread_Resume(1);
>    }
>
>  void main(void)
>    {
>    Irq_SetVect(INT_ADC, InterruptADC);
>    Thread_Start(1, ThreadGetADValues);
>
>    while(true)
>     {
>     if(???)
>        Thread_Resume(1);
>     }
>    }
>
>  Torsten

Hallo,

zum Kondensator an Uref ist mir folgendes aufgefakllen:

Uref ist eine Konstantspannung, Auf-und Entladezeiten sind hier unkritisch, der Kondensator diend
lediclich zur Stabilisierung. Ã?blicherweise ist er 10 nF (wenn auch manchmal anders angegeben),
allerdings gibt es verschiedene Materialien. SMD-Kondensatoren sind meist KDPU-Typen
(Keramik-Schicht-Kondensatoren), die haben prinzipbedingt immer einen gewissen Leckstrom.
Für höhere Ansprüche sollte man einen Folienkondensator verwenden, ist nur etwas grösser in der Bauform.

Grüsse Tom


    Antwort schreiben


Antworten:

Re: ACD einlesen (von Christian - 21.08.2010 23:29)