...и мысли застучали,
как камешки в погремушке...
Зачем нам нужен дальномер? Измерять расстояние. То есть преобразовывать расстояние до ближайшего объекта в напряжение, линейно зависящее от расстояния.
Прежде всего - желаемый результат - мы хотим измерить расстояние 3..5 метров. Среда - воздух (атмосфера, тут-рядом). Чем измерять-то будем? Звуком. Ультразвуком. Во-первых, в сравнении со слышимым звуком - шумов меньше. Во-вторых - в сравнении со светом - частоты по-меньше и времени по-больше.
Принцип работы.
Дальномер состоит из двух блоков. Первый - передатчик, второй - приемник. Передатчик посылает УЗ импульс и включает счетчик. УЗ импульс отражается от преграды и возвращается к дальномеру. Его принимает приемник. Приемник по принятии сигнала запоминает текущее состояние счетчика. Именно это и будет временным отсчетом расстояния. Мощность принятого сигнала не стоит считать параметром расстояния, поскольку у разных веществ разный коэффициент поглощения акустического давления. Дабы увеличить помехоустойчивость посылаемый УЗ импульс должен быть протяженным во времени.
Структурная схема дальномера:
Обозначения -
ТГ - тактовый генератор
СчТ - счетчик
0/1 - выбор (0 или 1)
Рег - регистр
ЦАП - цифро-аналоговый преобразователь
УЗИ - ультразвуковой излучатель
УЗП - ультразвуковой приемник
Счетчик считает время (в тактах ТГ). После счетчика стоит устройство выбора - отправлять или нет УЗ импульс. Если да, то УЗИ отправляет УЗ импульс.
Отраженный от преграды импульс принимается УЗП. Поскольку импульс - протяженный, то его протяженность считается в СчТ2 и на основании насчитаного количества делается вывод о запоминании или нет (0/1) состояния СчТ (ведь он все еще считает) в регистре Рег. Состояние Рег аналогируется (от слова аналоговый) в ЦАП и уходит дальше в схему.
Теперь займемся расчетом.
Самые дешевые УЗИ и УЗП - с центральной частотой 40кГц. Скорость звука в воздухе - около 344 м/с при 20 градусах тепла.
Мы сократим расстояние с 5 метров до 3. Это значит, что расстояние проходимое УЗ импульсом составит 2*3=6 метров. Это расстояние импульс пройдет за t=6/344=0.01744186 с. То есть, частота посылки импульса должна составлять 1/0.01744186 = 57.333333 Гц.
Требуем от дальномера дискретность измеряемых расстояний в 3см. Это дает нам 3м/3см = 100 отсчетов. Ближайшая большая степень 2-ки - 128. Это семь двоичных разрядов со степенями от 0 до 6. 128 отсчетов дают нам дискретность 3м/128=2.34см. Эти 128 отсчетов будет считать СчТ.
Выбираем протяженность УЗ импульса в 16 тактов (без ущерба для для дискретности). Теперь у нас осталось 128-16 = 112 тактов. Это дает нам дискретность измерямых расстояний равную 3м/112=2.68 см. Нам хватает.
Как обеспечить передачу УЗ импульса именно в первые и именно в 16 тактов? Легко. Составляем ФАЛ (функцию алгебры-логики) -
send=[0, если разряды СчТ 0..6 - показывают число больше 16, 1 - наоборот - меньше 16-ти].
Составив таблицу видно, что send = NOR(4,5,6 разряды СчТ). Эту ФАЛ реализует первое устройство [0/1].
Структуру УЗИ мы не рассматриваем.
В приемной части мы не будем рассматривать структуру УЗП. Счетчик СчТ2 должен считать всегда, когда УЗ импульс принимается. А если УЗ импульс не принимается (принимался и перестал, или вообще не принимался), то счетчик мало того, что не должен считать, он не должен даже сохранять свое состояние. То есть, если из 16-ти тактов было принято всего 10 и потом хоть один такт импульса не было, то мы не считаем эти десять импульсов несущими информацию и потому очищаем состояние счетчика СчТ2. Для схемы синхронного 4-х разрядного счетчика 74163 мы садим на #CLR принятый импульс, и всегда подаем на вход CK сигнал с ТГ. Поскольку УЗ импульс может начаться во время паузы ТГ, то условимся считать, что УЗ импульс принят, если приняты 15 из 16-ти тактов (ведь даже если импульс пришел во время паузы, то он не может отставать более, чем на 1 такт). Конечно, это не защитит нас от отсутствия импульса во время паузы, но все равно - это полезно.
ФАЛ [0/1] для СчТ2 также легко реализуется на элементах ИЛИ и НЕ.
Результат этой ФАЛ является синхро-импульсом для параллельного регистра Рег.
ЦАП - уже есть.
P.S.: Проблема таких помех, что присутствуют только во время импульса ТГ и отсутствуют во время паузы ТГ решается увеличением частоты ТГ (в степень 2-ки) и тактирование СчТ и СчТ2 через D-триггеры.
P.P.S.: - Объяснения не ахти-какие, но позволяют лучше себе представить что и как. Хоть и существуют готовые решения (я о них слыхал, видел,что они на МК, цены не узнавал), но все равно охота (дык, и интересно это) сделать дальномер самому (даже если я его куплю готовый).
Есть архив с необходимыми схемами, сделанными в EWB. (я для этого специально поставил виртуальную машину с WinME). В архиве содержится файл 'readme.dir'. В нем описано какие схемы в каком файле находятся.
Структурная схема дальномера:
Обозначения -
ТГ - тактовый генератор
СчТ - счетчик
0/1 - выбор (0 или 1)
Рег - регистр
ЦАП - цифро-аналоговый преобразователь
УЗИ - ультразвуковой излучатель
УЗП - ультразвуковой приемник
Счетчик считает время (в тактах ТГ). После счетчика стоит устройство выбора - отправлять или нет УЗ импульс. Если да, то УЗИ отправляет УЗ импульс.
Отраженный от преграды импульс принимается УЗП. Поскольку импульс - протяженный, то его протяженность считается в СчТ2 и на основании насчитаного количества делается вывод о запоминании или нет (0/1) состояния СчТ (ведь он все еще считает) в регистре Рег. Состояние Рег аналогируется (от слова аналоговый) в ЦАП и уходит дальше в схему.
Теперь займемся расчетом.
Самые дешевые УЗИ и УЗП - с центральной частотой 40кГц. Скорость звука в воздухе - около 344 м/с при 20 градусах тепла.
Мы сократим расстояние с 5 метров до 3. Это значит, что расстояние проходимое УЗ импульсом составит 2*3=6 метров. Это расстояние импульс пройдет за t=6/344=0.01744186 с. То есть, частота посылки импульса должна составлять 1/0.01744186 = 57.333333 Гц.
Требуем от дальномера дискретность измеряемых расстояний в 3см. Это дает нам 3м/3см = 100 отсчетов. Ближайшая большая степень 2-ки - 128. Это семь двоичных разрядов со степенями от 0 до 6. 128 отсчетов дают нам дискретность 3м/128=2.34см. Эти 128 отсчетов будет считать СчТ.
Выбираем протяженность УЗ импульса в 16 тактов (без ущерба для для дискретности). Теперь у нас осталось 128-16 = 112 тактов. Это дает нам дискретность измерямых расстояний равную 3м/112=2.68 см. Нам хватает.
Как обеспечить передачу УЗ импульса именно в первые и именно в 16 тактов? Легко. Составляем ФАЛ (функцию алгебры-логики) -
send=[0, если разряды СчТ 0..6 - показывают число больше 16, 1 - наоборот - меньше 16-ти].
Составив таблицу видно, что send = NOR(4,5,6 разряды СчТ). Эту ФАЛ реализует первое устройство [0/1].
Структуру УЗИ мы не рассматриваем.
В приемной части мы не будем рассматривать структуру УЗП. Счетчик СчТ2 должен считать всегда, когда УЗ импульс принимается. А если УЗ импульс не принимается (принимался и перестал, или вообще не принимался), то счетчик мало того, что не должен считать, он не должен даже сохранять свое состояние. То есть, если из 16-ти тактов было принято всего 10 и потом хоть один такт импульса не было, то мы не считаем эти десять импульсов несущими информацию и потому очищаем состояние счетчика СчТ2. Для схемы синхронного 4-х разрядного счетчика 74163 мы садим на #CLR принятый импульс, и всегда подаем на вход CK сигнал с ТГ. Поскольку УЗ импульс может начаться во время паузы ТГ, то условимся считать, что УЗ импульс принят, если приняты 15 из 16-ти тактов (ведь даже если импульс пришел во время паузы, то он не может отставать более, чем на 1 такт). Конечно, это не защитит нас от отсутствия импульса во время паузы, но все равно - это полезно.
ФАЛ [0/1] для СчТ2 также легко реализуется на элементах ИЛИ и НЕ.
Результат этой ФАЛ является синхро-импульсом для параллельного регистра Рег.
ЦАП - уже есть.
P.S.: Проблема таких помех, что присутствуют только во время импульса ТГ и отсутствуют во время паузы ТГ решается увеличением частоты ТГ (в степень 2-ки) и тактирование СчТ и СчТ2 через D-триггеры.
P.P.S.: - Объяснения не ахти-какие, но позволяют лучше себе представить что и как. Хоть и существуют готовые решения (я о них слыхал, видел,что они на МК, цены не узнавал), но все равно охота (дык, и интересно это) сделать дальномер самому (даже если я его куплю готовый).
Есть архив с необходимыми схемами, сделанными в EWB. (я для этого специально поставил виртуальную машину с WinME). В архиве содержится файл 'readme.dir'. В нем описано какие схемы в каком файле находятся.
