Skocz do zawartości

[ Bascom] [BASCOM] Sterowanie PWM za pomocą RC5


bodziszek

Pomocna odpowiedź

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

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

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

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

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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ę »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.