Arduino для BAIT BOAT...
Можно предположить что длинная пауза и следующая за ним
Она всегда стартует с импульса 6.729 мс
есть определение начала пачки.
Далее идут отраженные импульсы, без всякой обработки 0.82 мс- это как раз 40 см с множеством переотражений ( но отсечение идет только первых поступивших 8-ми). Только отсчет почему то не от начала первой пачки, а от конца ( то есть вначале идет наиболее далекое определенное отражение), хотя так логично для отображения если рисовать начинать с более глубокого пробитого уровня.
Если так предположить- то тот промежуток что отдан под первую пачку, плохо видно- но около 60 мс- определяем максиму 90 метров прохождения импульса УЗ, то есть 45 метров глубины. А сколько заявлено? ( нашел- 40 метров- так и должно быть)
Далее пачка температуры, 8 бит, к примеру в 394 посту это 11000011
Только отсчет почему то не от начала первой пачки, а от конца
Похоже, вы правы!
Стартовый импульс всегда 6.7 мс.
Потом длинный импульс 20…60 мс в моем ведре (запас под большие глубины?).
И далее хвост из 10-11 импульсов ~0.3-0.6 мс
Получается, хвост из коротких импульсов - это серия замеров эха.
0.6 мс * 1500м\с \ 2 = 0.45 м
Я сделал на Ардуинке приблуду для анализа. При случае возьму её на пруд и посмотрю, что покажет.
Можно ссылку на проект?
Я сделал на Ардуинке приблуду для анализа. При случае возьму её на пруд и посмотрю, что покажет.
Борис, далее не пытали?
А фото платы датчика в высоком разрешении не делали?
Борис, далее не пытали?
Пока до пруда не добрался. Огородный сезон(
Плату датчика не сфотографировать - она внутри поплавка-уточки, который запаян. Заглядывал внутрь через батарейный отсек.
Есть мысли… FRSky передает телеметрию на пульт. Можно передать GPS и глубину. Есть проект эмуляции датчиков S.Port (для подключения к приемнику frsky X- и S- серий) на Arduino. GPS стандартно, а глубину под видом напряжения\высоты\температуры, например.
Лог телеметрии пишется на SD-карту в пульте в формате csv.
А фото платы датчика в высоком разрешении не делали?
еще нужно???
Нужно.
А у меня встречный вопрос.
У кого то есть информация о том как себя поведет один и тот же пьезо элемент в воздухе и в воде?
Интересует как изменится, вернее какой окажется диаграмма направленности луча и уплывет ли куда то частота резонансная?
А фото платы датчика в высоком разрешении не делали?
Если в ближние дни найду где то в продаже запасной датчик, разберу…
качество сильно сжимается при загрузке…
вставляй ссылку на сторонний ресурс типа радикала, а там оригинал хоть в 4к
вставляй ссылку на сторонний ресурс типа радикала,
Лучше на yandex.
Лучше на yandex.
Да, на радикале спам-мусора полно … отзываю свой совет)) Но смысл думаю понятен.
Лучше на yandex.
или в облако от mail.ru
Не помню кто именно уже давал ссылочку не будет лишним повторить тут, ссылка на патент на затею, и как работает “фишфиндер”, основные решения и тп. может оказаться полезно.
ссылку давал я, но он к лаки не подходит. Плюс сейчас они меняют протокол. Некоторые новые приемники не видят старых датчиков и наоборот
Плюс сейчас они меняют протокол. Некоторые новые приемники не видят старых датчиков и наоборот
они просто защищаются от “подделок” вернее друг от друга. меняют длину первого, стартового импульса например и все. есть варианты с частотой 315,433,916мгц. все остальное пока еще неизменно.
Всем привет. Собрал для себя на просторах интернета скетч для заливки его в ардуину, в скетче все функции отрабатывают как мне надо, но есть так называемый дребезг сигнала, что не очень хорошо. Помогите пожалуйста от него избавиться на программном уровне. Так как я сам не программист не могу понять как запихнуть защиту от дребезга в собранный мной скетч.
#include <Servo.h>
Servo servo1;
Servo servo2;
int Val;int Val1;
boolean vLED1 = false;//Hilfsvariable wird zusammen mit der LED auf “true” gesetzt, wenn if-Bedingung erfüllt wurde. Am Ende des loop-teils werden, wenn das Einganssignal in der “Mittelstellung” ist, alle Hilfsvariablen wieder auf “false” gesetzt. Somit kann die LED wieder umgeschaltet werden.
boolean vLED2 = false;//
int iLED1;
int iLED2;void setup ()
{
pinMode(2, INPUT); //Вход канал1
servo1.attach(4); //Сервомашинка 1
servo2.attach(5); //Сервомашинка2pinMode (6, OUTPUT); //Выход на реле света1
pinMode (7, OUTPUT); //Выход на реле света2
pinMode (3, INPUT); //Вход канал3
}void loop (){
Val = pulseIn(2, HIGH, 75000);
if (Val<1500) servo1.write(map(Val, 1000,1500,0,90 )); //Упровление сервой
if (Val>1500) servo2.write(map(Val, 1500,2000,0,90 ));Val1 = pulseIn(3,HIGH,75000);//Ließt Eingangssignal
iLED1 = digitalRead(6);//Ließt Status von LED1
iLED2 = digitalRead(7);//if-Bedinung für LED1
if (Val1>1850 && Val1<1950 && iLED1==LOW && vLED1 == false){//Wenn Eingangssignal zwischen 1228 und 1242, Ausgang an LED1 aus und der Status des Ausgangs in diesem loop-durchgang noch nicht verändert wurde, dann
digitalWrite (6,HIGH);//schalte Ausgang an
vLED1 = true;//Setze Hilfsvariable auf true. Nächste if-bedinung stimmt somit nicht mehr (bis Eingangssingal in “Mittelstellung” und die LED bleibt an.
}
if (Val1>1850 && Val1<1950 && iLED1==HIGH && vLED1 == false){//Gleich wie oben, bloß umgekehrt zum ausschalten der LED
digitalWrite (6,LOW);
vLED1 = true;
}
//if-Bedinung für LED2
if (Val1>1024 && Val1<1250 && iLED2==LOW && vLED2 == false){
digitalWrite (7,HIGH);
vLED1 = true;
}
if (Val1>1024 && Val1<1250 && iLED2==HIGH && vLED2 == false){
digitalWrite (7,LOW);
vLED1 = true;
}
//if-Bedinung zum Zurücksetzen der Hilfsvariablen bei Mittelstellung des Eingangssignals
if (Val1>1490 && Val1<1600){
vLED1 = false;
vLED2 = false;
}}
Суть работы ардуинки такова , один канал работает как серворазделитель , а другой канал отвечает за включение и выключение габаритов и фары.
есть так называемый дребезг сигнала, что не очень хорошо.
Давай разберемся для сначала, что за дребезг, в чем именно он выражается?
Давай разберемся для сначала, что за дребезг, в чем именно он выражается?
Он выражается: при снятии сигнала команда не сразу фиксируется, то есть например я хочу дать команду на вкл LED1 поднимаю стик в верх а он вместо того чтобы зафиксировать мою команду начинает то включать то выключать. приходиться несколько раз давать команду.
После подачи команды на включение( отключение) нужно ввести паузы, чтоб хватало времени убрать команду.
То есть, к примеру ,после
digitalWrite (6,HIGH);
пишем
delay(1500); // полторы секунды защитный интервал
и так после всех четырех команд digitalWrite.
Сейчас у вас цикл очень короткий и пока вы переместили стик в крайнее положение и вернули в среднее происходит несколько включений-выключений светодиода, для вас это выглядит как переключение случайным образом ( дребезг).
например я хочу дать команду на вкл LED1 поднимаю стик в верх а он вместо того чтобы зафиксировать мою команду начинает то включать то выключать.
Для начала, есть подозрение что у тебя переключения происходят у самой границы, когда стик находится у самого края?
Если есть сервотестер, попробуй подавать комманды с него. У него заметно шире диаппазон ШИМ чем у пульта. Либо вариант 2 сразу изменить точки переключения.