Управляемый генератор на NE555

Александр999
Offline
Зарегистрирован: 13.01.2021

 

 
Александр999
Offline
Зарегистрирован: 13.01.2021

Необходима схема генератора на NE555, то есть у меня есть МК с выходом ШИМ далее стоит резистор и конденсатор, на выходе я получаю напряжение от 0 до 5 вольт и никак не могу привинтить к NE555, пробовал в этой схеме убрать резистор R1 и к точке соединения R2 c 7 лапой подать это напряжение, но генерации не происходит, сама схема изначально рабочая, единственное разнится скважность импульсов

Александр999
Offline
Зарегистрирован: 13.01.2021

понимаю что нужно регулировать ток заряда конденсатора C1, но не пойму как это можно просто реализовать

nik182
Offline
Зарегистрирован: 04.05.2015

Первая ссылка гугля. Не благодари.

Александр999
Offline
Зарегистрирован: 13.01.2021

да как бы это не то, тут резисторы нужно крутить, а мне нужно управлять частотой на этом генераторе, подавая шим сигнал с микроконтроллера или напряжение от 0 до 5 вольт

Александр999
Offline
Зарегистрирован: 13.01.2021

ссылку видимо заменили на ютуб, но это то же не то

nik182
Offline
Зарегистрирован: 04.05.2015

Тогда тут. Последняя схема, на которой показано куда подавать 0-5 вольт.

Александр999
Offline
Зарегистрирован: 13.01.2021

там написано про изменение скважности, но не частоты, перерыл кучу страниц и схем, если бы все было так просто я бы не задавал вопросы на форуме

nik182
Offline
Зарегистрирован: 04.05.2015

 А надо то что? В первой ссылке частота, во второй скважность. 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Александр999, Сделать из шима микроконтроллера постоянное напряжение, которое на внешнем генераторе опять превратить в частоту? В чём смысл то, может всё таки сразу выводить регулируемую частоту  с  мк? 

Александр999
Offline
Зарегистрирован: 13.01.2021

хотелось бы с МК подавать PWM сигнал так как он не грузит процессор и дает нормально выполняться остальной программе, а на выходе нужно получить разную частоту (не скважность), для вращения шагового двигателя

nik182
Offline
Зарегистрирован: 04.05.2015

Разную частоту не загружая процессор даёт tone()

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Александр999, Какая проблема вместо скважности частоту регулировать?

Александр999
Offline
Зарегистрирован: 13.01.2021

сейчас попробовал, вроде подходит, спасибо

Александр999
Offline
Зарегистрирован: 13.01.2021

думал поркатило, а нет, все таймеры задействованы в программе, а эта функция использует как раз таймер, поэтому без внешки не обойтись, так что пока вопрос не решен

Александр999
Offline
Зарегистрирован: 13.01.2021

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

b707
Offline
Зарегистрирован: 26.05.2017

Александр999 пишет:

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

все равно непонятно, нафига тут внешний генератор. Хотите генерить ШИМ на МК - так и генерите его сразу нужной частоты да и все.

И кстати, если у вас "все таймеры заняты" - то PWM вы откуда возьмете, вы разве не в курсе, что PWM тоже на таймере работает? :)

nik182
Offline
Зарегистрирован: 04.05.2015

Опять проблема натягивания совы на глобус. Возьмите другой МК, где больше таймеров. Или задачу урезайте под имеющийся.

Александр999
Offline
Зарегистрирован: 13.01.2021

Странно вот что, если убираю программу и делаю tone(), то отлично работает, если возвращаю программу то ни на одной ноге tone() не работает. Плюс добавлю, если остается часть программы с внешним прерыванием от часов, то tone на момент прерывания все же прекращается (то есть использует ресурсы проца (видно осфиллографом). Далее, при этом и с полной программой ШИМ генерируется на любой ноге PWM без проблем просто с определенной частотой с которой работает таймер при этом при сработке прерывания ШИМ сигнал не пропадает. Поэтому вижу единственное решение превратить ШИМ в напряжение а им управлять внешним таймером

b707
Offline
Зарегистрирован: 26.05.2017

ну раз не умеете по другому - делайте как умеете

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Александр999 пишет:

Странно вот что, если убираю программу и делаю tone(), то отлично работает, если возвращаю программу то ни на одной ноге tone() не работает. Плюс добавлю, если остается часть программы с внешним прерыванием от часов, то tone на момент прерывания все же прекращается (то есть использует ресурсы проца (видно осфиллографом). Далее, при этом и с полной программой ШИМ генерируется на любой ноге PWM без проблем просто с определенной частотой с которой работает таймер при этом при сработке прерывания ШИМ сигнал не пропадает. Поэтому вижу единственное решение превратить ШИМ в напряжение а им управлять внешним таймером

nik182
Offline
Зарегистрирован: 04.05.2015

А программа секретная? Оно конечно забавно. Таймеру всё равно что выдавать шим или частоту. Это два разных режима определяемых настройками. Они работают одинаково. Посмотрите c:\Users\user\Documents\ArduinoData\packages\arduino\hardware\avr\1.8.4\cores\arduino\Tone.cpp там всё про то как заряжается tone(). В принципе можно зарядить таймер самому, без всяких прерываний и он будет выдавать частоту непрерывно. Всё упирается в правильное проектирование программы. Грамотное распределение ресурсов. Сколько надо выходов ШИМов и сколько частоты? А мы до сих пор не знаем какой МК.

Александр999
Offline
Зарегистрирован: 13.01.2021

Atmega128. но я вижу осликом что в момент прерывания (внешнего), происходит прерывание сигнала tone (на время выполнения подпрограммы в прерывании), если полная программа то tone() совсем не работает ни на одной ноге, которых в 128 меге 7 штук, а шим отлично работает

sadman41
Offline
Зарегистрирован: 19.10.2016

Заливайте неполную.

b707
Offline
Зарегистрирован: 26.05.2017

Александр999 пишет:

Atmega128. но я вижу осликом что в момент прерывания (внешнего), происходит прерывание сигнала tone (на время выполнения подпрограммы в прерывании), если полная программа то tone() совсем не работает ни на одной ноге, которых в 128 меге 7 штук, а шим отлично работает

Александр, не надоело повторять одно и тоже? оставьте уже tone() - вам уже давно не про tone() советуют, а про то,  что можно с помощью ШИМ генерить нужную частоту прямо на МК, без всякого внешнего генератора.

И поскольку это ШИМ - он не будет зависеть от внешних прерываний.