Skocz do zawartości

[Kurs] BASCOM - lekcja3 - zaczynamy programować


Ikar

Pomocna odpowiedź

bb5,
Atmega8-Pins.png

sygnały pwm są generowane na pb.1 i pb.2 i są to odpowiednio PWM1a i PWM1b.

Ogólnie pwm'a konfigurujemy tak:

Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down

pwm 8 bitowy- czyli wartości od 0 od 255

następnie po wszystkich konfigach startujesz pwm'a

Start Timer1

wartości ustawiasz odpowiednio:

Pwm1a = [wartosc]

i

Pwm1b = [wartosc]
Link do komentarza
Share on other sites

Należy pamiętać o skonfigurowaniu tych pinów jako wyjścia, zamieszczam testowy program:

$regfile = "m8def.dat" 

Config Portb.1 = Output   
Config Portb.2 = Output                                   'konfiguracja wyjść

Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       'konfiguracja timera1

Do                                                              'początek pętli
Waitms 5
Incr Pwm1a                                                  'zwiększ wypełnienie co 5ms
Incr Pwm1b
Loop                                                           'koniec pętli

Silniczki będą powoli zwiększały obroty (prędkość zależy od waita).

Pozdrawiam.

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

Zakładając, że PWM 1 steruje jednym a PWM 2 drugim to jak skręcać? Tak to ma wyglądać?

$regfile = "m8def.dat" 

Config Portb.1 = Output    
Config Portb.2 = Output                                   'konfiguracja wyjść 

Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       'konfiguracja timera1 

Do                                                              'początek pętli 
Waitms 5 
Incr Pwm1a                                         'zwiększ wypełnienie co 5ms 
Derc Pwm1b 
Loop                                                           'koniec pętli
End
Link do komentarza
Share on other sites

Incr i Decr odpowiadają za zwiększanie i zmniejszanie liczby, jeśli chcesz sterować PWM'em w obie strony, to musisz mieć podłączone piny z mostka H do procka i odpowiednio nimi sterować, (nie wiem jak jest w L293, ja mam kilka sztuk MAX4427 którego zamówiłem z sampli z Maxim'a (można też z Microchip'a), jest bardzo łatwy w obsłudze, tam żeby zmienić kierunek obrotu silnika podajesz 1 lub 0 na odpowiednią nogę scalaka).

Przykładowo robisz tak:

$regfile = "m8def.dat" 

Config Portb.1 = Output   
Config Portb.2 = Output                                   'konfiguracja wyjść

Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       'konfiguracja timera1

Do                                                      
Pwm1a = 255                                             'silnik kręci się na maksymalnych obrotach
Pwm1b = 0                                                  'a drugi stoi w miejscu
Loop                                                           'koniec pętli
End 

Pwm1a i Pwm1b odpowiadają za wypełnienie, podając wartość od 0 do 255 regulujesz wypełnienie.

Poczytaj sobie o 293, jest tego naprawdę dużo.

Link do komentarza
Share on other sites

Witam.

Mam kolejne pytanie 🙂 Chciałbym do tego zestawu dodać silnik. Czy mogę to wykonać tak:

Wzmacniacz LM386N Podłączony jako wtórnik napięcia.

No i gdzie w katalogu tego układu scalonego jest napisane jaki prąd największy możne przez niego płynąć bo nie wiem czy silniczek mogę podłączyć 🙂

Link do komentarza
Share on other sites

Ja przeważnie szukam takie jakie mam, dobre są BC337 (NPN) lub BC327 (PNP), tanie i wystarczające do większości silników.

Tranzystor podłączasz tak: Baza (B) przez rezystor (1k-10k) do procka, emiter (E) do minusa (tranzystor NPN) lub do plusa (tranzystor PNP) a kolektor (C lub K) do silnika, oczywiście drugi "pin" silnika idzie do plusa przy NPN i do minusa przy PNP.

Link do komentarza
Share on other sites

mam takie pytanko. a mianowicie, czy bedzie mi dzialalo, jezeli kod zapisze w takiej postaci:

if portb = &B00101100 then portd = &B00001100

to jest fragment kodu, ale glownie chodzi mi o to, czy musze pisac pojedynczymi pinami, czy moge sobie cale porty wpisywac.

Link do komentarza
Share on other sites

taaa...tylko jeszcze nie mam mikroklocka i wykorzystuje wolny czas do pisania po kawalku programu i sie nad tym zastanawiam...ulatwiloby mi to bardzo prace, bo musi mi ukladzik dzialac, jak wcisne kilka przyciskow na raz nawet, a nie pojedyncze.

Link do komentarza
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ść
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   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.

×
×
  • 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.