Помогите с реализацией проекта
- Войдите на сайт для отправки комментариев
Ср, 18/01/2017 - 17:41
Нужно сделать генератор импульсов на частоте 15-55 кГц (тоесть нарастающая, с шагом в 1 кГц за секунду) потом нужно замолкнуть на 1 минуту и цикл повторяется.
прямое управление портом + моргаем без делай + счетчик переменная
Изменение частоты необязательно с шагом в 1 кГц за секунду, главное плавно с 15 до 55 кГц в течении примерно 30-40сек., потом нужно замолкнуть на 1 минуту и цикл повторяется.
А что за спикер Вы прямо к пинам цеплять собрались?
А что за спикер Вы прямо к пинам цеплять собрались?
Высокочастотный пьезоизлучатель KEMO L10
А, т.е. не прямо к пинам - здесь просто образно нарисовано, да?
А, т.е. не прямо к пинам - здесь просто образно нарисовано, да?
Прямо к пинам
Прямо к пинам
Да, ну, хозяин - барин, дело Ваше.
Прямо к пинам
Да, ну, хозяин - барин, дело Ваше.
А что не так?
Да, всё так, я ничего.
Просто посмотрел на сайт производителя и вижу, что Rated voltage - 16 Vp-p, т.е. ему надо от +8 до -8 колебания (лучше бы синусоиду, чтобы не деградировал от прямоугольного сигнала).
Потребление почему-то не указано, но вот у изделия, состоящего из генератора сигнала и такого "динамика" потребление 150ма, значит динамик жрет не менее 120-130мА.
И где Вы ему всё это на пинах возьмёте?
Да, всё так, я ничего.
Просто посмотрел на сайт производителя и вижу, что Rated voltage - 16 Vp-p, т.е. ему надо от +8 до -8 колебания (лучше бы синусоиду, чтобы не деградировал от прямоугольного сигнала).
Потребление почему-то не указано, но вот у изделия, состоящего из генератора сигнала и такого "динамика" потребление 150ма, значит динамик жрет не менее 120-130мА.
И где Вы ему всё это на пинах возьмёте?
Да, но только тот генератор не на микроконтроллере.
Я пробовал подавать на этот динамик сигналы от 1 до 5 кГц и потребление было максимум 9мА.
В принципе можно через транзистор подцепить, это не проблема. Проблема в написании кода.
Я пробовал подавать на этот динамик сигналы от 1 до 5 кГц и потребление было максимум 9мА.
Что, 16Vp-p пробовали? Ну, смотрите сами, дело Ваше.
Проблема в написании кода.
Да, ладно плакать-то. Где Вы там проблему нашли? Нет никакой проблемы и не было никогда - обыкновенный ногодрыг с изменяемой частотой во вполне разумных пределах. Берёте пример "блинк без делэй", меняете в нём две строки и добавляете три новых - вот и весь Ваш код - говорить не о чем.
Что, 16Vp-p пробовали? Ну, смотрите сами, дело Ваше.
Да, ладно плакать-то. Где Вы там проблему нашли? Нет никакой проблемы и не было никогда - обыкновенный ногодрыг с изменяемой частотой во вполне разумных пределах. Берёте пример "блинк без делэй", меняете в нём две строки и добавляете три новых - вот и весь Ваш код - говорить не о чем.
Подавал сигнал с Тиньки, вот пример:
Получилась частота 6,4кГц
А вы советуете всётаки через транзистор?
По поводу того, что нет проблем с кодом. Я в програмировании полный ноль и для меня это пока проблема.
Может поможете?
Я помогаю тем, кто делает сам и столкнулся с проблемойю Вы же сами делать пока не пыталисью Читайте книжки, пробуйте, а там и поможем. Иначе - в ищу исполнителя. Я там никаких заказов не беру, но там и без меня найдётся кому написать для Вас скетч.
Я помогаю тем, кто делает сам и столкнулся с проблемойю Вы же сами делать пока не пыталисью Читайте книжки, пробуйте, а там и поможем. Иначе - в ищу исполнителя. Я там никаких заказов не беру, но там и без меня найдётся кому написать для Вас скетч.
Да вы пока тоже ничем толком и не помогли.
Даже по поводу спикера и транзистора вы ответили: "Хозяин барин". Это прям весомая помощь.
Да вы пока тоже ничем толком и не помогли.
Правильно. Я же сказал, помогаю тому, кто деалет сам. Вы пока и не пытались ничего делать - потому и не помогаю.
Даже по поводу спикера и транзистора вы ответили: "Хозяин барин". Это прям весомая помощь.
А вот это, простите. Я Вам сказал, что ему требуется синусоидальное напржение 16В p-p (от -8 до +8), и что потребление у него за 100мА. Вы же говорите, что подаёте ему от 0 до +5 прямоугольник и Вас всё устраивает. Ну, устраивает использовать динамик на 17% от его мощности, так устраивает. Чего Вы от меня ждали? Какой Вам ещё помощи надо? Думали, что я Вас свяжу и буду, прижигая живот горячим утюгом, заставлять делать по уму? И не подумаю. Информацию я Вам дал, а дальше - хозяин-барин. Решения за Вас принимать никто не будет - не в армии чай и не в детском саду.
Да вы пока тоже ничем толком и не помогли.
Правильно. Я же сказал, помогаю тому, кто деалет сам. Вы пока и не пытались ничего делать - потому и не помогаю.
Даже по поводу спикера и транзистора вы ответили: "Хозяин барин". Это прям весомая помощь.
А вот это, простите. Я Вам сказал, что ему требуется синусоидальное напржение 16В p-p (от -8 до +8), и что потребление у него за 100мА. Вы же говорите, что подаёте ему от 0 до +5 прямоугольник и Вас всё устраивает. Ну, устраивает использовать динамик на 17% от его мощности, так устраивает. Чего Вы от меня ждали? Какой Вам ещё помощи надо? Думали, что я Вас свяжу и буду, прижигая живот горячим утюгом, заставлять делать по уму? И не подумаю. Информацию я Вам дал, а дальше - хозяин-барин. Решения за Вас принимать никто не будет - не в армии чай и не в детском саду.
Так скажите конкретно, что нужно. Если через транзистор, то какой?
Вот так правильно будет?
Так скажите конкретно, что нужно. Если через транзистор, то какой?
Господи, да делайте Вы как хотите. Я же уже дважны написал - ему нужен синус от -8 до +8 вольт. Вы можете это сделать через один транзистор? Хоть через какой-нибудь? Я - нет.
Если делать по уму, то нужен генератор синусоидального сигнала с амплитудой 8В, например, на копеечной микросхеме ICL8038. Нужна сама микросхема и несколько резисторов и один конденстаор обвязки (см. даташит). А ей в свою очередь нужно биполярное питание (-12 / +12 - такое есть на старых компьютерных БП, ну на худой конец сделать простейшее с вритаульной землей). такого тока генератор не выдержит, значит на выход надо либо мощный операционник, либо, на худой конец эмммитерный повторитель. Вот как-то так. Тогда он у Вас будет вопить на полную.
Так скажите конкретно, что нужно. Если через транзистор, то какой?
Господи, да делайте Вы как хотите. Я же уже дважны написал - ему нужен синус от -8 до +8 вольт. Вы можете это сделать через один транзистор? Хоть через какой-нибудь? Я - нет.
Если делать по уму, то нужен генератор синусоидального сигнала с амплитудой 8В, например, на копеечной микросхеме ICL8038. Нужна сама микросхема и несколько резисторов и один конденстаор обвязки (см. даташит). А ей в свою очередь нужно биполярное питание (-12 / +12 - такое есть на старых компьютерных БП, ну на худой конец сделать простейшее с вритаульной землей). такого тока генератор не выдержит, значит на выход надо либо мощный операционник, либо, на худой конец эмммитерный повторитель. Вот как-то так. Тогда он у Вас будет вопить на полную.
Не могу понять вашей реакции.
Устройство будет питаться от двух Li-Ion акку, т.е. наряжение 7,4 В. Питание на контроллер пойдёт через стабилизатор 78l05. Само устройство нужно для отпугивания грызунов, собак и кошек.
Не могу понять вашей реакции.
Устройство будет питаться от двух Li-Ion акку, т.е. наряжение 7,4 В. Питание на контроллер пойдёт через стабилизатор 78l05. Само устройство нужно для отпугивания грызунов, собак и кошек.
Да, нет у меня никакой реакции. делайте как Вам нравится. Вы взяли мощный динамик, которумо нужно 16 вольт для нормальной работы, но при этом "Устройство будет питаться от двух Li-Ion акку, т.е. наряжение 7,4 В". Ну, и ради Бога! Я же не имею ничего против, второй день говорю, "хозяин барин", делайте как Вам нравится. Если трети мощности Вашего динамика хватит, чтобы кого-то отпугнуть, то всё будет нормально работать, ну, а не хватит - переделаете - поставите повышайку, сделаете виртуальную землю и всё остальное. Вы спросили как делать, я ответил, но я же Вас не заставляю. делайте как Вам нравится.
Не могу понять вашей реакции.
Устройство будет питаться от двух Li-Ion акку, т.е. наряжение 7,4 В. Питание на контроллер пойдёт через стабилизатор 78l05. Само устройство нужно для отпугивания грызунов, собак и кошек.
Да, нет у меня никакой реакции. делайте как Вам нравится. Вы взяли мощный динамик, которумо нужно 16 вольт для нормальной работы, но при этом "Устройство будет питаться от двух Li-Ion акку, т.е. наряжение 7,4 В". Ну, и ради Бога! Я же не имею ничего против, второй день говорю, "хозяин барин", делайте как Вам нравится. Если трети мощности Вашего динамика хватит, чтобы кого-то отпугнуть, то всё будет нормально работать, ну, а не хватит - переделаете - поставите повышайку, сделаете виртуальную землю и всё остальное. Вы спросили как делать, я ответил, но я же Вас не заставляю. делайте как Вам нравится.
С этим понятно. Спасибо.
Тепер, что касается кода. Это всё на что меня пока хватило
Почему-то к концу цикла время каждой частоты сокращается. По задумке частота должна меняться примерно через 3 сек.
Ну, так, как Вы написали так и работает. У Вас же количество повторов периода одинаковое - везде 30000, а период уменьшается.
Сами смотрите:
Строки 21-26 выполняются (33+33)х30000 микросекунд (1,98 сек.). Ну, плюс там накладные расходы.
Ну, так, как Вы написали так и работает. У Вас же количество повторов периода одинаковое - везде 30000, а период уменьшается.
Сами смотрите:
Строки 21-26 выполняются (33+33)х30000 микросекунд (1,98 сек.). Ну, плюс там накладные расходы.
Да это я понял, но если я ставлю количество повторов например 35000 или 60000, то команда выполняется бесконечно (я не дождался окончания).
Например
Как делать на таймере для меня пока вообще тёмный лес.
Это типа так?
Почемуто этот код не работает.
Чем можно заменить _delay_ms, мне нужна задержка примерно в 30-40сек.
for(int i=0; i<35000; i++) {
int не бывает ни 35000, ни, тем более, 60000. Максимальное значение int - 32767. Хотите больше, используйет unsigned - там до 65535 или long - там значительно больше.
Нет, на таймере совсем не "типа так". Поищите на тему "работа с таймерами в avr". Нужно найти статью, чтобы понять суть, а потом брать даташит тиньки и смотреть конкретику, т.к. в каждом контроллере это делается по-разному.
for(int i=0; i<35000; i++) {
int не бывает ни 35000, ни, тем более, 60000. Максимальное значение int - 32767. Хотите больше, используйет unsigned - там до 65535 или long - там значительно больше.
Нет, на таймере совсем не "типа так". Поищите на тему "работа с таймерами в avr". Нужно найти статью, чтобы понять суть, а потом брать даташит тиньки и смотреть конкретику, т.к. в каждом контроллере это делается по-разному.
Пока остановился на этом:
Чем можно заменить _delay_ms, мне нужна задержка примерно в 30-40сек.
C функцией tone() всё тоже самое в трёх строчках:
C функцией tone() всё тоже самое в трёх строчках:
Почему-то выдаёт ошибку при компилировании
Почему-то выдаёт ошибку при компилировании
В ошибке всё написано.
P.S. Вы в какой среде программируете?
Почему-то выдаёт ошибку при компилировании
В ошибке всё написано.
P.S. Вы в какой среде программируете?
Arduino
Если Arduino IDE, то не нужно использовать функцию main(). Всё содержимое подставляется туда препроцессором автоматически. В Arduino IDE main() скрыта от пользователя.
Выдаёт такую ошибку
Скетч?
Скетч?
Ага, видимо для Attiny13 не реализована эта функция (т.к. всего один аппаратный таймер, и он занят для другого). Проверил, у меня для Attiny13 тоже не компилируется. Если выбрать любую ардуину - всё компилируется.
Ага, видимо для Attiny13 не реализована эта функция. Проверил, у меня для Attiny13 тоже не компилируется. Если выбрать любую ардуину - всё компилируется.
Я так и думал
Как лучше подключить пьезоизлучатель, так
или так
Подойдёт ли транзистор BC550C ?
Вот накатал продвинутый вариант для тини13. Таймер управляет генерируемой частотой в цикле while. Благодаря применению алгоритма однобитного DDS синтеза удаётся очень плавно регулировать частоту (3288 градаций), правда расплата за это -повышенный джиттер. Когда частота достигает максимума МК переводит системные клоки на делитель 256, и делает паузу 200мс, соответссно каждая мс длится 256 мс, итоговая задержка будет 200*256мс. Выход PB3.
по поводу подключения пищалки -на одном транзисторе в любом случае будет говно. Лучше двухтактную схему, и через конденсатор подключить пищалку. Удобнее взять готовый пин-драйвер для мосфета, чем городить колхоз из россыпухи.
Чем можно заменить _delay_ms, мне нужна задержка примерно в 30-40сек.
А что там обычного delay нет? Вызываете _delay_ms с допустимым параметром (посчитайте какой там у Вас допустим) в цикле столько раз, сколько надо, чтобы задержка была такой. какой Вам нужно.
по поводу подключения пищалки -на одном транзисторе в любом случае будет говно. Лучше двухтактную схему, и через конденсатор подключить пищалку. Удобнее взять готовый пин-драйвер для мосфета, чем городить колхоз из россыпухи.
Двухтактная схема - это на двух транзисторах?
Что за пин-драйвер для мосфета ?
А еще лучше драйвер нагрузки на основе H-моста, главное, чтобы он на запрошенных частотах мог работать.. Но это уже автору конструкции в даташитах лопатить надо..
А еще лучше драйвер нагрузки на основе H-моста, главное, чтобы он на запрошенных частотах мог работать.. Но это уже автору конструкции в даташитах лопатить надо..
Это вот так
Как мне подключить в моей схеме?
сигналы на R1 и R2 нужно подавать обязательно разные, если на одном ноль, на другом должна быть единица, и наоборот...
проще всего соединить их друг с другом через инвертирующий элемент.
Какая из этих трёх схем лучше подойдёт
Или может можно вместо транзисторов использовать усилитель LM358N или LM393 ?
Первую сделай.
Двухтактная схема - это на двух транзисторах? Что за пин-драйвер для мосфета ?
Думаю не подойдёт ни одна из схем. Сигнал ещё раскачать нужно .Про то, что такое двухтактный - (push-pull по вражескому ) вам гугль лучше меня расскажет. Пин драйвер -усилитель цифрового сигнала, типовая вариация пин драйвера - драйвер мосфета. Собссно его и стоит поставить. Практически любая современная букашка для мосфета на мой взгляд полностью подходит под задачу. (хотя я в этом не специалист, могу что-то упустить)
смотря какая пищалка. если пьезо то однотактная лучше с дросселем
смотря какая пищалка. если пьезо то однотактная лучше с дросселем
Пищалка пьезо, вот такая: https://www.kemo-electronic.de/en/Car/Speaker/L010-Piezo-Loudspeaker.php
1 вариант
резонансный генератор, частота сама подстраивается под излучатель
а такая схема в отпугивателе собак. тоже самое как в первой
а поводу драйвера полевика можно 555 таймер использовать
1 вариант
резонансный генератор, частота сама подстраивается под излучатель
а такая схема в отпугивателе собак. тоже самое как в первой
а поводу драйвера полевика можно 555 таймер использовать
А что полевик нужно обязательно через драйвер цеплять к МК ?
Мне нужно чтобы мощности излучателя хватало в радиусе 3 метров, а так-же важно энергопотребление, чтоб батареи на дольше хватало.
Вот накатал продвинутый вариант для тини13. Таймер управляет генерируемой частотой в цикле while. Благодаря применению алгоритма однобитного DDS синтеза удаётся очень плавно регулировать частоту (3288 градаций), правда расплата за это -повышенный джиттер. Когда частота достигает максимума МК переводит системные клоки на делитель 256, и делает паузу 200мс, соответссно каждая мс длится 256 мс, итоговая задержка будет 200*256мс. Выход PB3.
Код попробывал, только частота меняется от 9 до 34 кГц и в течении минуты. Я изменил некоторые значения и теперь частота 15-55 кГц меняется в течении 30сек.