[Tinyos-help] TinyOS:Amtega128 ADC values help
Razvan Musaloiu-E.
razvanm at cs.jhu.edu
Mon Jun 2 19:21:29 PDT 2008
Hi!
On Tue, 3 Jun 2008, Varun Jain wrote:
> Hi,
> Thanks a lot as my problem is fixed (I guess!!!!). By removing the code
> from ResourceConfigure, it works fine only if I use ATM128_ADC_VREF_AVCC
> or ATM128_ADC_VREF_2_56 but still gives me 0x3ff with
> ATM128_ADC_VREF_OFF as probably the voltage its reading is above some
> reference so it gives the max value of 0x3ff. But I need to clarify a
> point here. If I am using the internal 2.56V as the reference voltage, I
> get the readings as 0x190 0x191..... which is decimal 400 401 (Vo) so to
> convert this into V(t) to know the temperature, I do something like in
> the OscilloscopeMsg.java file:
>
> -----------------------------------------------------------------------
> V(t) = (Vo / 1024) * 2.56
>
> Now the LM61 temperature sensor datasheet says that there is a DC offset
> of 600mV and its temperature slope is 10mV/degree Celsius
>
> For a Vo of say decimal 400, the result would be something like:
>
> V(t) = (400 / 1024) * 2.56 = 1V or 1000mV (1024 in this equation is
> the resolution of 10 bit ADC)
>
> V(new) = V(t) - 600mV = 400mv
>
> Since temperature slope is 10mV/degree Celsius for LM61, the temperature
> reading from temp sensor that I am reading is:
>
> Temperature = 400 / 10 = 40 degree Celsius
> -----------------------------------------------
>
> AM I on the right path??????? Or am I calculating it wrong???
What you say sounds right to me. :-)
All the best!
Razvan ME
> Thanks a lot for your help....
>
> Cheers,
>
> Varun Jain
> R&D Embedded Design Engineer
> Spiderbox Pty. Ltd.
>
>
>
> -----Original Message-----
> From: Razvan Musaloiu-E. [mailto:razvanm at cs.jhu.edu]
> Sent: Monday, June 02, 2008 11:55 AM
> To: Varun Jain
> Cc: tinyos-help at millennium.berkeley.edu
> Subject: RE: TinyOS:Amtega128 ADC values help
>
> Hi!
>
> On Sun, 1 Jun 2008, Varun Jain wrote:
>
>> Hi,
>> Thanks for your reply. I have taken the basic sensor code from the
>> tos/sensorboards/basicb. Further, I have modified it according to my
>> Chipcon CC2420DBK boards which has an onboard LM61 temperature sensor.
>
>> The code is as follows:
>>
>> generic configuration TempC() {
>> provides interface Read<uint16_t>;
>> }
>> implementation {
>> components new AdcReadClientC(), TempP;
>> components HplAtm128GeneralIOC as AtmGeneralIO;
>>
>> Read = AdcReadClientC;
>> AdcReadClientC.Atm128AdcConfig -> TempP;
>> AdcReadClientC.ResourceConfigure -> TempP;
>> TempP.TempPin -> AtmGeneralIO.PortF3; //WIRING PORT-F3 and then setting it up in TempP
>> }
>>
>> ---------------------------------------------
>> module TempP
>> {
>> provides {
>> interface ResourceConfigure;
>> interface Atm128AdcConfig;
>> }
>> uses {
>> interface GeneralIO as TempPin;
>> }
>> }
>> implementation
>> {
>> async command uint8_t Atm128AdcConfig.getChannel() {
>> return ATM128_ADC_SNGL_ADC3;
>> }
>>
>> async command uint8_t Atm128AdcConfig.getRefVoltage() {
>> return ATM128_ADC_VREF_OFF;
>> }
>>
>> async command uint8_t Atm128AdcConfig.getPrescaler() {
>> return ATM128_ADC_PRESCALE;
>> }
>>
>>
>> async command void ResourceConfigure.configure() {
>> call TempPin.makeOutput();
>> call TempPin.set();
>> }
>>
>> async command void ResourceConfigure.unconfigure() {
>> call TempPin.clr();
>> }
>> }
>>
>> ----------------------------------------------
>
> I found your problem: PortF3 is exactly the ADC3 and you are making it
> output when you are trying to read something from it. I removed the code
>
> from ResourceConfigure.configure and ResourceConfigure.unconfigure and
> then Oscilloscope application star working properly. :-)
>
> All the best!
> Razvan ME
>
>> I am using the Oscilloscope application where DemoSensorC is called
>> which further calls the TempC() module. I am getting constant reading of
>> 03 FF 03 FF 03 FF 03 FF 03 FF in the payload part using the listen tool.
>>
>> If i use the MsgReader tool from Oscilloscope application and connect
>> the serial port on the "BaseStation" application, i constantly get '0xff
>> 0xff.... 0xff' as the readings for "local.readings" in the
>> "OscilloscopeMsg"
>>
>> If i use a voltmeter across the temp.sensor, it gives about 1000mV which
>> is approximately 40 degrees according to LM61 (National Semiconductor
>> temp sensor) datasheet, but my readings still come out to be 03 FF 03
>> FF..., it does not vary at all. Even after putting the temp. sensor in
>
>> front of a hot air source which makes it really hot and voltage changes
>> to 1100mV which is 50 degrees C [10mV/degree C + 600mV(offset) ].
>>
>> Even if i use "ATM128_ADC_VREF_2_56" or "ATM128_ADC_VREF_AVCC" to get
>> the reference voltage, the result is the same, if the reading across the
>> temp.sensor is only 1V then these references should be alright. What is
>> the effect of using "ATM128_ADC_VREF_OFF" but anyways in all cases it
>> gives me 03 FF 03 FF...
>>
>> Thanks.
>>
>> Cheers,
>> Varun
>>
>>
>> ________________________________
>>
>> From: Razvan Musaloiu-E. [mailto:razvanm at cs.jhu.edu]
>> Sent: Sun 6/1/2008 10:21 AM
>> To: Varun Jain
>> Cc: tinyos-help at millennium.berkeley.edu
>> Subject: Re: TinyOS:Amtega128 ADC values help
>>
>>
>>
>> Hi!
>>
>> Sorry for answering so late. :-(
>>
>> On Fri, 30 May 2008, Varun Jain wrote:
>>
>>> Hi,
>>>
>>> I am currently trying to set up a WSN using tinyos-2.x. I have Chipcon's
>>> CC2420DBK with me, it has an onboard temperature sensor LM61 attached to
>>> it with atmega128 processor. I am trying to read the temperature values
>>> from this sensor, I am constantly getting 0x3ff as my data in the raw
>>> packet using the Listen tool. I am trying to get Oscilloscope
>>> application running. I am reading the value on ADC3 channel on PortF3.
>>>
>>
>> The Atmega128 has 10 bits of precision so the 0x3ff is the maximum value.
>> This is the value you'll get if the voltage you are reading is above the
>> reference used by the ADC. How did you configured the ADC? Can you measure
>> the output voltage from temperature sensor with a voltmeter?
>>
>> --
>> Razvan ME
>>
>>>
>>> I read somewhere you discussing about this value. Can you guide me as to
>>> what does this value depict, I think I am reading wrong values as I
>>> keep the board in front of hot air source which really heats up the
>>> sensor but still it gives the same value.
>>>
>>>
>>>
>>> Any help or direction will really help...
>>>
>>>
>>>
>>> Varun Jain
>>> R&D Engineer
>>> Spiderbox Pty. Ltd.
>>> P: +617 3318 9509
>>> F: +617 3318 9595
>>> M: +61401 091 248
>>> E: varun at spiderbox.com.au <mailto:bdarcy at spiderbox.com.au>
>>> W: http://www.spiderbox.com.au <http://www.spiderbox.com.au/>
>>>
>>>
>>
>>
>>
>
More information about the Tinyos-help
mailing list