Skocz do zawartości

[Micromouse, Linefollower] 2in1 - Pierwsza konstrukcja smd


Pomocna odpowiedź

Hmm i nie obyło się bez błędów, chyba że ktoś mnie uszczęśliwi i powie że jednak da się zaprogramować atmege128A przy użyciu pinów MOSI i MISO. Stawiam sześciopak piwa!

Niefortunnie też do pinów PDI i PDO mam podpięte wyjścia z mostka (gdyby to były np. diody to doprowadzenie tam sygnałów programatora nie byłoby problemem, a tak to pozostaje dostęp bezpośrednio do nóżki uC), udało mi się to zrobić jednak długo to nie przetrwa.

Druga sprawa to czy mógłby ktoś rzucić okiem na schemat podłączenia BUZZERA bo non stop piszczy, a według mnie nie powinien.

Link do komentarza
Share on other sites

adammarsz, już tyle razy była o tym mowa. Nawet nie tak dawno zwracałem na to uwagę koledze Sen w temacie jego MiniSumo. Trzeba zaglądać do pdfów.

A co do buzzera, to pewnie kupiłeś taki z wbudowanym generatorem dlatego piszczy. Obecnie większość takich buzzerów wysokich ma wbudowany generator.

Link do komentarza
Share on other sites

No widzisz, notę przeglądałem ale akurat nie pod katem programowania bo podłączeniem wziąłem z jakiegoś schematu na którym pewnie był mega1284P, no cóż coś pomyślę.

Co do buzera to jest to taki buzzer http://electropark.pl/sygnalizatory/459-sygnalizator-elektromagnetyczny-5v-buzzer-5901000459001.html,

Podłączałem już taki kiedyś tyle że bezpośrednio do uC (bez tranzystora) i nie piszczał, jak go uciszyć?

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

Ale przecież domyślnie piny ustawione są jako wejścia więc na bramkę nie powinno iść żadnego sygnału.

Program testowy:

DDRD |=(1<

PORTD &=~(1<

A buzzer i tak piszczy

DDRD |=(1<

PORTD |=(1<

Buzzer piszczy.

[ Dodano: 11-10-2013, 13:23 ]

Problem raczej na pewno leży po stronie podpięcia mosfet'ów bo wszystkie działają tak samo tzn. tak jakby bramka była cały czas otwarta.

Ma ktoś jakiś pomysł co to może być?

Link do komentarza
Share on other sites

"piny ustawione są jako wejścia więc na bramkę nie powinno iść żadnego sygnału"

A co rozumiesz pod pojęciem "żadnego sygnału"? MOSFET jest otwierany napięciem na bramce. Napięciem, czyli nie pobiera prądu z wejścia. Ponieważ jednak w rzeczywistości nie ma tak żeby rezystancja była nieskończona to przyjmijmy, że na wejściu takiego tranzystora jest opornik np. 100MΩ. Jaki prąd musi tam popłynąć by zrobić te 2V które otworzy kanał? Jasne, 20 nanoamperów. Niewielu ludzi na Ziemi umie taki prąd zmierzyć a popłynie on np. przez topnik po lutowaniu lub porty procesora które wg. Ciebie są ustawione jako wejścia. Ustawienie na wejścia mówi tylko tyle, że oba tranzystory wyjściowe są wyłączone i nie możesz tym zapalić diodki ale zapewniam Cię, że prąd płynący przez taki odcięty tranzystor nie jest zerowy. Producent zapewnia chyba upływność portu < 1uA a to jest 50 razy więcej niż potrzeba by załączyć 2N7002.

Bramka MOSFETa nigdy nie powinna tak sobie wisieć w powietrzu, bo nie masz absolutnie żadnej gwarancji, że tranzystor będzie wyłączony. Nawet zbliżenie dłoni spowoduje, że przez pojemność kilku pF MOSFET będzie załączany z częstotiwością sieci 50Hz. Jeżeli istnieje możliwość, że w układzie MOSFET straci sterowanie (a w AVR tak właśnie jest podczas RESETu i w chwilę później) to bramka zawsze musi mieć opornik ustalający jej potencjał. Do masy - gdy chcesz by tranzystor był wyłączony lub do plusa gdy ma być w tym czasie załączony.

Bipolarne potrzebują prawdziwego prądu by się włączyć i tego im port wejściowy nie zapewni. Swoją drogą ich bazy też nie powinny dyndać swobodnie więc im też należą się oporniki do masy.

Link do komentarza
Share on other sites

Co prawda nie znam C 😋, ale w kodzie adammarsz, pisał, że ustawia pin jako wyjście i podaje 0 i 1 na bramkę tranzystora. Dodatkowo bramka spolaryzowana jest rezystorem do masy, więc nie powinien buzer piszczeć tak czy siak nawet gdyby pin ustawiony był jako wejście.

Link do komentarza
Share on other sites

Aż takiej wiedzy to nie mam, chodziło mi mniej więcej o to że na pinie jako wejście nie będzie sygnału wysokiego. Ale moje mofset'y miały rezystor do bramki i GND, NPN też mają bo są podłączone dokładnie tak samo jak miały być mofset'y, tyle że one działają, a mofset'y nie i raczej nie są zepsute.

Przekopując internet trafiłem na parę wpisów, że występuje problem z niedomknięcie bramki ale rozwiązań nie było.

Poniżej kilka zdjęć, na drugim widać bypass do programowania, taki młody robot a już bypassy, no cóż trzeba cierpieć za błędy stwórcy 🙂

Link do komentarza
Share on other sites

Hm, no tak, rezystory są na schemacie. A może zamieniłeś źródło z drenem? Wtedy dioda podłożowa MOSFETa byłaby spolaryzowana na przewodzenie i bipczak miałby zasilanie. Chociaż, jeśli w to samo miejsce montowałeś npn w obudowie SOT23 to odpowiedniość elektrod jest zachowana. Dziwne.

Link do komentarza
Share on other sites

Mam dziwnie śmieszny problem z funkcją delay_ms, a mianowicie funkcja ta zawiesza mi program, ale nie zawsze, w funkcji main mogę stosować ją do woli, natomiast w innych funkcjach to tylko jak mają mniej niż 3 linijki, tak mi z obserwacji wyszło, strasznie to dziwne a jeszcze bardziej denerwujące. Ktoś się z czymś takim spotkał bo jak coś wpisuje na temat delay to tylko o taktowaniu i odliczaniu piszą a to mi dobrze działa.

[ Dodano: 12-10-2013, 13:53 ]

Aha dodam ze przy atmedze8 i 32 nie miałem takiego problemu, czyż by znowu niespodzianka atmega128a?

Link do komentarza
Share on other sites

Hmm dziwna sprawa z tym bo zauważyłem, że nawet jak nie ma delay to się zawiesza.

Ten sam kod napisany w funkcji main działa bez zarzutów, natomiast jak wrzucę to do jakiejs funkcji i wykonam w main to juz kod po tym sie nie wykonuje, a wykonuje się ta funkcja non stop (oczywiście nie wrzucam tego do while, a bezpośrednio do main).

Wygląda na problem z wykonywaniem funkcji, dziwny problem być może cos się zwiera i uC świruje (choć na razie nic nie znalazłem).

[ Dodano: 13-10-2013, 14:37 ]

Tak jak przypuszczałem kolejna pułapka atmega128, był włączony tryb zgodności z atmega103. Teraz wszystko działa.

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.