Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie układami logicznymi poprzez wyjście słuchawkowe telefonu

01 Wrz 2019 00:17 438 32
  • Poziom 2  
    Cześć :). Pewnego razu wpadłem na pomysł, by wykorzystać do czegoś stary telefon. Pomyślałem o tym, czy można byłoby w jakiś prosty sposób sterować nim różnymi urządzeniami - i uznałem, że najprościej będzie do tego wykorzystać wyjście słuchawkowe, z uwagi na to, iż (w odróżnieniu od wyjścia USB) stosunkowo łatwo je zaprogramować. I tu powstaje moje pytanie - w jaki sposób połączyć wyjście słuchawkowe telefonu z wejściem logicznym jakiegoś układu, np. scalakiem serii 74xx, tak by powiedzmy odtwarzanie tonu sinusoidalnego oznaczało logiczną jedynkę, a jego brak zero?

    P.S. Tak, oczywiście szukałem w Google i na elektrodzie, ale nic nie znalazłem i tak, jestem również początkujący ;) (jedyne co mam, to trochę wiedzy teoretycznej ze studiów informatycznych)
  • Relpol przekaźniki
  • VIP Zasłużony dla elektroda
    Przerzutnik Schmitta sterowany wyprostowanym napięciem zmiennym sygnału audio? Wystarczy jedna dioda i kondensator na wejściu przerzutnika.
  • Relpol przekaźniki
  • Moderator Projektowanie
    Kartoo64 napisał:
    tak by powiedzmy odtwarzanie tonu sinusoidalnego oznaczało logiczną jedynkę, a jego brak zero?

    Grzegorz Markowski napisał:
    Przerzutnik Schmitta sterowany wyprostowanym napięciem zmiennym sygnału audio?

    Tak, ale nawet i to nie jest konieczne, bo wystarczy sam układ logiczny z wejściem Scmitt'a (np. 7413), a nawet "od biedy" - i bez wejścia Schmitt'a - czyli każdy 74xx.
    Tyle, że sygnał sinus zostanie zamieniony na ciąg jedynka-zero-jedynka-zero-... i co z tym zrobisz?
  • VIP Zasłużony dla elektroda
    No nie wiem.
    W starych magnetofonach był stosowany prosty układ do uzyskiwania z sygnału audio, napięcia dodatniego względem masy do zasilania wskaźników wysterowania.

    Sterowanie układami logicznymi poprzez wyjście słuchawkowe telefonu

    Tutaj nie będziemy mieli zmiennego poziomu napięcia, ale jakieś napięcie dodatnie względem masy.
  • Specjalista elektronik
    Po pierwsze, wypada sprawdzić, jaki jest poziom sygnału - podejrzewam, że parę dziesiątych wolta wystarczyłoby do ogłuchnięcia tego, kto założył słuchawki, i raczej stosuje się mniejszy sygnał - więc konieczne będzie jego wzmocnienie, może 10-krotne, może i 30-krotne - do przetestowania. Pojedynczy tranzystor zasilany napięciem 5V bez sprzężenia zwrotnego daje 100-krotne, i ono będzie za duże - trzeba będzie dobrać sprzężenie zwrotne tak, by uzyskać pasujące napięcie sygnału.

    Po drugie, można użyć NE555 - wejścia TRIG i THR podłączyć do kolektora tranzystora i dobrać punkt pracy tranzystora (ze stabilizacją poprzez sprzężenie zwrotne) tak, by normalnie mieć na kolektorze około połowy napięcia zasilania. Poza tym wejście powinno być podłączone poprzez kondensator - żeby nie przepuszczać składowej stałej, i żeby obciąć pasmo przenoszenia od dołu, przepuszczając np. częstotliwości od 2kHz w górę (od góry chyba nie trzeba ograniczać, można do 20kHz).

    Sygnał sterujący powinien zawierać najpierw w miarę powolne (dla obcięcia pasma na 2kHz w czasie około 1ms) przejście od 0 (taki poziom byłby brakiem sygnału) do skrajnej wartości napięcia, potem szybki skok do przeciwnej skrajnej wartości, i znowu powolny powrót do 0. Obcięcie pasma przez kondensator zrobiłoby z tego napięcie na poziomie kilku, może kilkunastu % możliwego (w czasie pierwszego powolnego przejścia), potem maksymalne możliwe w przeciwną stronę (podczas skoku), i znowu te kilka-kilkanaście % w pierwszą stronę. To podczas skoku ustawiłoby stan wyjścia NE555.

    A właściwie to można podawać na wyjście audio stany dodatnie/ujemne - szybka zmiana po przejściu przez kondensator ustawiałaby (a raczej przestawiała) stan NE555. Oczywiście zakładam, że możliwe jest generowanie dowolnego kształtu przebiegu na wyjściu słuchawkowym. A to jest mono, czy stereo? Mono wymagałoby (jeśli chciałoby się uzyskać coś więcej, niż tylko 1 wyjście logiczne) transmisji szeregowej z pilnowaniem czasu; stereo pozwoliłoby wykorzystać jedną linię jako dane, drugą jako zegar i wtedy czasy (a raczej ich niedokładności) nie będą istotne.
  • Poziom 27  
    Proponuję zastosowanie LM567 - układ dekodowania tonu. Układ jest odporny na przesterowanie (Uwej 50-300mV), stosowany kiedyś w telekomunikacji.
  • Poziom 2  
    Dzięki wielkie za wszystkie odpowiedzi :) Na ten moment najprostszy dla mnie wydaje się sposób z wykorzystaniem przerzutnika Schmita - na pewno go przetestuję. Na początek powinien mi wystarczyć.
    Ale co do układu na NE555, to jak dokładnie miałoby to wyglądać? Czy mógłbym ewentualnie prosić o jakiś schemat, bo nie znam się jeszcze na tyle by to sobie wyobrazić ;)
  • Poziom 30  
    Aż dziwne, że nie padło tu banalne rozwiązanie właściwie podłączone bezpośrednio do telefonu. Wrzuć w Google hasło "dekoder DTMF" i wtedy dopiero ma to sens. Możesz wykorzystać gotowy moduł, albo w oparciu o samego scalaka zrobić własny. Co zyskujesz? Pewność działania! 20 lat temu za czasów CB radia w domu potrzeba była sterować gdy byłem w zasięgu. Wszelkie jednotonowe filtry wciąż łapały zakłócenia mimo stosowania układów czasowych. Po użyciu dtmf problemy się skończyły. Dodam, że nadajnik dtmf masz już wbudowany w KAŻDY telefon ;-)
  • Specjalista elektronik
    Można użyć bramki z przerzutnikiem Schmitta (przez 2 't'), i poprzedzić ją wzmacniaczem na tranzystorze (układ z opornikami: R_C kolektor-zasilanie, R_CB kolektor-baza, R_BE baza-emiter, R_BI baza-wejście). Wzmocnienie jest w przybliżeniu R_CB/R_BI; napięcie kolektor-emiter 0.65V*(1+R_CB/R_BE). Tylko jeszcze trzeba trafić z napięciem w przedział między progami przerzutnika Schmitta - dla NE555 to jest 1/3 i 2/3 napięcia zasilania, dla bramki z przerzutnikiem Schmitta jest mniejszy.

    Zamiast tranzystora można użyć wzmacniacza operacyjnego - nieco droższy (ale to grosze), za to łatwo dokładniej trafić z napięciem (ale i tak trzeba mieć jakiś wzorzec tego napięcia, które ma być).

    Jeszcze jedna możliwość: komparator + dodatnie sprzężenie zwrotne. To da przerzutnik Schmitta o zadanych parametrach - można je dopasować do poziomu sygnału.

    DTMF (np. MT8870 to jest dekoder DTMF, w obudowie SMD kosztuje ~1zł) - podejrzewam, że dla początkującego to może być nieco za trudne. Ale może nie? W Semiconductors Bank mają ten scalak (również w obudowie przewlekanej, ale to ponad 3zł) i opis do niego. 18 nóżek, rozróżnia 16 kombinacji tonów, 4 wyjścia podają, którą rozpoznał.
  • Poziom 30  
    Są gotowe moduły z dtmf. Trzeba tylko poszperać i przystosować do własnych potrzeb. Wg mnie to będzie najlepsze rozwiązanie.
  • Poziom 30  
    Kiedy ja uruchamiałem dtmf byłem raczej początkującym elektronikiem. Owszem, umiałem złożyć układ zgodnie ze schematem, ale do samego projektowania było mi daleko. W tym przypadku może to być krok do przodu dla autora tematu. Poza tym teraz jest Internet - ja go wtedy nie miałem. Są fora (np. to tutaj) gdzie bez problemu można uzyskać pomoc.
    Wskazówka: Wyjście dekodera jest binarne. W zależności od potrzeb można podłączyć kolejną kość, np. dekoder 1 z 10 lub zrobić na bramkach AND (NAND) logikę na konkretną zdekodowaną cyfrę. Można w końcu dodać jakiś niewielki uC, oprogramować i reagować na konkretny szereg cyfr (jak PIN lub HASŁO). Możliwości jest mnóstwo, a najważniejsze, że sygnał jest bardzo odporny na zakłócenia czego nie można powiedzieć o pojedynczym tonie, gdzie już jakaś muzyka może wywołać fałszywe załączenie.O prostym podłączeniu bezpośrednio do tel już nawet nie wspomnę :)
  • Specjalista elektronik
    A możesz te swoje tezy zilustrować podając namiary na jakiś tutorial zrozumiały dla początkującego? Bo na razie oddalasz go od rozwiązania problemu.

    O tym, jakie jest wyjście, to ja pierwszy napisałem - i napisałem, że jest 16, a nie 10 rozpoznawanych kombinacji. Chyba jednak mało się znasz na tym, o czym piszesz...
  • Poziom 30  
    Kiedy autor się odezwie i sprecyzuje oczekiwania wtedy pomogę.

    Dodano po 52 [sekundy]:

    Pisząc 1 z 10 dałem przykład, można przecież użyć kości 1 z 16.
  • Specjalista elektronik
    Pytanie: co możemy mieć na wyjściu słuchawkowym telefonu, którego chce użyć autor? Czy np. sygnały DTMF? Czy przebieg zadawany programowo? Jakie napięcie?

    Gdyby to był telefon "przewodowy" z wybieraniem tonowym, to na linii dawałby sygnały DTMF i potrzebował zasilania - nie pamiętam jakiego, 30V przez 500 omów?

    Ale są jeszcze "bezprzewodowe" ze stacją bazową podłączaną do linii (i kilkoma słuchawkami), są komórkowe, są stare z wybieraniem impulsowym...
  • Poziom 30  
    Przecież widmo audio to nie jeden prążek, stereo to dwa takie widma. Stosując układy wzmacniaczofiltrów masz tyle sygnałów na ile wąską charakterystykę będą miały twoje filtry.
    Po odfiltrowaniu możesz nawet użyć detektora szczytowego - masz dzięki temu przebieg ograniczony stałą czasową i to dopiero skonwertować na poziomy logiczne tego czym chcesz sterować.
    Z poziomu telefonu musisz uzyskać sygnał złożony z odpowiednich częstotliwości. A jeśli nie wymagasz dużej szybkości działania możesz je nawet przełączać zwiększając odpowiednio stałą czasową detektora.

    No i warto wspomnieć, że jeśli to miałby być telefon stacjonarny (który nie ma wyjścia słuchawkowego porównywanego z wyjściem usb w pierwszym poście) to wybieranie tonowe też można rozpoznawać korzystając z filtrów i detektorów szczytowych.
  • Specjalista elektronik
    A to akurat będzie bardzo skomplikowany sposób. Może już lepiej jakiś STM32, który ma 2 ADC 1MS/s (Arduino raczej jest za wolne i ma tylko 1 kanał ADC ~80kS/s) i na nim dekodowanie sygnału? Ale to oznacza dużo szukania przykładowych programów po sieci i dobierania takich, które uda się "upchnąć" do uC ze względu na wymagania co do zasobów - pamięci, szybkości procesora... A do rozpoznawania wybierania tonowego są układy DTMF.
  • Poziom 30  
    Na odpowiednim arm możesz i zrobić fft - pytanie czy to coś co chciałby robić początkujący elektronik, tym bardziej że zrobienie filtru jest rzeczą wiele łatwiejszą niż podstawowa komunikacja po usb a fft już nie koniecznie ;)

    Najważniejsze jest pytanie - co cię interesuje w elektronice - programowanie, układy analogowe czy cyfrowe. A może tylko to tylko dodatek do programu w telefonie ?
    W przypadku z pierwszego posta również można użyć detektora szczytowego i wzmacniacza na tranzystorze - np by przez transoptor i przekaźnik włączyć amplituner / wieżę itd po wykryciu sygnału.
  • Poziom 30  
    Właśnie biegając z kosiarką przez ostatnie 2.5h wpadłem na pomysł fajnego sterownika z użyciem dtmf. Ten temat jest inspiracją i przypomnieniem, że przed laty miałem już taki plan lecz został zarzucony z braku czasu. Układ, który wtedy robiłem jako przystawkę do CB był dla ojca i miał tylko dwa kanały - aktywne póki był sygnał (taka była akurat potrzeba). Teraz ster wróci z fontannami i zapewne na elektrodzie też wyląduje ;-)

    Dodano po 12 [minuty]:

    A jak autor tematu jest na tyle początkujący, że mógłby nie podołać to jest szereg gotowych rozwiązań - proste i być może wystarczające. Mój ster będzie trochę bardziej skomplikowany.
    https://m.pl.aliexpress.com/popular/mt8870-dtmf-voice-decoder-module.html
  • Poziom 30  
    _jta_ napisał:
    A po co dajesz link do kupna modułu, skoro (może na razie) nie ma informacji, jak go użyć?

    Jak to nie ma informacji jak go użyć? Kliknąłeś chociaż w jeden moduł? Jest opis wyjść przecież. To jest "czysty" moduł dający odpowiedź na ton bezpośrednio z dekodera MT8870. Nawet jest gotowe wejście audio, którego praktycznie nie ma potrzeby konfigurować.

    _jta_ napisał:
    Piszesz, że "jest szereg gotowych rozwiązań" - to podaj namiary, żeby autor zobaczył, czy to rozumie.

    Przewiń kawałek dalej tego mojego linka i zobaczysz gotowe sterowniki z przekaźnikami. Tylko obudowy brak.

    Nie wiem czy ty mnie trolujesz czy naprawdę podstawowych rzeczy nie ogarniasz... Tak to niestety wygląda.
  • Specjalista elektronik
    Na właśnie o to chodzi, że ten opis jest do niczego, przynajmniej dla początkujących. Masz jakieś sadystyczne skłonności, by się znęcać nad kimś, kto potrzebuje pomocy?

    Przeglądałem notę katalogową MT8870 - nie zauważyłem, by było w niej jasno określone, kiedy odczytywać dane. Może się da dojść, ale dla kogoś to może być za trudne.
  • Poziom 30  
    Ależ skąd, żadnych sadystycznych skłonności :) wprost przeciwnie. Po prostu mało kiedy podaje wszystko na tacy (a tu już jest prawie wszystko). Póki autor się nie wypowie nie ma co gdybać. Jeśli już pomagam to chciałbym aby ktoś się przy okazji czegoś nauczył, a nie tylko karmić kolejne arduinowe zombi :) Pozdrawiam.
  • Specjalista elektronik
    Na razie w niczym nie pomogłeś. Zachwalasz DTMF, ale nawet nazwę scalaka do DTMF i jaki ma interfejs to ja najpierw podałem.

    A swoją drogą przydałaby się jakaś informacja od autora tematu - żeby wiedzieć, czy mu podpasuje DTMF, czy coś innego. Nawet nie napisał, jaki to telefon, co on ma.

    Jakby DTMF mu pasował (na to przede wszystkim trzeba mieć możliwość wypuszczenia sygnału DTMF na jakieś wyjście, do którego łatwo coś podłączyć), to podaję:
    * MT8870 DTMF - Dual Tone Multi Frequency Decoder - tutaj Arduino odczytuje i przekazuje do sterowanego urządzenia stan wyjść Q1-Q4, kiedy na StQ jest stan wysoki (uwaga, układ scalony nie ma pinu StQ - ma go moduł (a oprócz tego -StQ, IN, GND, VCC).
    * MT8870 DTMF Decoder Interfacing with Arduino UNO - tu też Arduino, podłączone Q1-Q4 i StQ.
    * MT8870 DTMF Module - User Manual - opis modułu, dość przystępny.
    * Using MT8870 DTMF Decoder With Arduino - a tu jest tutorial do użycia samego układu scalonego - ale nie zajmują się takimi drobiazgami, jak rozpoznawaniem, kiedy się pojawił sygnał - podają '1' na TOE.
    * DTMF Decoder MT8870 - tu układ scalony, StD połączone z TOE i wyprowadzone na złącze, oraz to wszystko na LED-y.
    * DTMF Decoder Using MT8870 - układ scalony, i wyjście tylko na LED-y.
    * CM8870/70C - nota katalogowa układu scalonego.

    Ja z noty katalogowej MT8870 wnioskuję, że sygnałowi StQ odpowiada pin StD, ale pod warunkiem, że na TOE była '1'; można tam podać '1' po pojawieniu się '1' na StD, ale wtedy trzeba odczekać co najmniej 50ns od podania '1' na TOE do odczytania Q1-Q4 (przy odczytywaniu przez Arduino wystarczy, że po stwierdzeniu podania '1' na TOE odczyta się Q1-Q4 - minie ponad 50ns, bo Arduino jest wolne).

    Jeśli chce się przesyłać informację o wciskaniu klawiszy, to przydatna jest nie tylko informacja, jaki klawisz był ostatnio wciśnięty, ale i że został właśnie wciśnięty, że był przytrzymany dłużej - tę informację daje StD (albo StQ). StD staje się '1' parę mikrosekund po zdekodowaniu klawisza (jeśli TOE=1, to na Q1-Q4 od tych paru us już jest jego kod), i wraca do '0', gdy ton się skończy (ale kod na Q1-Q4 pozostaje, dopóki TOE=1).

    Trzeba jednak uniknąć pewnego możliwego błędu: jeśli połączy się StD z TOE, i zmiana tego sygnału z '0' na '1' będzie zapisywać kod z Q1-Q4, to zapisywany kod będzie nieprawidłowy - ten prawidłowy pojawi się około 50ns po zapisaniu błędnego, więc potrzebne jest opóźnienie.
  • Poziom 30  
    O jejciu, nie chce mi się ciągnąć tego tematu. Dałem luźną propozycję jako pierwszy na temat dtmf. Jeśli autorowi się spodoba to sam znajdzie odpowiedni sterownik z mojego linka z wbudowanymi przekaźnikami i go po prostu wykorzysta. Jakie ma znaczenie, że nazwę scalaka pierwszy podałeś? A czy przypadkiem nie wyskakuje ona w pierwszym lepszym linku po wpisaniu w google "dtmf" tak jak to zasugerowałem na początku? Chcesz to ciągnij temat dalej. Skoro ja jako początkujący ponad 20 lat temu dałem radę bez Internetu z układem, to tym bardziej autor poradzi sobie teraz, a jeśli nie to znaczy, że jeszcze nie jest gotowy lub nie chce się nic nauczyć. Wszystko co podałeś jest w tabeli prawdy w pdf. Ja dziękuję...
  • Specjalista elektronik
    SylwekK napisał:
    A czy przypadkiem nie wyskakuje ona w pierwszym lepszym linku po wpisaniu w google "dtmf" tak jak to zasugerowałem na początku?

    Sprawdziłem wszystkie linki z pierwszej strony wyników Google - nie ma. Trzeba wpisać dtmf ic, wtedy jest już w podpowiedziach.
    SylwekK napisał:
    Wszystko co podałeś jest w tabeli prawdy w pdf.

    W tym PDF-ie nie ma tabeli prawdy. Jest Pin Function Table i Timing Diagram. Oj kolego, zaniżasz poziom.

    Ten scalak wymaga elementów zewnętrznych - w tym kwarcu (według noty katalogowej parametry określono dla 3.579545 MHz, tutorial podaje 3.579 MHz - pierwszy dla układu scalonego ma listę elementów), kilku oporników i kondensatorów (między innym dla określenia czasu rozpoznawania tonów). Jak się kupi moduł, to od razu są.