Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А 12В

Разработка стандартизированных модулей для домашнего робостроения.
Правила форума
Правила раздела OpenRobotics

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение Vooon » 21 апр 2011, 08:19

А модуль вообще запитан?
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение moldov » 21 апр 2011, 16:13

Vooon писал(а):А модуль вообще запитан?
Да, от RoboMD порта а сам MCU через USB. Когда он включается то светодиоды тлеют зеленым еле-еле.

=DeaD= писал(а):PWM отвечает за ШИМ, DIR за направление.
Подавайте на PWM единичку, а на DIR ноль или один - у вас будет полный вперед или полный назад.

Я так и думал но у меня не работает. Вернее в VMLAB работает(светодиоды PB0 и PB1 гаснут и светятся при подаче 0 и 1). А на железе нет.
Пробую зажигать PB3 отладочный не получается. Хотя вчера его зажигал.

Вот код. Направление вращения изменяю посылкой $F и $B в UART. А отладочный диод посылкой $Z $X соответственно.

Код: Выделить всё
// ***********************************************************
// Project:
// Author:
// Module description:
// ***********************************************************

#include <avr/io.h>              // Most basic include files
#include <avr/interrupt.h>       // Add the necessary ones here




//flash char string_1[]="Prog Start";
//const char left[] PROGMEM ="no support\0x0ALLno support\0x0D\0x0A";


char command_indicator;


#define TXB8 0
#define RXB8 1
#define UPE  2
#define OVR  3
#define FE   4
#define UDRE 5
#define RXC  7

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
//#define RX_COMPLETE (1<<RXC)


//TCCR1A
#define WGM11 1
#define WGM10 0
#define COM1A1 7
#define COM1A0 6
#define COM1B1 5
#define COM1B0 4
//TCCR1B
#define WGM13 4
#define WGM12 3
#define CS0 0
#define CS1 1
#define CS2 2


void USART_Transmit( unsigned char data );
void USART_Init( unsigned int baud );
unsigned char USART_Receive( void );

ISR(USART_RXC_vect) {
   char status, data;
   status=UCSRA;
   data=UDR;
   
   if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) {
      
      
      if (command_indicator == '$') {
         //PORTB |= (1 << 3);
         
         switch (data ) {
         
         case 'Z':
            PORTB |= (1 << 3);
            USART_Transmit('Z');
         break;   
            
         case 'X':
            PORTB &= ~(1 << 3);
            USART_Transmit('X');
         break;
         
         case 'F':
            PORTB |= (1 << 0);
            PORTB |= (1 << 1);
            USART_Transmit('F');
         break;   
         
         case 'B':
            PORTB &= ~(1 << 0);
            PORTB &= ~(1 << 1);
            USART_Transmit('B');
         break;
               

         case 'L':
            USART_Transmit('L');
         break;
         
         case 'R':
            USART_Transmit('R');
         break;
         
         case '0':
            USART_Transmit('0');
            OCR1AL = 0x00; // 0x00FF это число 256
            OCR1BL = 0x00; // 0x00FF это число 256
         break;
         
         case '1':
            USART_Transmit('1');
            OCR1AL = 0x0F; // 0x00FF это число 256
            OCR1BL = 0x0F; // 0x00FF это число 256
         break;
         
         case '2':
            USART_Transmit('2');
            OCR1AL = 0x3F; // 0x00FF это число 256
            OCR1BL = 0x3F; // 0x00FF это число 256
         break;
         
         case '3':
            USART_Transmit('3');
            OCR1AL = 0x6F; // 0x00FF это число 256
            OCR1BL = 0x6F; // 0x00FF это число 256
         break;
         
         case '4':
            USART_Transmit('4');
            OCR1AL = 0x9F; // 0x00FF это число 256
            OCR1BL = 0x9F; // 0x00FF это число 256
         break;
         
         case  '5':
            USART_Transmit('5');
            OCR1AL = 0xCF; // 0x00FF это число 256
            OCR1BL = 0xCF; // 0x00FF это число 256
         break;
         }
         command_indicator = 0x00;
         
         
      }
      if(data =='$') {//If we send command "$" shows that
      command_indicator = '$';
         //PORTB &= ~(1 << 3);
      }
   }
   
}
void USART_Transmit( unsigned char data ) {
   /* Wait for empty transmit buffer */
   while ( !( UCSRA & (1<<UDRE)) ); /* Put data into buffer, sends the data */
   UDR = data;
}
void USART_Init( unsigned int baud ) {
   /* Set baud rate */
   UBRRH = (unsigned char)(baud>>8);
   UBRRL = (unsigned char)baud;
   
   /* Enable receiver and transmitter */
   UCSRB = (1<<RXEN)|(1<<TXEN);
   UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);  // Set frame format: 8data, 1stop bit
   UCSRB |= (1 << RXCIE); // Enable the USART Recieve Complete interrupt (USART_RXC)
   sei();// Enable the Global Interrupt Enable flag so that interrupts can be processed
}
unsigned char USART_Receive( void ) {
   /* Wait for data to be received */
   while ( !(UCSRA & (1<<RXC)) ); /* Get and return received data from buffer */
   return UDR;
}
// ***********************************************************
// Main program
//
int main(void) {
      
   //DDRD=0xFF;
   DDRD = 0x30; //4-5-й пин порта D настроим как выход
   DDRB=0xFF; //
   // Настройка TIMER1 для генерации ШИМ
   
   TCCR1A = 0x00; //stop Timer
   
   TCNT1H = 0xFF; // 11111111
   TCNT1L = 0x00; // 00000000
   //TCNT1L = 0xC6; // 00000001
   
   /* регистр OCR1A состоит из двух 8-ми битных регистров OCR1AH и OCR1AL запись в них нужно проводить в указанной последовательности! */
   
   OCR1AH = 0x00;
   OCR1AL = 0x00;
   OCR1BH = 0x00;
   OCR1BL = 0x00;
   ICR1H = 0x00;
   ICR1L = 0x00;
   
   //Got from OR Project
   TCCR1A=0xA1;
   TCCR1B=0x0A;
   
   
   
   //Скорость USART 115200 при кварцевом генераторе 7.3MHz USART_Init (0x03);
   
   USART_Init (0x03);
   USART_Transmit('O');//Передаем при включении
   USART_Transmit('k');//сообщение "Ok!", что свидетельствует
   USART_Transmit('!');//о правильно работе программы
   USART_Transmit(0x0d);//переход в начало строки
   USART_Transmit(0x0a);//переход на новую строку
   while(1) {}             // Infinite loop; define here the
   
}


moldov
 
Сообщения: 20
Зарегистрирован: 07 фев 2010, 05:20
Откуда: Южно-Сахалинск

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение =DeaD= » 21 апр 2011, 16:17

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

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение moldov » 21 апр 2011, 16:21

Ой наврал. MCU от USB запитан когда прошивается. А так он у меня от внешки запитан. Замерил тестером сейчас 5,3 вольта. Я полагаю этого мало:)
moldov
 
Сообщения: 20
Зарегистрирован: 07 фев 2010, 05:20
Откуда: Южно-Сахалинск

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение =DeaD= » 21 апр 2011, 16:23

Разделите задачу, явно и без МК подавайте проводками управляющие сигналы на линии PWM и DIR драйвера двигателей.

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

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение moldov » 21 апр 2011, 16:37

Да действительно, как-то я сумбурно начал. Просто вопросов как у новичка масса, а куда постить не разобрался. Но то что проблемы с питанием это я уже понял. Буду разбираться с питанием.
moldov
 
Сообщения: 20
Зарегистрирован: 07 фев 2010, 05:20
Откуда: Южно-Сахалинск

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение Savy » 01 июн 2011, 10:46

А скажите, плиз, зачем нужны сопротивления R7 и R8 и 8 диодов? Или это светодиоды?
Savy
 
Сообщения: 9
Зарегистрирован: 25 фев 2011, 22:54
Откуда: Уфа
Skype: stan.sa
прог. языки: Python, PHP
ФИО: Овчинников Станислав Викторович

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение blindman » 01 июн 2011, 10:52

Светодиоды. Так много - потому что не все устанавливаются при сборке, чтобы была возможность использовать ту комплектуху, что есть в наличии на момент монтажа.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение Savy » 02 июн 2011, 19:03

Ясно, т.е., как я понимаю, у вас принципиальная схема из чего-то генерится ))

А почему этой платы нет у вас в магазине? ((
Savy
 
Сообщения: 9
Зарегистрирован: 25 фев 2011, 22:54
Откуда: Уфа
Skype: stan.sa
прог. языки: Python, PHP
ФИО: Овчинников Станислав Викторович

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение =DeaD= » 02 июн 2011, 19:05

Скоро появится 1 штука из старых запасов найденная, но в целом мы её изготовление прекратили, т.к. новый контроллер OR-AVR-M128-DS перекрывает пару старых модулей OR-AVR-M32-D + OR-MD2-2A-12V-CP, а контроль по току никому не понадобился особо.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение Savy » 02 июн 2011, 20:16

Ясно, да мне для испытаний, купил МК на основе STM32F103, сейчас изучаю архитектуру (не простое это дело оказалось для меня )), вот и хочу прикрутить ))
Контроль по току - да, наверное, вы правы, но вот если поставить измеритель тока и через МК за ним следить - это фича (в OpenServo так и сделали). Единственное "но" - дороговаты эти измерители (порядком 300 р.). Здесь, лучше за ЭДС, имхо, следить (как я из вашей статьи понял про H-мост).
Savy
 
Сообщения: 9
Зарегистрирован: 25 фев 2011, 22:54
Откуда: Уфа
Skype: stan.sa
прог. языки: Python, PHP
ФИО: Овчинников Станислав Викторович

Re: Модуль OR-MD2-2A-12V-CP: Драйвер коллект. двигателей 2А

Сообщение linvinus » 07 авг 2011, 10:56

Если ещё что то осталось сообщите в личку пожалуйста?
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Пред.

Вернуться в Open Robotics

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

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