Skocz do zawartości

[line follower] Snab


Pomocna odpowiedź

No tak nie myślałem o tym w ten sposób dzięki !

Multiplekser analogowy kosztuje ok. 50 groszy i żadna

No dobra ale ja mówiłem odnośnie tego co zaproponował MirekCz w takim razie czy takie coś zda egzamin ?

http://botland.com.pl/multipleksery-/742-analogowy-multiplekser-demultiplekser-hcf4051-smd.html

Zastanawiam się nad prędkością takiego układu ?

A po za tym mam kilka pomysłów

1. Jedna atmega steruje silnikami i odczytywuje swoje kanały ADC a druga przesyła jej tylko odczyt przez np USART ?

2. Dać dwa takie multipleksery+jedną ATmegę8

Co wy na to ?

Link do komentarza
Share on other sites

Kiedy zaczynasz pisać o dwóch procesorach ale połączonych ze sobą jakąś magistralą danych to jest to już zupełnie inny układ. Wtedy oczywiście wszystkie zarzuty dotyczące niepełnych danych dla algorytmu sterowania są bezpodstawne bo - jak zauważyłeś, wyniki pomiarów można przesłać do jednego, "centralnego" procesora i jakoś je tam obrobić. Ktoś tu niedawno coś takiego proponował i moje zdanie na temat już znasz - szkoda czasu.

Muliplekserów jest wiele różnych. Wziąłeś pierwszy brzegu - 4051 i to już jest jakieś rozwiązanie. Ten akurat ma 8 wejść i jedno wyjście więc dając takie dwa zużywasz 2 wejścia ADC a masz 16 czujników i jeszcze zostaje kilka wejść "bezpośrednich" do przetwornika. Niestety multipleksery wymagają adresowania, więc trzy wyjścia musisz zużyć na sterowanie. Możesz też wziąć 4052 - to podwójny 4:1. Biorąc takie dwa także przełączasz 16 wejść analogowych ale na 4 linie ADC. To chyba wydaje się optymalne bo 4052 potrzebuje tylko 2 adresów a naraz masz dostępne 4 czujniki, które możesz zmierzyć "bezpośrednio".

Układy cyfrowe serii 4000 (bramki, przerzutniki, liczniki itp) pracują poprawnie od 3 do 15V i to jest ich fajną cechą ale akurat multipleksery analogowe czują się dobrze raczej w pobliżu górnego zakresu tej skali. Przy 5V zasilania mają już całkiem duże rezystancje przejścia i jeśli Ci to przeszkadza, postaraj się znaleść coś z rodziny 74HC4000, np. 74HC4051 lub 52. Dawno temu wymyślono coś takiego, co jednocześnie ma 5V zasilania i wyprowadzenia kompatybilne z układami serii 4000 a znacznie poprawiona technologia kluczy analogowych obniżyła rezystancje kanałów takich muliplekserów do dziesiątek omów.

O prędkość byłbym raczej spokojny. Czasy przełączania takich układów są pomijalnie małe w stosunku do czasu przetwarzania ADC z ATmegi więc nie zwolni to ani trochę Twojego układu. Będziesz musiał tylko co kilka pomiarów (np. co 4 w przypadku 4052) wysłać 2 bity kolejnego adresu na jakiś port. Mając jeden przetwornik i tak musisz kolejno zmierzyć wszystkie czujniki i to niezależnie od tego, jak je do niego podłączysz. 16 kanałów to w typowym wypadku (16 x 25 zegarów ADC x 5us) = 2ms co umożliwia pomiar całego kompletu 500 razy na sekundę. Chyba wystarczy?

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Niestety multipleksery wymagają adresowania, więc trzy wyjścia musisz zużyć na sterowanie

Najwyżej wezmę ATmegę 16 i będe miał IO pod dostatkiem. Ale mógłbyś po krótceopisać jak to działa czytałem trochę o tym i wydaję mi się, że jest tak.

Multiplekser mierzy napięcie i wysyła je na nóżkę ADC uC jednocześnie wysyła do niego Adres tak żeby było wiadomo z której nóżki multipleksera pochodzi wynik. Dobrze to rozumiem ?

Link do komentarza
Share on other sites

Nigdy o tym tak nie myślałem ale w pewien sposób masz rację 🙂

Opiszę to na przykładzie 4052. Wyobraź sobie zwykły przełącznik mechaniczny taki, który łączy jedną z 4 linii z pozostałą piątą, taki "wybierak". Zamiast wajchy do przełączania masz tu numer tej wybranej, aktywnej linii podawany za pomocą 2 bitów (00, 01, 10, 11). To wszystko. 4052 nie posiada dedykowanych "wejść" i jednego "wyjścia" i może pracować w dwie strony - zupełnie jak ten przełącznik. Taki układ niczego nie mierzy, po prostu łączy jedno z 4 wejść z czujników z wyjściem, które Ty podłączasz do ADC. Multiplekser nic nie wie o żadnym przetworniku, czujnikach itp. Ma za zadanie łączyć i łączy. To Twój program, wysyłając na port wyjściowy procesora 2 bity adresuje multiplekser i musi to zrobić zanim nakaże przetwornikowi wystartować pomiar. Dzięki temu to program "podłącza" wybrany czujnik lub ich zestaw do wejść ADC, który z kolei mierzy co mu się poda na wejście i nie obchodzi go skąd to się wzięło.

Gdybyś miał np. jedno źródło sygnału a chciał rozesłać do 4 różnych odbiorców (np. sygnał z kamery na 4 różne monitory) to taki multiplekser podłączasz wtedy odwrotnie: sygnał z kamery podajesz na to, co u Ciebie w robocie jest "wyjściem" a monitory do 4 "wejść" i możesz za pomocą adresowania 2 bitami sterować tym razem rozdzielaniem sygnału analogowego na 4 tory. Układ staje się wtedy demultipleserem ale nic w środku mu się nie zmieniło - jak w przełączniku mechanicznym.

Uwaga: nie każdy multiplekser jest taki "dwukierunkowy" - to dotyczy tylko tych najprostszych.

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

Tylko z tej górki staraj się biec z otwartymi oczami. Informacje znalezione w sieci należy filtrować bardzo szczegółowo bo w większości przypadków - szczególnie te ściągane ze stron typu "każdy może zostać elektronikiem" są niestety tylko radosną tfurczością amatorów albo po prostu znalezione rozwiązanie wbrew pozorom nie pasuje do naszej konkretnej aplikacji.

1. Nie wiem z jakiego napięcia zasilania korzystał autor powyższego schematu ale gwarantowana przez producenta rezystancja kanału multipleksera 4051 przy 5V może być nawet 1k. Obciążenie jego wyjścia opornikiem 10k daje na dzień dobry błąd pomiaru napięcia rzędu 10%. Być może zamysłem była (sądząc z tego jakie sygnały są na złączach wejściowych) eliminacja oporników przy każdym fototranzystorze - wtedy OK. Każdy czujnik podłączamy kolektorem do Vcc i emiterem do wejścia multipleksera a dopiero ten podłącza opornik 10k do wybranego tranzystora. Zakładając, że czujnik taki jest źródłem prądowym to rezystancja multipleksera (nawet 1k) nie przeszkadza.

2. Filtr RC na wyjściu każdego multipleksera z elementami 10k/10uF daje częstotliwość odcięcia na poziomie pojedyńczych Hz a to oznacza, że będziesz musiał czekać np. 1 sekundę po zmianie kanału multipleksera po to, by filtr wyjściowy "dociągnął" do wartości wejściowej. Ktoś musiał mieć piekielnie dużo czasu na te pomiary. Tobie zupełnie wystarczy 0R/1nF.

3. Sterowanie wejściami INH jest u Ciebie zbędne - możesz je spokojnie dać do masy i zostawić trzy adresy (w przypadku użycia 4052 masz tylko dwa).

Link do komentarza
Share on other sites

Mniej więcej:

1. Nie ma potrzeby osobnego sterowania multiplekserami. Możesz ich adresy połączyć razem i wyprowadzić z procesora tylko 3 linie: A, B i C. Każda kombinacja tych 3 bitów będzie wybierać 2 z 16 wejść i podawać to na wejścia ADC. Wykonasz wtedy 2 pomiary i znów możesz przełączyć oba multipleksery na raz.

2. Jeżeli urwie się którakolwiek linia wejściowa czujnika (a złącza to najmniej pewny element elektroniki) to nie masz szans tego zweryfikować programowo. Jeśli podłączysz taką wiszącą w powietrzu linię Xn do wyjścia X to na kondensatorze nic się nie zmieni względem poprzedniego pomiaru i uzyskasz prawie taki sam wynik bo od strony Xn nic nie będzie sterowało wyjściem multipleksera. Najgorsze, że taki czujnik zawsze będzie powtarzał wskazania swojego poprzednika. Ja bym jednak dał jakieś oporniki (nawet i 100k) na wejściach. Przynajmniej będziesz miał wtedy 0V na niepodłączonych lub nieużywanych wejściach. Pomysł ten można połączyć z tym co zaprezentowałeś na poprzednim schemacie, czyli z ideą "dwukabelkowego" podłączenia fototranzystorów. Na wydzielonej płytce czujników (rozumiem, że taka będzie) łączysz wszystkie kolektory do plusa zasilania przychodzącego ze złącza a emitery wprost (przez złącze oczywiście) do wejść multipleksera. Czujniki nie mają wtedy żadnych oporników na swojej płytce a opornik do masy jest jeden, wspólny po stronie wyjściowej multipleksera. Rozumiesz? To pozwala zaniedbać rezystancję kanału kluczy analogowych, oszczędza 15 oporników i zapewnia, że urwany/nieużywany czujnik zawsze daje 0V.

3. Nie wiem po co taki duży procesor ale może go po prostu masz.

4. Na JP2 wyprowadź obowiązkowo masę i opcjonalnie zasilanie. Robiąc złącze z UARTem ja bym od razu wrysował konwerter poziomów na RS232. I tak będziesz go musiał zrobić a wtedy rzeźba większa i na jakichś drutach. Chyba, że masz przejściówkę na USB korzystającą z sygnałów TTL.

5. Nie chcesz jednak 4052? Przy 16 wejściach tylko dwa adresy i aż 4 czujniki dostępne na raz na 4 wejściach ADC których i tak masz wystarczająco dużo.

6. Pomysł wspólnego opornika (pkt.2) jeszcze bym rozszerzył. Mając jeden element wspólny dla 8 czujników i to odpowiadający za czułość fototranzystorów to aż się prosi o zrobienie tego w sposób ustawialny. Zamiast wspólnego opornika wstawiasz regulowane z procesora źródło prądowe i masz programową regulację czułości 🙂 Wystarczy zatrudnić wiszący wolno PWM (OC2), odfiltrować i przepuścić przez wzmacniacz operacyjny. Co Ty na to? Mógłbyś automatycznie, np. na podstawie odczytu samych czujników dobierać ich czułość bez dłubania lutownicą w płytce.

Link do komentarza
Share on other sites

3. Nie wiem po co taki duży procesor ale może go po prostu masz.

Po prostu nie wiedziałem że mogę połączyć wszystkie wejścia A,B,C razem...

5. Nie chcesz jednak 4052?

Rozumiem, że działa to tak że przełączam naraz po cztery kanały w jednym układzie ?

Tak ma to wyglądać ?

Ten pomysł z regulacją brzmi zachęcająco ale może jakiś schemacik bo jakoś tego nie widzę ...

Link do komentarza
Share on other sites

Przepraszam za zwłokę ale miałem dzisiaj w firmie deadline na pewien etap projektu a wiadomo, jak termin się zbliża to i roboty jakby przybywa..

Nie bardzo już mam siłę odpalać CADy ale naskrobałem coś na szybko. Schemat załączam. Idea jest taka:

Fototranzystor jest źródłem prądowym, więc przy danym oświetleniu wypuszcza "z siebie" (a tak naprawdę wciąga przez kolektor z zasilania i wysyła to przez emiter) jakiś prąd zależny tylko od energii padającego światła. Niezależnie od tego co podłączysz po drodze, prąd zawsze będzie płynął ten sam. Oczywiście pomijam warunki skrajne typu za duże napięcie Uce (przebijamy złącze tranzystora i płynie tyle ile daje zasilacz) albo jakieś sztuczne ograniczenie typu wielki opornik szeregowy.

Zwykle szeregowo z fototranzystorem mamy - jako "odbiornik" prądu - zwykły opornik tak dobrany (np. 5-22k), by w typowych warunkach oświetlenia prąd "wysyłany" przez tranzystor dawał jakiś mierzalne napięcie. Np. jeśli tranzystor jest podpięty kolektorem do Vcc a w emiterze ma opornik 10k do masy to wysłane przez tranzystor np. 100uA przełoży się na 100uA*10k=1V napięcia. Jeśli tranzystor zobaczy więcej światła, wyśle np. 400uA i wtedy "zobaczymy" na oporniku 4V. Oczywiście w kompletnej ciemności płynie tylko jakiś zaniedbywalny prąd ("zerowy", "ciemny") tranzystora (np. <1uA) i napięcie na oporniku wynosi praktycznie = 0V. Zauważ, że w powyższej sytuacji nigdzie nie napisałem jakie jest Vcc. Dlaczego? Bo ono nie ma tu (na razie) znaczenia. Tranzystor wysyła prąd i nic go nie obchodzi napięcie zasilania. Czy zasilisz mu kolektor z 5 czy z 12V to zawsze przy danym oporniku i danym oświetleniu dostaniesz taki sam prąd więc i takie samo napięcie wyjściowe z opornika. Co więcej, jeśli na drodze prądu znajdzie się jakaś dodatkowa rezystancja (np. kanał multipleksera, powiedzmy 200R) to ona niczego nie zmieni. Fototranzystor nadal wysyła swoje 100uA, które na naszym oporniku 10k nadal odkłada 1V. Ważne jest tylko to, by nic do naszego opornika "pomiarowego" nie dokładać równolegle. Na szczęście wejście ADC ma tak wielką rezystancję, że możemy jej wpływ tu zaniedbać i uznać, że prąd tranzystora płynie tylko przez 10k do masy.

Niestety fizyka ma swoje ograniczenia i łatwo zauważyć, że poziom napięcia zasilania jest granicą napięcia wyjściowego. Żeby tranzystor nie wiem jak się starał, nie może "wysłać" więcej prądu niż pozwala opornik więc dla 5V i opornika 10k będzie to ok. 5V/10k=500uA. W rzeczywsitości będzie trochę mniej bo tranzystor zabiera kilkaset mV na swoje potrzeby (napięcie nasycenia Uce-sat) więc dla opornika zostaje trochę mniej. A co się stanie gdy oświetlenie będziemy podkręcać jeszcze bardziej? Prąd wyjściowy tranzystora będzie rósł od 0 tylko do wartości ograniczonej opornikiem i.. wzrost się zatrzyma. Napięcie wyjściowe osiągnie max (ok. 4.8V) i koniec. Mierzyć silniejszego światła w tym układzie nie możemy. Jeśli oświetlenie zewnętrzne naszego czujnika jest duże to koniec, jesteśmy ślepi bo tranzystor czujnika wszedł w nasycenie i wszystko co jest jeśniejsze niż pewien max jest nieodróżnialnie białe. Pomysłem jest wtedy zmiana opornika. Jeśli dasz opornik np. 10 razy mniejszy to ten sam prąd tranzystora wywoła 10 razy mniejsze napięcie. OK, mamy zmianę czułości i jednocześnie górnego zakresu pomiarowego, prawda?

W konstrukcjach, gdzie zastosowano kilka czy kilkanaście czujników podłączonych równolegle do procesora jednoczesna zmiana wielu oporników jest niemożliwa a przynajmniej niełatwa, więc wstawiane są jakieś wartości "typowe" i z tym zwykle się zostaje. Mając multiplekser i jedną zbiorczą (no może dwie przy 16 czujnikach) linie analogowe możesz wstawić rezystor zmienny. Przed chwilą, gdy miałem rysować schemat z lenistwa pomyślałem chwilę i zamiast rzeźbić wzmacniacze operacyjne wstawiłem Ci regulowany potencjometr dwukanałowy. Jest to raczej tani układzik "udający" dwa zwykłe, niezależne potencjometry. Podałem tu dwa przykładowe typy, które różnią się tylko wartością rezystancji max: jeden ma 50k a drugi 100k. Myślę, że tak duży zakres regulacji pozwoli Ci na zrobienie wielu fajnych eksperymentów. Położenie suwaka ustawia się w 256 krokach przez zapis dwóch bajtów przez SPI. Jeśli napiszesz program, który na bieżąco (lub tylko podczas kalibracji) analizuje sygnał z czujników i np. uzna, że "białe" zbliża się niebezpiecznie do górnej granicy przetwornika A/D to możesz automatycznie zmienić wartość oporników w obu kanałach i tym samym obniżyć czułość całego toru. Gdy "czarne" zacznie być zbyt blisko zera ADC, podciągasz czułość zwiększając obie rezystancje tak, by zawsze być gdzieś w liniowym zakresie pracy tranzystorów bo tam jakość detekcji czarny-biały będzie najlepsza.

Z resztą - pomysłów jest wiele, sam na pewno wymyślisz coś fajnego. Poza tym sama możliwość "ręcznej" regulacji czułości poprzez zapis przez SPI jest już moim zdaniem ciekawym eksperymentem pzy różnych oświetleniach, podłożach itp.

Na schemacie nie narysowałem obwodów zasilania układów scalonych i diodek LED oświetlających trasę ale to rzeczy oczywiste.

SDC11985a.thumb.jpg.346c9a6fc6628623a9e5b11cbd79d4be.jpg

Link do komentarza
Share on other sites

Sorry, że długo nie pisałem w tym czasie powstał schemat (jeszcze przetwornicy brakuje) oraz płytka:

Płytka:

Co myślicie ?

Co do tego regulowanego opornika przy wyjściu tak tak sobie myślę że sobie odpuszcze... Za mało miejsca ...

Link do komentarza
Share on other sites

Tolo, jesteś pewien z tym mikrokontrolerem pod silnikiem? Na dodatek na tej samej warstwie... Coś czuję, że zakłócenia dadzą się we znaki. Ta sama sytuacja tyczy się ścieżek do rezonatora kwarcowego - ja bym nie dawał ich tak blisko turbiny.

Masz tyle miejsca na tej płytce, a wszystko upchałeś w prawej jej części i to w dodatku na górnej warstwie.

Link do komentarza
Share on other sites

Jaki jest sens pokazywania płytki zrobionej na podstawie niekompletnego schematu? Brak systemu zasilania, niepotrzebnie zdublowane adresowanie multiplekserów, jakieś wiszące sygnały INx, brak wartości elementów, itd..

Czego oczekujesz, że ktoś to pochwali albo zgani? Przecież nie ma o czym mówić, nie skończyłeś swojej roboty to dlaczego mamy ją oceniać? Pokaż schemat to powiem Ci co o nim myślę. Na razie widzę jakiś półfabrykat, szkoda czasu.

Link do komentarza
Share on other sites

Jako, że jest koniec roku szkolnego znalazłem trochę czasu aby podłubać nad płytką w między czasie doszedłem do wniosku, że lepiej zrobię jeśli pójdę utartą ścieżką i zrobię tego robota "standardowo"...

Ale mam kilka pytań :

1. Czy wewnętrzny pull-up uC wystarczy ? Widziałem już takie podłączenie w innych konstrukcjach więc chyba da radę ale chciałbym się upewnić...

2. Czy prowadzenie PWM i sygnałów sterujących blisko ścieżki zasilającej mostki (dół płytki) może jakoś wpłynąć na pracę układu ?

3. Jaki dać odstep od turbiny ?

Płytki:

Zależało mi aby EDF był w osi silników bo to powinno ułatwiać skręcanie ?

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.