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

ATMEGA, SPI i potencjometr cyfrowy (bascom)

sundayman 07 Lis 2011 18:59 5284 14
  • #1 07 Lis 2011 18:59
    sundayman
    Poziom 24  

    Mam następujące pytanie (nie znalazłem niestety nigdzie tej informacji);

    Otóż mam podłączony pod ATMEGĘ 128 potencjometr cyfrowy AD5290, via
    software'owy SPI.

    Niestety, przy projektowaniu PCB pominąłem podłączenie CS tego potencjometru do procesora (błędnie myśląc, że może być podłączony na stałe do GND. Niestety, wg. datasheeta AD5290, na dodatnim zboczu tego sygnału następuje przepisanie odczytanych danych do rejestrów tego układu.)

    Wg. informacji tutaj http://www.eeherald.com/section/design-guide/esmod12.html
    jeśli jest tylko jeden slave na SPI, to SS/CS może być do GND, no ale a tego wynika że z tym potencjometrem chyba nie ?

    Ale, z tego co widzę, na wyjściu (SDO) tego potencjometru jest tylko "powtórka" danych z SDI - zatem, czy mogę pominąć to podłączenie (wtedy mogę sobie tą linię wykorzystać jako CHIP SELECT) ?
    Innymi słowy = czy SPI może działać tylko jako "wyjście" ?
    Jeśli tak, to jak zadeklarować DIN w Config SPI ?
    Do jakiegoś niewykorzystanego pinu ? I co wtedy z nim (podciągać, czy nie...)
    A może w ogóle nie trzeba ?

    0 14
  • #3 08 Lis 2011 10:36
    Luklukowaty
    Poziom 18  

    Układ AD5290 nie posiada interfejsu SPI - posiada interfejs szeregowy, który jest "jakotako" kompatybilny z SPI. (http://www.analog.com/static/imported-files/data_sheets/AD5290.pdf)

    Odnośnie portów to masz tabelkę na stronie 163 pdfa do ATmegi: http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf

    Jednakże uważam, że korzystanie z SPI w sposób akceptowalny dla układu AD będzie kłopotliwy i lepiej napisać własną podprocedurę szeregowo wysyłającą dane przez Twoje porty.

    0
  • #4 08 Lis 2011 13:35
    sundayman
    Poziom 24  

    Ok, dziękuję kolegom.
    Niestety piszę nieco "teoretycznie", bo nie mogę w tej chwili empirycznie sprawdzić, bo czekam dopiero na PCB z płytkarni, ale zauważyłem problem przeglądając po raz pięćsetny schemat, no i narodziła mi się ta właśnie wątpliwość.

    Zatem zapewne sprawa się okaże "w praniu"...
    Natomiast o ile nie ma sensu podłączanie SDO, to o tyle mi ratuje sprawę, że
    nie muszę ciągnąć dodatkowych "drucików", a tylko zmienić programowo piny w MCU i zrobić małe "cięcie" przy samym potencjometrze (estetyka ! :) ), i wykorzystać dotychczasową linię SDI jako SS/CS.

    Dzięki raz jeszcze.

    0
  • #5 05 Maj 2012 16:40
    piwek9
    Warunkowo odblokowany

    Panowie proszę o wyrozumiałość, jestem poczatkujący :|
    Bascom AVR
    Potrzebuje pomocy przy sterowaniu potencjometrem cyfrowym DS1804 procek atmega16
    Chcę zrobić regulator obrotów silnika 230V
    Jak zrobiłem sterowanie pwm ,strasznie miga żarówka , bo na niej testowałem
    Dlatego chcę zrobić regulacje na potencjometr ds1804 i u2008
    Zasadę potencjometru znam tak ogólnie i prowizoryczne sterowanie działa jednak jak się zabrać z kod w Bascom
    Nie bardzo wiem
    Nie oczekuję gotowca , ale uczę się analizując kody działające ,wszelkie wskazówki mile widziane

    0
  • #6 05 Maj 2012 16:58
    sundayman
    Poziom 24  

    To chyba zły pomysł.
    Po pierwsze, taki potencjometr pracuje dla napięć 3/5 V, i nie nadaje się do pracy w układzie z U2008.

    Jeśli regulacja PWM nie działa jak należy, po trzeba ją po prostu poprawić i zrobić dobrze, zamiast wymyślać takie kombinacje.

    Jeśli żarówka sterowana PWM miga, to najprawdopodobniej jest problem albo z wykrywanie przejścia zasilania przez zero, albo stabilnością odmierzania czasu włączania triaka.

    0
  • #7 05 Maj 2012 17:18
    piwek9
    Warunkowo odblokowany

    Ok. dzięki już zapominam o potencjometrze , co do wykrywania zera jestem totalnie zielony
    Próbowałem regulować pwm przez optotrak MOC3041
    Nabazgrałem takie cos w skrócie to jest wycinek programu, chce sterować silnikiem 80W nadmuch do pieca centralnego. pomiar temperatur smagają pięknie a utknąłem na regulacji obrotów męczę się już 2 tygodnie i nic jedna nie poddaje się ,Jak to możliwe proszę o wskazówki jak to zrobić nie ukrywam że koszt tez są ważne

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #8 05 Maj 2012 18:40
    sundayman
    Poziom 24  

    Pokaż schemat.

    0
  • #9 05 Maj 2012 20:05
    piwek9
    Warunkowo odblokowany

    https://obrazki.elektroda.pl/9447369300_1336241046.jpg
    Ogólnie chodzi o to
    Ten kod pokazany wyreparowałem do testów bo nie chciało mi się ciągle wgrywać prawie 16k

    ATMEGA, SPI i potencjometr cyfrowy (bascom)

    Może w tym problem ale jak ustawię pwm=8 to za nic nie wychodzi mi przeliczenie do wyświetlania ciągle na fula mam 102% ale testowałem już różnie , jestem jeszcze cienias jak sku...... dlatego proszę o wyrozumiałość

    To jeszcze bym ogarnął ale mam mało miejsca już i zrobiłem na jednym przycisku i jak doleci do 100 co 5% pokazuje 102 i liczy już 107,112 i mnie szlak nie pomaga
    If proc=100 then
    Proc =0
    'Proc = Pwm1a * 0.09765625
    'Locate 1 , 2
    'Obr = Str(proc)
    'Obr = Fusing(proc , "#.")
    'Lcd "Obroty dmuchawy "
    'Locate 3 , 5
    'Lcd "obr-% " ; Obr ;

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #10 05 Maj 2012 20:41
    korrus666
    Poziom 40  

    MOC3041 się nie nadaje do układu z regulacją PWM. Ten optotriak ma detekcję prsześcia przez zero i nie włączy się w innym czasie. Użyj czegoś prostszego np moc3021.
    Musisz zrobić własny detektor przejścia przez zero i podłączyć pod któreś przerwanie zewnętrzne. Jak przyjdzie przerwanie to w zależności od zadanego wypełnienia odmierzasz odpowiednią ilość czasu z zakresu 0-9 ms i po tym czasie włączasz triak. Przy czasie 0 masz pełne wysterowanie a przy 9 ms około 10%.

    0
  • #11 05 Maj 2012 20:54
    piwek9
    Warunkowo odblokowany

    Podejrzewałem to jednak nie umiem zrobić detekcji 0 a mam jeszcze 4k wolne
    Coś bym zaadaptował z tego jednak nie rozumiem w pełni tego kodu a jak czegoś nie rozumiem nie stosuje
    Gdyby ktoś wypowiedzieć się mógł tak dla głąba jak to działa.
    Kod z tego forum nie mój.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    taka detekcja Ok ?
    jak tym sterować.
    ATMEGA, SPI i potencjometr cyfrowy (bascom)
    Pomoże mi jakaś dobra osoba , mogę się odwdzięczyć w dziedzinie diagnostyki aut.
    Bardzo proszę

    0
  • #12 10 Maj 2012 14:58
    piwek9
    Warunkowo odblokowany

    Panowie bardzo proszę o pomoc co ja tu sknociłem
    Kombinowałem już różnie ale pompa nie załącza się Ok. tylko jak czas jest wyższy od 10 godziny poniżej 10 godziny nie działa
    :idea:
    Ok. wiedze że nic z tego więc problem rozwiązałem sam
    Może komuś kiedyś się przyda .

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #13 11 Maj 2012 13:55
    JarekC
    Poziom 27  

    Witam,

    Masz źle umieszczonego jednego "End If" i warunek załączenia pompy jest sprawdzany tylko przed 10.

    Poprawiony fragment kodu:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
    JarekC

    0
  • #14 11 Maj 2012 14:29
    piwek9
    Warunkowo odblokowany

    Wyżej już cały kod działający OK
    Dzięki serdeczne za odpowiedź uporałem się już z tym pozostało wykrywanie zera i regulacja obrotów silnika
    tutaj jestem zielony jak zrobić regulację obrotów :cry:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #15 10 Wrz 2012 21:14
    sundayman
    Poziom 24  

    Wyjaśniam jak mój temat się zakończył.
    Otóż AD5290, bez podpiętego do MCU wyjścia SDO działa bezproblemowo, korzystając z biblioteki Bascoma.

    Czyli wstępne moje obawy były całkowicie zbyteczne.

    0