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

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

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.