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.

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.

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ć?

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ć?

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

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.

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 🙂

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.

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?

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.

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