Skocz do zawartości

[Bascom] Problem z PWM


Pomocna odpowiedź

Napisano

Witam

Mam problem z ustawieniem PWM na attiny2313 + L293D dla silników. Czy ustawie pwm1a = 255 czy pwm1a = 100 to silnik i tak kręci się z maksymalną prędkością.

Pin 1 z L293D podłączyłem pod 16 pin attiny2313, a pin 9 z L293D podłączyłem pod pin 15 w attiny2313.

$regfile = "attiny2313.dat"
$crystal = 1000000

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

Config Portd.0 = Output
Config Portd.1 = Output
Config Portb.2 = Output
Config Porta.1 = Output
Config Portd.6 = Input
Config Portb.0 = Input


Silnik_lewy_a Alias Portb.2
Silnik_lewy_b Alias Porta.1
Silnik_prawy_b Alias Portd.0
Silnik_prawy_a Alias Portd.1

Czujnik1 Alias Pind.6
Czujnik2 Alias Pinb.0

Set Silnik_lewy_a
Reset Silnik_lewy_b

Set Silnik_prawy_a
Reset Silnik_prawy_b



Do

Pwm1b = 100

Pwm1a = 255


Loop

End

Może warto zmniejszyć częstotliwość PWMa, w tej chwili masz niecałe 4kHz, L293d ma teoretycznie do 5kHz. Zmień parametr "Prescale" na 8 lub 64.

Spróbuj z programem w którym wypełnienie zmienia się w czasie a nie jest ciągle ustawiane na max.

Np

pwm1a = 100

wait 3

pwm1a = 200

nic nie pomogło. Myślicie, że to może być spowodowane przez podłączenie 7 pinu L293 z 4 pinem (XTAL2) Attiny2313 ?

tutaj jest schemat jak mam połączone wszystko

Wydaje mi się, że nie, z resztą jeśli silniki działają to znaczy, że na wejściach sterujących danym kanałem jest i 0 i 1. Wyłącz timer i w pętli ustawiaj co sekundę raz stan wysoki raz niski na pinach 15 i 16 uP. Jeśli silniki będą poprawnie reagować to będzie wiadomo, że mostek jest sprawny, a przyczyna leży po stronie uP, programu, błędnego fizycznego połączenia.

P.S. LEDy na schemacie są odwrotnie wstawione!

xtal w attiny nie działa jako pin i/o musisz zmienić to połączenie.

Dodaj w programie na początku

config portb.4 = output 
Config portb.3 = output
Portb.3 = 0
Portb.4 = 0

I napisz czy działa

  • Lubię! 1
xtal w attiny nie działa jako pin i/o musisz zmienić to połączenie.

Niby dlaczego ma nie działać, skoro to tam jest port A? Xtal1 i Xtal2 to alternatywne funkcje tych wyprowadzeń. Jeśli pracuje się na wewnętrznym oscylatorze to te wyjścia powinny być jak najbardziej dostępne.

xtal w attiny nie działa jako pin i/o musisz zmienić to połączenie.

Dodaj w programie na początku

config portb.4 = output 
Config portb.3 = output
Portb.3 = 0
Portb.4 = 0

I napisz czy działa

to pomogło, dzięki 😃

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