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 Christian - 21.08.2010 23:29)
Als Antwort auf Re: ACD einlesen von tomsfinest - 21.08.2010 12:34
Ich nutze:
C-Control Pro Mega128
> > > > > > > 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
-------------------------------------------------------------------------------------------------
Hallo,
ich habe den Kondensator jetzt rausgebaut.
Und siehe da, es funktioniert.
Das Problem wahr der wechsel der Referenzspannung von 5V auf 2,56V.
Ehe der Kondensator die Spannung abgebaut hat, wurde der Messwert schon einglesen.
z.B.
Meine Messspannung 2V ergibt bei Vref 2*1024/2,56 = 800
Wenn jetzt ab dadurch Vref jetzt noch 3V hat, dann ergibt sich ja 2*1024/3V = 682

Was macht ihr, wenn jetzt noch die ext Referenzspannung dazu kommt?
Vref zb. 3V Dann liegt ja indem Moment bei Vref 5V auch 5V am Vref an. Dh. die 5V
liegen auch bei dem Ext.Vref Geber dann an.
Im ungünstigsten Fall, würde ich mir mein Bauteil zerschiessen. Dann würde nämlich 5V anliegen, anstatt 3V.

Gruss Christian


    Antwort schreiben


Antworten: