Skocz do zawartości
BlackSkill

Schemat lf Nowy/Sprawdzenie/Poprawa

Pomocna odpowiedź

Nie wiem, żadnej nie czytałem.

Wybierz coś z tego zestawu (niekoniecznie z tego sklepu):

http://www.kamami.pl/index.php?categoryID=3439

Na pewno zaraz ktoś tu coś podpowie. Niektóre pozycje mają całkiem szczegółowe recenzje od ludzi znających się na rzeczy. Jak nie na tym Forum to może na jakimś innym lub po prostu w księgarniach technicznych.

Udostępnij ten post


Link to post
Share on other sites

Poczytałem trochę o komunikacji za pomocą UART. Stwierdziłem że za pomocą kabla nie ma to za bardzo sensu i zainwestuje w moduł bluetooth. Kase miałem wydać na premium do BF3 , lecz wydam na rzeczy sensowne 😉 Dzięki temu nie będę musiał tez używać RC5 , tylko lf'a będę mógł zatrzymywać prosto z aplikacji na telefonie 😉 Nie wiem jak jeszcze napisze tą aplikacje , ale mam czas na naukę 😉

Zastosuję ten moduł :http://allegro.pl/modul-bluetooth-master-slave-hc05-arduino-avr-arm-i4879032995.html o nie ma konwertera napięć. Na stronie której podałem jest schemat:

Konwerter-poziomow-Level-Shifter.gif

"Ktoś" napisał tam że konwerter oparty jest o tranzystory MOSFET np. BSS138, 2N7000 lub podobne.

Mógłbyś mi wytłumaczyć co jak podłączyć, jak to działa ?(Konwerter napięć)

Prosiłbym też o dobranie jakiegoś taniego adaptera bluetooth do PC. Bo nie wiem czy jest to obojętne. Z góry dzięki marku.

Ps.Idę poczytać o tranzystorach 😃

I jeszcze coś. Wysłanie stanu 12 czujników przez uart oraz odebranie "komendy" start stop nie zwolni za bardzo całego programu ? 😉 ( Dalej boję się o czas hihi )

Udostępnij ten post


Link to post
Share on other sites

No, dajesz nieźle do pieca, ale od czego są wolne dni 🙂

O "radiowej" opcji UARTa nie napisałem - dobrze, że na to wpadłeś.

Nie odpuszczałbym odbiornika RC5 bo mimo wszystko jest to chyba szybsza forma komunikacji. Zanim znajdziesz odpowiedni, wirtualny guzik na ekranie smartfona, zanim jego soft to zrozumie i zamieni to na wysłanie po BT, zanim Twój moduł to odbierze i prześle znak do procesora to minie ze 100-200ms. Palec leżący na guziku pilota zdalnego sterowania zatrzyma uciekającego robota w 10ms - licząc od chwili wciśnięcia. Poza tym widziałem już mnóstwo problemów z BT i generalnie pasmem 2.4GHz w halach gdzie odbywają się zawody. Musisz mieć coś w zapasie

A teraz o podłączeniu 3V modułu do 5V procesora. Temat był już omawiany, więc tylko tak pokrótce. Po pierwsze masz dwa różne kierunki przepływu danych:

1. Od modułu do procesora (linia RXD procesora). To jest akurat trywialne - nie potrzebujesz żadnego konwertera bo stan wysoki ma w module 3.3V a to jest doskonale rozpoznawane przez procesor jako 1. Stan niski to 0V i oczywiście też działa.

2. Od procesora to modułu (linia TXD procesora). Potrzebujesz jedynie zmniejszenia wysokości nadawanej jedynki (5V) do poziomu max. 3.3V. Niektórzy robią to na zwykłym dzielniku rezystorowym i nie będąc jakimś fanatykiem mógłbym Ci to polecić jako tanie i działające. Takie rozwiązanie ma jednak poważną wadę: rezystory (np. 2k i 3k dają dobry podział) wraz z pasożytniczymi pojemnościami ścieżek tworzą filtr RC, który nie lubi przepuszczać szybkich sygnałów. UART nie jest szybkim interfejsem i pewnie by to działało, nawet do 115200, ale nie lubię rzeczy opierających się na przypadku. Konwerter który wynalazłeś to jeszcze inna bajka. To układ dwukierunkowy stosowany głównie do szyny I2C, gdzie obie strony w stanie pasywnym liczą na swoje oporniki podciągające (odpowiednio do 3 i do 5V) a w stanie aktywnym jedynie zwierają linię do masy. Ponieważ tranzystor NMOS jest załączany wtedy, gdy na bramce ma więcej "plusa" niż na kanale, to zero po jednej lub drugiej stronie załącza go i "przesyła się" na drugą stronę przez otwarty kanał. Zauważ, że bardzo ważne jest takie włączenie tranzystora, by dioda będąca jego "wbudowaną" częścią była włączona anodą do niższego napięcia. Układ pojawia się wielokrotnie na stornach internetowych jako cudowne rozwiązanie konwersji napięć, więc ludzie go bezmyślnie stosują. Ty nie potrzebujesz czegoś takiego, bo u Ciebie tylko jedna strona nadaje. Poza tym zauważ, że układ doskonale działa w trybie I2C (bo daje albo aktywne zero albo podciąganą rezystorem, pasywną jedynkę), ale to jest działanie niesymetryczne. Zbocza będą w jedną stronę szybkie (bo ciągniemy tranzystorem w dół) a w drugą wolne (bo rezystor ma wiele kΩ). Dokładnie takie samo działanie, ale tylko w jedną stronę uzyskasz podłączając zwykłą diodę. Tzn robisz tak:

- wyjście TXD procesora - katoda diody (najlepiej typu Schottky) - wejście modułu

Dodatkowo wejście modułu powinno mieć opornik podciągający np. kilka kΩ do zasilania modułu (3.3V?).

Takie coś nie przepuszcza 5V do modułu (bo dioda jest zatkana) i na jego wejściu mamy 3.3V. Zero z procesora otwiera diodę i masz 0.3V (bo dioda przewodzi). Oba napięcia są rozpoznawane przez moduł jako poprawne stany logiczne.

No tak, ale to też jest niesymetryczne i wcale nie lepsze niż dwa oporniki.

Najlepszym rozwiązaniem zarówno energetycznie (nie pobiera prądu jak opornik podciągający) jak i szybkościowo są bramki cyfrowe. Istnieją rodziny układów które - wbrew temu co napisałem wcześniej - przeżywają napięcia wejściowe większe niż własne zasilanie. Taka bramka, a właściwie bufor niezmieniający polaryzacji sygnału możesz kupić i wstawić tak, by przepuszczał sygnał od 5V procesora do 3V modułu. Ponieważ na wyjściu takiego bufora dostajesz napięcia takie z jakich go zasilasz, musisz mu podpiąć zasilanie modułu. Najbardziej elegancko będzie użyć układu z serii tiny-logic. Są to pojedyncze brameczki w małych obudowach - można je (fizycznie na PCB) wstawiać dokładnie tam gdzie trzeba. Rodziną układów odpornych na wysokie napięcie wejściowe jest 74LVCxxx a ponieważ pojedyncze bramki mają dodatkowy prefiks 1G to mamy 74LVC1Gxxx:

http://www.tme.eu/pl/katalog/#search=lvc1g&s_field=accuracy&s_order=DESC

Proponuję najbardziej popularny 74LVC1G125, no ale sam coś wybierz.

I jeszcze o szybkości procesora:

Dopóki będziesz myślał o tym co ma zrobić procesor jak o kolejce zadań szeregowanych zgodnie Twoim pomysłem i opóźnianych z powodu jakichś operacji I/O, to tak, zaczniesz mieć problemy z nadążaniem, ale nie jest to winą procesora a tych własnie operacji. Nawet gdybyś miał procek 100 razy szybszy niż AVR, to UART będzie wysyłał bajty tak samo wolno i jeśli ten superszybki procesor będzie musiał na niego czekać, nie zrobi niczego sensownego. Spróbuj przestawić się na myślenie zdarzeniami. Ile trwa wysłanie bajtu z prędkością np. 57600? 10 bitów po 17.5us daje 175us. Wysłanie komunikatu składającego się z 20 znaków zajmie w takim razie 350us. Jeżeli miałbyś to robić w głównej pętli programu powtarzanej dla przykładu co 1ms, to zużywasz na to 35% czasu procesora. Masakra.

A teraz inaczej: przecież po to procesor ma peryferia mogące wykonywać swoje zadania samodzielnie, żeby nie musiał stać i ich pilnować. Ładujesz do UARTa pierwszy bajt komunikatu i wracasz do wykonywania swoich spraw (np. liczenia PIDa). Po 175us UART zgłasza przerwanie od swojego nadajnika: "Jestem pusty!". Obsługujesz przerwanie w którym załadowałeś z RAMu do rejestru UARTa następny bajt. Ile trwała obsługa? 2us? To wszystko. Powtarzasz taką obsługę 20 razy więc w sumie na wysłanie komunikatu zużyłeś 20*2us=40us a więc 4% czasu procesora (licząc, że masz do dyspozycji 1ms). Jest postęp?

Najważniejsze, by procesor na nic nie czekał (w sensie aktywnego sprawdzania jakiegoś bitu i stania w bezproduktywnej pętli oczekiwania), a wykonanie poszczególnych zadań składało się z krótkich momentów zwrócenia uwagi na dane zdarzenie. Inaczej bardzo szybko roztrwonisz każdą moc obliczeniową - nawet 32-bitowego ARMa na.. nicnierobienie.

Nie martw się, że na razie nie wiesz jak to napisać. Mając platformę do testów (np. robota) zaczniesz od bardzo prostych rzeczy a w ciągu tygodnia będziesz już wiedział naprawdę dużo. Po miesiącu będziesz miał działający kod 🙂 Nawet się nie obejrzysz, a będziesz innym radził jak korzystać z przerwań i jak organizować program.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

A to się nada ? http://electropark.pl/74xx/7759-74ahc1g126gv-bufor-trojstanowy-sot753-5901003016003.html

Adapter bluetooth rozumiem że obojętny ?

@edit.

Tak sobie siedzę i myślę i nie wiem czy tak można to zrobić.

Dokupię drugi procesor atmega8. Do niego podłącze również sygnały wychodzące z komparatora. Coś takiego ( Może zrozumiesz o czym myślę):

W drugim procku byłby odczyt RC5 i uart. W programie byłaby zmienna która przechowywałaby stany czujników i stan sharpa. ITp.

Mogę coś takiego zrobić ? Czy przekombinowane ? 😃 Wtedy będę miał "z głowy" odczyt RC5 i sygnały do uart.

Udostępnij ten post


Link to post
Share on other sites

Z danych katalogowych wygląda, że tak. Napięcie wejściowe może osiągać 5V niezależnie od poziomu zasilania. Nigdy jednak rodziny 74AHC do tego celu nie używałem.

Jak już wprowadzisz wszystkie zmiany, zapodaj schemat.

Adapter? Mam w szufladzie takie małe coś z napisem 4World - padło po killku użyciach. Takie same coś z napisem ASUS działa do dzisiaj (2 lata?). Ale nie chciałbym, żebyś wyciągał pochopne wnioski. Może poszukaj jakichś opinii w sieci albo tutaj ktoś podpowie czego używa?

EDIT: Przekombinowane. Komunikacja dwóch procesorów wcale nie będzie łatwa a przede wszystkim: po co???

EDIT2: Zarówno odczyt czujników jak i UART zajmują dużo czasu ale czasu układów peryferyjnych. One wszystkie mogą pracować jednocześnie i to równolegle z procesorem. Po to są. Odbiór RC5 także może być obsługiwany wyłącznie poprzez przerwania + zliczanie czasu w którymś timerze (chodzi sam z własnego zegara, nie musisz go popychać) więc usiądź spokojnie i odpuść sobie. Nie wiem, może zrób sałatkę na imprezę albo skocz po jakieś soczki. Niech się temat w głowie ułoży. Masz za mało doświadczenia by świadomie projektować systemy wieloprocesorowe - to wymaga jeszcze głębszej analizy niż "wszystko w jednym". Po Nowym Roku, gdy pokażesz schemat możemy zająć się analizą wszystkiego co w tym programie będzie działać. A na razie życzę dobrej zabawy i Udanego Nowego Roku. Wszystkim 🙂

Udostępnij ten post


Link to post
Share on other sites

Dzięki i nawzajem 🙂 Schemat dziś jeszcze wstawię.

[ Dodano: 01-01-2015, 03:30 ]

Lekki poślizg , bo była niespodziewana imprezka 😃

Schematy:

Głowna

Czujniki

To teraz pytania i błędy:

1.Wspominałeś że będzie potrzebny spory radiator z miedzi do stabilizatora 5v. Jak ma go zrobić , skoro pin środkowy Vout jest podłączony do radiatora ? Wiesz jak to rozwiązać ?

2.Przydało by się jakieś zabezpieczenie przed odwrotnym podłączeniem zasilania. O ile "na koszyczku" nie było to tak groźne (Zdążyłem uratować układ nic się nie stało ;d ) , to na li-pol'ku wszystko usmażę od razu. Prawda ? Wiem że można rozwiązać to diodą , ale nie wiem jaką, i do końca w jaki sposób.

3. Co zrobić z pinem pierwszym OE bufora. Szukałem po ds'ie coś tam o tym jest. Lecz i tak nie wiem za bardzo co z nim zrobić.

4. Nie wiem czy to ty czy ktoś inny wspomniał mi o diodach zabezpieczających do mostka.

Myślę że to tyle,dzięki za to że chce ci się mi pomagać 😉 . Idę spać Cześć !

[ Dodano: 01-01-2015, 03:33 ]

Ps. Jakim narzędziem mogę "pogrupować/znaznaczyć" "strefy" na płytce. Np. interfejs, zasilanie.. itp.

Udostępnij ten post


Link to post
Share on other sites

Do zaznaczania grup elementów masz narzędzie "Group" (prostokąt z przerywanej linii).

Udostępnij ten post


Link to post
Share on other sites

To wiem. Nie wiem jak zrobić ramki takie które by obrysowywały grupy elementów.

Udostępnij ten post


Link to post
Share on other sites

BlackSkill jeżeli chodzi Ci o pogrupowanie części schematu (plik .sch), to bierzesz sobie narzędzie "Wire", dalej wybierasz sobie "kolor" (np. Names, Values, Info - te są szare) i w końcu wybierasz sobie styl - "Style" i możesz sobie wybrać "Longdash".

Mam nadzieję, że pomogłem 🙂

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Tak, radiator w przypadku obudów SMD musi też być "powierzchniowy", ale wcale nie jest powiedziane, że wszystko co rozlewasz na płytce to ma być masa. Po prostu robisz obszar wokół stabilizatora podłączony do jego wielkiego placka odizolowany od GND. Trudno, trzeba to przeboleć albo użyć stabilizatora mającego masę na radiatorze.

No diodą po prostu: anoda do baterii a katoda do wejścia plusowego stabilizatora. Jeśli podłączysz dobrze, dioda ma plus na anodzie i przewodzi. Jeżeli odwrotnie, didoa dostaje napięcie wsteczne, nie przewodzi i prąd nie płynie.

Dioda powinna mieć mały spadek napięcia więc raczej typu Schottky na taki prąd by wytrzymała całego robota łącznie z silnikami plus margines bezpieczeństwa. Diody tego typu: diodki mają spadek ok. 0.5V przy 3A co daje kolejne 1.5W mocy w ciepło. Jeżeli taki sumaryczny prąd przewidujesz, to raczej wybierz diodę w obudowie z radiatorem (DPAK?) np. STPS5H100B. Napięcie musi mieć takie jak akumulator plus 50% bo tyle będzie blokować, ale mniejszych niż 20V chyba nie ma. Oczywiście taka na 100V tez może być 🙂

Drugie rozwiązanie to tranzystor PMOS włączony od strony plusa lub NMOS od strony masy. Na pewno znajdziesz takie rozwiązania w sieci. Ma tę zaletę, że załączony kanał dużego tranzystora ma np. 30mΩ co przekłada się na straty ok. 0.3W - znaczny postęp w stosunku do diody 🙂 W związku z tym i obudowa może być mniejsza i chyba bez radiatora się obejdzie, choć 3A ciągłego prądu to już w SOT23 raczej się nie "zmieści". Tutaj preferowane są (ze względu na mniejsze rezystancje kanału) tranzystory NMOS, ale nie każdy lubi włączanie czegoś między minus baterii a masę układu. Musisz to rozważyć.

Bufor musi być załączony więc jeśli użyłeś 125 (włączanego zerem) to dajesz do masy a jeśli 126 (włączanego jedynką) to do plusa zasilania.

Tak, L298 potrzebuje diod na zewnątrz bo nie ma swoich własnych. Zajrzyj do karty katalogowej tego scalaka, tam jest ładnie narysowane.

BTW: Niespodziewana imprezka? No popatrz, niespodzianka.. ciekawe z jakiej to okazji? Ach, zaraz, czy to nie był czasem Nowy Rok? 🙂

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Ze swojej strony mogę polecić

o zabezpieczeniach przed odwrotnym podłączaniem zasilania. Przedstawione i omówione zostały tutaj opcje z diodą i tranzystorem
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Styknie? No właśnie mam obawy. Tak, nowoczesne tranzystory mają szerokie kanały więc i rezystancje w stanie włączenia niskie, ale to jednak straszny maluch. Chociaż zakładając tylko 2A prądu dostajemy na tych 30mΩ ok. 120mW a to przy 100K/W dla SOT23 daje przyrost 12°C. W sumie niedużo pod warunkiem, że jemu też zrobisz kawałek radiatorka a przynajmniej szerokie ścieżki do źródła i drenu. I tak muszą być szerokie, w końcu to zasilanie 🙂

Diodki OK.

Na płytce czujników moim zdaniem opornik pomiarowy prądu diody (1Ω) przy SHARPie powinien być do GND.

Skąd wziąłeś wyprowadzenia modułu HC-05? Widziałem na niektórych opisach, że ma on wyciągnięte na osobny pin swoje wewnętrzne 3.3V - to byłoby bardzo fajnie, bo teraz musiałeś zrobić stabilizator specjalnie do jednej bramki. Możesz wskazać jakiś dokument? Najgorsze, że nie kupujemy zwykle samego modułu (który jest wyłącznie na 3.3V) tylko jakieś płyteczki z modułem i stabilizatorem 5V→3V, ale bez konwersji poziomów logicznych. Jak można zrobić i sprzedawać coś tak głupiego? Czy EN trzeba do czegoś podpiąć, bo tego sygnału nie znam.

Szeregowo z bramką nowego zabezpieczacza NMOS dałbym jakiś 1k. Bramka i tak nie pobiera prądu więc normalnie to nie zaszkodzi, a taki opornik ograniczy prąd przepięć które mogą się na kabelku zaindukować w czasie podłączania baterii. Żeby nie wisiała w powietrzu gdy akumulatora nie ma, dałbym też oporniczek z 22k od bramki do masy robota.

Przepiąłbym RC5 na inne przerwanie, np. na INT7 bo tam jest też IC3 od timera 3, które świetnie się nadaje do liczenia czasu a uwolnioną w ten sposób szynę I2C (SDA i SCL) wyprowadził wraz z Vcc (a może raczej 3.3V) i GND na jakieś 4 pinowe złącze. Jak przyjdzie Ci kiedyś do głowy poeksperymentować z czujnikami typu temperatura, przyśpieszenie itp (zwykle mają I2C) - będzie jak znalazł. Płytka to płytka - wszystko zniesie a nie zawsze musi być pędzącym po linii LFem.

Można też przesunąć SHARPa na któreś wejście analogowe ADC0..6. Obecnie będzie działać jak zwykły port cyfrowy, ale w przyszłości może wstawisz analogowy pomiar odległości (podmieniając czujnik) i wtedy pomiar napięcia się przyda.

Na płytce czujników dałbym linii STCP opornik 10-22k do masy. Dzięki temu podczas programowania będzie widziała normalne zero a nie przypadkowe napięcie pochodzące z niesterowanego (porty w resecie są wejściami) drutu tasiemki i nie będzie przypadkowych zapisów do rejestru wyjściowego.

Nie chciałbym tu wychodzić na jakąś wyrocznię co to zatwierdza schematy stempelkiem "Przekazać do wykonania". Może ktoś ma jeszcze jakiś pomysł?

Udostępnij ten post


Link to post
Share on other sites

BlackSkill jak na tak duży mikrokontroler masz dużo niewykorzystanych pinów - trzeba byłoby znaleźć dla nich zajęcie 🙂

Udostępnij ten post


Link to post
Share on other sites

Do adaptera Bluetooth właściwie nie ma ds'a ;/ Na tej stronie co podawałem ktoś (Kilk )

nie podłączał do niczego tego pinu. En to inaczej key (chyba). Jeszcze poszperam.

Co do RC5. Na razie nie wiem jak do tego napisać program i jak to dokładnie działa. Więc jak mówisz że będzie lepiej to dam go na przerwanie INT7.

Jak na I2C będzie miejsce to wyprowadzę.

Sharp przepięty pod adc . Opornik poprawiony (był źle). Właściwie to i tak na razie nie będzie żadnego sharpa zamontowanego. (Nie będzie zakłóceń ?)

Opornik do STCP dodany.

Rezystory do nmos dodane tylko nie jestem pewien w 100% czy dobrze.

Co do tego zatwierdzania schematu. Wolę gdy ty go zatwierdzisz i będzie na 99% dobry niż gdy ja go sobie sam zatwierdzę 😉 Ja to muszę jeszcze dużo chleba zjeść 😃

Ps. Dodałem jeszcze 100nf do bufora.

Schemat:

aixI Piny miały byc do ktir'ów. 😋 Ale będzie rejestr i multupleksery 😉 Masz jakiś pomysł na co wykorzystać 😋 A i czy nie będzie z niepodłączonych pinów zakłóceń ? Właściwie to antenki ;/

Udostępnij ten post


Link to post
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!

Gość
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...