Skocz do zawartości
Zaloguj się, aby obserwować  
g.voodoo16

[C][ATtiny2313] Problem z ustawieniem FastPWM

Pomocna odpowiedź

Witam,

postanowiłem wygenerować sygnał PWM o częstotliwości 50Hz, do sterowania turbiną. Korzystając z artykułu Trekkera, wiem na czym to polega, natomiast nie udaje mi się takiego sygnału uzyskać. Oto mój kawałek kodu, który według mnie powinien chodzić:

//---------------------------------------------------------------
// OBSLUGA TURBINY (WYPELNIENIA
//---------------------------------------------------------------
void turbina(uint speed){
 if(speed < 1000) speed = 1000;
 else if(speed > 2000) speed = 2000;

 OCR1A = speed;
}

//--------------------------------------------------------------
// KONFIGURACJA PWM DLA TURBINY
//--------------------------------------------------------------
void init_turbina(){

   TCCR1A |= (1<<COM1A1);
   TCCR1A |= (0<<COM1B1);

          TCCR1B |= (1<<WGM13);
   TCCR1B |= (1<<WGM12);

   TCCR1A |= (1<<WGM11);
   TCCR1A |= (0<<WGM10);

   TCCR1B |= (1<<CS11); // preskaler na 8

   ICR1 = 20000 ;
}

Całość odpalam w main():

 // PB3 jako wyjscie turbiny
 DDRB |= (1<<PB3);

 // uruchamia PWN dla turbiny
init_turbina();

turbina(1000);
 _delay_ms(4000);
 turbina(1300);

Schematu nie daję, bo jest to złożony na płytce stykowej ATtiny2313 zasilany z programatora(5V), a do Vcc podlączony jest kondensator 100nF. Fusy ustawione na 8MHz [-Ulfuse:w:0x64:m -Uhfuse:w:0xdf:m ]

Częstotliwość jaka jest generowana waha się od ~49-50,9HZ, ale nie przypomina to nawet przebiegu prostokątnego ;c

Proszę o pomoc.

Pozdrawiam,
g.voodoo16.

Udostępnij ten post


Link to post
Share on other sites

A co przypomina? Bo jakoś nie wydaje mi się możliwe, by sygnał z prawidłowo podłączonego portu cyfrowego nie był prostokątny. Czym to oglądasz i w jakich warunkach?

Udostępnij ten post


Link to post
Share on other sites

Po pierwsze zmień :

_delay_ms(4000)

na:

for(i=0;i<400;i++)
{_delay_ms(10);}

Miałem podobny problem (sygnał był bardzo nierówny i "skakał")

Winą było to że wartość OCRx była za mała, po zmianie jej na większą sygnał zaczął wyglądać jak powinien. Był to mój 1 projekt i podłączyłem turbinę pod timer 8-bitowy więc musiałem ustawić go w tryb CTC, zwiekszyc czestotliwosc, zliczać ilość przerwań i po przekroczeniu zadanej liczby włączać albo wyłączać dany pin.

Udostępnij ten post


Link to post
Share on other sites

Korzystam w domowych warunkach z oscyloskopu z komputera [soundcard Oscilloscope] i sondy z dzielnikiem napięcia 10:1. Masa z sondy do masy z plytki, i plus z sondy do wyjścia PB3.

Żeby wprowadzić więcej zamętu udało mi się coś bardziej kwadratowego otrzymać, za każdym razem oscyloskop pokazuje coś innego, raz ładując wsad z Eclipse jest coś takiego jak niżej na screenie, a raz jest chaotyczna wybuchy (screen2) bym to opisał, takie dziwne cudo. Nie rozumiem tego... Ustawiłem też na ICR1A = 2500, udało mi się dostać ładny prostokątny sygnał, lecz o częstotliwości 49Hz, wiec zmieniłem trochę, i znów jest generowany poszarpany sygnał bez ładu i składu, próbuje znów wpisać 2500, i też nic.

Przepraszam jeżeli coś nie składnie, godzinę pisałem tego posta, bo ciągle inaczej pokazuje ;c

1#

2#

Udostępnij ten post


Link to post
Share on other sites

Cóż, pewnie już sam przeczuwasz co napiszę. Szkoda Twojego czasu na to badziewie. Tak, niektórzy być może używają kart audio zamiast oscyloskopów i niektórym z nich pewnie nawet czasem udaje się zauważyć przebieg, jakiego się spodziewali. Zapewne istnieją także nieliczni, którzy rozwiązali przy pomocy takiego narzędzia jakiś swój problem ale ja widzę, że próbujesz wybrać się w długą drogę z kompasem w którym czasem nawet obraca się strzałka ale północ(?) pokazuje dopiero po dobrym przywaleniu w pieniek. I to nie zawsze.

Jeśli możesz, to zweryfikuj działanie swojego ee.. (słowo oscyloskop jakoś nie chce mi się napisać) sprzętu na przebiegach wzorcowych. Nie wiem, zrób sobie generator na 555, może złap sygnał MOSI lub SCK z programatora w czasie ładowania kodu. Po prostu musisz mieć pewność, że sprzęt pomiarowy jest OK. Bez tego pobłądzisz jeszcze bardziej.

Sygnał z portu jest na pewno protokątny chyba, że Twoja sonda robi mu jakąś krzywdę (daj jej schemat) ale wtedy robiłaby to zawsze a tu wygląda mi na jakąś losowość. Może zamiast dodatkowej niepewności związanej z PWM (choć wydaje mi się, że to jest w porządku) wygeneruj programowo falę prostokątną za pomocą zapisów do portu i opóźnień. Takie coś rzadko kiedy nie działa i może być jakimś wzorcem. Jak widzisz musisz najpierw "uruchomić" system pomiarowy i upewnić się, że możesz polegać na ich wynikach albo.. zostawić to w diabły i pomyśleć o normalnym oscyloskopie. Nawet najprostszy cyfrowy (ostatnio bardzo, bardzo staniały) będzie jak przejście ze wspomnianego kompasu i (niezbędnego) pieńka na odbiornik GPS z wbudowaną mapą.

Tymczasem możesz zrobić następujący eksperyment: wygeneruj PWM o żadanej częstotliwości, niech będzie 50Hz, a do nieobciążonego niczym wyjścia procesora podłącz zwykły miernik ustawiony na pomiar napięcia DC. Zmieniaj wypełnienie (np co 2 sekundy jeden krok) w cyklu 0-25-50-75-100% i obserwuj wskazania. Napięcie powinno zmieniać się zgodnie ze zmianami wypełnienia i powinno wynosić (dla zasilania 5V) odpowiednio 0-1.25-2.5-3.75-5V oczywiście z pewnymi możłiwymi odchyłkami ale nie więcej jak 100mV. To oznacza, że wypełnienie zmienia się prawidłowo, Ty panujesz nad jego ustawianiem a przebieg jest raczej prostokątny.

Udostępnij ten post


Link to post
Share on other sites
       ICR1 = 20000 ; 

Czy tutaj nie jest o jedno zero za dużo?

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...