Skocz do zawartości

Zasilanie serwomechanizmu


kubov

Pomocna odpowiedź

podłączyłem zasilanie z zasilacza komputerowego no i problem taki że serwo nie działa, jak je chwycić to czuć że niby lekko skacze ale nic z tego nie ma. Na Wikipedii możemy przeczytać nt. zasilacza impulsowego jakim jest zasilacz komputerowy, że:

źle skonstruowany lub zbudowany ze złej jakości elementów może powodować zakłócenia na wysokiej częstotliwości oraz niestabilną pracę podłączonych urządzeń
Czy to może być przyczyną nie działania serwa (HX12K - nowe)?

P.S ubiegając pytania, tak - to jest słabej jakości zasilacz marki Codegen 😎

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

Atmega8, program przepisany z książki, działa, sprawdzone miernikiem końcówki PWM (skacze od 1 do 3V etc.)

przypadkowo atmege zablokowałem więc na wszelkie pytania dotyczące oprogramowania odpowiem w poniedziałek, ale załóżmy z góry że program działa dobrze.

kwarc 10Mhz, reload = 10, próbowałem też z 6,5 i 20

Link do komentarza
Share on other sites

okazuje się, że to nie zasilacz był winny tylko ja. Nie ustawiłem fusebitów na uC i szczerze mówiąc nie wiem jak to zrobić, mam kwarc 10Mhz, program bascom avr czy może mi ktoś wyjaśnić którą opcje wybrać?

Link do komentarza
Share on other sites

Jakiś czas temu znalazłem taką przydatną listę:

1. 0000 = częstotliwość z zewnętrznego generatora,
2. 0001 = oscylator w wewnątrz procesora o częstotliwości 1MHz,
3. 0010 = wewnętrzny oscylator 2MHz,
4. 0011 = wewnętrzny oscylator 4MHz,
5. 0100 = wewnętrzny oscylator 8MHz,
6. 0101 = zewnętrzny oscylator RC 1MHz,
7. 0110 = zewnętrzny oscylator RC 2MHz,
8. 0111 = zewnętrzny oscylator RC 4MHz,
9. 1000 = zewnętrzny oscylator RC 8MHz,
10. 1001 = zewnętrzny kwarc z kondensatorami 2MHz,
11. 1010 = zewnętrzny kwarc z kondensatorami 2-4MHz,
12. 1011 = zewnętrzny kwarc z kondensatorami 4-6MHz,
13. 1100 = zewnętrzny kwarc z kondensatorami 6-8MHz,
14. 1101 = zewnętrzny kwarc z kondensatorami 8-10MHz,
15. 1110 = zewnętrzny kwarc z kondensatorami 10-16MHz.

Ja ją sobie wydrukowałem i polecam to zrobić każdemu, chyba że komuś się chce tego uczyć na pamięć.

Link do komentarza
Share on other sites

w programie brak pozycji 1110

//ustawiłem tak

CKSEL[3..0] - Fusebits opcję Fusebit A987 - 0001:Internal RC oscylator 1 MHz

Zmienić ustawienia na – 1111:1111 external XTAL.

Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [WRITE FS].

CKOPT - Fusebits High opcję Fusebit H – 1:CKOPT 1

Zmienić ustawienia na – 0:CKOPT 0

Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [Write FSH].

nie zablokował się, ale nie wiem czy pracuje na 10Mhz ($crystal 10000000)

$regfile = "m8def.dat"
$crystal = 10000000




     Config Portc = Output
     Portc = &B11111111


Do
   Portc.5 = 0
   Wait 1
   Portc.5 = 1


Loop

End

Program tego typu też nie działa, a mianowicie na pinc 5 cały czas 0, program do sterowania serwami (taki najprostszy) też zachowuje się tak samo.

jakieś pomysły?

Link do komentarza
Share on other sites

Polecam korzystać z AVR8 Burn-O-Mat, program naprawdę godny polecenia, współpracuje z avrdude, dzięki temu także z USBasp. Używając go nie musimy uczyć się na pamięć znaczenia poszczególnych fusebitów (które w zależności od uC są i tak różne), wybranie odpowiedniego źródła taktowania sprowadza się jedynie do wybrania interesującego nas wariantu z listy.

Link do komentarza
Share on other sites

no więc tak, doczytałem of fusach, niby ustawione lecimy dalej PWM prze lutowany na nóżkę PD.1

$regfile = "m8def.dat"
$crystal = 10000000
   Config Port1 = Output
Config Servos = 1 , Servo1 = Portd.1 , Reload = 10
Do
    Servo(1) = 255
    Servo(1) = 1
Loop

program ten daje około 3,8V na nóżce serwo się nie kręci, programy z waitms działają.

screen z ustawień:

//teraz nie wiem dlaczego przy kompilacji obojętnie czego daje komunikat difference at 000xx

Link do komentarza
Share on other sites

Atmega nie ma portu1.

Twoj kod jest błędny.

Sprawdź ten:

$regfile = "m8def.dat"
$crystal = 10000000
Config PinD.1=output

Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 
enable interrupts       
Do
    Servo(1) = 255
    waitms 1000
    Servo(1) = 1
    waitms 1000
Loop
end
Link do komentarza
Share on other sites

Kod jest błędny z samej racji nie włączenia ogólnego zezwolenia na przerwania 🙂. Pomimo wszystko, sprawdź swój program... nawet kompilować się nie chce( z powodu braku portu1 [albo to po prostu błąd przy przepisywaniu na diodę, ale myślę, że robiłeś to metodą kopiuj wklej, tylko jakim cudem kompilator nie krzyczał o błędzie])

Pomimo wszystko, wrzuć mój program w bascoma, poddaj kompilacji i wrzuć w procka...

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.