meros Napisano Grudzień 22, 2010 Udostępnij Napisano Grudzień 22, 2010 Witam,PWM jest mi potrzebny do sterowania prędkością dwóch silniczków (np. ze stacji cd) niezależnie za pomocą Atmegi 8. Po przeczytaniu dokumentacji dla Timera0 rozumiałem wszystko, natomiast dla Timera1 już się troche pogubiłem. Do sterowania silnikami mam zamiar użyć wyłącznie Timera1 dlatego to jest dla mnie ważne. W Timerze0 sprawa była dość prosta, TCNT0 cały czas się zmieniał z 0 do 255, a za pomocą ORC0 sterowałem wypełnieniem. W Timerze1 natomiast jest OCR1A i OCR1B, i znacznie większa tabela jesli chodzi o tryby pracy (WGM1 3:0 ). Który tryb powinienem zastosować ? Wg. tabeli ww większości trybów jako TOP jest OCR1A, a jak to sie ma do OCR1B ? proszę o pomoc 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Bierz te z tabeli w których TOP jest określone jako ICR, albo jako stała wartość z określoną liczbą bitów. Wypełnieniem sterujesz poprzez OCR1A/B. Fast PWM czy phase correct nie ma dużego znaczenia (chociaż pc jest moim zdaniem lepsze do silników), warto przy korzystaniu z dwóch silników korzystać z negacji, powinny być mniejsze zakłócenia na zasilaniu. Cytuj Link do komentarza Share on other sites More sharing options...
meros Grudzień 23, 2010 Autor tematu Udostępnij Grudzień 23, 2010 No właśnie tak zamierzałem zrobić, tzn jako TOP wykorzystać te tryby dla których jest stała wartość. A mógłbyś dokładniej opisać o co chodzi z tym ICR ? Czy dobrze rozumiem, że licznik będzie liczył do wartości w ICR a OCR1A/B steruje wypełnieniem (wg. tego co napisałeś). I jeszcze jedno, o co chodzi z tą negacją ? dzięki za odpowiedz 🙂 [ Dodano: 23-12-2010, 09:54 ] A i jeszcze pytanie. Jak w takim razie ustalić częstotliwość PWM'a ? Jeżeli korzystam z trybów ze stałej liczby bitów (8, 9, 10) to wartości są ustalone, a dla ICR moge dowolnie dobrać (jeżeli to wyżej było poprawnym rozumowaniem), tak 😃 ? I jaka częstotliwość (wartośc) będzie dobra do takich silników ? Cytuj Link do komentarza Share on other sites More sharing options...
Armir Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Częstotliwość pwm trzeba dobrać do mostka h. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
meros Grudzień 23, 2010 Autor tematu Udostępnij Grudzień 23, 2010 Używam L293D, w dokumentacji jest napisane, że do 5kHz Cytuj Link do komentarza Share on other sites More sharing options...
Armir Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Mi l293d działa na częstotiwości ponad 40kHz. Cytuj Link do komentarza Share on other sites More sharing options...
nes86 Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Mi l293d działa na częstotiwości ponad 40kHz. Fajnie, że działa ale mam nadzieję, że tego nie używasz. Do silników zazwyczaj odpowiednia jest częstotliwość rzędu pojedynczych kiloherców. Cytuj Link do komentarza Share on other sites More sharing options...
Armir Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Pomyliłem chodziło mi o 20kHz Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 @meros: ustawienia trybu pracy pinów jako inverted. W takim przypadku przy mniejszym wypełnieniu płynie mniejszy maksymalny prąd z akumulatora i przez krótszy czas, ponieważ jeden silnik jest załączany w momencie kiedy drugi jest odłączony od zasilania, albo za chwilę ma być odłączony (w takim przypadku prąd ma mniejszą wartość skuteczną). Częstotliwość zwykle dobra jest ok. 1kHz, bo wyżej zarówno sterownik się bardziej grzeje jak i pisk jest o wiele bardziej nieprzyjemny. Cytuj Link do komentarza Share on other sites More sharing options...
meros Grudzień 23, 2010 Autor tematu Udostępnij Grudzień 23, 2010 Ustawilem PWM, Phase Correct, 9-bit z preskalerem = 8 co mi daje 978,47 Hz czyli blisko 1kHz. I za pomocą OCR1A steruje wypełnieniem silnika 1, natomiast OCR1B steruje wypełnieniem silnika 2. no właśnie ten drugi silnik coś mi wogóle nie działa... co robie źle ? Cytuj Link do komentarza Share on other sites More sharing options...
Bobby Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Z tego co pamiętam, to ten timer może działać dwukanałowo, jeśli jest ustawiony w trybie 8bit, w 9 i 10 OCR1A i B są młodszą i starszą częścią 9 lub 10 bitowego wypełnienia. Teraz nie dam sobie reki uciąć, ale tak mi się wydaje. Cytuj Link do komentarza Share on other sites More sharing options...
meros Grudzień 23, 2010 Autor tematu Udostępnij Grudzień 23, 2010 dwukanałowo, czyli rozumiem, ze to jest to o co mi chodzi, tzn. niezależne sterowanie dla OC1A i OC1B. OCR1A i B są młodszą i starszą częścią hmm.. ale OCR1A i B są oba 16 bitowe to jak mogą stanowić jednocześnie młodszą i starszą część w/w wypełnienia ? Jak mam tym sterowac ? Cytuj Link do komentarza Share on other sites More sharing options...
simoon87 Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 Dobrze rozumiesz OCR1A i OCR1B zapewnia niezależne działanie dwóch kanałów 😉 Tu masz przykładowe ustawienie PWM w trybie Phase and Frequency Correct dla megi16/32: /* PWM */ DDRD |= (_BV(5))|(_BV(4)); ICR1 = 500; // Max wartosc OCR1A = 0; // Watosc poczatkowa kanal 1 OCR1B = 0; // Watosc poczatkowa kanal 2 TCCR1A = (1<<COM1A1)|(1<<COM1B1); // Clear on compare match when up-counting TCCR1B = (1<<WGM13)|(1<<CS11); // Wartosci od 0 do ICR1 | preskaler 8 Cytuj Link do komentarza Share on other sites More sharing options...
Bobby Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 hmm.. ale OCR1A i B są oba 16 bitowe to jak mogą stanowić jednocześnie młodszą i starszą część w/w wypełnienia ? Jak mam tym sterowac ? Zapewne mój błąd, napisałem trochę analogicznie do ADC, którego wartość w AVRach jest rozbita na dwa rejestry. Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Grudzień 23, 2010 Udostępnij Grudzień 23, 2010 @Bobby: Z tego co się orientuję wszelkie rejestry, które są rozbite, mają oznaczenia z literkami L i H, np. wynik ADC czy niektóre rejestry Timerów( ale te akurat można zapisywać na 2 sposoby). Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!