roboforum.ru

Технический форум по робототехнике.


Помогите пжл с ШИМ

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

Помогите пжл с ШИМ

Сообщение cudi » 27 окт 2011, 21:06

Собрал я ДД: http://robozone.su/2008/04/16/modul-upr ... ljami.html
И стал подключать к МК... Стал читать теорию ШИМ, но не как он мне не даётся и так и сяк делаю, но не как, прямо мистика какая то ...
Вроде всё подключаю правильно, посмотрите пожалуйста :
Код: Выделить всёРазвернуть
$regfile = "m16def.dat"                                     ' файл спецификации Меги8
$crystal = 16000000                                         ' указываем на какой частоте будем работать


'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pind.3 = Output : Dr1 Alias Portd.3                  'ногу сконфигурировали как выход и обозвали Dr1
Config Pind.6 = Output : Dr2 Alias Portd.6                 'ногу сконфигурировали как выход и обозвали Dr2
Config Pind.5 = Output                    'ногу ШИМа 1-ого  движка сконфигурировали как выход
Config Pind.4 = Output                    'ногу ШИМа 2-ого движка сконфигурировали как выход
'----------------------------------------------------------------------------

Dim Speed As Byte
Speed = 255                                                 ' указываем скорость робота

Config Rc5 = Pinc.6
Enable Interrupts
Dim Address As Byte , Command As Byte
Print "Start"                                               ' выводим в терминал отладочное сообщение

Do
   Gosub Прием_rc5
   If Command = 255 Then
      Gosub Стоп
       Waitms 0
  Elseif Command = 32 Then
      Gosub Прямо
       Waitms 0
   Elseif Command = 33 Then
      Gosub Назад
       Waitms 0
   Elseif Command = 17 Then
      Gosub Влево
       Waitms 0
   Elseif Command = 16 Then
      Gosub Вправо
       Waitms 0
   End If
Loop

Прием_rc5:
   Getrc5(address , Command)
   If Address <> 255 And Command <> 255 Then
      Command = Command And &B01111111
      'Print Chr(12);       ' выводим в терминал символ
      'Print "Address - " ; Address;       ' выводим в терминал адрес
      'Print "Command - " ; Command;       ' выводим в терминал номер команды
   End If
Return

Стоп:                                                       ' стоим на месте
Dr1 = 0 : Dr2 = 0 : Pwm1a = 0 : Pwm1b = 0
Return

Прямо:
                     ' едим вперёд на заданной скорости
Dr1 = 0 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

Назад:                    ' едим назад на заданной скорости

Dr1 = 1 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

Вправо:                                                    ' делаем Разворот_вправо на заданной скорости

Dr1 = 0 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

Влево:                                                     ' делаем Разворот_влево на заданной скорости

Dr1 = 1 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return


Добавлено спустя 6 минут 8 секунд:
И вот ещё что:
Что означает
Передаточное отношение, Скорость без нагрузки, Ток без нагрузки, Ток под нагрузкой?
Если сказано что ток под нагр. 2.1А, то ДД L293D тут точно не подойдет т.к. у него 1А ток нагрузки?

Добавлено спустя 1 час 16 минут 35 секунд:
Помогите пожалуйста, очень сильо нужна помощь, уже второй ДД делаю и та же фигня...
Почему он не работает?(((
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение RootAdmin » 27 окт 2011, 21:30

А напряжения я на входах ДД какие? Если без МК - работает?
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Помогите пжл с ШИМ

Сообщение cudi » 28 окт 2011, 10:37

ШИМ1 и ШИМ2 по 4.5В.
Только что запустил но работает на 1 порт, в чём мож быть проблема?

Добавлено спустя 5 минут 27 секунд:
Я ещё обвязку не ставил, я только поставил резистор от портов, 74hc00, l298n и кондер на 1000мкф. Но питание везде есть и +, и -
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение cudi » 29 окт 2011, 22:30

с Шим разобрался, но тут огромный вопрос настал :((
как подключить вот такую штучку ? http://robotshop.su/e-store/catalog/202/700/
Мне Dead сказал что у некоторых таких устро-в есть время заряда кондеров, для этого делают программ. задержку, а потом запускают устро-во, есть ли у этого устро-ва время заряда кондера и какое ?
Кто подключал такое или подобное устройство, подскажите пожалуйста.
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение boez » 30 окт 2011, 11:37

А ты по ссылке пдф прочитал? Там все написано. С кондерами - это аналоговый датчик, а это - цифровой, он просто выдает 0 если есть предметы ближе 10 см и 1 если их нет. Если я не ошибаюсь конечно.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Помогите пжл с ШИМ

Сообщение cudi » 30 окт 2011, 17:58

Я пробывал, не пашет:(
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение =DeaD= » 31 окт 2011, 07:28

cudi писал(а):Мне Dead сказал что у некоторых таких устро-в есть время заряда кондеров, для этого делают программ. задержку, а потом запускают устро-во


Блин, не у некоторых, а у конкретных цифровых датчиков на базе KTIR.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Помогите пжл с ШИМ

Сообщение cudi » 02 ноя 2011, 13:36

Аааааа ребята помогите, вообще какая то мистика, всё верно перепроверил раз 100 но всё не так! :cry: :cry: :cry: :cry:
Написал программу ШИМ двигателей, но вроде как всё верно! Перечитал теорию раз 20, но всё ни как...
Нет, двигатели работают, но не так как надо, просто у меня большеватый робот и мне нужно, например, что при повороте робот крутил не одним мотором, а двумя в разные стороны, иначе он не сдвинется с место.
Взял программу от сюда: http://robotsspace.ucoz.ru/forum/3-443- ... 1255777610
Работает как надо, но мне нужно чтобы на Си, т.к. каркас программы написан на WinAVR.
Смотрите что я пишу:
Код: Выделить всёРазвернуть
#define F_CPU 16000000UL
#include <avr/io.h>//библиотека ввода/вывода
#include <util/delay.h>//библиотека ввода/вывода

int main (void)
{
int speed = 255;
TCCR1A = 0b11110011; //fast pwm 10 bit
TCCR1B = 0b01001001; // fast pwm 10 bit
TIMSK = 0x00;
TCNT1 = 0x03ff;
OCR1A = speed;
OCR1B = speed;

DDRC = 0x00;   // мини шарп
PORTC = 0x80; // мини шарп
DDRD = 0xff; // ДД
//PORTD = 0x00;
for (;;)
{

if (!(PINC & (1<<PINC7))) // Если лог "0", заначит пришли изменения
{
// Едим влево
PORTD |= _BV(PD3); // установить "1" на линии 1 порта C
PORTD &=~ _BV(PD6); // установить "0" на линии 2 порта C
OCR1A = speed; // скорость ШИМ
OCR1B = speed; // скорость ШИМ
}
else {
//ехать прямо
PORTD |= (1<<3)|(1<<6);
OCR1A = 255;
OCR1B = 255;
}
if (!(PINC & (1<<PINC6))) // Если лог "0", заначит пришли изменения
{
//Едим Вправо
PORTD &=~ _BV(PD3); // установить "1" на линии 1 порта C
PORTD |=_BV(PD6); // установить "0" на линии 2 порта C
OCR1A = speed; // скорость ШИМ
OCR1B = speed; // скорость ШИМ
}
else {
PORTD |= (1<<3)|(1<<6);
OCR1A = 255;
OCR1B = 255;
}

   }
      }



Программа на таймер1 расчитана, fast pwm 10 бит (только с ним работает). Что не так? Почему она крутит одним мотором при повороте :cry: Подскажите что пересмотреть?
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение cudi » 02 ноя 2011, 18:52

Люди пожалуйста помогите, я не могу найти свою ошибку, их нету... Но почему на бейсике (я с него всё сдирал), при повороте работают 2 мотора, один вперед тянет, другой назад.. А на си никак...
Сравните:
Код: Выделить всёРазвернуть
PORTD |= _BV(PD3); // установить "1" на линии 1 порта C
PORTD &=~ (1<<6); // установить "0" на линии 2 порта C
OCR1A = speed; // скорость ШИМ
OCR1B = speed; // скорость ШИМ

и Бейсик:
Код: Выделить всёРазвернуть
Разворот_влево:                    ' делаем Разворот_влево на заданной скорости 

Dr1 = 1 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

Предилители одинаковые (по одному), только в бейсике работает 8 битный ШИМ от таймера 1, а у меня 10битный ШИМ! :cry: :cry: :cry:
Блин люди у кого есть примерчики для двигателей ШИМ и для Си, просто я не где не могу найти пример, и гугли, и рамблер.. и на робофоруме искал, везде одна теория(((
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение boez » 02 ноя 2011, 19:38

Ты для начала сделай одинаковые значения скорости в сишной проге и в бейсиковой, а то ты в бейсике даешь шим 100%, а в си - 25%. А потом сравнивай. Может 25% просто мало, чтоб раскрутить один из моторов при развороте?
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Помогите пжл с ШИМ

Сообщение cudi » 02 ноя 2011, 20:15

А можешь ткнуть носом на этот участок. где нужно выбирать шим в 100% ? а то я не понял что то...
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение dccharacter » 02 ноя 2011, 23:35

И мне, и мне помогите с ШИМ ПЛЗ:

http://www.microchip.su/showthread.php? ... post146667
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите пжл с ШИМ

Сообщение boez » 03 ноя 2011, 13:09

cudi писал(а):А можешь ткнуть носом на этот участок. где нужно выбирать шим в 100% ? а то я не понял что то...

Могу. Но не хочу. Извини.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Помогите пжл с ШИМ

Сообщение cudi » 04 ноя 2011, 10:31

boez писал(а):
cudi писал(а):А можешь ткнуть носом на этот участок. где нужно выбирать шим в 100% ? а то я не понял что то...

Могу. Но не хочу. Извини.

Да ладно )) ты не знаешь)) сказал что то про проценты ШИМ и всё)

Добавлено спустя 29 минут 32 секунды:
Пожскажите пожалуйста в теории, если ставить прерывания от оптопары с робофорума, то какие регистры надо программировать и какой вектор брать ?
cudi
 
Сообщения: 48
Зарегистрирован: 21 мар 2010, 19:33
Skype: levanchik322
прог. языки: WinAVR С, C++, HiAsm, BascomAVR.

Re: Помогите пжл с ШИМ

Сообщение HarryStar » 04 ноя 2011, 12:01

Мне кажется вам надо все забыть и стереть и начать изучать программирование заново. Вы давно перепрыгнули через свои знания и теперь не понимаете уже ничего. Помогать вам бесполезно. Изучайте основы, мигайте светодиодом.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

След.

Вернуться в Новичкам или основы основ роботостроения.

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

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