Skocz do zawartości

Pierwszy LF problem z uruchomieniem


aixI

Pomocna odpowiedź

100mA to jest mało (jak sam napisałeś), ale wcześniej robota z wgranym programem, podłączonymi silnikami i płytką z czujnikami zasilałem z zasilacza od drukarki hp 16V ~500mA (piszę z pamięci) i też nie chciał ruszyć.

Link do komentarza
Share on other sites

500mA to też mało (mało dla silników i elektroniki razem). Dla przykładu moje silniki w szycie pobierają 2,1A (x2 bo 2 silniki) a sama elektronika pewnie troch poniżej 0,5A, tak więc cały bot może pobrać troche poniżej 3A. I jak to się ma do 500mA? Spróbuj zrobić tak, jak napisałem w poprzednim poście.

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

Sprawdzałem z tym zasilaczem 15V 5A też nic żadnej reakcji. Po włączeniu robota przejeżdżam białą kartką z czarną taśmą izolacyjną po czujnikach i nic, silniki stoją.

Wgrałem taki kod:

$regfile = "2313def.dat" 
$crystal = 1000000 

'Konfiguracja sterowania PWM 
Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 

'Konfiguracja portów 
##wyjscia## 
Config Pinb.5 = Input 
Config Pinb.6 = Input 
Config Pinb.7 = Input 

##wejscia## 
Config Pinb.4 = Output 
Reset Portb.4 
Config Pinb.3 = Output 
Reset Portb.3 
Config Pind.2 = Output 
Reset Portd.2 
Config Pind.5 = Output 
Reset Portd.5 
Config Pind.4 = Output 
Reset Portd.4 
Config Pind.3 = Output 
Reset Portd.3 
Config Pind.1 = Output 
Reset Portd.1 

PORTB.5 = 1 
PORTB.6 = 1 
PORTB.7 = 1 

'Opis prtów 
'Enable1 - silnik lewy - PortB.4                      (PWM1A) 
'Enable2 - silnik prawy - PortB.3                     (PWM1B) 
'Input1 - Silnik lewy A - PortD.2 
'Input2 - Silnik lewy B - PortD.5 
'Input3 - Silnik prawy A - PortD.3 
'Input4 - Silnik prawy B - PortD.4 
'Dioda - PortD.1 

Sensor_1 Alias Portb.5 
Sensor_2 Alias Portb.6 
Sensor_3 Alias Portb.7 
Silnik_lewy_a Alias Portd.2 
Silnik_lewy_b Alias Portd.5 
Silnik_prawy_a Alias Portd.4 
Silnik_prawy_b Alias Portd.3 
Dioda Alias Portd.1 


'Deklaracje zmiennych 
Dim Czujnik_lewy As Single 
Dim Czujnik_srodkowy As Single 
Dim Czujnik_prawy As Single 
Dim W As Word 

'Blok instrukcji 
Set Dioda 
Set Silnik_lewy_a 
Reset Silnik_lewy_b 
Set Silnik_prawy_a 
Reset Silnik_prawy_b 

Do 
If Sensor_1 = 0 Then 
If Sensor_3 = 1 Then 
Gosub Skrecaj_w_lewo 
Else 
Gosub Jedz_prosto End If 
Elseif Sensor_3 = 0 Then 
If Sensor_1 = 1 Then 
Gosub Skrecaj_w_prawo 
Else 
Gosub Jedz_prosto 
End If 
Else 
Gosub Jedz_prosto 
End If 
Loop

End        'end program 

Jedz_prosto: 
 Set Silnik_lewy_a 
 Set Silnik_lewy_b 
 Reset Silnik_prawy_a 
 Reset Silnik_prawy_b 
Return 

Skrecaj_w_prawo: 
 Set Silnik_lewy_a 
 Reset Silnik_lewy_b 
 Reset Silnik_prawy_a 
 Reset Silnik_prawy_b 
 Waitms 10 
Return 

Skrecaj_w_lewo: 
 Set Silnik_prawy_a 
 Reset Silnik_prawy_b 
 Reset Silnik_lewy_a 
 Reset Silnik_lewy_b 
 Waitms 10 
Return

uC interpretuje 0/1 więc czujniki są sprawne, uC też.

EDIT: Jeszcze wczoraj sprawdzałem prace serwa, wgrałem ten program:

$regfile = "2313def.dat" 
$crystal = 1000000

'Konfiguracja PWM'a 
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Config Pind.2 = Output  
Config Pind.5 = Output 

Silnik_a Alias Portd.2 
Silnik_b Alias Portd.5

'Ustawienie PWM w zakresie 0-255 (regulacja prędkości) 
PWM1A = 200

Do
'Obrót w jedną stronę 
Set Silnik_a 
Reset Silnik_b 
wait 3

'Obrót w stronę przeciwną 
Reset Silnik_a 
Set Silnik_b 
wait 3

'Stop 
Reset Silnik_a 
Reset Silnik_b 
wait 3 
Loop

End

Kompilator nie pokazuje błędów, a silnik stoi :/

Jakieś pomysły??

Edit:

Dopatrzyłem się błędu (chyba) w moim kodzie, mianowicie w kodzie na którym się częściowo wzorowałem (ten z kursu line followera) jest napisane tak:

Wczytaj_stany_przetwornikow:
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_lewy = W
Start Adc
W = Getadc(4)
W = Getadc(4)
Stop Adc
Czujnik_srodkowy = W
Start Adc
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_prawy = W
Return

A ja w swoim kodzie zostawiłem to:

'Deklaracje zmiennych 
Dim Czujnik_lewy As Single 
Dim Czujnik_srodkowy As Single 
Dim Czujnik_prawy As Single 
Dim W As Word

I tu jest "Dim W As Word" i chyba to nie pasuje tutaj.

Link do komentarza
Share on other sites

EDTI: Jeszcze chciałem dodać, że przed chwilą sprawdzałem tan sam kod na Atmedze8 i na niej działa, a na attiny2313 nie.

Edit: wyjąłem attiny2313 z podstawki i mostek h l293dne, włożyłem na stukówke wgrałem kod do sterowania serwem.

$regfile = "2313def.dat"
$crystal = 1000000
'Konfiguracja PWM'a:
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Portd = Output
Silnik_a Alias Portd.0
Silnik_b Alias Portd.1
PWM1A = 200 'Ustawienie PWM w zakresie 0-255 (regulacja prędkości)
Do
'Obrót w jedną stronę
Set Silnik_a
Reset Silnik_b
wait 3
'Obrót w stronę przeciwną
Reset Silnik_a
Set Silnik_b
wait 3
'Stop
Reset Silnik_a
Reset Silnik_b
wait 3
Loop
End

I na stykówce działa, czyli mam błąd na płytce albo zimne luty, poprawię luty i zobaczę jak będzie.

Link do komentarza
Share on other sites

Cześć, poprawiłem wszystkie luty, połączenia miedzy uC--> mostek i uC--> programator. Wgrałem kod, żeby oba silniki się kręciły i silniki się kręcą (mały sukces :] ), wgrałem później kod źródłowy do lf'a i jak na razie wszystko stoi, mianowicie jak włącze robota to dioda led się świeci (tak miało być), przejeżdżam białą kartką z czarną taśmą izolacyjną przez trzy czujniki (CNY70) (białe diody sygnalizujące się zapalają w zależności jaki czujnik widzi lub nie widzi czarnej linii), a silniki nie ruszają. Teraz to naprawdę nie mam pojęcia czemu coś nie działa. Zniwelowałem wszystkie usterki wcześniejsze i te, które "wychodziły w praniu".

Kod źródłowy:

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

'Konfiguracja sterowania PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

'Konfiguracja portów
'Wyjscia
Config Pinb.5 = Input
Config Pinb.6 = Input
Config Pinb.7 = Input

'Wejscia
Config Pinb.4 = Output
Reset Portb.4
Config Pinb.3 = Output
Reset Portb.3
Config Pind.2 = Output
Reset Portd.2
Config Pind.5 = Output
Reset Portd.5
Config Pind.4 = Output
Reset Portd.4
Config Pind.3 = Output
Reset Portd.3
Config Pind.1 = Output
Reset Portd.1

Portb.5 = 1
Portb.6 = 1
Portb.7 = 1

'Opis prtów
'Enable1 - silnik lewy - PortB.4                      (PWM1A)
'Enable2 - silnik prawy - PortB.3                     (PWM1B)
'Input1 - Silnik lewy A - PortD.2
'Input2 - Silnik lewy B - PortD.5
'Input3 - Silnik prawy A - PortD.4
'Input4 - Silnik prawy B - PortD.3
'Dioda - PortD.1

Sensor_1 Alias Portb.5                                      'czujnik prawy
Sensor_2 Alias Portb.6                                      'czujnik srodkowy
Sensor_3 Alias Portb.7                                      'czujnik lewy
Silnik_lewy_a Alias Portd.2
Silnik_lewy_b Alias Portd.5
Silnik_prawy_a Alias Portd.4
Silnik_prawy_b Alias Portd.3
Dioda Alias Portd.1


'Deklaracje zmiennych
Dim Sensor_3 As Single
Dim Sensor_2 As Single
Dim Sensor_1 As Single
Dim W As Word

'Blok instrukcji
Set Dioda
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b

Do
If Sensor_1 = 0 Then
If Sensor_3 = 1 Then
Gosub Skrecaj_w_lewo
Else
Gosub Jedz_prosto
End If
Elseif Sensor_3 = 0 Then
If Sensor_1 = 1 Then
Gosub Skrecaj_w_prawo
Else
Gosub Jedz_prosto
End If
Else
Gosub Jedz_prosto
End If
Loop


End                                                         'end program

Jedz_prosto:
 Set Silnik_lewy_a
 Set Silnik_lewy_b
 Reset Silnik_prawy_a
 Reset Silnik_prawy_b
Return

Skrecaj_w_prawo:
 Set Silnik_lewy_a
 Reset Silnik_lewy_b
 Reset Silnik_prawy_a
 Reset Silnik_prawy_b
 Waitms 10
Return

Skrecaj_w_lewo:
 Set Silnik_prawy_a
 Reset Silnik_prawy_b
 Reset Silnik_lewy_a
 Reset Silnik_lewy_b
 Waitms 10
Return

Bardzo prosiłbym o pomoc z Waszej strony.

AixI.

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.