logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega16 [bascom] - Atmega 16 + max31855 błędne odczyty temperatury

CyccX 05 Kwi 2013 18:24 2241 1
  • #1 12159519
    CyccX
    Poziom 15  
    Witam,

    nie mogę sobie poradzić z uruchomieniem scalaka max31855 w współpracy z atmega16.
    nota : http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf

    z tego co mi wiadomo układ max31855 miał być zamiennikiem poprzedniego układu max6675 ale niestety coś u mnie nie za bardzo.

    na początku do odczytu chciałem wykorzystać sprawdzony kod który działa w 100% z układem max6675

    jego istotny fragment:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    lecz niestety pokazuje bzdury. Po dostosowaniu tego kodu do wersji 31855 które pracuje na słowie 31bit powstało takie coś:


    Kod: text
    Zaloguj się, aby zobaczyć kod


    również nic. Odnalazłem na forum temat z podobnym problemem https://www.elektroda.pl/rtvforum/topic2357296.html lecz tutaj nie został on rozwiązany gdyż sam zainteresowany zmienił język programowania na C, a ja niestety C nie znam w ogóle.
    Jest tam wzmianka że bascom może sobie nie radzić z funkcja shiftin do długiej zmiennej typu Long, lub po prostu programowe SPI może źle funkcjonować.
    Więc napisałem swoją ręczną obsługę transmisji danych z scalaka max do atemga. Zrobiłem to najprostszą metodą bo tylko tak potrafię :) o to cały kod, jest trochę w nim chaosu ale główne elementy są widoczne:

    Kod: text
    Zaloguj się, aby zobaczyć kod

    podprogram ODCZYT ma za zadanie odbieranie 31 bitów z max31855 i zapisywanie ich w odpowiednie pozycje w zmiennej typu long.
    podprogram Tempt ma za zadanie wydobyć te bity które odpowiedzialne które niosą informację o temperaturze.

    Niestety nadal i tak to nie działa podczas pracy układu, wyświetlając zmienna max1data wartość jest kosmiczna -2803596... i więcej nie mieści mi się na wyświetlaczu - za każdym razem wartość się zmienia.
    Wyświetlając zmienna Tempt wartość wynosi zawsze ponad 30 000.

    Wszystko to z podłączoną poprawnie termoparą. Termopara na pewno ok bo podłączając ją do układu z max6675 odczyty są poprawne.

    Panowie pomóżcie, czemu ten mały uparty scalaczek nie chce współpracować. Obsługa max6675 jest dziennie prosta, a ten nowszy model robi jakieś problemy ://.

    Oczywiście zasilanie 3.3v.

    06.04
    żadnych pomysłów w tym temacie ??

    a może wykorzystanie sprzętowego SPI rozwiązało by problem ??
  • #2 12168521
    CyccX
    Poziom 15  
    dla potomnych,

    źródłem problemów odczytu danych z max31855 są zakłócenia. Ten scalak nie jest tak odporny na zakłócenia na linii T+/- jak max6675.
    Kondensator wpięty miedzy wejścia T+/- rozwiązał problem.

    pozdrawiam
REKLAMA