Skocz do zawartości

Elebot - robot dla początkujących.


Treker

Pomocna odpowiedź

Zamieszczam jeszcze kod programu bo może akurat gdzieś tu jest błąd coś źle podmieniłem i dlatego nie działa.

Config Portb = Output
Portb = &B00011000
Config Portd = Input
Portd = &B11111111

'****** deklaracja zmiennych i podprogramów ******
Dim Czas As Byte
Dim Ruchl As Bit
Dim Ruchp As Bit
Declare Sub Naprzod
Declare Sub Prawo
Declare Sub Lewo
Declare Sub Wstecz
Declare Sub Ddelay


'***** Program glowny *****
Do
'***** program obslugi czujnika odbiciowego *****
If Pind.5 = 1 Then
Czas = 50
Ruchl = 0
Ruchp = 0
Portb.1 = 1
Waitms 1
If Pind.6 = 0 Then Ruchl = 1
Portb.1 = 0
Portb.0 = 1
Waitms 1
If Pind.6 = 0 Then Ruchp = 1
Portb.0 = 0
If Ruchl = 1 And Ruchp = 0 Then Lewo
If Ruchl = 0 And Ruchp = 1 Then Prawo
If Ruchl = 0 And Ruchp = 0 Then Naprzod
If Ruchl = 1 And Ruchp = 1 Then Wstecz
End If



Loop
'***** prodprogramy ruchu *****
Sub Prawo:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 0 : Portb.2 = 0
Call Ddelay
End Sub

Sub Lewo
Portb.7 = 0 : Portb.6 = 0 : Portb.5 = 1 : Portb.2 = 0
Call Ddelay
End Sub

Sub Naprzod:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 1 : Portb.2 = 0
Call Ddelay
End Sub

Sub Wstecz:
Portb.7 = 0 : Portb.6 = 1 : Portb.5 = 0 : Portb.2 = 1
Call Ddelay
End Sub

'*****podprogram opoznienia *****
Sub Ddelay:
Waitms Czas
End Sub

End
Link do komentarza
Share on other sites

Po każdym If'ie powinien być End If. Jeśli po wykonaniu Sub'a chcesz powrócić do pętli głównej do musisz dopisać Return przed End Sub (z tego co mi wiadomo, nie trzeba pisać End Sub, ale mogę się mylić). Mikrokontroler i wartość rezonatora definiujesz w ustawieniach Bascom'a tak? Jeśli nie to musisz dopisać to w programie (nawet jeśli to robisz w ustawieniach, to dla dobrych nawyków dopisz również w programie). Poza tym brak wcięć (bez nich wszystko źle się czyta i nieraz trzeba się sporo nagłowić, żeby odczytać o co ci chodzi).

Link do komentarza
Share on other sites

Po każdym If'ie powinien być End If

No właśnie nie, jeśli piszesz w jednej linijce to nie musi być End if.

Przykład:

If A=B Then
A=C
End if
If A=B Then A=C

Obydwie formy są poprawne.

  • Lubię! 1
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

Witam to mój pierwszy post na tym forum (nawiasem mówiąc bardzo ciekawym) ale do rzeczy zainspirowany projektem zacząłem tworzyć coś na kształt elebota nieco rózniący sie w konstrukcji ale zasadniczo podobny i pojawił sie u mnie następujący problem. Próbując regulować prędkość obrotów silnika przez PWM strasznie grzeje sie mostek L293NE (regulacja jest konieczna ponieważ używam 2ch różnych silników i tak musi zostać). Ustawiając porty b3 i b4 na wartość 1 (uC Attiny2313) układ pracuje prawidłowo. Włączając PWM kod:

$regfile = "attiny2313.dat"

$crystal = 4000000

Config Portb = Output

Config Portd.5 = Output

Config Portd.3 = Input

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

Declare Sub Naprzod

Declare Sub Rstop

Declare Sub Wstecz

'***** Program glowny *****

Do

Compare1a = 180

Compare1b = 230

naprzod

Loop

'***** prodprogramy ruchu *****

Sub Naprzod:

Portb.5 = 1 : Portd.6 = 0 : Portb.7 = 1 : Portb.1 = 0

End Sub

Sub Rstop:

Portb.5 = 0 : Portd.6 = 0 : Portb.7 = 0 : Portb.1 = 0

End Sub

Sub Wstecz:

Portb.5 = 0 : Portd.6 = 1 : Portb.7 = 0 : Portb.1 = 1

End Sub

Mostek sie grzeje silniki działają przez kilkanaście sekund po czym stają pobór prądu na kążdym z osobna nie przekracza 800MA. Może ktoś ma pomysł co może być przyczyną ? A dodam jeszcze że bez obciążenia układ sie nie przegrzewa na multimetrze wynika że napięcie podawane przez mostek jest prawidłowe

Link do komentarza
Share on other sites

Przede wszystkim to wywaliłbym przed pętlę ten fragment:

Compare1a = 180 
Compare1b = 230 

naprzod

Robienie tego w pętli głównej bez jakichkolwiek opóźnień, to nie jest zbyt dobry pomysł. I tak chcesz żeby jechał tylko prosto, więc wywalenie tego przed pętle nie zrobi ci różnicy.

Poza tym to powinieneś ustawić pinom stan spoczynkowy.

Link do komentarza
Share on other sites

Ustawiłem stany spoczynkowe sprawdzałem i na H i L bez rezultatu compare też wywaliłem po za pętle głowną też nie pomogło mostek jak się grzał tak sie grzeje.

[ Dodano: 26-04-2012, 16:14 ]

Może pomiędzy EN mostka a uC powinny być jakieś rezystory?

Link do komentarza
Share on other sites

silniki są mi bliżej nieznane pochodzą za 2ch zabawek zasilanych czterema bateriami r6 każdy na multimetrze jeden pobiera 600ma drugi 700 - 780ma wiec przekroczenie jest ale niewielkie. Zastanawiam sie też nad prądem indukcyjnym bo L293NE a taki jest załozony nie ma diód zabezpieczających. Scalak raczej sprawny wczoraj działał ponad godzine na diodach i był całkiem zimny program wykonywał gaszenie i stopniowe rozjasnianie diody czyli pwm działa scalak tez problem ewidentnie z silnikami

Link do komentarza
Share on other sites

No wiem że być powinny doraźnie rozwiązałem problem przegrzewania instalując radiator od starej karty graficznej chociaż zdarza sie że i tak sie przegrzewa. Zastanawia mnie jednak inne zjawisko zresztą opisyawne juz gdzies tu na forum i chyba niewyjaśnione czyli - przy odłączonych przewodach enable układ pracuje jak by było na nich logiczne 1

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!

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