Четверг, 09.05.2024, 00:31
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Архив - только для чтения
Форум » Мастерская » Новичкам » HELP!!! Всё зашил, а не работает. (Программу взял из проекта робот 2. Плата моя)
HELP!!! Всё зашил, а не работает.
FireFlyДата: Пятница, 06.06.2008, 00:12 | Сообщение # 31








Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
Тэкс, по порядку yes3

резисторы на линиях управления драйвером спасут МК от возможных неприятностей со стороны драйвера (мало ли - прошьет его родимого или еще чего) + резистор сам по себе еще и простой фильтр. А так конечно все работает... пока

Насчет кондера по питанию движков, в принципе можно и без него если питаешься от отдельного источника, но с ним будет лучше - там то же питание просаживается и кондер это дело поправит - движки будут ровно работать.

гасящие кондеры я и имел в виду, просто многие про них либо не знают, либо пренебрегают (я там попутал - параллельно sorry ) , а потом удивляются, что робот себя ведет как то не так как задумано - там помеха фигачит о го-го, я еще провода моторные пропускаю через ферритовое кольцо (2-5 витков) - дополнительно помеху снимает.

Насчет вольтажа Л-ки - почитай даташит, там написано - 4.5 V to 36 V, но ИМХО лучше всего логику микрухи питать таки от 5 вольт, а на питание двигла уже скоа тебе надо ( до 36 вольт)


Robozone
 
BORNДата: Пятница, 06.06.2008, 17:30 | Сообщение # 32








Зарегистрирован 25.05.2008
Группа: Новички
Сообщений: 16
Город: Минск
Статус: Offline
Не по параметрам L293D от 5 - 36 В, мк от 4,5 - 5,5 В. Питания для испытаний я вообще даже брал не от батареек а от источника ХОРОШЕГО питания, с регулятарам по вольтажу. Но меня интересует почему если не припаивать не датчики не диоды, а оставить их пустыми, то моторчики крутятся, ведь на выходе нету логической 1, даже если допустить что потанциальная единица так работает, то при замыкании на минус, то там точно логический 0, но моторы работают.
 
SpaceДата: Пятница, 06.06.2008, 18:20 | Сообщение # 33








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
это программа такая. я когда с ней работал у меня одна серва крутилась когда не было сигнала ни от одного из датчиков.
 
FireFlyДата: Суббота, 07.06.2008, 01:55 | Сообщение # 34








Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
Quote (BORN)
Не по параметрам L293D от 5 - 36 В, мк от 4,5 - 5,5 В. Питания для испытаний я вообще даже брал не от батареек а от источника ХОРОШЕГО питания, с регулятарам по вольтажу. Но меня интересует почему если не припаивать не датчики не диоды, а оставить их пустыми, то моторчики крутятся, ведь на выходе нету логической 1, даже если допустить что потанциальная единица так работает, то при замыкании на минус, то там точно логический 0, но моторы работают.

Ладно опустим все остальное, но насчет стабилизатора однозначно фу!
Понимаешь... ну не работает он нормально без обвески... не работает и все тут, и это не я придумал, а разработчики сего девайса... что бы ты на него не подавал (хоть супер хорошее питание) на выходе получишь каку... у него обязательный минимум обвеса таки должон быть - читай даташит angry

Из моего опыта самопроизвольных телодвижений железа (каких привидений я ловил)
1. "микросопли" при пайке
2. помехи от двигателей (как лечится написал выше)
3. токопроводящий... мать его флюс... ну попался как то раз гадина такая... башку чуть не сломал...
4. крайне хреновая разводка платы - наводящиеся помехи от соседних токопроводящих дорожек
5. лажа при разводке платы (пиво иногда зло)
6. лажа в прошивке

В принципе можно еще десяток косяков вспомнить, но опять же... если бы схема у тебя была построена правильно, была прописана работающая прошивка (только точно работающая), то причину твоих неприятностей искать было бы проще а так.... остается сказать ХЗ че у тя там происходит....128 вариантов scratch_one-s_head


Robozone
 
BORNДата: Суббота, 07.06.2008, 14:22 | Сообщение # 35








Зарегистрирован 25.05.2008
Группа: Новички
Сообщений: 16
Город: Минск
Статус: Offline
Самая подхъодящяя причина это прошивка, всё остальное отменяется, Нашь вилики зубилограф (осцилограф), показывает нормальные параметры, и с ним спорить мне не хочется.
 
SpaceДата: Воскресенье, 08.06.2008, 21:29 | Сообщение # 36








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Можешь попробовать эту. Тоже работает как и предыдущая, но без ньюансов. Работу программы на видео смотри тут
Но это для мк ATmega16 надеюсь сообразишь, что надо изменить для ATmega8.
Code
// Программа следования по линии для Проекта мобильного робота "R1-B1"  
// Автор Space:
//       -мк ATmega16
//       -используется кварц на 8мГц
//       -компилятор WinAVR V2.0.5
// Программа 2008 для робота R1-B1 - www.robptsspace.ucoz.ru
//------------------------------------------------------------------------
#include <avr/io.h>  
#define bit_is_clear(sfr, bit) \
                            (!(sfr & _BV(bit)))
#define bit_is_set(sfr, bit) (sfr & _BV(bit))
// назначение определений для танкового привода
#define OUT PORTA
#define MOTOR_FR  PA0  // вперед-вправо
#define MOTOR_BR  PA1  // назад-вправо
#define MOTOR_BL  PA2  // назад-влево
#define MOTOR_FL  PA3  // вперед-влево

#define IN PIND
#define LIGHT_R  PD0 // правый фотодиод
#define LIGHT_L  PD1 // левый фотодиод
#define LED PD4 // светодиод

enum {STOP, F, FR, FL};

//------------------------------------------------------------------------------
// Задержка t х 10ms
//------------------------------------------------------------------------------
//#define F_CPU 8000000
#define K_DELAY_10ms    F_CPU/600
void Delay_10ms(unsigned char t) {
   if (t==0) return;
   unsigned int i;
   while (t--) for(i=0;i<K_DELAY_10ms; i++);
}

//------------------------------------------------------------------------------
// Включение комбинации моторов для движения в заданном направлении
//------------------------------------------------------------------------------
void go(unsigned char direction){

   switch (direction) {
   case STOP:
     cbi(OUT, MOTOR_FR);
     cbi(OUT, MOTOR_BR);
     cbi(OUT, MOTOR_BL);
     cbi(OUT, MOTOR_FL);
     break;

   case F:
     sbi(OUT, MOTOR_FR);
     cbi(OUT, MOTOR_BR);
     cbi(OUT, MOTOR_BL);
     sbi(OUT, MOTOR_FL);
     break;

   case FR:
     cbi(OUT, MOTOR_FR);
     cbi(OUT, MOTOR_BR);
     cbi(OUT, MOTOR_BL);
     sbi(OUT, MOTOR_FL);
     break;

   case FL:
     sbi(OUT, MOTOR_FR);
     cbi(OUT, MOTOR_BR);
     cbi(OUT, MOTOR_BL);
     cbi(OUT, MOTOR_FL);
     break;

    
   }
}

//------------------------------------------------------------------------------
// "STOP", ЕСЛИ НЕТ СИГНАЛА
//------------------------------------------------------------------------------
unsigned char walk(void){
    // нет сигнала ни от одного из датчиков освещенности
    while((bit_is_set(IN, LIGHT_R)) && (bit_is_set(IN, LIGHT_L))){
        go(STOP);  

        cbi(PORTD, LED); // зажигаем светодиод на PD4
        Delay_10ms(125);   // движемся в этом направлении 2.5 сек
        sbi(PORTD, LED); // гасим светодиод на PD4
        Delay_10ms(125);   // движемся в этом направлении 2.5 сек
    }
    // этот цикл организует движение на свет, пока
    // есть сигнал хотя бы от одного из датчиков освещенности
    while((bit_is_clear(IN, LIGHT_R)) || (bit_is_clear(IN, LIGHT_L))){
        if((bit_is_clear(IN, LIGHT_R)) && (bit_is_clear(IN, LIGHT_L))) go(F);
        else if(bit_is_clear(IN, LIGHT_R)) go(FR);
        else if(bit_is_clear(IN, LIGHT_L)) go(FL);

    }

    return(0);
}

//------------------------------------------------------------------------------
// Главная программа
//------------------------------------------------------------------------------
int main(void)
{

   DDRA  = 0xff;  // назначаем все линии порта A на выход
   PORTA = 0x00;  // и устанавливаем на них низкий уровень

   DDRD  = 0x10;  // назначаем все линии порта D на вход, кроме PD4
   PORTD = 0xef;  // подключаем внутренние нагрузочные резисторы, кроме PD4          

//  Задержка на старте 5 сек
//  чтобы успеть отбежать в сторону :)

   // для подсчета числа миганий в цикле
   unsigned char i;

   for (i=0;i<5;i++){   // Подмигиваем пять раз
     cbi(PORTD, LED); // Зажигаем LED
     Delay_10ms(250);  // пауза
     sbi(PORTD, LED); // гасим LED
     Delay_10ms(250);  // пауза
     }

   // запускаем главный цикл
   while(1) walk();

}

}
Прикрепления: 9349575.rar (14.7 Kb)
 
FireFlyДата: Понедельник, 09.06.2008, 02:43 | Сообщение # 37








Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
Quote
Самая подхъодящяя причина это прошивка, всё остальное отменяется, Нашь вилики зубилограф (осцилограф), показывает нормальные параметры, и с ним спорить мне не хочется.

ОК! осцил проявит истину однозначно dance4

ждем результатов


Robozone
 
BORNДата: Понедельник, 09.06.2008, 13:41 | Сообщение # 38








Зарегистрирован 25.05.2008
Группа: Новички
Сообщений: 16
Город: Минск
Статус: Offline
cray cray cray cray cray ругатся, хочется, неполучается у меня откомпилировать код, поменял makefile под atmega8 донастроил пару пораметров как надо, кое что просматрел, говорит еррор и компилировать отказывается cray cray cray cray cray cray cray cray

Добавлено (09.06.2008, 13:41)
---------------------------------------------

Code
   DDRD  = 0x10;  // назначаем все линии порта D на вход, кроме PD4
   PORTD = 0xef;  // подключаем внутренние нагрузочные резисторы, кроме PD4

Как этот код преобразовать под другой порт ?? Мот у кого есть таблица какая ?? А то вроде откомпилировать удалось и славо богу мозг сломался, больше методом тыка не удаётся...
 
SpaceДата: Понедельник, 09.06.2008, 15:03 | Сообщение # 39








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Code
PC
порт
0     0x01 0xFE
1     0x02 0xFD
2     0x04 0xFB
3     0x08 0xF7
4     0x10 0xEF
5     0x20 0xDF
6     0x40 0xBF
7     0x80 0x7F

для других портов тоже самое. а какой там у тебя компилятор. Если не WinAVR. то скомпилировать и не получится. Нужен именно он
 
Форум » Мастерская » Новичкам » HELP!!! Всё зашил, а не работает. (Программу взял из проекта робот 2. Плата моя)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: