Skocz do zawartości

Schemat lf Nowy/Sprawdzenie/Poprawa


BlackSkill

Pomocna odpowiedź

Na te wolne adc to mógłbyś dać jakiś analogowy akcelerometr lub żyroskop. Masz już stabilizator 3,3v. Musiałbyś tylko zmienić napięcie odniesienia adc na 3,3v i dostosować wartości rezystorów od dzielnika napięcia.

Nie zaszkodziłyby też enkodery pod wolne przerwania...

Link do komentarza
Share on other sites

Skoro główną ideą programu będzie reagowanie na zdarzenia zamiast marnowania czasu na czekanie, to musisz jakoś do procesora te zdarzenia doprowadzić. Wejścia przerywające są takimi właśnie sygnałami. Duży procesor ma ich dużo, bo i pracuje zwykle w większym systemie, gdzie się więcej dzieje. Dobrze, że go masz i nie zmieniaj już tego. Wolne nóżki w niczym nie przeszkadzają. Wyprowadzona magistrala I2C przyda się na pewno przyszłości. Nie wiem czy jest sens teraz rozstrzygać co to mogłoby być. Jak już zrobisz kawał kodu i zapragniesz wyświetlacza czy akcelerometru, podepniesz się do złącza I2C i tyle.

RC5 składa się z impulsów ułożonych w pewien wzór. W sumie to bardzo proste kodowanie, ale wymaga znajomości czasu kiedy zbocza impulsów się pojawiły. Wejście przerwania umożliwia zasadzenie się z odpowiednią funkcją na zbocze (przez zaprogramowanie odpowiednich rejestrów procesora zarządzających przerwaniami) i sprzętowe wymuszenie wykonania tej funkcji gdy zbocze przyjdzie. Do liczenia czasu procesor ma timery więc puszcza któryś tak, by zliczał np. mikrosekundy czasu rzeczywistego. Funkcja obsługi przerwania musi taki biegnący timer przeczytać i z tego wie kiedy zbocze impulsu przyszło. Odpowiedni algorytm zamienia zmierzone czasy na odebrane bity a potem składa je w pełny kod RC5. Zmiana numeru przerwania niczego nie zmienia, więc pod tym względem INT7 nie jest ani lepsze ani gorsze od innego INTx. Zależało mi natomiast na uwolnieniu szyny I2C, bo ta wyprowadzona jest tylko na dwa konkretne piny procesora i jeżeli nie musisz, nie warto ich marnować na inne rzeczy. Natomiast pin PE7 ma jeszcze inną ciekawą funkcję: sprzętowe łapanie czasów. Wejście IC3 jest połączone wprost do układów Timera 3 i umożliwia zapamiętywanie czasu zdarzeń bezpośrednio w chwili ich zajścia. To jeszcze bardziej ułatwia odbiór takich kodów jak RC5 i żal byłoby z tego nie skorzystać. Funkcja obsługi przerwania od IC3 nie musi odczytywać wciąż liczącego timera - wystarczy, że odczyta gotowy, zapamiętany czas zdarzenia. Właśnie z takich powodów warto zapoznać się z zasobami procesora i porównać je z tym co ma on robić w systemie i przyporządkować odpowiednie wejścia/timery/przerwania/UARTy/SPI/I2C itd do czekających zadań.

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

Nie wiem, czy dobrym pomysłem jest kupno tego modułu. Jest on zbudowany na układzie PL2303XH, z teg oco mi wiadomo niektórzy mieli z nim problem. No ale za taką cenę nie ma się co dziwić. Może zainteresuj się układem FT232R.

Link do komentarza
Share on other sites

Nie znam tej przejściówki, ale w opisie aukcji jest link do scalaka firmy Prolific. Nie lubię tych układów, bo zawsze są jakieś problemy z driverami - choć być może to tylko moje złe doświadczenia na WinXP.

Sprzedający nie dał specyfikacji sygnałów interfejsu UART (bo niby skąd miałby to wiedzieć - kupuje płytki daleko na wschodzie pewnie na kilogramy) a moim zdaniem PL2303 może pracować wyłącznie z sygnałami 3.3V i niższymi (np. 2.5V, 1.8V). To znaczy, że masz podobny problem co z modułem BT. Niby w tytule aukcji mamy "Arduino", ale ostatnio każda rzecz się sprzeda, byle z tą naklejką. Jest też "RS232" a to już kompletna bzdura w tym kontekście. Na Twoim miejscu zapytałbym Sprzedawcę o możliwość współpracy z sygnałami 5V. Ciekawe co odpowie?

Sygnały 3V i 5V na pewno obsługują układy f-my FTDI (sam ich używam), ale taka przejściówka kosztuje powyżej 20zł:

http://allegro.pl/konwerter-usb-uart-rs232-ft232rl-arduino-3v3-5v-i4929790829.html

Może da się gdzieś to kupić taniej?

EDIT: Pisaliśmy razem 🙂

EDIT2: A może najtaniej jest posadzić FT232R na płytce obok procesora i od razu mieć złącze USB?

Link do komentarza
Share on other sites

BlackSkill ja korzystam z takiej przejściówki i nie mam z nią żadnych problemów. Na Win7 instaluje się sama. Jak na razie komunikowałem się z nią napięciami 3,3V, ale chyba nie powinno być problemów z 5V. Dla bezpieczeństwa można zawsze dać szeregowo rezystory 1 - 5k.

Link do komentarza
Share on other sites

W danych katalogowych producenta piszą, że 3.3V to maks. na wejściu. Ja bym do 5V nie podłączał. Pamiętaj, że Twoją poradę przeczyta mnóstwo ludzi więc pisz tylko to co wiesz na pewno.

Oporniki szeregowe to równie kiepskie albo nawet gorsze rozwiązanie niż dzielnik rezystorowy. W dzielniku przynajmniej wiesz, że nic wejściom nie robisz złego. Dla wolnych sygnałów działają OK, choć sztuka cierpi. Natomiast opornik szeregowy ogranicza jedynie prąd wpływający do wejścia, ale wiesz dokąd on płynie? Bo przecież nie wprost do masy - wejścia nie mają takiego połączenia. Jeżeli w specyfikacji jest podane maksymalne napięcie wejściowe jako VO_33+0.3V to znaczy, że wejścia wyposażone są w diody skierowane do zasilania VO_33 a to z kolei oznacza, że wpuszczając prąd do wejścia przepływa on przez diodę na wewnętrzną szynę zasilania scalaka. Nie wiesz jak zachowa się jego stabilizator przy dodatkowym zasilaniu "z boku" ani ile prądu pobiera ta akurat domena zasilania. Jeżeli swoim prądem pokryjesz jej zapotrzebowanie, napięcie na szynie 3.3V wzrośnie w sposób niekontrolowany. To może prowadzić do wszelkich możliwych skutków: od braku zmiany poprzez dziwne/niepewne działanie aż do uszkodzenia. Nie radziłbym takich rozwiązań początkującym, bo można je stosować wyłącznie świadomie i to tylko wtedy, gdy jesteś pewien co jest po drugiej stronie. Tutaj nie wiemy co Prolific wstawił do środka swojego konwertera więc trzeba projektować zgodnie z regułami.

Link do komentarza
Share on other sites

No tak, trzeba tylko zapewnić wybór źródła sygnału RXD bo przecież wyjścia dwóch modułów nie mogą pracować na wspólną linię - zworka 3-pinowa?

I może warto jednak odcinać dane idące z procesora do BT po to, by nie nadawać śmieci gdy gadasz z kompem przez USB - druga zworka? 😐

Link do komentarza
Share on other sites

To tak. Pierwszy prototyp płytki już jest. Płytka wyszła trochę ser z setką dziur. Musze jeszcze rozlać masę i kilkanaście poprawek jeszcze będzie..

Dam radę wykonać to termotransferem ? Najmniejsze scieżki 0,3mm. Płytka do poprzedniego robota wyszła mi bezproblemowo.

Stwierdziłem też że zamiast potencjometru do ustawiania progu użyję PWM. Użyje filtra dolnoprzepustowego.

Gdy wrzuciłem schemat na fanpage na Facebooku jeden z obserwujących wypomniał mi histerezę w komparatoach. Marek też o tym mówił lecz ja brzydko to "olałem".

Pomyślałem że chyba jednak warto to poprawić jak mam mieć przez to później problemy.

Tutaj jak Marek wytłumaczył mi na pw co to jest histerza:

O histerezie przypominam przy omawianiu każdego projektu korzystającego z komparatorów, ale ponieważ prawie nikt tego nie słucha (bo przecież "wzorcowe" schematy w sieci tego nie mają) to powoli mi się to nudzi. Nie pamiętam, czy w Twoim wątku o tym wspominałem. Jeśli nie, przepraszam.

Generalnie chodzi o to, że komparator to po prostu wzmacniacz. Układ o bardzo dużym (np. 10 tys. razy) wzmocnieniu na którego wejście podajesz swój sygnał z czujnika. Dopóki różnica między jednym wejściem a drugim jest większa niż kilkadziesiąt mV, na wyjściu komparatora jest albo GND albo Vcc bo przecież jego napięcie wyjściowe nie może wyjść poza te granice. Jeżeli jednak różnica zmniejsza się do poziomu pojedynczych mV, czyli czujnik bardzo zbliża się do napięcia progowego ustawionego potencjometrem, na wyjściu zaczynasz mieć napięcie analogowe równe różnicy wejść pomnożonej przez wzmocnienie komparatora. Ponieważ żaden rzeczywisty sygnał nie jest pozbawiony szumów oraz zakłóceń, sygnał z czujnika odbiciowego nie jest lepszy. Ma w sobie i szumy zasilania diody nadawczej i szumy fototranzystora, ale przede wszystkim widać w nim fluktuacje zmian oświetlenia. Fototranzystor widzi przecież nie tylko to co "nadaje" jego diodka, ale też wszystko inne co dociera pod płytkę czujników. Jeżeli jesteś w pomieszczeniu ze sztucznym oświetleniem, to wszystko mruga. Mrugają żarówki, świetlówki i nowoczesne lampy energooszczędne. Lampy LED zasilane z dobrych stabilizowanych zasilaczy może najmniej, ale i tu nie ma pewności. Tak więc na sygnał odbity od podłoża nakłada się 100Hz od oświetlenia i to widać nawet a oscyloskopie. A jeśli tam można zobaczyć, to czuły komparator dostrzeże to na pewno. Tak więc przejeżdżając z czarnego podłoża na białe, zamiast ostrego przejścia z zera na jeden dostaniesz na wyjściu zero, potem ciąg 100Hz a potem stałą jedynkę. Oczywiście stany możesz odwrócić, bo to zależy od sposobu podłączenia wejść komparatora i samego czujnika, ale fakt pojawiania się zakłóceń na progu szarości jest ewidentny.

Co zrobić? Zastosować histerezę. To zjawisko znane nie tylko w elektronice. Tak działają np. wyłączniki elektryczne. Gdybyś mógł bezpośrednio wpływać na odległość między zestykami przełącznika, robiąc to powoli doszedłbyś do sytuacji gdy zaczyna przeskakiwać iskra ale styk nie jest jeszcze zwarty. To szybko by go wypaliło a wyłącznik miałby trwałość pewnie ze 100 takich "miękkich" załączeń. Na szczęście prawie każdy ma histerezę 🙂 Wprowadzona jest specjalna blaszka, sprężynka lub membrana, które "pomagają" w pewnej chwili zestykom szybko się zetknąć. W przeciwną stronę zestyk jest szybko rozłączany. Ceną jest to, że żeby to włączyć musisz głęboko wcisnąć przycisk a żeby rozłączyć, musisz wrócić dalej niż by to wynikało z punktu załączenia. Układ ma dwa stany stabilne a sygnał wejściowy musi "przechylić" zestyk na jedną bądź na drugą stronę. Jeżeli byś delikatnie drgał przyciskiem, nie spowodujesz migotania odbiornika prądu, bo wyłącznik będzie "zapadnięty" w jeden lub drugi stan. Jasne, że duże drgania przycisku spowodują przełączanie, ale głębokość histerezy tak się dobiera, by spodziewane zakłócenia jej nie przełamywały.

To samo możesz zrobić w komparatorze. Wystarczy, że dużym opornikiem połączysz wyjście z wejściem "+". Stan wysoki na wyjściu przeniesie się w niewielkiej części na wejście "+" i będzie "pomagać" komparatorowi zostać w tym stanie, bo jakby doda się do odpowiedniego sygnału wejściowego. Stan niski zrobi to samo, ale będzie "ciągnął' komparator do stanu niskiego. Żeby dodawanie zadziałało, sygnał musi być odseparowany od wejścia "+" małym opornikiem. Tak więc sygnał wejściowy podawany kiedyś na wejście "+" będzie teraz musiał "przełamywać" oporny komparator tak, jakby musiał go przekonać, że warto już zmienić stan na przeciwny. Na pewno znajdziesz odpowiednie schematy i wzory do obliczeń w sieci. Ważne, żebyś rozumiał jak to działa i po co to jest. Z resztą obliczenia sprowadzają się prostych dzielników rezystorowych, więc wzory możesz sam wymyślić.

Pewnie z 80% komparatorów ma wyjścia typu otwarty-kolektor a to znaczy, że umieją na wyjściu zrobić tylko stan niski. Stan wysoki musisz zrobić sam za pomocą opornika podciągającego do Vcc. Procesory AVR mogą sobie same włączać takie oporniki programowo, więc stosowanie podciągów na wyjściach komparatorów nie jest konieczne. Jeśli jednak będziesz chciał wbudować histerezę, warto wiedzieć jaki opornik ciągnie w górę wyjście komparatora (bo jego wartość wchodzi do wzorów). Na wejściu portu jest to zwykle kilkadziesiąt kΩ, ale dokładnie to nie wiadomo - rozrzuty technologii są duże. Dlatego być może warto dać własne podciągi rzędu kilku kΩ, bo wtedy wiesz co masz i możesz liczyć histerezę dokładniej.

Wiesz, lepiej żebyś pytał w swoim wątku publicznym, na pewno wielu jest chętnych do pomocy a i odpowiedzi przeczyta więcej osób. Może to kogoś czegoś nauczy?

M.

Jako tako rozumiem co to ta cała histerza. Szukałem trochę na necie. Znalazłem kilkanaście postów jak Marek przypominał o histerzie (Faktycznie do znudzenia 😋 )

Lecz za bardzo nie wiem jak dobrać rezystory. Znalazłem gdzieś wzór na obliczenia do tego lecz gdzieś zgubiłem stronę ;( Pomożecie je dobrać ?

Znalazłem też z kogoś schematu (wklejam kawałek), o ile dobrze zrozumiałem tutaj jest użyta histerza .... Czy starczą te 3 oporniki w tych miejscach czy gdzieś jeszcze....

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.