роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Описание: Робот на ATmega16 и L293D
Xummppa Post Id


Лейтенант


Сообщений всего: 28
Дата рег-ции: Февр. 2010  



Здравствуйте. Небольшое описание.

Робот базируется на игрушечной машинке. Рулевой мотор пока отключен, пытаюсь заставить хотя бы просто ехать. Вся электроника питается от стабилизатора (стабильные 5 вольт). Дополнительное питание для Л293Д — аккумулятор (5 вольт) от этой же машинки, цеплял его к моторам напрямую, машинку просто рвет с места.

Наблюдал, что, при срабатывании обоих датчиков, индикатор Б.2 ели светится, напряжение на выводе буквально 1 вольт.

схема: http://www.imagepost.ru/images/68/0dC2Vn1.gif

код:
#include <mega16.h>
#include <delay.h>

void main(void)
{
DDRA=0xFF; // конфигурируем порты на выход
PORTA=0x00; // устанавливаем логический ноль

DDRB=0xFF; // конфигурируем порты на выход
PORTB=0x00; // устанавливаем логический ноль

DDRC=0x00; // конфигурируем порты на вход
PORTC=0xFF; // включаем подтягивающие резисторы (ставим логическую единицу)

DDRD=0x00; // конфигурируем порты на вход
PORTD=0xFF; // включаем подтягивающие резисторы (ставим логическую единицу)

while (1)
{
// изначально все двигатели выключены
PORTA.0=0x00;
PORTA.2=0x00;
PORTB.0=0x00;
PORTB.2=0x00;
// проверка датчиков
if (PIND.2==0 & PINC.3==1) // если правый датчик сработал, а левый — нет
{
// поворачиваем направо (двигатель пока отключен)
PORTA.0=0xFF;
PORTA.2=0x00;
// вперед (индикационный диод горит особенно ярко, на выводе вольта 4)
PORTB.0=0x00;
PORTB.2=0xFF;
}
if (PINC.3==0 & PIND.2==1) // если левый датчик сработал, а правый — нет
{
// поворачиваем налево (двигатель пока отключен)
PORTA.0=0x00;
PORTA.2=0xFF;
// вперед (индикационный диод горит хорошо, на выводе примерно 3 вольта)
PORTB.0=0x00;
PORTB.2=0xFF;
}
if (PINC.3==0 & PIND.2==0) // если сработали оба датчика
{
// вперед (индикационный диод едва горит, на выводе 1 вольт)
PORTB.0=0x00;
PORTB.2=0xFF;
}
};
}

Проблема такая:

При срабатывании Д.2 — на мотор подается примерно 2.5 вольта, машинка на полу едва едет с пинка.

При срабатывании С.3 — мотор даже в холостую практически не крутит колеса.

При срабатывании обоих датчиком мотор не реагирует вообще.
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



ААА!!
передвинте этот кусок кода ПЕРЕД while (1)
CODE:
// изначально все двигатели выключены
PORTA.0=0x00;
PORTA.2=0x00;
PORTB.0=0x00;
PORTB.2=0x00;
 
 Top
Xummppa Post Id


Лейтенант


Сообщений всего: 28
Дата рег-ции: Февр. 2010  



Спасибо )
Вставить тот код перед вайл заставило двигатель работать постоянно, но с максимальной мощностью!

Сделал тогда иначе

if (PIND.2==1 & PINC.3==1) // если сигнала с датчиков нет
{
// то двигатели молчат
PORTA.0=0x00;
PORTA.2=0x00;
PORTB.0=0x00;
PORTB.2=0x00;

Все работает отлично.
 
 Top
Страниц (1): [1]
« Делаем роботов »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru