roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 02:17

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ШИМ - PWM Аппаратная генерация - новая задача к курсу
СообщениеДобавлено: 05 май 2006, 18:45 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Задача 8 - Что такое ШИМ (PWM) сигнал. Как аппаратно сделать ШИМ. Как сделать ЦАП спомощью ШИМ и отфильтровать сигнал.  Программа к задаче написана в компиляторе Си CodeVisionAVR, симуляция выполнена в VMLAB.  Файлы прилагаются.


Последний раз редактировалось avr123.nm.ru 10 июн 2006, 18:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 май 2006, 00:20 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
avr123.nm.ru писал(а):
дополнил задачу рассказом о том как мастером начального кода сконфигурировать таймер для генерации PWM.

Сделал вывод 2-х аппаратных ШИМ.


интересный скриншот симуляции 2 аппаратных ШИМ в МК ATmega16 к Задаче 8 курса


Последний раз редактировалось avr123.nm.ru 10 июн 2006, 18:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 июн 2006, 18:21 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
плавно ШИМ-ом управлять нагрузкой подключеной к переменному току (моторы, эл. инструменты) можно двумя полевыми транзисторами -например IRF840 (любые MOSFET на напряжение более 400 вольт и ток в 3-5 раз более максимального)

вот картинка

http://forum.roboclub.ru/IPBoard/index. ... ost&id=272

быстро набросал схему и померил "ее" параметры - удобно и просто !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 15:26 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Как установить нужную мне частоту ШИМ?
Явно какуе-то роль играют эти регистры

TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;

Кусок из задачи 8.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 15:52 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
внимательно почитайте задачу 8 .  

там и картинка есть.

http://avr123.nm.ru/z8/z8_120.png


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 15:56 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Открываем Clock value и там 5 различных частот, но как если я хочу например 50 гц для управления сервой при моем кварце 14.7456 миниму что я могу выбрать примерно 14 кГц


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 17:19 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
для управления серво не нужен ШИМ хотя сигнал и похож на него.

Вам нужно 50 раз в секунду генерировать импульс управления длительностью от 800 до 2200 мкС

Как прерываться 50 раз в секунду есть в задаче 6.  Добавьте код выдающий нужный импульс и все.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 17:25 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Почему тут ШИМ не подойдет? Если частота у него будет 50 Гц то все будет нормально. Как реализовать это программно я знаю и не хочу этого делать т.к. это останавливает МК на 1/10 что вообщем то нехорошо для моей задачи. Вопрос в том можно ли сделать ШИМ нудной мне частоты а именно 50 Гц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 17:53 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
а я не програмно а железно предложил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 18:33 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Код программы будет выглядеть примерно так:
Код:
 прерывание_таймер_0   \\ 50 раз в секунду
{
PORTB.0=1;
delay(x); \\ ждем сколько нужно
PORTB.0=0;
}

Если так то получеам что МК через каждые 20 мс останавливаеться на от 1 до 2 мс, тоесть примерно на 1/10 своего рабочего времени.
Я спрашиваю еще раз как сделать частоту ШИМ 50 гц ??? Или это вообще не возможно? Если это невозможно, кто-то говорил что для управление сервы необходим ШИМ частотой 50 гц, или он обманывал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 19:06 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Изобретать велосипед это правильно и полезно в образовательных целях.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 июл 2006, 19:08 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
KiCom писал(а):
Я спрашиваю еще раз как сделать частоту ШИМ 50 гц ?


увеличить битность ШИМа  выбрать нужный коэф деления, если не поможет то снижать частоту кварца.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 июл 2006, 12:09 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Из нашего разговора я так ничего и не понял. По форму я уже искал но к сожалению ничего не нашел. Как установить нужную мне частоту я так и непонял менять битность и делители можно, но толку это не дает, частоту кварца менять я не буду т.к. на это частоте слишком много чего завязано. Сижу читаю про режимы работы ШИМа на mega128 (т.к. русский) но понять что либо очень сложно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 авг 2006, 15:41 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Вот что идеально пожалуй для верхних ключей силовых H-мостов

http://www.semiconductors.philips.com/p ... 0-50Y.html

http://www.semiconductors.philips.com/p ... 2-50Y.html

1) Работают напрямую от выхода CMOS логики относительно земли !
2) Имеют всякую защиту и диагностический вывод.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 июн 2007, 17:01 
Не в сети

Зарегистрирован: 26 июн 2007, 16:47
Сообщения: 2
Откуда: Ukraine
Я долго читал задачу и что то никак не пойму ход этой мысли...
Код:

TCCR1B = 0x00; //stop Timer

TCNT1H = 0xFC; //setup
TCNT1L = 0x01;

//  +++++++++++++++++++++++++++++++++++++
OCR1AH = 0x03; // PWM(PD5) = OCR1A / 10.23  (%)
OCR1AL = 0xFF;
//  +++++++++++++++++++++++++++++++++++++

OCR1BH = 0x03;
OCR1BL = 0xFF;

ICR1H  = 0x03;
ICR1L  = 0xFF;  

TCCR1A = 0x83;

TCCR1B = 0x09; //start Timer

в этом коде меня смущает
TCCR1B = 0x00; //stop Timer
...а потом...
TCCR1B = 0x09; //start Timer
зачем его стопать ?
в случаее TCCR1B = 0x00=0000 0000b; ну уж никак не будет fast PWM 10bit... тк. WGM13=0; WGM12=0!!!
TCCR1B = 0x09=0000 1001b; тут уже эти биты стоят как надо, типо проверили по таблице 47 режим 7.PWM 10bit.
или это "правильный" способ запуска таймера ?
WBR


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO