Kuchenna lampka

Projekty użytkowników forum zarówno sprzętowe, jak i związane z programowaniem w dowolnym języku.
Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Kuchenna lampka

Postautor: gaweł » niedziela 04 cze 2017, 01:02

W temacie Pokaż swój warsztat

tasza pisze:taka mi myśl przyszła, w sumie to głównie ja takie do kuchni muszę sobie zmajstrować - takie jakby oświetlenie włączane zbliżeniem ręki, a wyłączane czasówką lub też gestem, no prosty przykład - jakieś ciasto robimy na blacie, czy na kotlety mielone miąchamy w pojemniku czy cokolwiek co angażuje dłonie - ręce ubrudzone i jak tu włączyć cokolwiek? tego nie brudząc? nie uciapując?

taka lampka co jak się raz machnie jej przed nosem to działa, a drugi - to gaśnie i gaśnie też sama po czasie jakimś - ooo, to byłoby super.


No więc z kolei mi przyszedł mi do głowy szalony pomysł, może by tak utworzyć otwarty projekt, którego celem będzie opracowanie odpowiedniego rozwiązania. Może tasza kiedyś zrewanżuje się jakimś wypiekiem ;) .
Swego czasu trochę eksperymentowałem z ultradźwiękami, z czego pozostało mi hardware badawcze. Jakoś los zadbał, że nie uległ on demontażowi i jakoś się uchował, przypadek? W oryginale był to układ do wykrywania w pewnej przestrzeni obcych elementów. Działało to w ten sposób, że układ emitował impuls ultradźwiękowy i nasłuchiwał echa. Tor analogowy miał za zadanie odtworzenie obwiedni sygnału ultradźwiękowego odbitego od otoczenia. W jego skład wchodzi wzmacniacz, filtr, prostownik dwupołówkowy i detektor szczytowy, tak, że do przetwornika ADC docierał sygnał odtwarzający obwiednię odbitego od otoczenia sygnału echa. Procek rachował jakieś tam Fouriery i coś tam na tej podstawie wnioskował. W tym przypadku to zagadnienie jest deko bardziej złożone. Sądzę, że oprócz wykrycia samego ruchu, to warto pokusić się by wykonany gest był wiążący w przypadku ruchu w określonej odległości i określoną prędkością. Warto rozpatrzyć potrzebę wykrywania gestu w lewą lub prawą stronę. Może sama tasza wniesie jakąś inspirację.
Schematy:
USSENSOR.PNG
USSENS1.PNG
USSENS2.PNG
USSENS3.PNG
USSENS4.PNG

Hardware:
IMG_5824.JPG


W najbliższym czasie przygotuję trochę softu do AVR'a i PC'ta do obróbki sygnału.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: Kuchenna lampka

Postautor: j23 » niedziela 04 cze 2017, 19:24

Ciekawa koncepcja.. No, ale w jaki sposób chciałbyś Kolego Gaweł odróżnić lewą stronę od prawej, górę od dołu - tzn.mam tutaj na myśli płaszczyznę analizy odbioru dźwięku (która w każdym punkcie jest prostopadła do głównej osi najsilniejszych składowych fali akustycznej).
W moim odczuciu powinny być min.3 sensory, lub taka matryca szczelin (zasada dyfrakcji f.akust.) żeby wiadomo było z której strony poszło "zaburzenie" odbitej fali.
A nie lepiej to zrobić na podstawie fali z zakresu IR?

Pozdrawiam! J23 Jarek
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » niedziela 04 cze 2017, 22:28

Może i lepiej. Ten pomysł opiera się o analizą sygnałową odpowiedzi.
Jak wcześniej pisałem, swego czasu zajmowałem się wykrywaniem obecności obcych elementów w obrębie pewnej przestrzeni z zastosowaniem ultradźwięków. Stosowałem
ussonic1-01.jpg
ussonic1-02.jpg
Jako nadajnik (głośniczek ultradźwiękowy) używałem elementu o symbolu AW3T40 (komponent oznaczony białą kropką). Jako odbiornika (mikrofon ultradźwiękowy) używałem elementu o symbolu AW3R40 (komponent oznaczony czerwoną kropką).

Do testowania używałem specjalnie utworzonego programu w PC, który kreślił krzywe (AVR mierzy i wysyła dane pomiarowe via serial). Program ten generuje obrazki do pliku.
ussonic1-03.PNG
Rysunek zawiera w kolorze zielonym echo odczytanego sygnału traktowanego jako wzorzec do porównania → echo „logicznie” pustej przestrzeni (napisałem logicznie, czyli zawierającej stałe elementy środowiska uznane na stan pasywny, wzorcowy). Wykres w kolorze czerwonym odpowiada aktualnemu pomiarowi (z wniesionym zaburzeniem).
Niebieski kwadracik oznacza, że różnica między niebieskim a czerwonym przebiegiem jest niewielka. Czerwony kwadracik oznacza, że różnica jest znacząca.
ussonic1-04.PNG

Nadajnik i mikrofon ultradźwiękowy został umieszczony w blaszanej skrzynce, by moja obecność maksymalnie eliminowała zaburzenia pomiarowe.
ussonic1-05.jpg


Na początek obiekt z lewej strony:
ussonic1-06.jpg
Pomiary:
ussonic1-07.PNG


Obiekt na środku:
ussonic1-08.jpg
Pomiary:
ussonic1-09.PNG


Obiekt z prawej strony:
ussonic1-10.jpg
Pomiary:
ussonic1-11.PNG


Nie jest istotne, czy obiekt znajduje się z lewej czy prawej strony. Z rozkładu harmonicznych można wywnioskować, czy ruch odbywa się w prawo czy w lewo. Tak mi się wydaje.
Na oko widać, że odpowiedź "lewa" i "prawa" się różni. Zapewne gdyby obiekt znajdował się idealnie symetrycznie po drugiej stronie odpowiedzi byłyby nie rozróżnialne. Tu nawet niewielkie różnice odbijają się w kształcie odpowiedzi układu.


---------------------------------------------
Edit:
Chyba idealne symetrii nie da się uzyskać, ponieważ nadajnik i odbiornik ultradźwiękowy są obok siebie (u mnie był rozstaw 4 cm), to nawet symetrycznie umieszczenie obiektu względem pary nadajnik/odbiornik nie da symetrycznego echa. Droga nadajnik → obiekt → odbiornik będą różne.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 04 cze 2017, 22:44 przez gaweł, łącznie zmieniany 1 raz.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Kuchenna lampka

Postautor: Antystatyczny » niedziela 04 cze 2017, 22:43

gaweł pisze:W najbliższym czasie przygotuję trochę softu do AVR'a i PC'ta do obróbki sygnału.


Chętnie zerknę na fragmenty zajmujące się DFT/FFT.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » niedziela 04 cze 2017, 22:46

Antystatyczny pisze:Chętnie zerknę na fragmenty zajmujące się DFT/FFT.

Na pewno nie będę ściemniał ani coś ukrywał :D .

"Siłę koncepcji" można dostrzec w takim przykładzie:
ussens2-01.png
ussens2-02.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: Kuchenna lampka

Postautor: j23 » poniedziałek 05 cze 2017, 02:35

gaweł pisze:(...)Jako odbiornika (mikrofon ultradźwiękowy) używałem elementu o symbolu AW3R40 (komponent oznaczony czerwoną kropką).(...)
W tym momencie zapytam (bo ze zdjęcia nie widać tego dokładnie, a producent z tego co wyszukałem pdf'ów nie toleruje...), ale czy ten mikrofon ultradźwiękowy (kluczowy element w analizie) posiada przed membraną jakiś filtr w sensie płaskiego elementu z np. otworami - chodzi mi o mechaniczne/akustyczne wyeliminiowanie/odfiltrowanie fal mechanicznych/akustycznych z zakresu zwłaszcza dźwięków słyszalnych i dalej "częstotliwościowo w dół" czyli infradźwięków, etc. (taki mechaniczny filtr górnoprzepustowy tylko dla ultradźwięków - wykorzystujący efekt dyfrakcji). Nie jestem ani akustykiem, ani fizykiem, dlatego tylko tyle mi się kojarzy z fizyki o ile, ale do obliczeń średnicy otworów w takiej płaskiej blaszce (lub innym materiale - byle by był maksymalnie płaski i niespecjalnie gruby) użyłbym następującego:

λmax = v / fmin

gdzie:
λmax = długość fali, a jednocześnie maksymalna średnica otworu w blaszce
v = prędkość rozchodzenia się fali w środowisku badanym
fmin = minimalna częstotliwość ultradźwięków branych pod uwagę

Właściwie to.. powinno się chyba wykorzystywać wzory bezpośrednio z :
https://pl.wikipedia.org/wiki/Dyfrakcja
tzn. obliczeń siatki dyfrakcyjnej.

Proszę mnie wyprowadzić z błędu jeśli źle myślę, czy taki filtr byłby w stanie "zatrzymać" dźwięki o fali dłuższej niż średnica otworu, czyli dźwięki słyszalne, a więc m.in. szum (w sensie akustycznym) powodowany np. obecnością osoby przeprowadzającej ten eksperyment. Może inaczej to sformułuję... Wykorzystać zjawisko dyfrakcji i interferencji w celu odseparowania szumu otoczenia do fali akustycznej poddawanej analizie ("prążki" interferencyjne). Jak będę miał dostęp do komputera to wykonam szkic tego o co mi chodzi.

Pozdrawiam! j23 Jarek

P.S. Offtop - tak na marginesie czytam sobie o ultradźwiękach w kontekście jak to kiedyś zapamiętywano informację w komputerach szeregowych (szeregowych? -co to takiego?...) - no, w każdym wydaje mi się to o tyle śmieszne (w granicach rozsądku i kultury), że to tak kiedy komputer miał zapamiętać informacje, kazano mu nucić np. "Pory roku" Vivaldiego, ALE... za każdym razem "po swojemu", tzn. z "powplataną" informacją do zapamiętania :)
Ostatnio zmieniony poniedziałek 05 cze 2017, 21:45 przez j23, łącznie zmieniany 1 raz.
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » poniedziałek 05 cze 2017, 10:51

j23 pisze:P.S. Offtop - tak na marginesie czytam sobie o ultradźwiękach w kontekście jak to kiedyś zapamiętywano informację w komputerach szeregowych (szeregowych? -co to takiego?...) - no, w każdym wydaje mi się to o tyle śmieszne (w granicach rozsądku i kultury), że to tak kiedy komputer miał zapamiętać informacje, kazano mu nucić np. "Pory roku" Vivaldiego, ALE... za każdym razem "po swojemu", tzn. z "powplataną" informacją do zapamiętania :)

No popatrz, czego to ludzie nie wymyślą :o . I to konstrukcja, stosowana w polskich komputerach ZAM.

Komponenty w zbliżeniu:
DSCF4427.JPG

Dostałem je w ramach próbek od MASTERS z informacją, że są na 40kHz (czasami zdarzają się na 50kHz), więc powinny być u nich dostępne. Również wypróbowałem popularne elementy ultradźwiękowe (tylko gdzieś mi się zapodziały i chwilowo nie mogę znaleźć):
40sr_st.jpg

Działało równie dobrze.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: Kuchenna lampka

Postautor: j23 » poniedziałek 05 cze 2017, 21:44

Ok, mam dostęp do komputera, chociaż do dyspozycji miałem jedynie paint'a (plus jakieś kompilatory -które w tym momencie były nieprzydatne) żeby jako tako narysować to o co mi chodzi (taki szkic teorii i konstrukcji).

Na początku taka prośba o wyrozumiałość, bo jak już wspomniałem nie jestem fizykiem, tylko fizykę bardzo lubię - to jednak duża różnica. Do tego mogłem coś pomylić, zapomnieć, lub jakieś słowo przeinaczyć, więc jak coś to proszę o wyrozumiałość i konstruktywną krytykę bez specjalnych "docinek" ;) - dzięki.
To jest tak: korzystamy ze zjawisk fizycznych falowych typowych dla fal mechanicznych.. Do tych zjawisk należą m.in.:
- dyfrakcja (ugięcie fali w szczelinach odpowiadających długości fali) - to wykorzystujemy
- interferencja (zachodzenie i oddziaływanie ze sobą fal o tych samych częstotliwościach - grzbiety fal zachodzących na siebie mają zwielokrotnioną amplitudę drgań, co wynika z zasady superpozycji fali - fizyka klasyczna)
- ugięcie fali na granicy dwóch środowisk (z tego nie korzystamy, ale chodzi o to, że fala powinna się ugiąć gdyby na przykład z powietrza trafiła do wody, bo woda i powietrze mają różną gęstość)

Druga sprawa - wychodzę z założenia, że fala mechaniczna (ultradźwiękowa) jest falą kulistą, więc nie sposób wszystkiego pokazać na płaszczyźnie - proszę o odrobinę wyobraźni przestrzennej.

Teraz moje szkice... (z góry sorry za jakość, ale spieszyłem się żeby po prostu to było coś do pokazania, funkcjonalność>jakość):

Pojedyńcze źródło fali ultradźwiękowej można pokazać tak:
source.jpg

Dwa źródła fali ultradźwiękowej o tej samej częstotliwości można pokazać tak:
fala_interferecja_2x.jpg

Natomiast cztery źródła fali (co mogłoby być istotne dla tego projektu) możnaby pokazać tak:
fala_interferecja_4x.jpg


Z powyższych rysunków (zwłaszcza z ostatniego) widzimy, że w miejscach gdzie istnieją prążki interferencyjne pierwszego (P1) i drugiego (P2) rzędu fala ulega wzmocnieniu. Jeżeli doprowadzimy do sytuacji, że "naprowadzimy" na siebie cztery grzbiety fal, to -teoretycznie- amplituda fali powinna ulec czterokrotnemu zwielokrotnieniu, pod warunkiem że częstotliwość i faza pracy wszystkich czterech źródeł dźwięku (Z1, Z2, Z3, Z4) będzie taka sama. Na ostatnim rysunku to jest to pole żółte.

Teraz co i jak będziemy wykorzystywać praktycznie. Załóżmy, że uda nam się zbudować siatkę dyfrakcyjną z czterema otworami, a pośrodku umieścimy źródło dźwięku fali ultradźwiękowej (w płaszczyźnie siatki). Do tego układu dobudujemy układ analizy umieszczony poniżej z analizatorem dźwięku, który umieścimy w taki sposób, że będzie on umiejscowiony DOKŁADNIE w założonym miejscu występowania maksymalnej interferencji fal (pole żółte). Ponieważ fala dźwiękowa jest falą kulistą, znamy maksymalną możliwą długość tej fali i orientacyjnie potrafimy wyznaczyć miejsce maksymalnej interferencji to w oparciu o to (maksymalna długość fali) oszacujmy odległość pomiędzy obiema płaszczyznami (tj. siatką dyfrakcyjną i płaszczyzną analizy dźwięku), która powinna wynosić tyle ile maksymalna długość POŁOWĘ DŁUGOŚCI fali którą analizujemy.

Teraz policzmy... Nasze dane:
Dolna granica częstotliwościowa dla ultradźwięków = fmin = 20 [kHz] = 20000 [Hz = 1/s ]
Prędkość rozchodzenia się fali ultradźwiękowej w powietrzu = v = 331,3 [m/s]

Chcemy wyznaczyć maksymalną możliwą długość fali ultradźwiękowej ( λmax ) w celu określenia maksymalnej średnicy dla otworów w siatce dyfrakcyjnej, czyli korzystając ze wzoru:
λmax = v / fmin

mamy tak:
λmax = 331,3 / 20000 = 0,016565 [ m/s * s = m ]
λmax = 1,6565 [cm]

To znaczy że gdyby w siatce dyfrakcyjnej były otwory o średnicy 1,6565 [cm] to zjawisku dyfrakcji powinny ulegać ultradźwięki od 20 kHz i wyższe częstotliwości (choć im wyższa częstotliwość tym zjawisko dyfrakcji powinno być mniejsze). Najlepiej więc byłoby dopasować średnicę otworu do minimalnej faktycznie używanej częstotliwości (obliczając średnicę otworu ze wzoru).

Taki ogólny prototyp konstrukcji do analizy dźwięku przedstawiam poniżej:
prototyp.jpg

Płaszczyzna zielona to pole analizy dźwięku, w płaszczyżnie analizy dźwięku jest umiejscowiony mikrofon ultradźwiękowy w taki sposób, że jest korpus jest "pod płaszczyzną" analizy dźwięku (ciemny zielony). Płaszczyzna niebieska to siatka dyfrakcyjna z otworami o średnicy maksymalnej ustalonej długości badanych ultradźwięków. W płaszczyźnie tej jest umiejscowione źródło dźwięku - tj. głośniczek ultradźwiękowy, w taki sposób, że jest korpus jest "pod płaszczyzną" źródła dźwięku (ciemny niebieski). Kolorem czarnym oznaczono coś jakby kołki dystansowe ;) - o ile będą potrzebne, bo płaszczyzna analizy jest w zasadzie płaszczyzną wirtualną (ważne, żeby płaszczyzna głośniczka absorbowała maksymalną interferencję pochodzącą z siatki dyfrakcyjnej).

To wszystko, jeśli za bardzo zamieszałem to przepraszam, ale proszę napisać gdzie zamieszałem, lub coś pomyliłem to postaram się wyjaśnić, skorygować, ew. usunąć post jeśli to co napisałem to jakieś bzdury.

Edit 1: Odległość między płaszczyzną siatki dyfrakcyjnej a mikrofonem (analizatorem fali ultradźwiękowej) powinna być równa połowie długości fali, czyli dla powyższych 20 kHz byłoby to:
L (jako odległość między siatką (siatkami) dyfrakcyjną (ymi) a płaszczyzną analizy dźwięku) = λmax / 2
czyli dla:
λmax = 1,6565 [cm]
L = 1,6565 [cm] / 2 = 0,82825 [cm] = 8,2825 [mm]

Muszę też zaktualizować obliczenia, ponieważ.. powyżej Kolega Gaweł pisał, że głośniczek będzie emitował falę ok.40 kHz, czasami 50 kHz.
Dla 40 kHz:
λmax = 331,3 / 40000 = 0.0082825 [ m/s * s = m ]
λmax = 8.2825 [mm]
Φmax = 8.2825 [mm]
L (odległość między siatką (siatkami) dyfrakcyjną (ymi) a płaszczyzną analizy dźwięku = λmax / 2 = 4.14125 [mm]

Dla 50 kHz:
λmax = 331,3 / 50000 = 0.006626 [ m/s * s = m ]
λmax = 6.626 [mm]
Φmax = 6.626 [mm]
L (odległość między siatką (siatkami) dyfrakcyjną (ymi) a płaszczyzną analizy dźwięku = λmax / 2 = 3.313 [mm]

4,14 [mm] (czy tam 3,313 [mm]) to trochę mała odległość biorąc pod uwagę rozmiary głośniczka (źródła) i mikrofonu (analizatora) dźwięku, więc można zrobić więcej niż jedną siatkę dyfrakcyjną, przy czym otworami kolejnej "wycelować" dokładnie w maksima interferencji fali powstających z tej poprzedniej siatki dyfrakcyjnej (tej bliższej źródła dźwięku). Konstrukcja podobna z tym że ileś tam więcej płaszczyzn tych "niebieskich", no i otwory w płaszczyznach mniejsze..

Pozdrawiam! j23 Jarek

P.S. Źródła z których korzystałem, to m.in. Wikipedia, oraz:
https://ilf.fizyka.pw.edu.pl/podrecznik/3/8/7
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony wtorek 06 cze 2017, 03:57 przez j23, łącznie zmieniany 3 razy.
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Kuchenna lampka

Postautor: dambo » wtorek 06 cze 2017, 00:36

gaweł pisze:
Nie jest istotne, czy obiekt znajduje się z lewej czy prawej strony. Z rozkładu harmonicznych można wywnioskować, czy ruch odbywa się w prawo czy w lewo. Tak mi się wydaje.
Na oko widać, że odpowiedź "lewa" i "prawa" się różni. Zapewne gdyby obiekt znajdował się idealnie symetrycznie po drugiej stronie odpowiedzi byłyby nie rozróżnialne. Tu nawet niewielkie różnice odbijają się w kształcie odpowiedzi układu.


Tutaj wkleję ciekawostkę odnośnie (moim zdaniem) fajnego zastosowania FFT o którym mało osób chyba wie:
http://www.old.imnipe.pwr.wroc.pl/Wydaw ... edy/03.pdf
w skrócie z FFT prądu silnika można wykryć niewyważenie elementu, lub uszkodzenie łopatek jakiejś turbiny, a nawet ich ilość itp.
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » wtorek 06 cze 2017, 01:09

dambo pisze:w skrócie z FFT prądu silnika można wykryć niewyważenie elementu, lub uszkodzenie łopatek jakiejś turbiny, a nawet ich ilość itp.

Qrde, ten Fourier to był geniusz, normalnie nie z tego świata...

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » wtorek 06 cze 2017, 01:55

j23 pisze:Muszę też zaktualizować obliczenia, ponieważ.. powyżej Kolega Gaweł pisał, że głośniczek będzie emitował falę ok.40 kHz, czasami 50 kHz.

Elementy ultradźwiękowe są produkowane na 40kHz lub 50kHz, to są ich częstotliwości rezonansowe. Jak je poganiać z inną częstotliwością, to spada im sprawność.

j23 pisze:Na początku taka prośba o wyrozumiałość, bo jak już wspomniałem nie jestem fizykiem, tylko fizykę bardzo lubię - to jednak duża różnica. Do tego mogłem coś pomylić, zapomnieć, lub jakieś słowo przeinaczyć, więc jak coś to proszę o wyrozumiałość i konstruktywną krytykę bez specjalnych "docinek" ;)

Chyba każdy wypowiadający się tutaj nie jest fizykiem, co nie znaczy, że jest jakimś ignorantem. Na początku było napisane, że jest to projekt otwarty. Liczę na jakąś współpracę.

j23 pisze:To wszystko, jeśli za bardzo zamieszałem to przepraszam, ale proszę napisać gdzie zamieszałem, lub coś pomyliłem to postaram się wyjaśnić, skorygować, ew. usunąć post jeśli to co napisałem to jakieś bzdury.

W sumie to może być ciekawa koncepcja. Wprawdzie moja wizja raczej sprowadza się do jednopunktowego źródła sygnału. Sam, Jarku to fajnie narysowałeś i raczej nie brałem pod uwagę zjawiska dyfrakcji. Można na to spojrzeć dwojako. Z jednej strony ufam, że producent elementów wie co robi i sam element jest tak zbudowany, by wyemitować w przestrzeń "sprawną" falę, która odbija się od przedmiotów i wraca do czujnika. Z drugiej strony wyemitować impuls przez przesłonę z otworami (taka siatka dyfrakcyjna na miarę długości fali ultradźwiękowej).

Napisałem, że eksperymentowałem w blaszanej skrzyni, ponieważ na początku chciałem uzyskać jakąkolwiek powtarzalność przebiegów. Tor analogowy nie był inspirowany innymi rozwiązaniami, toteż niejako "idąc jak ślepiec" potrzebna była powtarzalność eksperymentu. Początkowo nawet skrzynia była zamykana (na jednej z fot widać fragment drzwiczek), więc by nie marnować czasu na walkę z wiatrakami, była zamykana. Pozwalało to w dużej mierze na wyizolowanie środowiska eksperymentalnego. Stojąc przed otwartą skrzynią moja obecność wpływała na wynik eksperymentu. Mając różne wyniki zaczynasz się zastanawiać, gdzie leży pies pogrzebany. Pokazane wyżej rozważania to są moje eksperymenty sprzed dwóch lat. Właściwie wtedy na tym zakończyłem zabawy, na stwierdzeniu, że ma to jakąś wartość użytkową. Obecnie naszła mnie chęć kontynuowania zabawy.
To co proponujesz Jarku, o ile dobrze cię zrozumiałem, może mieć ciekawą wartość użytkową. Czyli spojrzeć na to z punktu widzenia wielu źródeł sygnału, tak jakby do tego co jest "dodać nowy wymiar". To co, robimy badania naukowe ;) ?
Ostatnio zmieniony wtorek 06 cze 2017, 02:09 przez gaweł, łącznie zmieniany 1 raz.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: Kuchenna lampka

Postautor: j23 » wtorek 06 cze 2017, 02:07

gaweł pisze:(...)To co, robimy badania naukowe ;) ?
Oczywiście, że tak. :) Nie wiem jak Kolega Dambo, jak inni Koledzy z Forum Microgeek, ale ja jestem bardzo entuzjastycznie nastawiony. Mam nadzieję też, że podołam jakiemukolwiek przedsięwzięciu tak pod względem czasowym, finansowym jak i wszelkim innym ("mierzyć siły na zamiary" - jak to mówią, ale mam nadzieję, że z mojej strony dam radę).

Pozdrawiam! j23 Jarek
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » wtorek 06 cze 2017, 02:11

j23 pisze:"mierzyć siły na zamiary"

Cytujesz wieszczów :)

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: Kuchenna lampka

Postautor: j23 » wtorek 06 cze 2017, 16:30

gaweł pisze:Wprawdzie moja wizja raczej sprowadza się do jednopunktowego źródła sygnału. Sam, Jarku to fajnie narysowałeś i raczej nie brałem pod uwagę zjawiska dyfrakcji. Można na to spojrzeć dwojako. Z jednej strony ufam, że producent elementów wie co robi i sam element jest tak zbudowany, by wyemitować w przestrzeń "sprawną" falę, która odbija się od przedmiotów i wraca do czujnika. Z drugiej strony wyemitować impuls przez przesłonę z otworami (taka siatka dyfrakcyjna na miarę długości fali ultradźwiękowej).
To znaczy ja jedynie zaproponowałem taki "naturalny" mechaniczny filtr akustyczny, m.in. w takim celu żeby ta ze ścianek skrzynki mogła być "odkryta", a konkretniej "zabezpieczona" filtrem dyfrakcyjnym przed niższymi składowymi częstotliwości fal akustycznych powracających do mikrofonu (analizatora dźwięku).

Generalnie taki "filtr" z siatki dyfrakcyjnej powinien z falą akustyczną zrobić coś takiego:https://m.youtube.com/watch?v=vMg9SHPyMPQ czyli tak jakby "zaostrzyć" obwiednię fali ultradźwiękowej.
Teraz tak sobie pomyślałem po tym co napisałeś Kolego Gaweł nt.położenia głośniczka (źródła) i mikrofonu (analizatora), że leżą na tej samej płaszczyźnie obok siebie.. -tzn . zastanawiam się co by było gdyby tak samo oba te elementy umiejętnościć za siatką dyfrakcyjną, z tym że odległość między nimi w płaszczyźnie, na której leżą musiałaby być ŚCIŚLE wielokrotnością długości użytej fali ultradźwiękowej + 0,5xdługość fali (maksimum interferencji jest w połowie odległości między źródłami dźwięku - źródłami w sensie tymi pochodzącymi z siatki do analizatora, ALE same maksima interferencyjne fal są od siebie oddalone o długość fali). Mam w tym momencie szczerą nadzieję, że nic nie pomieszałem.. (znowu nie mam póki co dostępu do komputera). W każdym razie jeżeli "celowałoby się" głośniczkiem w siatkę dyfrakcyjną to poza siatką, a przed badaną przeszkodą, fala kuliste wychodząca z głośniczka powinna zmienić się w taką matrycę składowych tej fali jak na filmiku z YT powyżej. Podobna fala powinna powrócić z powrotem do analizatora, pod warunkiem że:
- w płaszczyźnie poziomej, tj.tej na której leży także źródło dźwięku będzie on umieszczony gdzieś w którymś z maksimów interferencji powracającej fali akustycznej
- będzie on w odległości długości fali od siatki dyfrakcyjnej (ta sama odległość co źródło)
Tak sobie myślę czy coś w ten deseń nie są konstruowane niektóre radary.. ;) ale naprawdę nie wiem tego.

Pozdrawiam! J23 Jarek
P.S. dzięki za miłe słowa :)
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » wtorek 06 cze 2017, 19:12

j23 pisze:To znaczy ja jedynie zaproponowałem taki "naturalny" mechaniczny filtr akustyczny, m.in. w takim celu żeby ta ze ścianek skrzynki mogła być "odkryta", a konkretniej "zabezpieczona" filtrem dyfrakcyjnym przed niższymi składowymi częstotliwości fal akustycznych powracających do mikrofonu (analizatora dźwięku).

Jak pisałem, zrobiłem skrzynię by uzyskać powtarzalność eksperymentu. Natomiast niższe składowe ... w torze analogowym jest filtr górnoprzepustowy na częstotliwość gdzieś w granicach 20kHz (już dokładnie nie pamiętam, chociaż można to wyrachować, ale nie chce mi się ;) ).

j23 pisze:Generalnie taki "filtr" z siatki dyfrakcyjnej powinien z falą akustyczną zrobić coś takiego:https://m.youtube.com/watch?v=vMg9SHPyMPQ czyli tak jakby "zaostrzyć" obwiednię fali ultradźwiękowej.

Mam wrażenie, że dobrze cię zrozumiałem, to jest to, co nazwałem "dodatkowym wymiarem". Może okazać się bardzo ciekawą inspiracją, która może otworzyć nowe horyzonty.

j23 pisze:Tak sobie myślę czy coś w ten deseń nie są konstruowane niektóre radary.. ;) ale naprawdę nie wiem tego.

No to dochodzimy do istotnego elementu, je też nie wiem, więc... zostają eksperymenty. Dopuki nie doświadczysz, to nie wiesz.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » środa 16 paź 2019, 12:51

Nadszedł czas by zamknąć pewne sprawy.

Utworzyłem kawałek softu dla AVR'a. Oczywiście, nie obyło się bez problemów. Początkowo w planie był stosowany procek ATMEGA1284, ale... czasami nieszczęścia się zdarzają. Konstrukcję zasilałem z zewnętrznego zasilacza przez złącze typu powerjack. Tak jakoś przez nieuwagę, pracujący układ trąciłem, spadł ze stołu (a właściwie do podłogi nie doleciał a zawisł na drutach), podnosiłem, odkryte styki złączki zasilającej (bo luźno majtały się na drucie) przejechały po pinach procka. Było tam 12V, więc procek się trochę wkurzył. Nie to że umarł do końca, ale zaczął robić jakieś głupoty i całość zaczęła się zachowywać irracjonalnie, więc został zastąpiony innym. W szufladzie znalazłem ATMEGA32, który „całkiem przypadkiem” ma identyczny rozkład pinów a jego możliwości są podzbiorem tamtego. Czyli ATM32 się nadaje a ATM1284 może jedynie więcej. Więc dalsze rozważania są związane z ATMEGA32. Drugą konsekwencją zmiany procka jest wymiana kwarca: początkowo był 20MHz ale ta prędkość jest poza zasięgiem ATM32 toteż teraz jest 16MHz (tak przy okazji dostrzegłem, że na schemacie jest drobny error, bo przy kwarcu jest napisane 10MHz :-), za co z góry przepraszam, choć pomyłka nie była zamierzona). Zmiana częstotliwości spowodowała jedynie korektę dwóch stałych: podzielnik do transmisji szeregowej i stała do wygenerowania częstotliwości 40kHz – w sumie żaden problem.
Koncepcja jest taka, że procek generuje impuls ultradźwiękowy o f=40kHz. Ta częstotliwość wynika z tego, że zastosowany „głośniczek” i „mikrofon” jest dedykowany na tą właśnie częstotliwość (R40 to „mikrofon” a T40 to „głośniczek”).
us-ilu21.jpg
Eksperymenty czas zacząć. Zbudowałem takie prowizoryczne rozwiązanie. Na kawałku laminatu od czegoś tam umocowałem elementy ultradźwiękowe i dwa kabelki ekranowane idą do procka i toru analogowego.
us-ilu22.jpg
us-ilu23.jpg
Całość umocowałem do celów badawczych do półki
us-ilu24.jpg
tworząc „namiastkę” środowiska docelowego.Całość „wisi” jakieś 70 cm nad stołem.
us-ilu25.jpg
Program w procku generuje impuls ultradźwiękowy i następnie próbkuje przetwornikiem ADC sygnał z toru analogowego. Dane pomiarowe są gromadzone w tablicy (przewiduję 512 próbek – później możne będzie zmniejszyć, na razie jest „gęsto” by dosyć dokładnie poznać środowisko i dostrzec wszystkie zjawiska jakie zachodzą).

Kod: Zaznacz cały

#define ADCTableSize                   512

static uint16_t ADCTable [ ADCTableSize ] ;
Odebrane dane po konwersji na postać znakową są transmitowane via serial do kompa, by ten zobrazował przebiegi (no inaczej się nie da, AVR nie pokaże przecież kształtu krzywej).
Do generowania impulsu jest używany TIMER1 skonfigurowany do generowania przebiegu.

Kod: Zaznacz cały

static void StartMeasurement ( void )
{
  /*-------------------------------------------------------------------------*/
  TCCR1A = ( 1 << COM1A0 ) ;
  TCCR1B = ( 1 << WGM12 ) ;
  TIMSK = ( 1 << OCIE1A ) ;
  OCR1A = TimerConstFor40kHz ;
  PulseCnt = 0 ;
  ADCTableIndex = 0 ;
  ADMUX = ( 1 << REFS0 ) ;
  ADCSRA = ( 1 << ADEN ) | ( 1 << ADIE ) | ( 1 << ADPS2 ) ;
  TCCR1B |= ( 1 << CS10 ) ;
  ADCSRA |= ( 1 << ADSC ) ;
} /* StartMeasurement */
Do rejestru OCR1A wpisana jest pewna stała. Licznik TIMER1 zlicza impulsy zegarowe (16MHz) i jak stan licznika zrówna się z zwartością rejestru OCR1A, to zmieni się pin OC1A (pin 5 w porcie D) na przeciwny (tam jest przyłączony głośniczek). Przy okazji generowane jest przerwanie (ustawienie bitu OCIE1A w TISM). Jednocześnie startuje przetwornik ADC skonfigurowany do najszybszych jak się da pomiarów sygnału analogowego. Stała do OCR1A przy kwarcu 16MHz to 200 (16000000/200=80000; 12,5μs). Czas trwania zera na pinie OC1A (12,5μs) i później jedynki (12,5μs) daje przebieg o częstotliwości 40kHz.
Przerwanka od TIMER1 trafiają do

Kod: Zaznacz cały

SIGNAL ( TIMER1_COMPA_vect )
{
  /*-------------------------------------------------------------------------*/
  PulseCnt ++ ;
} /* TIMER1_COMPA_vect */
gdzie jest zliczanie sztuk zmian stanu. Funkcja pomiarowa

Kod: Zaznacz cały

static void MeasurementService ( void )
{
  /*-------------------------------------------------------------------------*/
  StartMeasurement ( ) ;
  for ( ; ; )
  {
    if ( PulseCnt >= 20 )
    {
      TCCR1B &= ~ ( 1 << CS10 ) ;
      break ;
    } /* if */ ;
  } /* for */ ;
  while ( ADCTableIndex < ADCTableSize )
  {
    nop ( ) ;
  } /* while */ ;
  StopMeasurement ( ) ;
  NormaliseMeasurement ( ) ;
  SendADCData ( ) ;
} /* MeasurementService */
odczekuje aż zostanie osiągniętych 20 zmian stanu na OC1A (wyprodukowanych 10 pełnych impulsów) → czas trwania impulsu pomiarowego to 250μs. Taki impuls idzie w przestrzeń i po odbiciu wraca do mikrofonu, gdzie jest digitalizowany. Funkcja pomiarowa odczekuje jeszcze aż wypełni się cała tablica danych i to wszystko razem jest wysyłane do kompa PC.
W kompie mam prosty program napisany w środowisku Lazarus by „obejrzeć” co z tego wyszło i pomyśleć co z tego można uzyskać. Przykładowy rysuneczek jest następujący.
us-ilu26.png
Jest to odpowiedź „na brak przeszkód na torze”. Różne górki zapewne odzwierciedlają drobne nierówności (w końcu na stole coś leżało). Program w Lazarus, dla powyższego rysunku, zrzuca do pliku komplet odebranych danych, który wygląda następująco:

Kod: Zaznacz cały

ADC:    15     7     7     7    15    28    31    21    14     7     7     7     7     7     7     7     7     7     7     7     7     7     9    12    12    12    14    35    50    47    33    21    14     9     9    12    12    13    14    15    15    15    14    14    15    15    12    12    11     9    10     9     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     1    28    49    49    33    18    11     7     7     7     7     7     7     7     7     7     7     7     7     7     6     7     7     7     7     7     7     7     7     7     8     9     7     9     9     9    10    10     7     9     9     9    11    12     9     9     9     9     9    11    11    11    12    12    12    15    15    16    18    19    19    24    30    41    50    41    30    25    24    23    19    19    15    14    12    12     9     9     7     7     7     7     6     7     7     6     7     7     7     7     7     7     7     7     7     7    11     7    39    60    63    56    51    56    67    77    86    96   103   112   118   124   127   131   128   126   121   118   113   105    96    88    79    71    63    54    46    39    33    29    25    20    18    15    14    12    12    11    11     9     8     9     7     7     7     7     7     7     7     7     7     7     7     7     7     9    12    15    19    24    30    36    46    55    66    78    88   100   111   120   134   156   165   159   163   166   167   167   167   166   159   150   143   135   127   124   119   112   104    97    92    88    81    72    63    56    49    44    39    32    28    25    23    24    25    25    26    25    25    25    25    25    24    24    24    23    22    20    22    21    20    21    20    19    18    17    17    16    15    15    14    13    14    14    15    15    17    18    16    39    65    65    46    30    24    19    15    14    13    12    13    13    13    14    13     9     9    10    12    12    12     7     8     9     9    12     8     8     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     9     9     9    11    12    12    13    14    13    14    14    12    12    12    11    10     9    13    27    47    56    44    25    15    11     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     6     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     8     9    11    12    12    15    15    15    17    17    18    19    19    20    21    21    22    23    23    24    31    43    44    33    25    22    19    17    15    12    12    12    12    12    12    12    12    14    15    15    15    15    16    17    18    19    24    37    62    65    49    31    22    20    18    15    15    12    11    10     9     9     9     7     7     7     7     7     7     7     7     7     7     7     7     7     7     7     9     7     8     9     7     9     9     7     7     7     6     7

Konwersja <15> Data[0]=15
Konwersja <7> Data[1]=7
Konwersja <7> Data[2]=7
Konwersja <7> Data[3]=7
Konwersja <15> Data[4]=15
Konwersja <28> Data[5]=28
Konwersja <31> Data[6]=31
Konwersja <21> Data[7]=21
Konwersja <14> Data[8]=14
Konwersja <7> Data[9]=7
Konwersja <7> Data[10]=7
Konwersja <7> Data[11]=7
Konwersja <7> Data[12]=7
Konwersja <7> Data[13]=7
Konwersja <7> Data[14]=7
Konwersja <7> Data[15]=7
Konwersja <7> Data[16]=7
Konwersja <7> Data[17]=7
Konwersja <7> Data[18]=7
Konwersja <7> Data[19]=7
Konwersja <7> Data[20]=7
Konwersja <7> Data[21]=7
Konwersja <9> Data[22]=9
Konwersja <12> Data[23]=12
Konwersja <12> Data[24]=12
Konwersja <12> Data[25]=12
Konwersja <14> Data[26]=14
Konwersja <35> Data[27]=35
Konwersja <50> Data[28]=50
Konwersja <47> Data[29]=47
Konwersja <33> Data[30]=33
Konwersja <21> Data[31]=21
Konwersja <14> Data[32]=14
Konwersja <9> Data[33]=9
Konwersja <9> Data[34]=9
Konwersja <12> Data[35]=12
Konwersja <12> Data[36]=12
Konwersja <13> Data[37]=13
Konwersja <14> Data[38]=14
Konwersja <15> Data[39]=15
Konwersja <15> Data[40]=15
Konwersja <15> Data[41]=15
Konwersja <14> Data[42]=14
Konwersja <14> Data[43]=14
Konwersja <15> Data[44]=15
Konwersja <15> Data[45]=15
Konwersja <12> Data[46]=12
Konwersja <12> Data[47]=12
Konwersja <11> Data[48]=11
Konwersja <9> Data[49]=9
Konwersja <10> Data[50]=10
Konwersja <9> Data[51]=9
Konwersja <7> Data[52]=7
Konwersja <7> Data[53]=7
Konwersja <7> Data[54]=7
Konwersja <7> Data[55]=7
Konwersja <7> Data[56]=7
Konwersja <7> Data[57]=7
Konwersja <7> Data[58]=7
Konwersja <7> Data[59]=7
Konwersja <7> Data[60]=7
Konwersja <7> Data[61]=7
Konwersja <7> Data[62]=7
Konwersja <7> Data[63]=7
Konwersja <7> Data[64]=7
Konwersja <7> Data[65]=7
Konwersja <7> Data[66]=7
Konwersja <7> Data[67]=7
Konwersja <7> Data[68]=7
Konwersja <7> Data[69]=7
Konwersja <1> Data[70]=1
Konwersja <28> Data[71]=28
Konwersja <49> Data[72]=49
Konwersja <49> Data[73]=49
Konwersja <33> Data[74]=33
Konwersja <18> Data[75]=18
Konwersja <11> Data[76]=11
Konwersja <7> Data[77]=7
Konwersja <7> Data[78]=7
Konwersja <7> Data[79]=7
Konwersja <7> Data[80]=7
Konwersja <7> Data[81]=7
Konwersja <7> Data[82]=7
Konwersja <7> Data[83]=7
Konwersja <7> Data[84]=7
Konwersja <7> Data[85]=7
Konwersja <7> Data[86]=7
Konwersja <7> Data[87]=7
Konwersja <7> Data[88]=7
Konwersja <7> Data[89]=7
Konwersja <6> Data[90]=6
Konwersja <7> Data[91]=7
Konwersja <7> Data[92]=7
Konwersja <7> Data[93]=7
Konwersja <7> Data[94]=7
Konwersja <7> Data[95]=7
Konwersja <7> Data[96]=7
Konwersja <7> Data[97]=7
Konwersja <7> Data[98]=7
Konwersja <7> Data[99]=7
Konwersja <8> Data[100]=8
Konwersja <9> Data[101]=9
Konwersja <7> Data[102]=7
Konwersja <9> Data[103]=9
Konwersja <9> Data[104]=9
Konwersja <9> Data[105]=9
Konwersja <10> Data[106]=10
Konwersja <10> Data[107]=10
Konwersja <7> Data[108]=7
Konwersja <9> Data[109]=9
Konwersja <9> Data[110]=9
Konwersja <9> Data[111]=9
Konwersja <11> Data[112]=11
Konwersja <12> Data[113]=12
Konwersja <9> Data[114]=9
Konwersja <9> Data[115]=9
Konwersja <9> Data[116]=9
Konwersja <9> Data[117]=9
Konwersja <9> Data[118]=9
Konwersja <11> Data[119]=11
Konwersja <11> Data[120]=11
Konwersja <11> Data[121]=11
Konwersja <12> Data[122]=12
Konwersja <12> Data[123]=12
Konwersja <12> Data[124]=12
Konwersja <15> Data[125]=15
Konwersja <15> Data[126]=15
Konwersja <16> Data[127]=16
Konwersja <18> Data[128]=18
Konwersja <19> Data[129]=19
Konwersja <19> Data[130]=19
Konwersja <24> Data[131]=24
Konwersja <30> Data[132]=30
Konwersja <41> Data[133]=41
Konwersja <50> Data[134]=50
Konwersja <41> Data[135]=41
Konwersja <30> Data[136]=30
Konwersja <25> Data[137]=25
Konwersja <24> Data[138]=24
Konwersja <23> Data[139]=23
Konwersja <19> Data[140]=19
Konwersja <19> Data[141]=19
Konwersja <15> Data[142]=15
Konwersja <14> Data[143]=14
Konwersja <12> Data[144]=12
Konwersja <12> Data[145]=12
Konwersja <9> Data[146]=9
Konwersja <9> Data[147]=9
Konwersja <7> Data[148]=7
Konwersja <7> Data[149]=7
Konwersja <7> Data[150]=7
Konwersja <7> Data[151]=7
Konwersja <6> Data[152]=6
Konwersja <7> Data[153]=7
Konwersja <7> Data[154]=7
Konwersja <6> Data[155]=6
Konwersja <7> Data[156]=7
Konwersja <7> Data[157]=7
Konwersja <7> Data[158]=7
Konwersja <7> Data[159]=7
Konwersja <7> Data[160]=7
Konwersja <7> Data[161]=7
Konwersja <7> Data[162]=7
Konwersja <7> Data[163]=7
Konwersja <7> Data[164]=7
Konwersja <7> Data[165]=7
Konwersja <11> Data[166]=11
Konwersja <7> Data[167]=7
Konwersja <39> Data[168]=39
Konwersja <60> Data[169]=60
Konwersja <63> Data[170]=63
Konwersja <56> Data[171]=56
Konwersja <51> Data[172]=51
Konwersja <56> Data[173]=56
Konwersja <67> Data[174]=67
Konwersja <77> Data[175]=77
Konwersja <86> Data[176]=86
Konwersja <96> Data[177]=96
Konwersja <103> Data[178]=103
Konwersja <112> Data[179]=112
Konwersja <118> Data[180]=118
Konwersja <124> Data[181]=124
Konwersja <127> Data[182]=127
Konwersja <131> Data[183]=131
Konwersja <128> Data[184]=128
Konwersja <126> Data[185]=126
Konwersja <121> Data[186]=121
Konwersja <118> Data[187]=118
Konwersja <113> Data[188]=113
Konwersja <105> Data[189]=105
Konwersja <96> Data[190]=96
Konwersja <88> Data[191]=88
Konwersja <79> Data[192]=79
Konwersja <71> Data[193]=71
Konwersja <63> Data[194]=63
Konwersja <54> Data[195]=54
Konwersja <46> Data[196]=46
Konwersja <39> Data[197]=39
Konwersja <33> Data[198]=33
Konwersja <29> Data[199]=29
Konwersja <25> Data[200]=25
Konwersja <20> Data[201]=20
Konwersja <18> Data[202]=18
Konwersja <15> Data[203]=15
Konwersja <14> Data[204]=14
Konwersja <12> Data[205]=12
Konwersja <12> Data[206]=12
Konwersja <11> Data[207]=11
Konwersja <11> Data[208]=11
Konwersja <9> Data[209]=9
Konwersja <8> Data[210]=8
Konwersja <9> Data[211]=9
Konwersja <7> Data[212]=7
Konwersja <7> Data[213]=7
Konwersja <7> Data[214]=7
Konwersja <7> Data[215]=7
Konwersja <7> Data[216]=7
Konwersja <7> Data[217]=7
Konwersja <7> Data[218]=7
Konwersja <7> Data[219]=7
Konwersja <7> Data[220]=7
Konwersja <7> Data[221]=7
Konwersja <7> Data[222]=7
Konwersja <7> Data[223]=7
Konwersja <7> Data[224]=7
Konwersja <9> Data[225]=9
Konwersja <12> Data[226]=12
Konwersja <15> Data[227]=15
Konwersja <19> Data[228]=19
Konwersja <24> Data[229]=24
Konwersja <30> Data[230]=30
Konwersja <36> Data[231]=36
Konwersja <46> Data[232]=46
Konwersja <55> Data[233]=55
Konwersja <66> Data[234]=66
Konwersja <78> Data[235]=78
Konwersja <88> Data[236]=88
Konwersja <100> Data[237]=100
Konwersja <111> Data[238]=111
Konwersja <120> Data[239]=120
Konwersja <134> Data[240]=134
Konwersja <156> Data[241]=156
Konwersja <165> Data[242]=165
Konwersja <159> Data[243]=159
Konwersja <163> Data[244]=163
Konwersja <166> Data[245]=166
Konwersja <167> Data[246]=167
Konwersja <167> Data[247]=167
Konwersja <167> Data[248]=167
Konwersja <166> Data[249]=166
Konwersja <159> Data[250]=159
Konwersja <150> Data[251]=150
Konwersja <143> Data[252]=143
Konwersja <135> Data[253]=135
Konwersja <127> Data[254]=127
Konwersja <124> Data[255]=124
Konwersja <119> Data[256]=119
Konwersja <112> Data[257]=112
Konwersja <104> Data[258]=104
Konwersja <97> Data[259]=97
Konwersja <92> Data[260]=92
Konwersja <88> Data[261]=88
Konwersja <81> Data[262]=81
Konwersja <72> Data[263]=72
Konwersja <63> Data[264]=63
Konwersja <56> Data[265]=56
Konwersja <49> Data[266]=49
Konwersja <44> Data[267]=44
Konwersja <39> Data[268]=39
Konwersja <32> Data[269]=32
Konwersja <28> Data[270]=28
Konwersja <25> Data[271]=25
Konwersja <23> Data[272]=23
Konwersja <24> Data[273]=24
Konwersja <25> Data[274]=25
Konwersja <25> Data[275]=25
Konwersja <26> Data[276]=26
Konwersja <25> Data[277]=25
Konwersja <25> Data[278]=25
Konwersja <25> Data[279]=25
Konwersja <25> Data[280]=25
Konwersja <25> Data[281]=25
Konwersja <24> Data[282]=24
Konwersja <24> Data[283]=24
Konwersja <24> Data[284]=24
Konwersja <23> Data[285]=23
Konwersja <22> Data[286]=22
Konwersja <20> Data[287]=20
Konwersja <22> Data[288]=22
Konwersja <21> Data[289]=21
Konwersja <20> Data[290]=20
Konwersja <21> Data[291]=21
Konwersja <20> Data[292]=20
Konwersja <19> Data[293]=19
Konwersja <18> Data[294]=18
Konwersja <17> Data[295]=17
Konwersja <17> Data[296]=17
Konwersja <16> Data[297]=16
Konwersja <15> Data[298]=15
Konwersja <15> Data[299]=15
Konwersja <14> Data[300]=14
Konwersja <13> Data[301]=13
Konwersja <14> Data[302]=14
Konwersja <14> Data[303]=14
Konwersja <15> Data[304]=15
Konwersja <15> Data[305]=15
Konwersja <17> Data[306]=17
Konwersja <18> Data[307]=18
Konwersja <16> Data[308]=16
Konwersja <39> Data[309]=39
Konwersja <65> Data[310]=65
Konwersja <65> Data[311]=65
Konwersja <46> Data[312]=46
Konwersja <30> Data[313]=30
Konwersja <24> Data[314]=24
Konwersja <19> Data[315]=19
Konwersja <15> Data[316]=15
Konwersja <14> Data[317]=14
Konwersja <13> Data[318]=13
Konwersja <12> Data[319]=12
Konwersja <13> Data[320]=13
Konwersja <13> Data[321]=13
Konwersja <13> Data[322]=13
Konwersja <14> Data[323]=14
Konwersja <13> Data[324]=13
Konwersja <9> Data[325]=9
Konwersja <9> Data[326]=9
Konwersja <10> Data[327]=10
Konwersja <12> Data[328]=12
Konwersja <12> Data[329]=12
Konwersja <12> Data[330]=12
Konwersja <7> Data[331]=7
Konwersja <8> Data[332]=8
Konwersja <9> Data[333]=9
Konwersja <9> Data[334]=9
Konwersja <12> Data[335]=12
Konwersja <8> Data[336]=8
Konwersja <8> Data[337]=8
Konwersja <7> Data[338]=7
Konwersja <7> Data[339]=7
Konwersja <7> Data[340]=7
Konwersja <7> Data[341]=7
Konwersja <7> Data[342]=7
Konwersja <7> Data[343]=7
Konwersja <7> Data[344]=7
Konwersja <7> Data[345]=7
Konwersja <7> Data[346]=7
Konwersja <7> Data[347]=7
Konwersja <7> Data[348]=7
Konwersja <7> Data[349]=7
Konwersja <7> Data[350]=7
Konwersja <7> Data[351]=7
Konwersja <7> Data[352]=7
Konwersja <7> Data[353]=7
Konwersja <7> Data[354]=7
Konwersja <7> Data[355]=7
Konwersja <7> Data[356]=7
Konwersja <7> Data[357]=7
Konwersja <9> Data[358]=9
Konwersja <9> Data[359]=9
Konwersja <9> Data[360]=9
Konwersja <11> Data[361]=11
Konwersja <12> Data[362]=12
Konwersja <12> Data[363]=12
Konwersja <13> Data[364]=13
Konwersja <14> Data[365]=14
Konwersja <13> Data[366]=13
Konwersja <14> Data[367]=14
Konwersja <14> Data[368]=14
Konwersja <12> Data[369]=12
Konwersja <12> Data[370]=12
Konwersja <12> Data[371]=12
Konwersja <11> Data[372]=11
Konwersja <10> Data[373]=10
Konwersja <9> Data[374]=9
Konwersja <13> Data[375]=13
Konwersja <27> Data[376]=27
Konwersja <47> Data[377]=47
Konwersja <56> Data[378]=56
Konwersja <44> Data[379]=44
Konwersja <25> Data[380]=25
Konwersja <15> Data[381]=15
Konwersja <11> Data[382]=11
Konwersja <7> Data[383]=7
Konwersja <7> Data[384]=7
Konwersja <7> Data[385]=7
Konwersja <7> Data[386]=7
Konwersja <7> Data[387]=7
Konwersja <7> Data[388]=7
Konwersja <7> Data[389]=7
Konwersja <7> Data[390]=7
Konwersja <7> Data[391]=7
Konwersja <7> Data[392]=7
Konwersja <7> Data[393]=7
Konwersja <7> Data[394]=7
Konwersja <7> Data[395]=7
Konwersja <7> Data[396]=7
Konwersja <7> Data[397]=7
Konwersja <7> Data[398]=7
Konwersja <7> Data[399]=7
Konwersja <7> Data[400]=7
Konwersja <7> Data[401]=7
Konwersja <7> Data[402]=7
Konwersja <7> Data[403]=7
Konwersja <6> Data[404]=6
Konwersja <7> Data[405]=7
Konwersja <7> Data[406]=7
Konwersja <7> Data[407]=7
Konwersja <7> Data[408]=7
Konwersja <7> Data[409]=7
Konwersja <7> Data[410]=7
Konwersja <7> Data[411]=7
Konwersja <7> Data[412]=7
Konwersja <7> Data[413]=7
Konwersja <7> Data[414]=7
Konwersja <7> Data[415]=7
Konwersja <7> Data[416]=7
Konwersja <7> Data[417]=7
Konwersja <7> Data[418]=7
Konwersja <7> Data[419]=7
Konwersja <7> Data[420]=7
Konwersja <7> Data[421]=7
Konwersja <8> Data[422]=8
Konwersja <9> Data[423]=9
Konwersja <11> Data[424]=11
Konwersja <12> Data[425]=12
Konwersja <12> Data[426]=12
Konwersja <15> Data[427]=15
Konwersja <15> Data[428]=15
Konwersja <15> Data[429]=15
Konwersja <17> Data[430]=17
Konwersja <17> Data[431]=17
Konwersja <18> Data[432]=18
Konwersja <19> Data[433]=19
Konwersja <19> Data[434]=19
Konwersja <20> Data[435]=20
Konwersja <21> Data[436]=21
Konwersja <21> Data[437]=21
Konwersja <22> Data[438]=22
Konwersja <23> Data[439]=23
Konwersja <23> Data[440]=23
Konwersja <24> Data[441]=24
Konwersja <31> Data[442]=31
Konwersja <43> Data[443]=43
Konwersja <44> Data[444]=44
Konwersja <33> Data[445]=33
Konwersja <25> Data[446]=25
Konwersja <22> Data[447]=22
Konwersja <19> Data[448]=19
Konwersja <17> Data[449]=17
Konwersja <15> Data[450]=15
Konwersja <12> Data[451]=12
Konwersja <12> Data[452]=12
Konwersja <12> Data[453]=12
Konwersja <12> Data[454]=12
Konwersja <12> Data[455]=12
Konwersja <12> Data[456]=12
Konwersja <12> Data[457]=12
Konwersja <12> Data[458]=12
Konwersja <14> Data[459]=14
Konwersja <15> Data[460]=15
Konwersja <15> Data[461]=15
Konwersja <15> Data[462]=15
Konwersja <15> Data[463]=15
Konwersja <16> Data[464]=16
Konwersja <17> Data[465]=17
Konwersja <18> Data[466]=18
Konwersja <19> Data[467]=19
Konwersja <24> Data[468]=24
Konwersja <37> Data[469]=37
Konwersja <62> Data[470]=62
Konwersja <65> Data[471]=65
Konwersja <49> Data[472]=49
Konwersja <31> Data[473]=31
Konwersja <22> Data[474]=22
Konwersja <20> Data[475]=20
Konwersja <18> Data[476]=18
Konwersja <15> Data[477]=15
Konwersja <15> Data[478]=15
Konwersja <12> Data[479]=12
Konwersja <11> Data[480]=11
Konwersja <10> Data[481]=10
Konwersja <9> Data[482]=9
Konwersja <9> Data[483]=9
Konwersja <9> Data[484]=9
Konwersja <7> Data[485]=7
Konwersja <7> Data[486]=7
Konwersja <7> Data[487]=7
Konwersja <7> Data[488]=7
Konwersja <7> Data[489]=7
Konwersja <7> Data[490]=7
Konwersja <7> Data[491]=7
Konwersja <7> Data[492]=7
Konwersja <7> Data[493]=7
Konwersja <7> Data[494]=7
Konwersja <7> Data[495]=7
Konwersja <7> Data[496]=7
Konwersja <7> Data[497]=7
Konwersja <7> Data[498]=7
Konwersja <7> Data[499]=7
Konwersja <9> Data[500]=9
Konwersja <7> Data[501]=7
Konwersja <8> Data[502]=8
Konwersja <9> Data[503]=9
Konwersja <7> Data[504]=7
Konwersja <9> Data[505]=9
Konwersja <9> Data[506]=9
Konwersja <7> Data[507]=7
Konwersja <7> Data[508]=7
Konwersja <7> Data[509]=7
Konwersja <6> Data[510]=6
Konwersja <7> Data[511]=7

Program dla ATMEGA32:
us_sensor.zip

Program w lazarus:
laz.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » środa 16 paź 2019, 20:22

Nie chce mi się dłubać w szczegółach, a i w samej dokumentacji nie jest to zbyt jasno określone, w sumie decyzję o włączeniu lampi można podjąć bazując na czasie, w którym pojawia się istotne ekstremum sygnału, czyli przeliczyć numer próbki na czas jaki upłynął od początku akcji pomiarowej. Powstaje wtedy możliwość operowania w jednostkach czasu, choć w gruncie rzeczy nie ma to żadnego istotnego znaczenia. Wracając do pokazanej „pustej” odpowiedzi (trochę podrasowałem rysunki by były bardziej wyraziste).
us-ilu31.png
Ponieważ w przebiegu wystąpiły dwie górki, to postanowiłem zmodyfikować środowisko pomiarowe i wyeliminować elementy przeszkadzające. Potencjalnie róg takiej skrzyneczki mógł być przyczynkiem do pojawienia się jednego ekstremum. Dodałem ukośnie zorientowany kawałek laminatu, by rozpraszał falę akustyczną (odbita poszła w innym kierunku).
us-ilu32.jpg
Chyba okazało się to skuteczne, bo zginęła jedna górka i pozostała ta właściwa.
us-ilu33.png
Rzetelne przejście na sekundy nie jest takie trywialne. W ogólnym przypadku zjawisko jest bardziej złożone, gdyż prędkość dźwięku zależy od temperatury oraz w dosyć istotny sposób od wilgotności, w sumie zależność jest nieliniowa. To trochę utrudnia, więc może warto sprawę uprościć i w tych rozważaniach z powodzeniem tymi elementami nie przejmować się. Do podjęcia decyzji o włączeniu/wyłączeniu wystarczy posiłkować się czasem pojawienia się ekstremum, co sprowadza się do określenia numeru próbki, która ma ekstremalną wartość. Kilka przykładów „z brakiem przeszkód”:
us-ilu34.png
ekstremum jest dla próbki 224.
us-ilu35.png
ekstremum jest dla próbki 244.
us-ilu36.png
z ekstremum w próbce 245.
Jeżeli teraz umieścić przeszkodę, ja użyłem sporego kawałka laminatu (jest wystarczająco duży, płaski i sztywny), to zmienia się odpowiedź układu. Są ciekawe efekty z takiego eksperymentu.
us-ilu37.png
Tu należą się drobne wyjaśnienia: lazarusowy program generuje obrazek z możliwością pokazania na osi x-owej wartości 512 oraz na osi y-owej do wartości 520. Większe wartości funkcji program ucina, bo wychodzą poza rysunek (choć można było generować rysunek na pełny zakres wartości z przetwornika, ale jest jak jest). Tu ekstremum przesunęło się do próbki 141. Krótsza droga dla fali.
Powyższa próbka odpowiada kawałkowi laminatu trzymanego tak, by odbita fala maksymalne trafiła w sensor odbiornika. Laminat można, rzecz jasna, obrócić by przekierować energię fali w bok. Okazuje się po obróceniu o niewielki kąt, że wartość ekstremum znacząco spadła, jednak nie przesunęła się w osi czasu.
us-ilu38.png
Tu ekstremum ulokowało się w próbce numer 139.
us-ilu39.png
Jako przeszkoda od kawałka laminatu lepiej zachowuje się ręka. Jest „bardziej krągła” więc układ jest mniej wrażliwy na orientację przestrzenną. Krzywizna zawsze się jakoś dostosuje, że odbita fala zawsze da jakąś składową w pożądanym kierunku. Amplituda sygnału jest mniejsza, ale zawsze jest jakaś. Po prostu coś za coś.
Zbliżając rękę w stronę sensora, przesuwa się ekstremum.
us-ilu40.png
Oddalając rękę od sensora, ekstremum przesuwa się w drugą stronę.
us-ilu41.png
Reasumując, do obsługi takiego włącznika do lampki nie jest koniecznością stosowanie zaawansowanych narzędzi do analizy widmowej. Wystarczy znaleźć pierwsze ekstremum i na podstawie numeru próbki (czyli wartości na osi czasu) określić, czy przeszkoda jest wystarczająco blisko sensora, by wywołać określoną reakcję.
Spodziewam się, że to nie wyklucza rozpoznawania „bardziej zaawansowanych” gestów, ale do tego to już niezbędne są bardziej finezyjne rozwiązania i w sumie jest to temat na całkiem inne rozważania. Jak na razie powyższe rozwiązania spełniają podstawową funkcję, co nie znaczy, że temat z punktu widzenia badawczego jest już zamknięty.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
inż.wielki
User
User
Posty: 307
Rejestracja: niedziela 20 gru 2015, 23:11

Re: Kuchenna lampka

Postautor: inż.wielki » środa 16 paź 2019, 21:31

Nie myślałeś nad wykorzystaniem odbitych fal podczerwieni? Na dobrą sprawę wystarczy nadajnik i odbiornik, po przyłożeniu ręki takie odbija się i trafią do odbiornika. Przy wykorzystaniu dwóch takich zestawów i zrobienia z nich kurtyny można by było nawet wykrywać kierunek machnięcia dłonią

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Kuchenna lampka

Postautor: gaweł » czwartek 17 paź 2019, 03:26

Ta kwestia była już podnoszona, J23 już pytał o to. Pewnie, że można było. Jak zwykle potwierdza się stare powiedzenie: ilu inżynierów, tyle rozwiązań.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse


Wróć do „DIY”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości