Skocz do zawartości

Robot odkurzacz


Pomocna odpowiedź

No dobrze jak sobie nie radzisz ze scrollem aby zjechać na dół i zobaczyć schamet oraz kod to wstawie tutaj 🙂

Schemat na którym się wzorowałem:

Zamiast L293 użyłem L298 i podłączyłem według tego schematu, gdzie wejścia pwm podłączyłem do +5V:

https://www.forbot.pl/forum/topics20/h-bridge-vt111.htm

Przepraszam że nie wstawiłem obrazka ale nie dało się po wybraniu pliku i kliknięciu wyślij nic się nie działo, dziwne bo przy pierwszym wszystko wyszło:(

Program jaki wgrałem do attiny2313

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

Config Pind.6 = Output                                      'ustalanie portow wyjscowych
Config Pinb.0 = Output
Config Pinb.2 = Output
Config Pinb.1 = Output
Config Pind.0 = Input                                       'ustalanie portow wejscoiwych
Config Pind.1 = Input
Config Pind.2 = Input


Czujnik_1 Alias Pind.0                                      'zmiana nazw portow
Czujnik_2 Alias Pind.1
L1_a Alias Portd.6
L1_b Alias Portb.0
L2_a Alias Portb.2
L2_b Alias Portb.1

Set Portd.0                                                 'podcaganie portu
Set Portd.1
Set Portd.2

L1_a = 1                                                    'ustalenie stanow niskich
L1_b = 1                                                    'na wyjsciach
L2_a = 1
L2_b = 1





Do                                                          'glowny program

  Waitms 90                                                'czekaj 90ms


  If Czujnik_1 = 0 Then                                    'jesli czu.1 zostanie zalaczony to przejdz do Cofnij
     Waitms 15
     Gosub Cofnij
  Elseif Czujnik_2 = 0 Then                                'jesli czu.2 zostanie zalaczony to przejdz do Cofnij
     Waitms 15
     Gosub Cofnij
  Else
     L1_a = 0
     L2_a = 0
     L1_b = 1
     L2_b = 1
  End If                                                   'jesli nic nie zostalo zalaczone to jedz
Loop
End


Cofnij:
  L1_a = 1                                                 'ustalenie stanow niskich
  L1_b = 1                                                 'na wyjsciach
  L2_a = 1
  L2_b = 1
  Waitms 30                                                'czekaj 30ms
  L1_b = 0                                                 'cofaj
  L2_b = 0
  Waitms 100                                               'obroc sie
  L1_b = 1
  L1_a = 0
  Waitms 160
  L1_a = 1                                                 'zatrzymaj obrot
  L1_b = 1
  L2_a = 1
  L2_b = 1

Return       

Ktoś wie czemu to nie działa 🙁 nie pojawia się napięcie na silnikach 🙁

Dlaczego piszę w tym poście ponieważ nie wiem czy uda mi się zbudować tego robota:P jeżeli tak to temat można przenieść albo wszystko zebrać do kupy i się pochwalić a jeżeli nic z tego nie wyjdzie to będzie go można bardzo łatwo skasować 🙂

reakcja jest strasznie dziwna po naciśnięciu jednego ze styków na to na porcie pd6 pojawia sie +5 a na porcie pb0 pojawia się 0 natomiast gdy puszcze styk wszystko wraca do poprzedniego stanu i tyle 🙁 Zaprogramowało się wszystko, nawet dobrze się program skompilował. Czy to może być wina programatora?? Czy mógłby ktoś napisać prosty program na procek attiny2313 na mruganie diody??

Zamiast odłączać mostek niech wystawi na odpowiednie piny mostka odpowiednie stany. Jeśli silniki będą kręcić to wina leży po stronie procka. może brak softu?

matrix, hmm może się nie zrozumieliśmy ale napisałem wcześniej że procesor podaje napięcie na nóżki mostka więc sprawdziłem i faktycznie jest na tej nóżce napięcie więc chyba mija się z celem aby z zewnątrz podawał napięcie i to sprawdzał??

Driver czyli mostek?

Napisałem sobie program

$regfile = "attiny2313.dat"                 'najpierw określamy typ proca 
$crystal = 4000000                          'definiujemy z jakim taktowaniem będzie pracował 


config portb=input                          'port b  jako wejścia 
      portb=&B00000000                     'wszędzie stan spoczynkowy-0 
config portd=output                         'pprt d jako wyjścia 
      portd=&B0000000                      'wszędzie stan spoczynkowy-0 


do                                         'pętla nieskończona 

  if pinb.0=1 then                         'jeżeli przycisk 1 wciśnięty 
  toggle portd.0                           'zmień stan wyprowadzenia 
  endif                                    'koniec bloku warunkowego 

loop                                       'koniec pętli 

end                                         'koniec programu 

zaprogramowałem procka i po włączeniu dioda mruga a gdy włącze zasilanie to świeci. Co jest grane?? bo ja już tego nie rozumie 🙁

na porcie jest 3,44V po włączeniu przycisku jest 2,55V 🙁 dziwne 🙁

A dlaczego tak to sterujesz? W procach od dawna wszystko steruje się z logicznego zera.

Napisz :

$regfile = "attiny2313.dat"                 'najpierw określamy typ proca 
$crystal = 4000000                          'definiujemy z jakim taktowaniem będzie pracował


config portb=input                          'port b  jako wejścia 
      portb=&B11111111                     'wszędzie stan spoczynkowy-1 
config portd=output                         'pprt d jako wyjścia 
      portd=&B0000000                      'wszędzie stan spoczynkowy-0 


do                                         'pętla nieskończona 

  if pinb.0=0 then                         'jeżeli przycisk 1 wciśnięty 
  toggle portd.0                           'zmień stan wyprowadzenia 
  endif                                    'koniec bloku warunkowego 

loop                                       'koniec pętli 

end   
Zamiast L293 użyłem L298 i podłączyłem według tego schematu, gdzie wejścia pwm podłączyłem do +5V:

Jeżeli dobrze rozumiem, użyłeś l298. Wstawiłeś diody zabezpieczające???

Szuszy, oczywiście że użyłem diód. Wykorzystałem 1N5818 🙂

matrix, twój program jakoś u mnie nie działa 🙁 Po włączeniu zasilania na porcie diody jest napięcie 4,85V, po włączeniu przycisku jest 2,57V , po wyłączeniu przycisku jest 0,02V po ponownym włączeniu jest 2,57V po ponownym wyłączeniu jest 0,02V i za trzecim razem jak włącze przycisk jest 4,87V 🙁 masakra jak dla mnie 🙁

Dobra, zrobimy inaczej. Napisz tak:

$regfile = "attiny2313.dat"                 'najpierw określamy typ proca 
$crystal = 4000000                          'definiujemy z jakim taktowaniem będzie pracował

config pinb.0=input                          
      set pinb.0
config portd.0=output                         
      set portd.0

do                                         'pętla nieskończona 

  if pinb.0=0 then                         'jeżeli przycisk 1 wciśnięty 
   toggle portd.0                           'zmień stan wyprowadzenia 
  endif

'opóźnienie potrzebne bo program sprawdzi
'stan końcówki wiele razy w ciągu sekundy
waitms 200 
loop                                       'koniec pętli 
end 

i podepnij diodę do portu od strony katody, a anodę do plusa przez rezystor. przycisk oczywiście też do masy.

Chester11-86, widzę, że nie rozumiesz podstaw, jak wciśniesz przycisk i trzymasz go cały czas to na wyjściu jest połowa napięcia zasilania, w zasadzie jest to wartość średnia, którą mierzy twój miernik. Dzieje się tak ponieważ mikrokontroler tak szybko zmienia stan na tym wyjściu z 0 na 1, że twój miernik mierzy połowę napięcia zasilania, gdyż przez połowę czasu na tym pinie jest 0 i przez połowę około 5V. Abyś zauważył migotanie diody musisz w pętli dodać jakiegoś Wait'a np Waitms 500. Pozatym przyjęło się aby przyciski zwierały pin mikrokontrolera w AVRach do masy, nie do plusa.

Mało tego, wracając do Twojego układu który nie działa, rodzi się podstawowe pytanie którego nie wiem czemu nie zadałem:

czy Ty ten dtiver l298 podłączyłeś pin w pin jak ten l293?

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