Atmega16 Шим +Тахометр

Обсуждаем контроллеры компании Atmel.
Ответить
zvezdami
Родился
Сообщения: 2
Зарегистрирован: Вт июл 23, 2013 15:21:33

Atmega16 Шим +Тахометр

Сообщение zvezdami »

Здравствуйте, у меня есть двигатель и атмега16, я управляю двигателем через шим(увеличиваю, уменьшаю скважность) посылая сигналы по Uart с ноутбука из программы на C#. Встал вопрос поставить тахометр на двигатель и получать данные с него в ноутбук по тому же Uart, из принтера достал оптопару, прицепил на двигатель, от него приходят когда закрыт ~0.5в и ~5в, когда открыт. Понимаю что дальше чтобы сделать тахометр нужно работать с прерываниями и таймером, но 1 таймер у меня уже занят шимом, а на других почему то не получается. Ребят пришлите пожалуйста рабочий кусок кода для мк чтобы на ноге PD5 был шим, как у меня уже сделано, и чтобы на другую какую нибудь цеплять оптопару, чтоб мк считал кол-во обротов. Или хотябы скажите, что в мастере надо поставить.

И еще подскажите почему на выходе int0 напряжение 2 вольта, настраивал прерывания по Rising edge. Подключаю оптопару, когда открыта 5в, закрыта 2в, не срабатывает прерывание.
Реклама
Аватара пользователя
Enigm
Говорящий с текстолитом
Сообщения: 1663
Зарегистрирован: Вт апр 03, 2012 20:36:41
Откуда: Сочи

Re: Atmega16 Шим +Тахометр

Сообщение Enigm »

Так апаратный шим не затрагивает таймер0 , на нем и делать измерения импульсов.
А что стоит сделать програмный шим на таймер2, а на таймер0 считать имульсы, или использовать модуль захвата.
Реклама
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Atmega16 Шим +Тахометр

Сообщение clawham »

начать надо с того что оптопара из принтера очень слабенькая и ей нужен усилитель-повторитель....тем более что скоростя будут намного бОльшими чем в принтере.... кроме того оптопара это два независимых устройства - светодиод и фототранзистор....когда на светодиод подаёш ТОК - он светит, когда свет доходит до фототранзистора то он или выдаёт ооооочень слабенькое напряжение( единицы микроампер) или ЗАМЫКАЕТ колектор с эммитером и в таком состоянии на нем падает 1-1.5 вольт при токе до миллиампера!!!

я оптопарами из мышки замерял скорость полета пульки 6мм шарика...ток светика 20 миллиампер, нагрузка оптопары 2 килоома на +5 вольт, дальше через килоом на прерывание атмеги.

Тебе же надоопределиться что у тебя за оптопара и где у неё катод-анод или колектор-эмитер если там фототранзистор.

ну а дальше всё просто, прерывание разрешаеш, в прерывании инкрементируеш любую переменную, а в таймере ШИМа включаеш прерывание по переполнению, считаеш сколько переполнений надо в секунду и в самом прерывании таймера считаеш сколько прошло переполнений - когда досчитал столько сколько надо для секунды - выставляеш флаг и записываеш переменную внешнего прерывания в буффер обработки а исходную(которая в прерывании от оптопары инкрементируется) обнуляеш.

В основном цикле проверяеш флаг, и если онравен единице(прошла секунда) сбрасываеш его сразу же и считаеш обороты в минуту, выводиш наэкран принимаеш решение что делать дальше, отсылаеш на компьютер через уарт - как душе угодно!

Но нужно понимать что если сильно много передавать то за секунду может прийти ещё одно измерение и чтобы небыло конфликтов надо использовать двойную буферизацию.


Ну вот как-то так....остальное....если хочеш чтоб ЗА ТЕБЯ ТЕБЕ КОД НАПИСАЛИ....тебе прийдётся обратиться со своей проблемой в из лап в лапы..там за денюжку выполнят всё что ты только ни захочеш и так как ты сам того захочеш :)

Но если хочеш научиться...и если знаком с программированием(не только МК а вообще) то проблем тут нету
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Taska
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт фев 09, 2010 13:37:50
Откуда: Украина

Re: Atmega16 Шим +Тахометр

Сообщение Taska »

Enigm писал(а): А что стоит сделать програмный шим на таймер2, а на таймер0 считать имульсы, или использовать модуль захвата.
Программный шим для управления двигателем?
Интересно как ты программный шим сделаешь на 4 кГц?
Реклама
Эиком - электронные компоненты и радиодетали
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Atmega16 Шим +Тахометр

Сообщение clawham »

чтото слишком интересные у Вас проблемы :)

данная задача вместится и в тини 13 у которого вообще один таймер и нету уарта....и ничего :))) люди как-то умудряются одним таймером и ШИМ и часы и счет и ртос крутить внутри :) у первых компьютеров 8088 был только один аппаратный таймер и он спокойно и часы и звуки и прерывания генерировал :)

Зачем цепляться к словам :) что такое 4 килогерца если тактовую можно задрать до 20-ти то ещё и свободного времени хватит :) если разрядность 256 например то минимально необходимый уровень 1 или максимальный 254 будут проблемой...ито...

на это у нас есть 20000000 / (4000*256) = 20000000/ 1024000 = 20 тактов!

6 тактов на вход в прерывание, 4 такта на условие что вит надо выставить, 4 такта на условие что перешли к след итерации, 8-10 тактов на инкремент чара с проверками и 3 такта на вывод нуля или единички :) и это в простом варианте :))) и ещё остаётся вагон времени :)))

а ведь можно и разрешение уменьшить а водь можно ещё и переходить в другие режимы когда разрешение на грани - просто кидаться в задержки нопами....да код раздует но и скорость...в общем у меня не возникало проблем организовать 16 килоегрц 8-мибитный шим на 8 каналов имея только один аппаратный таймер и при этом и часы шли и связь по асинхронному однопроводному протоколу происходила(а-ля 1wire)
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Реклама
Ответить

Вернуться в «AVR»