Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

LM50 + MCP3021 - Nie odczytuje temperatury - BASCOM

drachabass 30 Gru 2012 14:41 1053 1
  • #1 30 Gru 2012 14:41
    drachabass
    Poziom 11  

    Witam wszystkich forumowiczów...

    Jestem dosyć początkującym programistą mikro kontrolerów, więc proszę o wyrozumiałość.

    Posiadam płytę ewaluacyjną AVT5311 na której znajduje się czujnik temperatury lm50 oraz układ mcp3021. Korzystając z wcześniejszych porad dotyczących odczytu temperatury z czujnika DS18B20 napisałem kod w bascomie. Oczywiście mam świadomość, że będzie on inny w moim przypadku. Natomiast nie mogę poradzić sobie w odczycie dokumentacji mcp3021 i napisaniu odpowiedniego kodu. Proszę więc o pomoc kolegów.
    Z tego co przeczytałem pierwszą już różnicą jest to, że MSB jest wysyłane jako pierwsze, niż jak to jest w przypadku DS18B20.

    Oto kod:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dzięki za pomoc.

    0 1
  • Arrow Multisolution Day
  • Pomocny post
    #2 30 Gru 2012 18:44
    emarcus
    Poziom 35  

    drachabass napisał:
    Witam wszystkich forumowiczów...



    Posiadam płytę ewaluacyjną AVT5311 na której znajduje się czujnik temperatury lm50 oraz układ mcp3021. Korzystając z wcześniejszych porad dotyczących odczytu temperatury z czujnika DS18B20 napisałem kod w bascomie. Oczywiście mam świadomość, że będzie on inny w moim przypadku. Natomiast nie mogę poradzić sobie w odczycie dokumentacji mcp3021 i napisaniu odpowiedniego kodu. Proszę więc o pomoc kolegów.


    Oto kod:

    $regfile=„m32def.dat”
    $crystal = 1000000

    Config1wire=Portb.4
    '....................


    Jeżeli zastosowałeś LM50 jako sensor temperatury to nie możesz pod żadnym pozorem stosowac protokołu dla 1-wire, którym posługuje się DS18B20.
    Te dwa urzadzenia nie są w żadnym stopniu podobne. Jedyne podobieństwo to tylko to, że oba są stosowane do pomiaru temperatury w podobnym zakresie lecz process i interpretacja wyniku dla każdego są zupełnie inne.
    Poza tym i ten przedstawiony code dla DS18b20 nie jest poprawny.
    Zacznij od zapoznania sie datasheet dla każdego z tych (3-ech) wymienionych urządzeń.
    DS1820 jako output daje gotową temperaturę [stC] mierzonego otoczenia wyrażoną w postaci cyfrowej; i ten wynik pozostaje przekształcic do zrozumiałej dla człowieka formy dziesiętnej.
    LM50 jest o wiele prostszym urzadzeniem liniowym, którego output jest w postaci napięcia proporcjonanego do temeratury w st.C. Zmiany te są określone zależnością [10mV/stC] z 500mV offset.
    W tym wypadku potrzebujesz (w jakichś sensownych interwałach czasowych) odczytywac to napięcie i odpowiednio je interpretowac rachunkowo do przystepnej dziesietnej formy.
    Skoro jesteś początkujący to właśnie na początek posłuż sie ADC wbudowanym w microcontroller; - ten jest też 10 bitowy.
    W kolejnym cwiczeniu możesz włączyc w układ MCP3021 pod kątem uzyskania praktyki w stosowaniu kommunikacji 2WI (I2C).

    e marcus

    0