Библиотека Tone() вопрос.

renoshnik
Offline
Зарегистрирован: 11.04.2013

Клапауций 998 пишет:

renoshnik пишет:

Амплитуда волны именно десять Вольт.

а, в этом моменте нужно внимательно разобраться - т.к. у тебя на аналоговом осциллографе напряжение перед переходом в + или - равно 0, т.е. отсутвует одномоментный переход из +5 в -5 вольт.

согласен, но для поставленых задач это было не критично, тем более, что мне как раз нужен был "дедтайм" ...

lilik
Offline
Зарегистрирован: 19.10.2017

dimax пишет:

wallera, я не утерпел,  сейчас попробывал свой вариант "с грязным влезанием" во встроенный tone.cpp. На прямую на спикер , без транзисторов (у меня динамик на 150 ом, ему так можно) ,  напрямую меж двумя выходами дуни - громкость существенно выше, чем относительно общего :)

Интересная тема, тоже не удержался и просто инвертировал второй выход для динамика через digitalRead. Громкость существенно больше стала. Такой подход, видимо, увеличивает существенно амплитуду колебаний мембраны. попробовал на пьезоизлучателе и динамике от телефона 8-омном через резистор 220 Ом.

#include "pitches.h"//ноты - частоты
int tonePin = 5;// 1 вывод для динамика 
int a_tonePin = 6;// 2 вывод для динамика

///////////////////////////////
//МЕЛОДИЯ В ЛЕСУ РОДИЛАСЬ ЁЛОЧКА
int notes[] = {
  NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4,
  NOTE_A4, NOTE_F4, NOTE_C4, NOTE_C4,
  NOTE_C4, NOTE_A4, NOTE_A4, NOTE_AS4,
  NOTE_G4, NOTE_C5, 0, NOTE_C5, NOTE_D4,
  NOTE_D4, NOTE_AS4,NOTE_AS4,NOTE_A4,
  NOTE_G4, NOTE_F4, NOTE_C4, NOTE_A4,
  NOTE_A4, NOTE_G4, NOTE_A4, NOTE_F4
};

int times[] = {
  400,400,400,400,
  400,400,400,400,
  400,400,400,400,
  400,600,1000,400,400,
  400,400,400,400,
  400,400,400,400,
  400,400,400,600
};
///////////////////////////////
void setup()
{
pinMode(a_tonePin,OUTPUT);  
}

void loop()
{
midi_A();
delay_(500);
}

/////////////////////////////////////////
 void midi_A() {
 for (int j = 0; j < 29; j++){
tone(tonePin,notes[j],times[j]);
delay_(times[j]*1.2);
 } 
 }
//////////////////////////////////////////
void delay_(int T1)
{
long Y=millis();   
while(millis()-Y<T1){
digitalWrite(a_tonePin,!digitalRead(tonePin)); 
}
}

 
 
 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

dimax пишет:

wallera, я не утерпел,  сейчас попробывал свой вариант "с грязным влезанием" во встроенный tone.cpp. На прямую на спикер , без транзисторов (у меня динамик на 150 ом, ему так можно) ,  напрямую меж двумя выходами дуни - громкость существенно выше, чем относительно общего :)

Интересная тема, тоже не удержался и просто инвертировал второй выход для динамика через digitalRead. Громкость существенно больше стала. Такой подход, видимо, увеличивает существенно амплитуду колебаний мембраны. попробовал на пьезоизлучателе и динамике от телефона 8-омном через резистор 220 Ом.

#include "pitches.h"//ноты - частоты
int tonePin = 5;// 1 вывод для динамика 
int a_tonePin = 6;// 2 вывод для динамика

///////////////////////////////
//МЕЛОДИЯ В ЛЕСУ РОДИЛАСЬ ЁЛОЧКА
int notes[] = {
  NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4,
  NOTE_A4, NOTE_F4, NOTE_C4, NOTE_C4,
  NOTE_C4, NOTE_A4, NOTE_A4, NOTE_AS4,
  NOTE_G4, NOTE_C5, 0, NOTE_C5, NOTE_D4,
  NOTE_D4, NOTE_AS4,NOTE_AS4,NOTE_A4,
  NOTE_G4, NOTE_F4, NOTE_C4, NOTE_A4,
  NOTE_A4, NOTE_G4, NOTE_A4, NOTE_F4
};

int times[] = {
  400,400,400,400,
  400,400,400,400,
  400,400,400,400,
  400,600,1000,400,400,
  400,400,400,400,
  400,400,400,400,
  400,400,400,600
};
///////////////////////////////
void setup()
{
pinMode(a_tonePin,OUTPUT);  
}

void loop()
{
midi_A();
delay_(500);
}

/////////////////////////////////////////
 void midi_A() {
 for (int j = 0; j < 29; j++){
tone(tonePin,notes[j],times[j]);
delay_(times[j]*1.2);
 } 
 }
//////////////////////////////////////////
void delay_(int T1)
{
long Y=millis();   
while(millis()-Y<T1){
digitalWrite(a_tonePin,!digitalRead(tonePin)); 
}
}

 
 

просто холостой ход мембраны заменяется на активный, а размах там тот же - 5 вольт

Green
Offline
Зарегистрирован: 01.10.2015

5 вольт в одну сторону и 5 вольт в другую - это всё равно что 10 вольт в одну сторону.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

lilik пишет:

Интересная тема, тоже не удержался и просто инвертировал второй выход для динамика через digitalRead. Громкость существенно больше стала. Такой подход, видимо, увеличивает существенно амплитуду колебаний мембраны. попробовал на пьезоизлучателе и динамике от телефона 8-омном через резистор 220 Ом.

"видимо" выделено мною. Этот "подход" давным давно используется как в портативной звуковоспроизводящей аппаратуре, так и в стационарной. В предельном случае увеличивает амплитуду вдвое или мощность в 4 раза, т.е. на 6 дБ.

Кстати, какой был смысл реанимировать старую тему, тем более, что фактически все необходимое уже было написано?

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

Кстати, какой был смысл реанимировать старую тему, тем более, что фактически все необходимое уже было написано?

 Способ просто сработал от digitalWrite(a_tonePin,!digitalRead(tonePin)); без изменений в библиотеке.

Ну и самое забавное, можно ещё больше повысить громкость без инверсии, если просто добавить конденсатор:

ток замерял, что с конденсатором, что без около 9мА на 5 В питания.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а пин  не выбьется при комплексной нагрузке

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

lilik пишет:

Ну и самое забавное, можно ещё больше повысить громкость без инверсии, если просто добавить конденсатор:

ток замерял, что с конденсатором, что без около 9мА на 5 В питания.

Ты вообще сам понял, что сделал?

И чем то, что ты сделал, отличается от того, что обсуждается в этой теме?

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

Ты вообще сам понял, что сделал?

И чем то, что ты сделал, отличается от того, что обсуждается в этой теме?

В теме обсуждается как сделать громче динамик с минимумом дополнительных элементов и не спалить мк.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

lilik пишет:

andriano пишет:

Ты вообще сам понял, что сделал?

И чем то, что ты сделал, отличается от того, что обсуждается в этой теме?

В теме обсуждается как сделать громче динамик с минимумом дополнительных элементов и не спалить мк.

Хорошо.

Тогда сразу уточняющий вопрос: как опубликованная схема соотносится с "не спалить МК"?

(перечитайте в этой теме сообщения №5 и №8)

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

как опубликованная схема соотносится с "не спалить МК"?

Теоретически начальный ток заряда конденсатора ограничивается 8 омами, но он краткосрочный... Будет время, поставлю на эксперимент мелодию.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

lilik пишет:

andriano пишет:

как опубликованная схема соотносится с "не спалить МК"?

Теоретически начальный ток заряда конденсатора ограничивается 8 омами, но он краткосрочный...

И что, это поможет? Кстати, по поводу "краткосрочный" - как по-Вашему, сколько времени нужно, чтобы спалить МК?

Видите ли, "не спалить МК" подразумевает, что МК работает в режиме, предусмотренном дэйташитом и при наличии исправных деталей схема никогда не может выйти за пределы установленных параметров. А для этого нужно рассчитывать схему а не "ставить эксперимент".

Максимально допустимый ток через пин контроллера AVR составляет 40 мА.

В сообщении №8, которое Вы не удосужились перечитать по моему совету, указано, что используется звукоизлучатель с сопротивлением 120 Ом. На 5 Вольтах это дает 41.7 мА.

А теперь считаем для Ваших 8 Ом: 625 мА. Разницу чувствуете?

Идем дальше: динамик - индуктивная нагрузка. В Вашей схеме есть какие-либо элементы, предназначенные для защиты от индуктивной нагрузки? Подсказка: в данном случае существует стандартное решение из соединенных последовательно резистора 5-10 Ом и конденсатора обычно на 0.1 мкФ.

Ну и напоследок: Вы пишете, что стараетесь минимизировать количество деталей в схеме. Тогда что в ней делает резистор R1? Это просто лишняя деталь, которая не выполняет никаких функций.

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

 Тогда что в ней делает резистор R1? Это просто лишняя деталь, которая не выполняет никаких функций.

Резистор был впаян к выводу динамика, конденсатор руками подсовывал :-)

Попробовал теперь без резистора - работает громче, конденсаторы по номиналу беру от 1 до 100 мкф. 

Диод ещё используют для защиты от индуктивной нагрузки.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

lilik пишет:

andriano пишет:

 Тогда что в ней делает резистор R1? Это просто лишняя деталь, которая не выполняет никаких функций.

Резистор был впаян к выводу динамика, конденсатор руками подсовывал :-)

Попробовал теперь без резистора - работает громче, конденсаторы по номиналу беру от 1 до 100 мкф. 

Диод ещё используют для защиты от индуктивной нагрузки.

Ну да, "что-то слышал, но не могу вспомнить".

Расчеты где?

Какой будет ток?

Какое напряжение падает на конденсаторе и какое на динамике?

Каковы постоянная времени и граничная частота?

Или Вы всерьез полагаете, что все схемы составляются по принципу "а вот попробую я вставить первую попавшуюся деталь в первое попавшееся место"?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

понеслось )))

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

[ "а вот попробую я вставить первую попавшуюся деталь в первое попавшееся место"?

:-)

Основа эволюции.