Поисковая пищалка управляемая каналом РУ.

Прилепил я к своему мелколету поисковую пищалку от ХК, но логика его работы меня совсем не устроила, с алгоритмом я так и не разобрался, пищать она начинает сразу после подачи питания и глохнуть должна судя по всему от изменений в канале РУ. А хочется что бы работала только по команде с пульта в нужный мне момент а не по ее разумению. Поиск готовых решений с нужными параметрами результата не дал, все они слишком умные, анализируют состояние канала и по какому-либо алгоритму включают пищалку. Это не устраивает. К сожалению маркировка на чипе этой пищалки затерта, по этому перепрошить эту возможности почти нет, надо смотреть подключение выводов проца, сравнивать с даташитами, но лень и не факт что будет результат, может быть как нибудь займусь этим. Правда очень большая вероятность что там attinyXX, очень уж любят китайцы AVR. Решил сделать такую сам. В загашнике была пищалка с транзистором на плате типа такой

и несколько attiny13, оставшихся от затаривания к другому проекту, который переполз на другой камень. Зачем им валяться без дела? Решил по возможности их применять для других целей. В сети было найдено несколько похожих проектов на таком же чипе, но мне приглянулся один с хексом и исходниками не помню под что. Это что-то надо устанавливать и осваивать, на такой подвиг я не был согласен и меня устраивал хекс. Логика работы не совсем была ясна, один RC вход и 2 выхода, а сайт был на немецком и переводить не хотелось. Сначала хотел распаять навесиком на плате пищалки и опытным путем узнать логику работы, но покрутив в руках и прикинув компоновку и монтаж (некозисто получалось) решил вспомнить лазерный утюг. Набросал по быстрому схемку с учетом недопонимания логики работы (с обоих выходов пустил на транзистор и нужный выход подключался бы установкой нужного резистора)

и плату под это дело.

В процессе понял что пищать если и будет такая прошивка то монотонно, что не очень хорошо. Попутно устроил прослушивание имеющимся в загашнике активным пищалкам, ни одна не устроила и решил ее взять с батарейной пищалки, ту что с раструбом, громкость у нее очень хорошая и донор имелся.

Полез опять в гугль искать еще проекты но чтоб неприменно под ардуину (мне так проще), нашел еще один совсем простейший на тини85 который снова пищал бы монотонно, но в нем по крайней мере я смог бы сделать изменения. Попутно нашел как адаптировать тиньку13 под ардуино. Немного поколдовав над кодом изменил его до неузнаваемости, за одно потренировался в экономии памяти проца.

#include <avr/io.h> // принято подключать
#include <util/delay.h> // нужна для функции _delay_ms();

//int inputPin = 5;
//int outputPin = 3;
#define inputPin 0
#define outputPin 4
#define outputPin 3
unsigned long duration;

void setup()
{
//  pinMode(inputPin, INPUT);
  DDRB &= ~(1<<0);
//  pinMode(outputPin, OUTPUT);
  DDRB |= (1<<4);
  DDRB |= (1<<3);
  digitalWrite(outputPin, LOW);
}

void loop()
{
//  bip();
  duration = pulseIn(inputPin, HIGH, 3000);
  if (duration > 1500)
  {
    bip();
    delay (1000);
//    _delay_ms(1000);
  }
}

void bip()
{
  for (int i=0; i <= 4; i++)
  {
//    digitalWrite(outputPin, HIGH);
    PORTB |= (1<<4);
    PORTB |= (1<<3);
    delay (40);
//    _delay_ms(300);
//    digitalWrite(outputPin, LOW);
    PORTB &= ~(1<<4);
    PORTB &= ~(1<<3);
    delay (40);
//    _delay_ms(300);
  }
}

После появления первого варианта кода сделал платку.


Сто лет не занимался этим, но на удивление получилось в первого раза приемлемо. И собрал ее.

Без косяков не обошлось, забыл что камушки в корпусе wide SO-8 и плату развел под обычный. Т.к. программу писал сам то необходимость в одном из резисторов (R2 или R3) отпала я впаял светодиод, пусть будет. (В ходе экспериментов он будет перепаян катодом на землю и переедет на 2ю ногу тиньки.)
Долго я колдовал с кодом и осциллографом, проводил измерения “эталонной” пищалки, подбирал тайминги. Оказалось что в ардуине применение временнОй функции millis() сжирает очень много времени и мне не удавалось достичь желаемого результата. А при не совпадении частоты с резонансной пищалки она пищит тихо. Попутно выяснил что частота тактового генератора в тиньках далеко не эталонная и отличается от образца к образцу довольно сильно, у меня на 2х процах разница составила 10%. В итоге написание получившегося кода заняло несколько дней (время от времени). И вот что получилось.

#include <avr/io.h> // принято подключать
#include <util/delay.h> // нужна для функции _delay_ms();

//int buzPin = 4;
//int ledPin = 3;
//int inputPin = 0;
#define buzPin 4
#define ledPin 3
//#define buzPin 1    //для тестов
//#define ledPin 2    //для тестов
#define inputPin 0

//int time_del = 98;                 //меандр с периодом ~280мкс
//int time_del = 160;                //меандр с периодом ~390мкс(2550Гц)
//int time_del = 155;                //меандр с периодом ~377мкс(2650Гц)
//int time_del = 153;                //меандр с периодом ~370мкс(2700Гц)
int time_del = 135;                //меандр с периодом ~362мкс(2750Гц)
//int time_del = 138;                //меандр с периодом ~372мкс(2680Гц)

unsigned long duration;

void setup()
{
//  pinMode(inputPin, INPUT);
  DDRB &= ~(1<<inputPin);
//  pinMode(buzPin, OUTPUT);
  DDRB |= (1<<buzPin);
//  pinMode(ledPin, OUTPUT);
  DDRB |= (1<<ledPin);
//  digitalWrite(buzPin, LOW);
  PORTB &= ~(1<<buzPin);
//  digitalWrite(ledPin, LOW);
  PORTB &= ~(1<<ledPin);
}

void loop()
{
  duration = pulseIn(inputPin, HIGH, 3000);
  if (duration > 1500)
  {
    bip();
//    delay (1000);
    _delay_ms(1000);
  }
}

void bip()
{
  for (int i=0; i <= 4; i++)
  {
    BuzGen();
  }
}

void BuzGen()
{
//  digitalWrite(ledPin, HIGH);
  PORTB |= (1<<ledPin);
  for (int i=0; i <= 160; i++)   //~60мс
//  for (int i=0; i <= 230; i++)   //~80мс

  {
//    digitalWrite(buzPin, HIGH);
    PORTB |= (1<<buzPin);
    delayMicroseconds(time_del);
//    digitalWrite(buzPin, LOW);
    PORTB &= ~(1<<buzPin);
    delayMicroseconds(time_del);
  }
//  digitalWrite(ledPin, LOW);
  PORTB &= ~(1<<ledPin);
  delay (45);                      //~62мс
}

Пищалка запищала громко как ей полагается.
Пока писал прошивку не удобно стало с пучком проводов, поставил мелкий разъемчик для программирования прямо на выводы тиньки, из-за чего пищалку тоже пришлось переместить. И как писал выше перепаял светодиод. Подзалил термоклеем и в термоусадку.

Натурных испытаний пока не проводил, только от сервотестера. Т.к. на приемнике свободных каналов нет (D4R-II) планирую вывести канал управления с CC3D.

Желающим повторить конструкцию ВОТ архив, в нем исходники под ардуино, hex, схема с платой и зеркальный pdf под ЛУТ, Ссылка как заточить ардуино иде под тини13. Тинька работает на стоковых фьюзах. Учитывая не точность тактового генератора скорее всего придется подбирать временные задержки для получения необходимого тона.

  • 4193
Comments
Covax

Круто! Но я б был щастлив, если бы ктото научился перешивать пищалки с ХК)

mataor

хмм… а не проще было взять динамик со встроенным генератором? собсно на похожем мониторе батарей у меня такой и стоял

mataor
Covax;bt129613

перешивать пищалки с ХК)

весь вопрос в том, что у меня ее нет, если будет схема - могу код наваять, правда потребуется скорее всего небольшая отладка

serenya
Covax;bt129613

Круто! Но я б был щастлив, если бы ктото научился перешивать пищалки с ХК)

mataor;bt129615

весь вопрос в том, что у меня ее нет, если будет схема - могу код наваять, правда потребуется скорее всего небольшая отладка

Завтра попробую раскурочить посмотреть что там и как.

mataor;bt129614

хмм… а не проще было взять динамик со встроенным генератором? собсно на похожем мониторе батарей у меня такой и стоял

Ну на моем доноре пищалка оказалась не активной, а активные из запасов слабо пищат.

Dimon372
serenya

Похоже ни в чем, если она действительно работает так же как и самоделка, сэкономил 3$ и убил кучу времени.😦

Shuricus

Да, я такими пользуюсь всю жизнь. Работают по щелчку тумблера. Как вы и хотели.

А та, что в шапке - тоже очень хорошая. Она сама писчить, если стики не трогать некоторое время. Не нужен лишний канал.

Короче я преклоняюсь перед людьми, которые так умеют решать проблемы поиска в интернете! 😃 😃 😃

Covax

Я так и пользую, не включая в ру. Но блин, когда хочется полетать в тишине и этот писк через минуту раздражает… Хотелось бы через 10 минут хотя бы чтобы пищал и периодами…

Shuricus

Ну можно включить в РУ и все наладится. Что мешает?

serenya

Срисовал схемку

На проце написано HT46R01C, гуглится даташит в котором проц 10 выводной MSOP. Что китайцы туда поставили ХЗ, реально стоит SO-8. Похоже переделать не получится.

Covax
Shuricus;bt129642

Ну можно включить в РУ и все наладится. Что мешает?

Умники мешают)

Covax
serenya;bt129646

Срисовал схемку

На проце написано HT46R01C, гуглится даташит в котором проц 10 выводной MSOP. Что китайцы туда поставили ХЗ, реально стоит SO-8. Похоже переделать не получится.

я свой разберу, у меня чуть другой, гляну что там

Vadim_AK

Удалил.

appolinari
Dimon372;bt129617

А в чем отличие от hobbyking.com/…/__14521__HobbyKing_174_Discovery_B… ?

Заказал такие пищалки. Воткнул в свободный канал. Работает адекватно, но к сожалению пищит довольно тихо. Слышно в радиусе метров в десять… 😃

Frolv

“Желающим повторить конструкцию ВОТ архив”-увы, архив недоступен…