роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (17): [1] 2 3 4 5 6 7 8 9 ... » В конец    

> Без описания
zatmenie
Отправлено: 09 Января, 2010 - 23:56:38
Post Id



Генерал


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





Всем привет. Вот надумал сделать какого нибудь робота, пока еще не знаю какого, но наткнулся вот на эту http://myrobot.ru/stepbystep/el_...bot_for_line.php статью и задумал использовать в своём роботе. Идея такая: одной ножкой МК с помощью логических элементов "НЕ" управлять мотором. Но что бы я не делал у меня на ножке МК всегда получалось 1 или 0, а что бы мотор не крутился нужно вообще отключить ножку. Вот я и не знаю как это сделать потому что в программировании совсем новичек. Надеюсь мне кто нибудь поможет.
(Добавление)
Ой забыл написать. МК-ATtiny2313, компилятор CVAVR
 
 Top
nest Администратор
Отправлено: 10 Января, 2010 - 00:44:35
Post Id



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


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





zatmenie пишет:
одной ножкой МК с помощью логических элементов "НЕ" управлять мотором
ну... давайте либо с помощью МК, либо с помощью лог. элементов : )
zatmenie пишет:
Но что бы я не делал у меня на ножке МК всегда получалось 1 или 0, а что бы мотор не крутился нужно вообще отключить ножку
покажите, какой код использовали.
 
 Top
lamakazzz
Отправлено: 10 Января, 2010 - 00:46:00
Post Id



Главнокомандующий


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





Возможно, Вам есть смысл собрать робота без МК (микроконтроллера), а только на драйвере двигателя L293D, почитать и разобраться, как оно работает.

Когда в Вашей программе вы указываете 1 на выходе (ножке) МК, то, соответственно, передается сигнал высокого уровня на драйвер двигателя, в цепи идет ток и мотор крутится. Когда на выходе 0 - сигнал низкого уровня - мотор не крутится.

Для простоты можно представить, что это водопровод: когда подаётся 1 - это равносильно, что Вы открутили кран и идёт вода; когда подаётся 0 - Вы закрутили кран и вода не идёт. Т.е. всего два положения: 0 и 1 (закрыто и открыто). Соответственно, если Вы ставите лог.элемент "НЕ", то моторы будут крутиться, когда установлен "0".

Поправьте, если я что-то напутал.

(Отредактировано автором: 10 Января, 2010 - 00:49:10)

 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 10:50:00
Post Id



Генерал


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





nest пишет:
покажите, какой код использовали.

так я в генераторе кода менял настройки ножек, а так я не знаю какой код мне нужно сделать.

lamakazzz пишет:
Возможно, Вам есть смысл собрать робота без МК (микроконтроллера), а только на драйвере двигателя L293D, почитать и разобраться, как оно работает.

в принципе я разобрался как все это работает, смоделировал в протеусе.

lamakazzz пишет:
Т.е. всего два положения: 0 и 1 (закрыто и открыто). Соответственно, если Вы ставите лог.элемент "НЕ", то моторы будут крутиться, когда установлен "0".

Да на выходе всего 2 положения, но я читал в какой то книге что у avr 3 положения: вход, выход и отключено. Если ставить лог.элемент то из 0 он делает 1, а из 1 делает 0. Т.е. мотор всегда будет крутится. Вот а мне надо что бы она была отключена, но так что бы программа смогла менять её положение, т.е. сейчас она отключена, датчик сработал она стала 0 и мотор крутится в одну сторону, затем другой датчик сработал она стала 1 и омотор крутится в другую сторону, если ничего не сработало ножка становится отключена и мотор не крутится.
Скачать файл: схема.rar
Скачан раз: 321
 
 Top
nest Администратор
Отправлено: 10 Января, 2010 - 12:37:06
Post Id



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


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





zatmenie, что бы мотор не крутился, нужно:
1) ИЛИ: подавать на входы IN1 и IN2 (L293) одинаковые лог. сигналы, т.е. либо оба "1", либо оба "0".
2) ИЛИ: подавать "0" на вход ENABLE, тогда мотор окажется как бы "отключённым" от L293. В этом случае он будет некоторое время крутиться по инерции (возможно, очень коротко, в зависимости от нагрузки на его валу). Такое отключение произойдёт независимо от сигналов на IN1 или IN2.

Если используется вариант 1 - то мотор будет гарантированно заторможен. Т.к. его выводы будут как бы "замкнуты" через микросхему L293.
При варианте 2 - мотор будет останавливаться сам по инерции. Т.к. его выводы будут электрически никуда не подключены, "висеть в воздухе".

Тут ещё можно провести простой эксперимент: возмите моторчик в руки и крутните пальцами его вал. Заметте как он будет вращаться по инерции. А потом замкните проводком выводы мотора, и крутните вал ещё раз...

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

Логический элемент у вас в схеме, zatmenie, вообще то не нужен. Подавайте на IN1 и IN2 прямо с двух ножек микроконтроллера. И управляйте ими програмно как вам хочется.
По-мне лучше всё соединить так: IN1 - PB0, IN2 - PB1 , ENABLE - PB2. В таком варианте управление мотора будет наиболее гибким. Даже ШИМ можно будет потом использовать и регулировать скорость вращения мотора програмно.

zatmenie пишет:
я в генераторе кода менял настройки ножек, а так я не знаю какой код мне нужно сделать.
вот и покажите код, который есть.
 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 13:46:13
Post Id



Генерал


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





nest пишет:
вот и покажите код, который есть.

/*****************************************************
Project :
Version :
Date : 09.01.2010
Author : Valera
Company : Home
Comments:


Chip type : ATtiny2313
Clock frequency : 4.000000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/

#include <tiny2313.h>

#include <delay.h>

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTB=0x00;
DDRB=0x01;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

while (1)
{
PORTB.0=~PIND.0;

};
}


А разве нельзя программно сделать что бы ножка МК "висела в воздухе"? Просто я задумал сделать с лог.элементами для экономии ножек (что бы на tiny13(25) можно было сделать более менее сложного робота, и для освоения электроники и программировании.
(Добавление)
Насчет моторчика: замкнул контакты между собой и почти не крутится по инерции.
 
 Top
nest Администратор
Отправлено: 10 Января, 2010 - 14:08:13
Post Id



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


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





zatmenie пишет:
разве нельзя программно сделать что бы ножка МК "висела в воздухе"?
можно. нужно её включить как Input.
а для чего это вам ? повесить в воздухе ножку вам ничего не даст, т.к. драйвер двигателя L293 управляется "1" или "0", и никак больше. Прочитайте ещё раз, какие варианты "отключения"/останова мотора я описал.

Почему вам хочется именно на "малоногом" МК собрать робота ?
С точки зрения программинга - малое количество ног не имеет никаких достоинств. Зато значительно повышает требования к хитрым схематическим решениям. Да и дополнительный корпус микросхемы логики повышает потребление схемы и вероятность ошибок.
Тини2313 (20 ног, 8+7 из них свободно конфигурируемы) - наиболее оптимальный вариант для более-менее простого робота. Можно взять Мега8.
Если вас привлекает лишь малый размер корпуса - то можно взять многоногий и в SMD варианте. Но паять будет немного сложнее.
 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 16:03:02
Post Id



Генерал


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





nest пишет:
можно. нужно её включить как Input.
а для чего это вам ? повесить в воздухе ножку вам ничего не даст, т.к. драйвер двигателя L293 управляется "1" или "0", и никак больше. Прочитайте ещё раз, какие варианты "отключения"/останова мотора я описал.

В том то и дело если я повешу ножку в воздухе - значит она будет и не 0 и не 1, а это значит мотор работать не будет. потом программа меняет её на 0 или 1 и мотор крутится туда или сюда! Вот в этом весь прикол, что бы одной ножкой управлял мотором через логические элементы.
nest пишет:
Почему вам хочется именно на "малоногом" МК собрать робота ?

Потому что мне так интересней.
nest пишет:
Зато значительно повышает требования к хитрым схематическим решениям.

мне это как таз и нужно!
nest пишет:
Если вас привлекает лишь малый размер корпуса - то можно взять многоногий и в SMD варианте. Но паять будет немного сложнее.

Дело не в размере.


А как программно ножку менять из OUTPUT в INPUT?
 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 16:14:15
Post Id



Генерал


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





Щас попробовал в протеусе подключить лог.элемент ко входу. Сконфигурировал ПД1 с подтягивающим резистором и без него, но в обоих случаях мотор работает.
Скачать файл: схема.rar
Скачан раз: 315
 
 Top
nest Администратор
Отправлено: 10 Января, 2010 - 16:46:32
Post Id



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


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





zatmenie пишет:
как программно ножку менять из OUTPUT в INPUT?
почитать в даташите раздел про регистры DDRx или ещё где вам понятнее.

хм...
можно сделать так как вы хотите, но это как то ... некрасиво всё, когда есть микроконтроллер.

Поищите информацию про "диодное-ИЛИ" и "диодное-И". Есть такие схемы для сборки логических функций.

А потом давайте так: Покажите мне, как бы вы построили "диодное-И" и покажите в протеусе как это работает (картинкой). Тогда я покажу вам как сделать вашу схему : )
 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 20:11:58
Post Id



Генерал


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





nest пишет:
Поищите информацию про "диодное-ИЛИ" и "диодное-И". Есть такие схемы для сборки логических функций.

Диодное И/ИЛИ это диодно-транзисторная логика верно?
 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 20:43:51
Post Id



Генерал


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





Чето ничего не могу найти про диодно-транзисторную логику кроме этой картинки
Прикреплено изображение
776px-DTL-2NAND-simplest.svg.png

 
 Top
nest Администратор
Отправлено: 10 Января, 2010 - 20:53:27
Post Id



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


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





zatmenie, подойдёт. Просимулируйте это в протеусе. Или в реальной схеме.
 
 Top
lamakazzz
Отправлено: 10 Января, 2010 - 20:58:17
Post Id



Главнокомандующий


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





Можете обратить внимание на
http://window.edu.ru/window_cata...68&p_page=13 - тут в виде html, а PDF версию смотрите выше, либо

http://window.edu.ru/window_cata...file=stup081.pdf

(Отредактировано автором: 10 Января, 2010 - 21:05:53)

 
 Top
zatmenie
Отправлено: 10 Января, 2010 - 21:18:45
Post Id



Генерал


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





nest пишет:
подойдёт. Просимулируйте это в протеусе. Или в реальной схеме.

А какие детали для протеуса?
 
 Top
Страниц (17): [1] 2 3 4 5 6 7 8 9 ... » В конец
« Программирование микроконтроллеров »


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





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown