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

Podlaczenie do uP 8051 trzech przetwornikow C/A

03 Mar 2005 18:49 1745 17
  • Poziom 10  
    Wykonuje projekt generatora sygnalu trojfazowego sinusoidalnego.

    Problemem jest kwestia podlaczenia trzech przetwornikow do uP ( mam taki warunek zadany w projekcie). Posiadam wyprowadzony sygnal przesuniety w fazie o 120 stopni w formie TTL na wyjsciach trzech koncowkach portu w uP i z tego co wiem kazdy z sygnalow trzeba "w jakis" sposob podlaczyc do przetwornika C/A. Na tym wlasnie stanalem i nie wiem w jaki sposob podlaczyc przetworniki - chodzi mi o dokladny opis. Jezeli ktos ma jakas koncepcje to serdecznie prosze o pomoc.
  • Pamięci IndustrialPamięci Industrial
  • Poziom 32  
    Trochę tego nie rozumim. Jaki sygnał TTL masz przesunięty o 120 stopni ? Jedno bitowy czy więcej bitów. Jest to trochę nie jasne. Generalnie robi się to na trzech PWM i nie trzeba żadnych zewnętrznych przetworników C/A.
  • Pamięci IndustrialPamięci Industrial
  • Poziom 10  
    Za sterowanie wyjściem odpowiedzialny jest układ czasowo licznikowy T1. Generuje on cykliczne przerwanie, którego czas obliczany na podstawie częstotliwości ustawianej za pomocą klawiatury.
    Za sterowanie wyjściem odpowiedzialny jest układ czasowo licznikowy T1. Generuje on cykliczne przerwanie, którego czas obliczany jest na podstawie częstotliwości ustawianej za pomocą klawiatury.

    W załaczniku przedstawiłem ideę tworzenia sygnału trójfazowego. Jak widać na rysunku sygnały są przesunięte względem siebie o kąt fazowy 120°. Aby wygenerować taki sygnał program obsługi przerwania będzie kolejno sprawdzał numer próbki. Czas między próbkami odmierzać będzie licznik T1. Do licznika należy wpisać odpowiednią wartość początkową odpowiadającą za czas, po którym będzie sprawdzany numer próbki. W momencie przepełnienia licznika zgłosi się przerwanie od licznika T1 program obsługi przerwania po kolei będzie sprawdzać wartości próbek a gdy trafi na próbkę o numerze o jeden większą od poprzedniej to zgodnie z rym numerem będzie wystawiał na linie portu P3.2, P3.3 i P3.5 odpowiednie kombinacje bitów. Po wykryciu przerwania i sprawdzeniu po kolei, który numer próbki był ostatnio samoczynnie zwiększy się o 1 i wraca do programu głównego. Po wykryciu próbki numer 5 będzie się samoczynnie zerował. Jedna próbka wynosi (pi)/6 okresu - jest 6 próbek od 0 do 5. Niestety te trzy przetworniki musze zastosować, taki mam wymóg.
  • Poziom 32  
    No dobra a ilu bitowe mają być te przetworniki i jakie sygnały będą przetwarzać na analog ? Chyba nie te pojedyncze bity faz !
  • Poziom 19  
    Witam!

    Budowałem kiedyś podobne urządzenie - w 4 kanałach generowane były przebiegi analogowe - wartości poszczególnych próbek przechowywane były w pamięci FLASH i kolejno podawane na wyjścia. Nie korzystalem z 3 różnych przetworników C/A, ale z przetwornika 4-kanałowego DAC8426. Steruje się nim naprawdę prosto - ma 8 linii danych, 2 linie adresowe i linię inicjującą przepisanie wartości na wyjście. Po prostu podawałem wartość próbki z pamięci na linie danych, ustawiałem numer kanału na liniach adresowych i opadające zbocze na linii /WR powodowało ustawienie odpowiedniej wartości napięcia w wybranym kanale.
  • Poziom 10  
    GienekS napisał:
    No dobra a ilu bitowe mają być te przetworniki i jakie sygnały będą przetwarzać na analog ? Chyba nie te pojedyncze bity faz !


    Co do ilości bitów przetwornika to mam sam zedeklarować optymalne rozwiązanie ( myślę że ośmiobitowe bedą odpowiednie). I właśnie te pojedyńcze bity wystawione na tych trzech liniach portu maja przetwarzać na analogowy sygnał.
    To jest forma projektu i takie są wytyczne promotora - nie podawał mi konkretnych parametrów. Wiem tylko że zakres regulowanej częstotliwości ma być 10-200 Hz i to juz mam wykonane za pomocą przerwań licznika. Teraz kazał mi każdy z sygnałów wyjściowych "przepuścić" przez przetwornik C/A i przede wszystkim zastanowić sie jak je podłączyć ze sobą. Tutaj nie tyle chodzi o jakość sygnału na wyjściu przetworników tylko o samą ideę podłączenia owych przetworników.
    Wiem że to co pisze może wydawać się mało profesjonalne ale to nie moje wymysły.
  • Poziom 21  
    Gwoli ścisłości stworzyłeś przestrajany generator 3 fazowy o regulowanej częstotliwości. Twoje wyjścia mówią tylko o jednym - kiedy np. faza 1 przechodzi przez 0, kiedy 2 itd. Taką informację możesz co najwyżej wykorzystać do synchronizowania. Aby to zastosować w przetworniku C/A musisz stworzyć tablicę wartości numerycznych sinusa poszatkowanego np. na 16 kawałków w okresie 2pi. W zarysie wygląda to tak:
    czas 0 wartość 80HEX (a może 7F)
    .....
    czas pi/2 wartość FFHEX
    ......
    czas pi wartość 80HEX
    ......
    czas 3/2pi wartość 00HEX
    ......
    czas 2pi wartość 80HEX (tutaj tylko przykładowo dla 4 wartości, dla 2pi to samo co dla 0)

    No i teraz najważniejsze - wchodzisz do tablicy odpowiednio szybciej (tyle razy ile masz kawałków sinusa) pobierasz stosowną wartość i wystawiasz to na przetwornik. Takim sposobem twój cykl przerwań powinien pracować odpowiednio szybciej. oczywiście dla trzech faz stosujesz oddzielne przetworniki, które mogą być podłączone równolegle dla danych, jeno piny typu CS sterowane z osobnych nóżek proca - w sumie 11 nóg zajętych przy 8bitowym słowie. Pomijam dokładność tak generowanego sinusa, to osobny temat.
  • Poziom 10  
    Wielkie dzieki Wszystkim ... koncepcje juz mi podeslaliscie - teraz tylko musze sie wziasc za realizacje w trakcie ktorej na pewno bede Was informowal o moich problemach :/
  • Poziom 10  
    Znacie moze adres stronki na ktorej znajde dokladny schemat polaczec uP 8051 z C/A ?
  • Poziom 10  
    Mam problem z regulacja amplitudy. Sadze ze powinna sie ona odbywac na wyjsciu przetwornika i za pomoca jakiegos wzmacniacza (tylko nie wiem dokladnie jakiego). Zakres regulacji mam sobie dobrac samemu i mam korzystac z tej samej klawiatury co do regulacji czestotliwosci. Jest teszcze problem tego typu - czy zastosowac jeden wzmacniacz dla trzech przetwornikow ...czy moze jeden do ktorego wprowadzam trzy sygnaly.
    Porsze o pomoc.
  • Poziom 21  
    Jak ciągnąć koncepcyjnie temat to ciągnąć. Może tak: pokażdym przetworniku A/C jeden wzmacniacz op. oddzielnie dla każdego kanału. Problem jawi się taki - jak dla kilku jednocześnie regulować współbieżnie wzmocnienie - przeglądnij różne układy w literaturze i to jest do zrobienia, ale kłopotliwe w realizacji. Eleganckim rozwiązaniem dziś to sterowany cyfrowo potencjometr elektroniczny (3 sztuki) np. firmy Xicor (bez reklam) ale to koszty. Sterowanie dla nich to bułka z masłem - dodatkowo 3 sygnały typu CS (a może nawet wszystkie ich CS zwarte razem i 1 tylko sygnał) i prościuteńkie przesłanie danych . Wybieraj optymalne rozwiązanie po analizie całości.
  • Poziom 10  
    Dzieki "frohme" - tak jak poleciles przedstawilem takowa propozycje jednak spotkalo sie to z odmowa promotora :) Regulacje amplitudy podobnie jaki czetotliwosci trzeba wykonac za pomoca klawiatury - w czym mi juz pomogles. Nawet nie spodobalo mu sie zastosowanie przetwornikow C/A 8 bitowych ...zalecil 10 lub 12 bitowe bo trudniejsze sa do podlaczenia :)

    Pozdrawiam
  • Pomocny dla użytkowników
    Generator robisz tak:

    wypełniasz tablicę 240 elementową wartościami sinusa od 0 do 360

    ustawiasz wskaźniki

    w1:=0
    w2:=80
    w3:=160;

    przerwanie_timera (częstotliwość_wy=240/okres_przerwań)

    {jeżeli procesor by się nie wyrabiał to zrób mniejszą tablicę tsin np. 120 albo 90 byle podzielną przez 3}

    dac1:=tsin[w1]; {Najpierw wysyłasz wartości bo modyfikacje wsk mają zmienny czas wykonania}
    dac2:=tsin[w2];
    dac3:=tsin[w3];

    {modyfikujesz wskaźniki}

    w1:=w1+1;
    if w1>239 then w1:=0;

    w2:=w2+1;
    if w2>239 then w2:=0;

    w3:=w3+1;
    if w3>239 then w3:=0;

    Delay; czas opóźnienia dla uzyskania odpowiedniej częstotliwości

    until false;


    Zmianę amplitudy możesz uzyskać np przez dodanie dwóch przesunietych sinusoid:

    0 stopni Uwy=2*sin
    180 (120 kroków) stopni =0

    przykładowo (tsin=0.5*sin(fi))

    dla jednego kanału:

    w1=aktualna wartość fazy {numer probki w tablicy}
    pom=w1+n {n=0 do 120 <- zmieniasz klawiszami }

    {Uwaga dodawanie 16 bitowe}

    if pom>239 then pom:=pom-240

    dac:=tsin[w1]+tsin[pom]; { i uniknąłeś mnożenia }

    zmiana amplitudy jest trochę nieliniowa ale jest

    można też linearyzować zmianę amplitudy przez odczyt n z tablicy pośredniej.
  • Poziom 10  
    Dzieki za propozycje Pawle.

    Nie wiem czy dobrze rozumuje ...

    Ta talblice sinusa tworze w pamieci RAM i kazda faza ma inny wskaznik w danym przerwaniu.

    Jakbym chcial uzyskac wzor na regulowana czestotliwosc to moze on miec postac: ? czestotliwosc_wy=240/fw*okres_przerwan
    przy czym fw-deklarowana wartosc czestotliwosci z klawiatury

    Dlaczego poczatkowe ustawienie wskaznikow dla kolejnych faz wynosza
    w1:=0
    w2:=80
    w3:=160
    a nie np.
    w1:=0
    w2:=120
    w3:=240

    Dzieki za pomoc.
  • Pomocny post
    Poziom 21  
    Na pierwsze pytanie: Coś nie tak - na podstawie deklarowanej fw musisz obliczyć okres przerwań w zależności od długości obszaru tablicy, a we wzorze to trochę masło maślane.
    Na drugie pytanie: kolejne wskaźniki pokazują na kolejną 1/3 całego obszaru - dla długości tablicy 240 to będzieodpowiednio 0, 80 i 160. Jeżeli obszar byłby długości 360 to tak jak w twojej wersji.
  • Poziom 10  
    Frohme ... ja wlasnie tak rozumowalem co do tej czestotliwosci ale znowu mi chyba z prezentacja nie wyszlo :) Co do wzoru to juz jestem troche zmieszany. Ale to jeszcze mozna dograc - wazne aby logika byla odpowiednia.

    Z tymi wskaznikami to juz wszystko jasne. Zle sobie to wyobrazilem ... jak przesuniemy o 1/3 pi to otrzymamy poczatek kazdej fazy od 0.
  • Pomocny post
    Pomocny dla użytkowników
    Częstotliwość wyjściowa wynika z faktu, że odtworzenie jednego okresu z tablicy wymaga wykonania 240 kolejnych odczytów czyli, że:

    Fwy=Fprzerwań/240 {Rąbnąłem się w pierwszym poście :oops: }

    A ogólnie:

    Fwy:=Fprzerwań/N

    gdzie

    Fprzerwań - częstotliwość przerwań
    N - długość tablicy sinusa.

    Użyta metoda zmiany częstotliwości przerwań dla zmiany Fwy ma pewną wadę, bo wymaga dania po każdym przetworniku C/A filtru dolnoprzepustowego strojonego na fwy by wyciąć produkty próbkowania (Maxim takie robi, są strojone częstotliwością zegara)

    Inną metodą jest użycie stałej częstotliwości próbkowania (przerwań) ale używanie ułamkowych przyrostów wskaźników:

    tj. wskaźnik ma część całkowitą i ułamkową (np. całość ma 16 bitów z czego 8 bitów to ułamek)

    Do adresowania tablicy bierzemy tylko część całkowitą czyli np. 8 starszych bitów.

    fwy=(fprzerwań/N)*w

    N - długość tablicy
    w - wskaźnik <0..N/2)

    w=k+l/256

    k - cześć całkowita przyrostu fazy z zakresu 0..(N/2)-1
    l/256 - część ułamkowa l=0..255

    dla w=1.5 kolejno będą odczytywane komórki tsin

    0, 1, 3, 4, 6

    Jeżeli zastosujemy zaokrąglanie fazy (Int(faza+0.5)) to odczyt będzie

    0, 2, 3, 5, 6, ...

    Metoda powyższa ma następujące zalety:

    1. Daje większą rozdzielczość częstotliwości
    2. Częstotliwość zmienia się liniowo ze stałym skokiem w całym zakresie regulacji

    skok częstotliwości wynosi fprzerwań/(256*N).

    3. Filtr wyjściowy ma stałą częstotliwość odcięcia (bo częstotliwość próbkowania jest stała)

    Dla poprawnej pracy układu nie należy przekraczać fwy=0.4*fprzerwań ze względu na realizowalność filtru wyjściowego (analogowego).
    W układach z filtrami cyfrowymi f max wynosi 0.45 do 0.48 fprzerwań.

    Przesunięcie fazy obliczamy dodając do części całkowitej przesunięcia o 1/3 i 2/3 długości tablicy (z zapętleniem na długości tablicy - okresowość sinusa)
  • Poziom 10  
    Dzieki za obszerne wyjasnienia.

    Co sie tyczy czestotliwosci to odpowiedni dla mnie bedzie pierwszy sposob - bo jest malo klopotliwy (ze wzgledu na realizacje) no i nie mam potrzeby idealizowania przebiegu w swoim projekcie. Wystarczy ze przepuszcze sinusoide przez przetworniki - bo chodzi glownie o rozwiazanie techniczne a nie typowo elektroniczne.Takie mam wytyczne od promotora.

    Jestem wdzieczny za opis drugiej metody zmiany Fwy - bede bogatszy o kolejna mozliwosc rozwiazania.Przyznam sie szczerze ze musialbym troche doczytac aby ja biegle stosowac - bo odzywaja sie zaleglosci z analogowki.

    Pozdrawiam