доброго времени!
прошу совета, какой датчик применить.
есть (не жизненно важная, но все-же) необходимость, знать закрыт замок в двери, или нет. установить датчики внутрь самого замка не вариант, дверь стальная, само полотно наглухо проварено по периметру, да и питание постоянное нет особого желания гибким шлейфом делать.
поэтому вариант только понимать положение засовов внутри дверного косяка, ну и напрашивается дополнительно желание знать в каком положении засов (всего 4 шага) .
индуктивный использовать не получится - он в данном случае очень длинными получается.
микроволновый - не знаю, как это будет и будет ли вообще работать (да и те что смотрел, все работают ОТ 3-х см).
оптический? пробовал два варианта.
первый простой.
оптопара CNY70 в через ацп ADS1115 на esp8266. результат нулевой - очень малая разница в показаниях крайних положении, а про средние положения говорить вообще нет смысла.
второй.
самопальная оптопара. в кубике непрозрачного к ИК-диапазону пластика просверлены два параллельных отверстия малого диаметра, в одном ИК-фототранзистор, в другом ИК-светодиод. результат лучше, но все-равно по факту нулевой. разница между крайними положениями есть, но она очень мала, еще меньше в промежуточных.
и плюс, в обоих вариантах, присутствует дрейф показаний от питания, установка на питание электролитов большого номинала и и запитывание всей сборки от аккумулятора (что бы исключить погрешности от импульсного бп) результата не дало. дрейф мелкий, но есть. использование блоков программной фильтрации мало влияет на оперативные и точные результаты.
(результаты все смотрел через симп лайт скаду, графиками).
вопрос: какой датчик можно и стоит применить в данном случае?
(на корявом эскизе разрез коробки, для примерного понимания места установки, в месте установки датчика пена выковыряна).
заранее спасибо!
Вложения
Последний раз редактировалось holodaleksey 07.12.2022{, 23:18}, всего редактировалось 1 раз.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
Емкостной датчик влажности измеряет ёмкость между электродами. Жаль, я сейчас не дома, посмотрел бы: что на выходе этого датчика при условиях, аналогичных вашим.
Руководить - это значит не мешать хорошим людям работать. С.П. Капица
holodaleksey, есть такие, датчики приближения. Используются и в промышленном оборудовании. Выход разный, аналоговый. До али покупали евпопейские, но когда вышли на китайцев, оказались датчики раз в 10-20 дешевле. К сожалению ссылку дать не могу, давно это было, но датчик приближения-он и у чинариков таковым является. Я у себя в дренажном колодце канализации какие только датчики уровня не пробовал, а сымые стойкие окпзались китайские.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.
Как вариант индуктивный датчик уровня стола для 3 д принтера - срабатывает примерно 5мм ( они разные по чувствительности) , правда размеры у него длиной сантиметров 6-7...
индуктивный использовать не получится - он в данном случае очень длинными получается.
Длина катушки 30 мм разве проблема? Непосредственно к индуктивности подключить микросхему LC генератора с делителем. Если в катушку входит металлический засов, частота уменьшится. В контроллере задействовать скоростной счетчик.
Емкостной датчик влажности измеряет ёмкость между электродами. Жаль, я сейчас не дома, посмотрел бы: что на выходе этого датчика при условиях, аналогичных вашим.
holodaleksey, есть такие, датчики приближения. Используются и в промышленном оборудовании. Выход разный, аналоговый. До али покупали евпопейские, но когда вышли на китайцев, оказались датчики раз в 10-20 дешевле. К сожалению ссылку дать не могу, давно это было, но датчик приближения-он и у чинариков таковым является. Я у себя в дренажном колодце канализации какие только датчики уровня не пробовал, а сымые стойкие окпзались китайские.
спасибо!!! Заказал, жду. Будем посмотреть! По манулине вроде то что надо)!
Как вариант индуктивный датчик уровня стола для 3 д принтера - срабатывает примерно 5мм ( они разные по чувствительности) , правда размеры у него длиной сантиметров 6-7...
мимо. Эскиз наверху. Для этого за коробкой бетон надо разбить, а дверь уже стоит.
индуктивный использовать не получится - он в данном случае очень длинными получается.
Длина катушки 30 мм разве проблема? Непосредственно к индуктивности подключить микросхему LC генератора с делителем. Если в катушку входит металлический засов, частота уменьшится. В контроллере задействовать скоростной счетчик.
мимо. Катушка должна быть с внутренним диаметром больше, чем наружный диаметр засова, правильно? Тогда аккуратная незаметная установка ее невозможна, коробку пилить никак нет возможности.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
holodaleksey, рад, что помог! Хотелось бы, ссылку на то, что заказали, многим пртгодится. Одно из примкнений этого датчика, измерение уровня жидкости в чем либо. Через блок на троссу висит поплавок с другого конца противовес выверенного веса. Так де на оси с блоком эллипс регулируемый. Эллипс воздействует на датчик, а дальше уж сами. Единственная сложность это если большой уровень нужен, но это уже детали.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.
Попробовал ёмкостной датчик уровня для металлических пластинок, охватывающих емкостную часть, где нанесены дорожки датчика. При перемещении пластинок вдоль платы, с конца на середину (вдвигании чувствительной части платы между пластинками) дельта U составило 40 мВ. Схема датчика простая, только 555 таймер. Бывают такие же, но с ОУ. Там дельта U должно быть больше.
Руководить - это значит не мешать хорошим людям работать. С.П. Капица
Есть решение с избыточной точностью,но зато дешевое. Китайский цифровой штангенциркуль за 300р из фикспрайса. На борту есть интерфейс. Отпилить всё лишнее и засунуть в дверь. Статей о подключении и чтении с него полно.
Есть решение с избыточной точностью,но зато дешевое. Китайский цифровой штангенциркуль за 300р из фикспрайса. На борту есть интерфейс. Отпилить всё лишнее и засунуть в дверь. Статей о подключении и чтении с него полно.
"в дверь" - не вариант, см.пост 1.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
приехали... VL6180X. впечатления неоднозначные.
1. да, компактный вот вообще отлично.
2. библиотеки. есть немало, но завелись только VL6180X.h и Adafruit_VL6180X.h. по остальным ответ "ошибка инициализации" и тишина. ну да ладно.
3. ! блин, вот в какой раз уже... внимательно надо читать даташиты. вот вообще внимательно! перед заказом. а не после. короче, они все прошиты под один адрес. 0х29. сменить нельзя. точнее можно, но после отключения-включения адрес будет сброшен на 0х29. итого - либо по отдельному контроллеру на каждый датчик, либо огород с костылями с использованием пина En(SHDN на плате) либо огород с оптопарами. ну черт с ним. решаемо.
4. точность от 0 до 10 мм - никакая! нет ее. вообще.
и 5. не знаю пока, что будет на выходе с фильтрами, ну а без фильтров - опять пила \\\\
проверял на вемос мини и ардуино уно.
сейчас буду вспоминать как код в блок засунуть, делал очень давно и всего пару раз (
Добавлено: короче, что то у меня с блоком из скетча получается ровно ничего. Если кто то сможет помочь с блоком - буду признателен!
Апаю. Второе дыхание на эту приблуду появилось. Ни чёрта пока не получается, но как будто:
Делаем мини-программу в фл прог. Или заливаем скетч из примеров в ардуино аде.
Смысл - опрашиваем датчик (один) и отправляем раз в секунду в компорт.
Наблюдение: если использовать вемос мини - часто (непрогнозируемо) в мониторе порта нет данных пока Не: закроешь монитор порта, отключишь питание есп (именно отключить питание секунд на 5, а не ресет), включишь питание, откроешь монитор, оппа. Данные начинают идти как ни в чем не бывало.
Более ничего в есп не заливается, проверил 4 экземпляра уже.
Откопал древнюю (лет ей больше 10 точно) уно. На 328 камне. А на ней таких выкрутасов нет! Залил - данные пошли. Всегда. Выдернул датчик из линии связи -компорт замер, воткнул датчик, ткнул ресет - снова пошли.
Это какая то очередная пока мне неизвестная фича?
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
дополняю.
два VL6180x -> ардуино уно. скетч от robojax на 2 датчика.
все работает. ну дрейфует, но работает. а на вемосе у меня это работать отказываается.
СпойлерПоказать
/*
* Arduino code
* Lesson 76-2: Using two or more VL6180 Laser Distance Sensor with Arduino
* Adafruit code modified for this tutorial
Using two or more VL6180X 20cm Time-of-Flight proximity sensor with Arduino
* Original code and library by https://github.com/adafruit/Adafruit_VL6180X
*
* Written/updated by Ahmad Shamshiri for Robojax Robojax.com
* on Mar 12, 2021 in Ajax, Ontario, Canada
Watch the video instruction for this sketch:
Please watch video instruciton of this code :
This video is part of Arduino Step by Step Course which starts here:
If you found this tutorial helpful, please support me so I can continue creating
content like this. You can support me on Patreon http://robojax.com/L/?id=63
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Adafruit_VL6180X.h>
// address we will assign if dual sensor is present
#define LOX1_ADDRESS 0x30
#define LOX2_ADDRESS 0x31
// set the pins to shutdown
#define SHT_LOX1 7
#define SHT_LOX2 6
// Optional define GPIO pins to check to see if complete
#define GPIO_LOX1 4
#define GPIO_LOX2 3
#define TIMING_PIN 13
// objects for the VL6180X
Adafruit_VL6180X lox1 = Adafruit_VL6180X();
Adafruit_VL6180X lox2 = Adafruit_VL6180X();
//==========================================================================
// Define some globals used in the continuous range mode
// Note: going to start table drive this part, may back up and do the rest later
Adafruit_VL6180X *sensors[] = {&lox1, &lox2};
const uint8_t COUNT_SENSORS = sizeof(sensors) / sizeof(sensors[0]);
const int sensor_gpios[COUNT_SENSORS] = {GPIO_LOX1, GPIO_LOX2}; // if any are < 0 will poll instead
uint8_t tempRange;
uint8_t sensor_ranges[COUNT_SENSORS];
uint8_t sensor_status[COUNT_SENSORS];
// Could do with uint8_t for 8 sensors, but just in case...
const uint16_t ALL_SENSORS_PENDING = ((1 << COUNT_SENSORS) - 1);
uint16_t sensors_pending = ALL_SENSORS_PENDING;
uint32_t sensor_last_cycle_time;
/*
Reset all sensors by setting all of their XSHUT pins low for delay(10), then set all XSHUT high to bring out of reset
Keep sensor #1 awake by keeping XSHUT pin high
Put all other sensors into shutdown by pulling XSHUT pins low
Initialize sensor #1 with lox.begin(new_i2c_address) Pick any number but 0x29 and it must be under 0x7F. Going with 0x30 to 0x3F is probably OK.
Keep sensor #1 awake, and now bring sensor #2 out of reset by setting its XSHUT pin high.
Initialize sensor #2 with lox.begin(new_i2c_address) Pick any number but 0x29 and whatever you set the first sensor to
*/
void setID() {
// all reset
digitalWrite(SHT_LOX1, LOW);
digitalWrite(SHT_LOX2, LOW);
delay(10);
// all unreset
digitalWrite(SHT_LOX1, HIGH);
digitalWrite(SHT_LOX2, HIGH);
delay(10);
// activating LOX1 and reseting LOX2
digitalWrite(SHT_LOX1, HIGH);
digitalWrite(SHT_LOX2, LOW);
// initing LOX1
if (!lox1.begin()) {
Serial.println(F("Failed to boot first VL6180X"));
while (1);
}
lox1.setAddress(LOX1_ADDRESS);
delay(10);