WSTĘP:
Muszę wykonać projekt bazujący na Atmega16, który opiszę (jak najdokładniej i zwięźle) poniżej. Na wstępie chciałbym zaznaczyć- co najważniejsze- że nie oczekuję żadnych gotowych rozwiązań, odwalenia roboty itp. przede wszystkim zależy mi na dwóch rzeczach- abym projekt ten wykonał w pełni i abym zrozumiał i nauczył się wszystkiego co z tym związane. Jestem człowiekiem w stosownym wieku, i bardzo potrzebuję konkretów i poszerzenia wiedzy, jednocześnie jest to dla mnie sprawa poniekąd zawodowa, dlatego goni mnie termin. Zwracam się zatem do osób cierpliwych, chcących podzielić się wiedzą, i poniekąd wyrozumiałych dla AVR'owego laika.
Na wykonanie tego projektu miałem dwa tygodnie- przez ostatni tydzień pracowałem całkowicie sam (z wszelkimi pomocami jak artykuły, książki itp.) lecz pozostał tydzień i widzę, że nie potrafię zrozumieć/ nauczyć się tylu rzeczy, aby w tym czasie wszystko zrobić.
Na elektronice znam się ogólnikowo- świat AVR dopiero poznaję, więc zadanie jest dla mnie naprawdę ciężkie. Udało mi się skonfigurować i podłączyć programator USBasp, pracuję w środowisku WinAVR. Nauczyłem się zapalać diody, obsługiwać przyciski i wyświetlacz, lecz pojęcia przerwań, rejestrów, timerów to dla mnie jeszcze magia- a wiem, że muszę to wszystko przyswoić w krótkim czasie.
Wiem, że to co opiszę poniżej to dla wielu osób chleb powszedni i są w tym obeznane, więc mam nadzieję, że uzyskam pomoc w ogarnięciu tematu. Przez najbliższy tydzień będę spędzał nad tym dzień i noc- również tu na forum w tym wątku, abym mógł posuwać się z pracą do przodu i zakończyć w terminie.
PROJEKT:
W załączniku zamieszczam rysunek poglądowy, jak i schemat, który opracowałem sam.
Patrząc na rysunek sch_ideowy.jpg :
Na ramieniu zamontowany będzie silnik wraz z rotorem (śmigłem). Poprzez sterowanie silnikiem metodą PWM ramię będzie się podnosić, dzięki czemu będzie możliwy pomiar kąta odchylenia przy pomocy enkodera magnetycznego z magnesem zamontowanym na osi. Sterowanie odbywa się poprzez przyciski, zwracanie danych przez wyświetlacz LCD (zgodny z HD44780).
Podstawowe informacje i założenia:
- bazą układu jest zestaw ARE 0061 (link: http://are.net.pl), zatem podłączenie zasilania 5V, przycisków, wyświetlacza nie jest problemem.
- układ musi być sterowany metodą PWM
- odczyt pomiaru kąta oparty o układ AS 5040 firmy Austriamicrosystems
- dwa tryby pracy:
1. manualny: poprzez wciskanie 1 z 4 klawiszy zmiana położenia ramienia odpowiednio o +/- 1% oraz +/- 5%, dynamicznie- w trakcie pracy układu
2. auto: polegający na tym, że użytkownik wpisze wartość kąta (np. 45 stopni) i po wciśniećiu przycisku uruchamiającego procedurę, procesor na podstawie danych z enkodera wysteruje silnik do odpowiedniej wartości.
Ciężko od razu opisać wszystkie nurtujące mnie pytania, lecz zacznę od tego, że najgorszym dla mnie etapem będzie programowanie- gdyż mało się na tym znam, dlatego też wybrałem język C, gdyż w nim już troszkę pracowałem.
Plik schemat1.sch przedstawia wykonany przeze mnie w programie Eagle schemat układu.
Myślę, że pierwszym etapem będzie konstruowanie- a programowaniem zająłbym się później, gdy już wszystko będzie gotowe. Dlatego na początek proszę o przejrzenie schematu i naprowadzenie mnie (jeżeli nie wszystko jest dobrze, a to razej pewne) w jaki sposób połączyć ze sobą wszystkie elementy aby układ po zaprogramowaniu działał tak jak opisałem.
Zasilanie +5V jest zapewnione na płytce.
Od lewej jest układ AS 5040- wyczytałem w dokumentacji, że do pinów VDD5V i VDD 3V3 trzeba podłączyć odpowiednie kondensatory. Wiem, że niektóre piny Atmega16 odpowiadają za PWM i za przerwania ale podłączałem trochę na "czuja", bo jeszcze nie wiem jak to działa.
Wyświetlacz podłączyłem do portu PA gdyż jego alternatywne funkcje nie będą (chyba) wykorzystane.
Znalazłem układ L293D, który nadaje się do sterowania silnikami i uznałem po przeczytaniu dokumentacji, że będzie idealny do tego projektu. Pin 1-2EN poprzez dostanie stanu wysokiego odblokuje wejścia/wyjścia 1 i 2. Na wejście 1A i 2A podałem piny PD4 i PD5, gdyż chyba tam jest alternatywna funkcja generowania PWM z Atmega 16. VCC2 będzie napięciem zasilania silnika, póki co jest to 12V.
Co do silnika- jaki wybrać? wiem, że musi to być zestaw modelarski (RC) razem ze śmigłem. Płytka jest zasilana napięciem 12V i chciałbym zasilić silnik właśnie z płytki, czyli o maksymalnym napięciu 12V.
Czy taki układ ma wogóle sens? Czy może potrzebuję jeszcze innych podzespołów a nawet o tym nie wiem.
O ile zrozumiałem zasadę działania PWM, tak przetworzenie tego na język programistyczny jest dla mnie w tym momencie magią. Czytałem inne tematy na tym forum, lecz nie rozumiem wielu elementarnych rzeczy. JAk sprawić, żeby procesor poprawnie odczytywał dane z enkodera magnetycznego i przekazywał je dalej na silnik. Czy potrzebny jest jeszcze przetwornik C/A?
Czy dobrze będzie najpierw zabrać się za konstruowanie a potem uczyć to oprogramować?
Jeżeli coś wytłumaczyłęm niejasno oczywiście się poprawię.
Z góry chciałbym podziękować osobom chętnym pomóc, wytłumaczyć i naprowadzić na rozwiązanie tego problemu. Pozdrawiam.
EDIT: dodałem schemat w pliku graficznym.
Muszę wykonać projekt bazujący na Atmega16, który opiszę (jak najdokładniej i zwięźle) poniżej. Na wstępie chciałbym zaznaczyć- co najważniejsze- że nie oczekuję żadnych gotowych rozwiązań, odwalenia roboty itp. przede wszystkim zależy mi na dwóch rzeczach- abym projekt ten wykonał w pełni i abym zrozumiał i nauczył się wszystkiego co z tym związane. Jestem człowiekiem w stosownym wieku, i bardzo potrzebuję konkretów i poszerzenia wiedzy, jednocześnie jest to dla mnie sprawa poniekąd zawodowa, dlatego goni mnie termin. Zwracam się zatem do osób cierpliwych, chcących podzielić się wiedzą, i poniekąd wyrozumiałych dla AVR'owego laika.
Na wykonanie tego projektu miałem dwa tygodnie- przez ostatni tydzień pracowałem całkowicie sam (z wszelkimi pomocami jak artykuły, książki itp.) lecz pozostał tydzień i widzę, że nie potrafię zrozumieć/ nauczyć się tylu rzeczy, aby w tym czasie wszystko zrobić.
Na elektronice znam się ogólnikowo- świat AVR dopiero poznaję, więc zadanie jest dla mnie naprawdę ciężkie. Udało mi się skonfigurować i podłączyć programator USBasp, pracuję w środowisku WinAVR. Nauczyłem się zapalać diody, obsługiwać przyciski i wyświetlacz, lecz pojęcia przerwań, rejestrów, timerów to dla mnie jeszcze magia- a wiem, że muszę to wszystko przyswoić w krótkim czasie.
Wiem, że to co opiszę poniżej to dla wielu osób chleb powszedni i są w tym obeznane, więc mam nadzieję, że uzyskam pomoc w ogarnięciu tematu. Przez najbliższy tydzień będę spędzał nad tym dzień i noc- również tu na forum w tym wątku, abym mógł posuwać się z pracą do przodu i zakończyć w terminie.
PROJEKT:
W załączniku zamieszczam rysunek poglądowy, jak i schemat, który opracowałem sam.
Patrząc na rysunek sch_ideowy.jpg :
Na ramieniu zamontowany będzie silnik wraz z rotorem (śmigłem). Poprzez sterowanie silnikiem metodą PWM ramię będzie się podnosić, dzięki czemu będzie możliwy pomiar kąta odchylenia przy pomocy enkodera magnetycznego z magnesem zamontowanym na osi. Sterowanie odbywa się poprzez przyciski, zwracanie danych przez wyświetlacz LCD (zgodny z HD44780).
Podstawowe informacje i założenia:
- bazą układu jest zestaw ARE 0061 (link: http://are.net.pl), zatem podłączenie zasilania 5V, przycisków, wyświetlacza nie jest problemem.
- układ musi być sterowany metodą PWM
- odczyt pomiaru kąta oparty o układ AS 5040 firmy Austriamicrosystems
- dwa tryby pracy:
1. manualny: poprzez wciskanie 1 z 4 klawiszy zmiana położenia ramienia odpowiednio o +/- 1% oraz +/- 5%, dynamicznie- w trakcie pracy układu
2. auto: polegający na tym, że użytkownik wpisze wartość kąta (np. 45 stopni) i po wciśniećiu przycisku uruchamiającego procedurę, procesor na podstawie danych z enkodera wysteruje silnik do odpowiedniej wartości.
Ciężko od razu opisać wszystkie nurtujące mnie pytania, lecz zacznę od tego, że najgorszym dla mnie etapem będzie programowanie- gdyż mało się na tym znam, dlatego też wybrałem język C, gdyż w nim już troszkę pracowałem.
Plik schemat1.sch przedstawia wykonany przeze mnie w programie Eagle schemat układu.
Myślę, że pierwszym etapem będzie konstruowanie- a programowaniem zająłbym się później, gdy już wszystko będzie gotowe. Dlatego na początek proszę o przejrzenie schematu i naprowadzenie mnie (jeżeli nie wszystko jest dobrze, a to razej pewne) w jaki sposób połączyć ze sobą wszystkie elementy aby układ po zaprogramowaniu działał tak jak opisałem.
Zasilanie +5V jest zapewnione na płytce.
Od lewej jest układ AS 5040- wyczytałem w dokumentacji, że do pinów VDD5V i VDD 3V3 trzeba podłączyć odpowiednie kondensatory. Wiem, że niektóre piny Atmega16 odpowiadają za PWM i za przerwania ale podłączałem trochę na "czuja", bo jeszcze nie wiem jak to działa.
Wyświetlacz podłączyłem do portu PA gdyż jego alternatywne funkcje nie będą (chyba) wykorzystane.
Znalazłem układ L293D, który nadaje się do sterowania silnikami i uznałem po przeczytaniu dokumentacji, że będzie idealny do tego projektu. Pin 1-2EN poprzez dostanie stanu wysokiego odblokuje wejścia/wyjścia 1 i 2. Na wejście 1A i 2A podałem piny PD4 i PD5, gdyż chyba tam jest alternatywna funkcja generowania PWM z Atmega 16. VCC2 będzie napięciem zasilania silnika, póki co jest to 12V.
Co do silnika- jaki wybrać? wiem, że musi to być zestaw modelarski (RC) razem ze śmigłem. Płytka jest zasilana napięciem 12V i chciałbym zasilić silnik właśnie z płytki, czyli o maksymalnym napięciu 12V.
Czy taki układ ma wogóle sens? Czy może potrzebuję jeszcze innych podzespołów a nawet o tym nie wiem.
O ile zrozumiałem zasadę działania PWM, tak przetworzenie tego na język programistyczny jest dla mnie w tym momencie magią. Czytałem inne tematy na tym forum, lecz nie rozumiem wielu elementarnych rzeczy. JAk sprawić, żeby procesor poprawnie odczytywał dane z enkodera magnetycznego i przekazywał je dalej na silnik. Czy potrzebny jest jeszcze przetwornik C/A?
Czy dobrze będzie najpierw zabrać się za konstruowanie a potem uczyć to oprogramować?
Jeżeli coś wytłumaczyłęm niejasno oczywiście się poprawię.
Z góry chciałbym podziękować osobom chętnym pomóc, wytłumaczyć i naprowadzić na rozwiązanie tego problemu. Pozdrawiam.
EDIT: dodałem schemat w pliku graficznym.
