Форум программистов, компьютерный форум, киберфорум
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 47
1

Создание акустического реле

14.04.2012, 21:02. Просмотров 3765. Ответов 1
Метки нет (Все метки)

Вот на днях попался брелок для ключей в руки там когда свиснешь он начинает пищать, соответственно в голове такой вопрос возник как можно этот чип подключить к компу и запрограммировать или как вообще такие чипы с микросхемами программировать допустим чтоб по хлопку включался телевизор или свет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2012, 21:02
Ответы с готовыми решениями:

Регулятор чувствительности микрофона акустического выключателя света
Доброго всем времени! В связи с тем, что в квитанциях за электроэнергию появились строчки оплаты...

Формулы акустического тракта
Здравствуйте! Уважаемые спецы, помогите привести уравнения в "человеческий" вид и вывести искомое...

Написать генератор акустического белого шума
Здравствуйте! Хочу написать генератор акустического белого шума, но прежде хочу уточнить 1...

Как сделать фильтр акустического белого шума?
Здравствуйте! У меня есть генератор белого шума, но что бы понять - хорошо ли он работает я бы...

1
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
15.04.2012, 11:36 2
russo turisto, я уважаю Казус-форум, это форум профессионалов. Мало того, я сам там тоже обитаю. Но, к сожалению, правила данного форума запрещают ссылки на другие форумы (на казусе такого нет).

По литературе есть и тут:
Литература по радиоэлектронике. Увлекательные конструкции, видеокурсы и справочники. Начинающим и не только
Литература по программированию в электронике, микроконтроллеры и ПЛИС
https://www.cyberforum.ru/elec... 16507.html


Теперь к вам, TC, создание тем клонов у нас не приветствуется. Создание дополнительного дубликата не увеличивает ваш шанс получить ответ, а лишь прибавляет работы модераторам. Прошу вас больше этого не делать.

==================

Теперь по теме:
Брелок с отзывом представляет собой лишь - акустическое реле. Да, его можно реализовать на микроконтроллере, но такое делают очень редко (есть варианты с
ардуинами
Акустическое реле к МК

Создание акустического реле
), ибо эти акустические реле появились задолго до того как микроконтроллеры стали маленькими и дешевыми. Это область аналоговой техники или комбинации с цифровой.

Вот например такой брелок с отзывом собирал сам в пору "паяльной юности":
Создание акустического реле

...в качестве датчика и излучателя любой пьезоизлучатель. Реагирует на хлопок. Одиночный хлопок представляет собой серию нескольких десятков коротких импульсов с большой крутизной, т.е. анализируя резкий подъем амплитуды от среднего уровня шума и время действия самих импульсов со временем существования серии импульсов можно предположить, что был хлопок ...собственно, в аппаратных реализациях включения света от хлопка (звуковых или акустических реле) это реализовывалось интегрирующей цепочкой, т.е. фильтром (иногда с добавлением амплитудного детектора на диодах, кстати именно на них оказывались самыми надежными, см. схемы по ссылке), а далее на триггер "включено-выключено". Сам триггер можно реализовать на статическом D-триггере (561ТМ2 например снят с производства, есть импортный аналог CD4013):
Создание акустического реле


Вы можете спросить: "...раз все так просто, почему до сих пор их не применяют для включения ТВ?". Отвечу: применяли, применяли даже ультразвуковое управление телевизорами (не в СССР, в ГДР и Италии были такие модели телевизоров), но ввиду низкой помехоустойчивости, ведь по телевизору идут передачи со звуковым сопровождением с разным пик-фактором и спектром, который может совпасть со спектром хлопка в ладоши, от данной идеи и промышленной реализации вскоре отказались (а в случае с ультразвуком это раздражало домашних животных). Единственно, где это еще актуально:

1- в акустических автоматах из серии "ограничитель громкости разговора в комнате"
2- акустических реле для включения-выключения света в комнате

Этих публикаций было море в радиотехнической литературе серии ВРЛ, например:

Акустическое реле для кухонной вытяжки
Создание акустического реле


Акустическое реле для елочки
Создание акустического реле

...если поставить два, то можно одним громким криком включать елку, а вторым (менее чувствительным, например дуть на якобы свечу) выключать.


К слову, акустическое реле можно реализовать и на ПК, если использовать анализ спектра звука на характерный усредненный слепок хлопка (получен моим спектроанализатором, заглядываем в мой блог https://www.cyberforum.ru/blog... g99.html):
Создание акустического реле


Обратите внимание на затухающий характер хлопка и наличие некоторой части кучи гармоник также и в ВЧ части, и, само собой, на его длительность в доли секунды (см. видеозапись во вложении ниже).


Управление голосом ПК
...да, такое возможно, если использовать SpeechAPI интерфейс от Микрософт. Сам интерфейс можно импортировать с библиотеки Xlisten.dll. Пример простой программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
{{$APPTYPE CONSOLE}
uses Windows, Messages, ActiveX, ACTIVELISTENPROJECTLib_TLB;
 
 
type
  dsr_ = class
   procedure listen(ASender: TObject; flags,
                    beginhi, beginlo, endhi, endlo: Integer; const Phrase, parsed: WideString;
                    results: Integer);
   procedure vu(ASender: TObject; beginhi, beginlo, level: Integer);
  public
   constructor Create;
   destructor Destroy; override;
end;
 
 
var
  h_wnd : HWND;
  // общий класс
  dsr1: dsr_;
  // чтение
  dsr: TDirectSR;
  lvl: integer;
  text: string = 'none';
 
 
procedure dsr_.listen(ASender: TObject; flags,
  beginhi, beginlo, endhi, endlo: Integer; const Phrase, parsed: WideString;
  results: Integer);
begin // распознавание
 text:= Phrase;
 //
 if uppercase(text)= 'GOLOS' then speeks('ГАВ, ГАВ, ГАВ')
 
end;
 
procedure dsr_.vu(ASender: TObject; beginhi,
  beginlo, level: Integer);
begin
 lvl:= level
end;
// END РЕЧЕВОЙ модуль ========================
 
 
// обработчик сообщений главного окна
function WndProc(hwnd: DWORD; message: UINT; wParam: Longint; lParam: LongInt): LongInt; stdcall;
begin
 case message of
  // закрываем
  WM_DESTROY     : PostQuitMessage(0);
 
 { //WM_LBUTTONDOWN : ;
  // настройки драйвера
  WM_RBUTTONDOWN : SendMessage(h_cam, WM_CAP_DLG_VIDEOFORMAT, SizeOf(Bt), LongInt(@Bt));
 
 
  // получаем кадр по таймеру (25 раз в секунду)
  WM_TIMER:
   begin
    // граб кадра-
    SendMessage(h_cam, WM_CAP_GRAB_FRAME, 0, 0);
    // сохранение на диск-
    SendMessage(h_cam, WM_CAP_SAVEDIB, 0, longint(pchar('grab.bmp')));
    
   end;
}
 end;
 Result:= DefWindowProc(hwnd, message, wParam, lParam)
end;
 
 
constructor dsr_.Create;
Begin
 inherited Create;
 
 CoInitialize(nil);
 // инициализация распознавания XLISTEN.dll
 dsr:= TDirectSR.Create(nil);
 if dsr.CountEngines>0 then begin
  dsr.OnPhraseFinish:= listen;
  dsr.OnVUMeter:= vu;
  //
  dsr.Initialized:=1;
  dsr.Select(1);
  dsr.GrammarFromFile('comands.txt');
  dsr.Activate
 end;
End;
 
destructor dsr_.Destroy;
Begin
 // деинициируем речевой движок
 dsr.Deactivate; dsr.Free;
 CoUninitialize;
 //
 inherited Destroy
End;
 
var
  msg  : TMsg;
  Rect : TRect;
  wnd  : TWndClassEx;
begin
 // создаем класс для возможности обработки событий компонента
 dsr1:= dsr_.Create;
 // создание окна для визуализации
 with wnd do begin
  cbSize        := SizeOf(wnd);
  lpfnWndProc   := @WndProc;
  hbrBackground := COLOR_WINDOW + 1;
  hCursor       := LoadCursor (0, IDC_ARROW);
  lpszClassName := 'FDLIB_raxpcam';
 end;
 RegisterClassEx(wnd);
 h_wnd:= CreateWindowEx(0,
                        'FDLIB_raxpcam',
                        'FDLIB_raxpcam',
                        wnd_style,
                        0, 0, 0, 0, 0, 0, 0, nil);
 // подгонка размеров до 640х480
 Rect.Left   := 0;
 Rect.Top    := 0;
 Rect.Right  := 640;
 Rect.Bottom := 480;
 AdjustWindowRect(Rect, wnd_style, False);
 MoveWindow(h_wnd, GetSystemMetrics(0) div 2 - 320, GetSystemMetrics(1) div 2 - 240, Rect.Right, Rect.Bottom, False);
 
{
// создание невидимого окна захвата
 h_cam := capCreateCaptureWindowA(nil, WS_CHILD or WS_VISIBLE, 0, 0, 0, 0, h_wnd, 0);
 // получаем графический контекст главного окна
 DC:= GetDC(h_wnd);
 
 // прозрачный фон
 SetBkMode(DC, TRANSPARENT);
 // цвет текста
 SetTextColor(DC, rgb(255,0,0));
  logFont.lfheight := 12;
  logfont.lfwidth := 8;
  logfont.lfweight := 900;
  logFont.lfEscapement := 900; // вертикальный
  logfont.lfcharset := 1;
  logfont.lfoutprecision := out_tt_precis;
  logfont.lfItalic:=0;
  logfont.lfStrikeOut:=0;
  logfont.lfUnderline:=0;
  logfont.lfquality := draft_quality;
  //logfont.lfpitchandfamily := ff_roman;
  font:= createfontindirect(logfont);
  Selectobject(DC, font);
 // цвет линий
 pen:= CreatePen(PS_SOLID, 1, RGB(255,0,0));
 SelectObject(DC, pen);
 
 // настройка драйвера
 if SendMessage(h_cam, WM_CAP_DRIVER_CONNECT, 0, 0) <> 0 then begin
   SendMessage(h_cam, WM_CAP_GET_VIDEOFORMAT, SizeOf(Bt), LongInt(@Bt));
   Bt.bmiHeader.biWidth    := 320;
   Bt.bmiHeader.biHeight   := 240;
   Bt.bmiHeader.biSize     := SizeOf(Bt.bmiHeader);
   Bt.bmiHeader.biPlanes   := 1;
   Bt.bmiHeader.biBitCount := 24;
   SendMessage(h_cam, WM_CAP_SET_VIDEOFORMAT, SizeOf(Bt), LongInt(@Bt));
   SendMessage(h_cam, WM_CAP_SET_CALLBACK_FRAME, 0, Integer(@FrameCallback));
 end else begin
   MessageBox(h_wnd, 'Не удалось инициализировать драйвер', nil, MB_ICONHAND);
   Exit
 end;
 
 // таймер граба с частотой 25 Гц
 setTimer(h_wnd, 0, 40, nil);
 // показываем окно визуализации
 ShowWindow(h_wnd, SW_SHOW);
 //speeks('Application for the detection of face in real time');
}
 
 // главный цикл обработки сообщений
 while GetMessage(msg, 0, 0, 0) do begin
  TranslateMessage(msg);
  DispatchMessage(msg)
 end;
 // при закрытии приложения
 KillTimer(h_wnd, 0);
 
 dsr1.Destroy
end.
(вырезка из проекта ...в принципе, использование движка распознавания можно упростить через использование интерфейса IDispatch ...ну да ладно, это потом )

p.s.: тему переименовал и переместил просто в "Электронику", где ей и место.
1
Вложения
Тип файла: zip видео_спектр хлопка.zip (75.3 Кб, 48 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2012, 11:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Микроволновка LG MS-1947W щелкает реле света, При открытой двери щелкает реле света постоянно
Проверил все концевики, модуль вынул подал питание на прямую, все тоже самое. Реле поменял все...

Дарлингтон+реле.
Почитал статью...

Альрернатива реле
Добрый день! Подскажите, какая есть современная, без механических частей альтернатива обычному...

драйвер реле ?
хочу что-то вроде http://iosyitistromyss.ru/img/storters/powerDC/VTs4.gif но с ШИМом и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.