bodziszek Napisano Luty 16, 2010 Udostępnij Napisano Luty 16, 2010 Zwracam się z prośbą do forumowiczów o pomoc w napisaniu programu do obsługi sterowania PWM z pilota RC5. Chciałbym zdalnie sterować obrotami silnika DC (tj. prędkością oraz kierunkiem obrotów), układ sterujący zamierzam zbudować na bazie: Atmega8, odbiornika podczerwieni TSOP31236, wzmacniacza operacyjnego L272M. Schemat: Czy jest taka możliwość, by po wciśnięciu i przytrzymaniu przycisku na pilocie np. CH+ silnik płynnie zwiększał obroty, a po wciśnięciu i przytrzymaniu CH- zmniejszał do całkowitego zatrzymania. Natomiast po wciśnięciu i przytrzymaniu VOL+ zwiększał obroty w przeciwnym kierunku, VOL- zmniejszał. W przypadku pojedynczego naciśnięcia przycisków CH+,CH-,VOL+,VOL- obroty zwiększały lub zmniejszały się o jeden ustalony poziom wypełniania impulsów. Jak mógłby wyglądać program do takiego rozwiązania ? Z góry dziękuję za pomoc. Link do komentarza Share on other sites More sharing options...
Mazicort Luty 16, 2010 Udostępnij Luty 16, 2010 bodziszek, nie podam Ci gotowego rozwiązania w Bascomie, ale zastanówmy się nad algorytmem. Po pierwsze musisz mieć obsługę PWM. Mając ją już napisaną (W bascomie są chyba gotowe funkcje, jeśli nie to możesz napisać własne), trzeba ustalić kilka poziomów prędkości - np. od 0 do 20, przy czym 10 to stop silnika. Teraz wciskając przycisk (czy to na pilocie, czy na klawiaturze na robocie - nieistotne, ale o tym zaraz), zwiększasz wartość zmiennej, np. silnik1. Przy starcie wynosi ona 10, po wciśnięciu guzika 11, po kolejnym 12 itd. Żeby zrobić 'płynne' zwiększanie wartości po wciśnięciu przycisku wystarczy dać delay, ok. 300ms. W pętli głównej programu albo w przerwaniu od timera przepisujesz wartość silnik1 jako prędkość PWM. Obsługa pilota to osobna kwestia, najlepiej zawrzeć ją w innych funkcjach, i wykonywać tak samo, jak przyciśnięcie zwykłego przycisku. Tzn. po odebraniu odpowiedniego kodu ustalamy flagę, np przycisk1, i w pętli main albo w przerwaniu od timera robimy if(przycisk1==1){ przycisk1=0; if(silnik1<20)silnik1++; } Poszukaj gotowych procedur w Basomie, a najbardziej polecam przejście na C, jeśli potrafisz troszkę chociaż w tym programować. Link do komentarza Share on other sites More sharing options...
bodziszek Luty 16, 2010 Autor tematu Udostępnij Luty 16, 2010 Rozpracowałem już RC5 - czyli reagowanie uC na kody pilota. $regfile = "m16def.dat" $crystal = 16000000 Cursor Off Config Int0 = Falling Config Rc5 = Pind.2 ' [timer = 1] Config Portd = &B11111011 'pprt d jako wyjścia Portd = &B0000101 On Int0 Pobr_rc5 Dim Address As Byte Dim Address1 As Byte Dim Command As Byte Dim Command1 As Byte Enable Interrupts Enable Int0 Address1 = 0 Command1 = 0 Cls Do Locate 1 , 1 Lcd "Adres: " ; Address1 ; " " Locate 2 , 1 Lcd "Komenda: " ; Command1 ; " " Enable Int0 Loop End Pobr_rc5: Disable Int0 Enable Interrupts Getrc5(address , Command) Portd.0 = 1 Wait 1 Portd.0 = 0 Command = Command And &B01111111 ' If Address < 255 Then Address1 = Address Command1 = Command ' End If Return Program wyświetla adres i kod pilota RC5. I teraz pytanie, jak zmodyfikować ten "bazowy" program by mógł wysterować PWM ? Link do komentarza Share on other sites More sharing options...
Mazicort Luty 16, 2010 Udostępnij Luty 16, 2010 Napisz obsługę PWM i pokaż kod, to będziemy mogli pomóc 🙂 Ew. zaadoptuj sobie z czyjegoś kodu, dużo jest na diodzie. Zrób tak, żebyś mógł jakąś zmienną sterować prędkością silników i pokaż toto. Edit. Nie będziesz musiał dużo edytować. W pętli głównej będziesz musiał tylko zrobić warunki: if (Command1==Kod_z_pilota_odpowiedzialny_za_jazde_do_przodu) jedź do przodu No ale do tego musisz mieć funkcję sterującą silnikami.😃 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
swidemir Luty 19, 2010 Udostępnij Luty 19, 2010 Czy program BASCOM AVR wer. 1.11.9.8 może pracować w Windows 7? Link do komentarza Share on other sites More sharing options...
Nawyk Luty 19, 2010 Udostępnij Luty 19, 2010 Bez najmniejszych problemów. 1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »