Мне пришла небольшая партия ультразвуковых датчиков GH-311, которая с успехом запустилась с Arduino/Freeduino:
Общеизвестно, что принцип ультразвукового обнаружения объектов входит в состав летучей мыши ;) Несчастное животное посылает короткие импульсы на частоте ~40 КГц и прислушивается к тому, насколько быстро появляется эхо - чем быстрее, тем ближе объект, от которого отразился звук.
С точки зрения робототехники, ультразвуковые датчики довольно энергетически прожорливы, но имеют неоспоримое преимущество перед парами инфракрасных светодиодов и фотодиодов: они будут работать стабильно независимо от того, как меняется окружающее освещение.
Модель GH-311 обладает следующими характеристиками (наткнулся на них в крайне лаконичном даташите):
- Power Voltage: DC 6-12V
- Quiescent current : Less than 2mA
- output Level: High 5V
- output Level: Low 0V
- Sensing Angle: no greater than 15°
- Sensing distance: 2mm-3m
Увы, GH-311 не умеет определять расстояние до объекта, а только сообщать: обнаружено что-то или нет - в зависимости от этого меняется состояние выхода OUT (5В/0В). В интернете можно найти однотипные вопли несчастных людей, натыкающихся на одни и те же грабли - они хотят измерять расстояние, а им говорят - нельзя. Нашел я и просьбу одного "студента", который просил исходный код микроконтроллера с тем, чтобы его усовершенствовать (конечно же, безответную). Это заставило меня присмотреться повнимательнее к схеме:
Модуль собран на кусочке двустороннего гетинакса размером 46 х 19 мм. Внешний слой - полностью "земляной", поэтому схему можно рассмотреть довольно подробно. "Сердцем" поделки является восьмибитный RISC-микроконтроллер HT48R05A, разработанный фирмой Holtek.
Некоторые просто обожают HT48xx и HT46xx, хотя, конечно же, возможности этих серий более чем скромные. Гарвардская архитектура включает 0,5К памяти программ (14 битная), 32 байта памяти программ и целых две (!) ячейки стека вызовов - это означает что третий вызов вложенной подпрограммы окажется волшебным (читаем - последним ;). Система команд очень урезана - нет даже умножения. Зато есть источники прерываний, watchdog и даже один таймер.
Память программ может быть либо масочным ROM (программируется на заводе), либо OTP (именно такой МК установлен в модуле), то есть - однократно программируемая. Это вам не Arduino, когда можно заливать программу во время отладки хоть по десять раз в минуту. После этого совершенно логичным выглядит наличие бесплатной IDE, в которой можно писать и отлаживаться на ассемблере и C, а также программно эмулировать микроконтроллеры в реальном времени и даже некоторые периферийные устройства, типа LCD.
Ну и напоследок - вопрос цены. Нашел в розничной продаже HT48RC06A за 26 рублей, а ведь в нем в два раза больше памяти программ и ОЗУ ;)
Весьма непонятным мне показалось решение с питанием - чтобы подключить GH-311 к Arduino, надо запитать последний от внешнего источника, соединить VIN с "+"-ом на модуле, GND - с "-", а OUT к любому цифровому входу, например к 12-му. Фокус в том, что от 5В модуль просто не заработает, потому что на нем использован стабилизатор HT7550-1 разработки все той же Holtek:
По схеме наглядно видно, что внешнее питание через диод и конденсаторы поступает на регулятор, а уже оттуда уходит на схему. Поэтому, увеличение питания никак не скажется на дальности обнаружения объектов, а лишь на температуре стабилизатора. Зато такой датчик можно использовать без микроконтроллеров или Arduino, скажем в охранных системах. Пример подобной схемы есть в документации:
Но вернемся к Arduino. Подключив модуль вышеописанным методом, пишем скетч, зажигающий светодиод L:
int led = 13; // Arduino led int sensorPin = 12; // Digital Pin In int sensorValue; // Value for sensor output int d = 250; // Delay void setup() { } void loop() { sensorValue = digitalRead(sensorPin); digitalWrite(led,sensorValue); delay(d); }
Как видите, как всегда - проще некуда.
Резюме: GH-311 можно использовать в охранных системах или датчиках присутствия, когда необходимо просто обнаружить объект.
Комментариев нет:
Отправить комментарий