Форум myROBOT.ru » Лаборатория » Электронная мастерская » Пожалуйста помогите разобраться с TA7291P, L293D + ATmega8-16PU

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

1. OIIO - 26 Мая, 2011 - 12:17:24 - перейти к сообщению
Здравствуйте.
После курсов ШАГ ЗА ШАГОМ, работающий простой робот меня, очень порадовал.
И мне захотелось сделать еще одну «игрушку», только уже, немножечко сложней.
Что это из себя, представляет, есть пять китайских моторчиков, которые управляют типа «пальцами», микроконтроллер ATMega8-16PU, драйвер двигателей после прошлых опытов L293D, и из-за того что такие кончились в Радиомастере, пришлось взять еще 3 – TA7291P.
Все это соответствующим образом соединено и к другой стороне МК крепятся кнопки, один ряд из 5-и клавиш, свершу, другой снизу. При нажатии ряда кнопок сверху моторчики крутятся в одну сторону и пальчики сжимаются, при нажатии ряда кнопок снизу соответственно разжимаются.
Все делал по аналогии с уроками представленными на этом же сайте, но работать не хочет
(Добавление)
Прикрепил файл в архиве Q.rar как это приблизительно выглядит, могу прикрепить и отрисовку печатной платы
(Добавление)
Когда, подключаю питание, и нажимаю на кнопки, моторчики гудят, непонятно, и наапряжение на них идет всего лиш порядка 2х вольт, почему не знаю
2. nestandart - 26 Мая, 2011 - 12:54:25 - перейти к сообщению
А программа где ?
3. OIIO - 26 Мая, 2011 - 14:43:30 - перейти к сообщению
Извеняюсь, программма вот
4. OIIO - 26 Мая, 2011 - 14:48:44 - перейти к сообщению
И печатная, плата, в которой уже все точно расположенно
5. OIIO - 26 Мая, 2011 - 15:09:45 - перейти к сообщению
еще, когда проверял код, для наглядности распечатал микросхемки и нарисовал связи между "пинами", вот тоже выкладываю
(Добавление)
Профессионалы, в этом деле, помогите пожалуйста разобраться!
6. nestandart - 26 Мая, 2011 - 16:10:29 - перейти к сообщению
Скоре всего моторы получают противоречивые команды.


Используйте конструкции if/else а не просто if.
В операторе else переводите соответствующие ноги МК в лог 0.

Еще можно ввести временные диапазоны.
Например : при нажатии кнопки мотор не просто крутится , а
крутится ,например , 500мкс.

А вообще , нужно делать обратную савязь и работать с АЦП.

Управление осуществлять через переменный резистор (по типу сервопривода).
7. OIIO - 26 Мая, 2011 - 16:28:27 - перейти к сообщению
Используйте конструкции if/else а не просто if.
^
об этом думал, попробую

а вот

{ В операторе else переводите соответствующие ноги МК в лог 0.}

не дошло, до моего восмибитного мозга
8. ОЛЕГ - 26 Мая, 2011 - 16:36:27 - перейти к сообщению
OIIO пишет:
{ В операторе else переводите соответствующие ноги МК в лог 0.}

не дошло, до моего восмибитного мозга

Не стоит так категорично.
Если условие выполняется- Вы ставите ногу в одно состояние (включено, например).
Если условие не выполняется- Вы переводите ногу в стостояние выключено, а не оставляете болтаться не известно как.
9. OIIO - 26 Мая, 2011 - 19:30:11 - перейти к сообщению
Решил, убрать все ветвления, и сделать проверку одним ЕСЛИ

#define F_CPU 1000000UL // указываем частоту в герцах

#include <avr/io.h>
#include <util/delay.h>

int main(void) // начало основной программы
{

DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
DDRD = 0x00; // все выводы порта D сконфигурировать как входы
DDRB = 0xfc; // все выводы порта B сконфигурировать как выходы, кроме PB6, PB7 - которые конфигурируются как входы

PORTD = 0xff; // установить "1" на всех выводах порта D
PORTB = 0X83; // установить "1" на выводе B6, B7 порта B
// включаем подтягивающие резисторы

while (1) { // Бесконечный цикл

// ПРОВЕРЯЕМ СИГНАЛЫ НИЗКОГО УРОНЯ ОТ КРАСНЫХ КНОПОК
if(!(PIND & (1<<PIND0))) // проверить "0" на линии 0 порта D
{
// ---------- вращаем моторы вперед ----------
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C
PORTC &= ~_BV(PC5); // установить "0" на линии 5 порта C
}

} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы

Вообщем говоря, получается, что вот нажал я кнопочку которая подключена к PIND0, соответственно получил низкий уровень на PD0, условие выполнилось, и на портах PC4 установилось лог 1, а на PC5 лог 0.
Двигатель все равно не работает, замеряю напряжение на нем, оно равно 2V, а нужно 5V, чтоб он крутился. Почему на двигатель идет не 5вольт, пнять не могу.
Неужели я что то, делаю не правильно в коде, или всетаки схема не верна?
(Добавление)
Ни чего не понимаю, делаю по аналогии с уроками как в ШАГ ЗА ШАГОМ
10. nestandart - 26 Мая, 2011 - 19:44:28 - перейти к сообщению
Попробуйте померить напряжение на ногах МК (при той же программе)
потом на логических входах драйвера . Если везде напряжение нормальное (3-5в)
подключите к лог. входам драйвера 5в (предварительно отключив входы от МК ,
а то спалите) и проверьте напряжение на выходах драйвера (без моторов).
Возможно у вас стоят слишком мощные моторы (автомодельные , например).
Возможно банальное КЗ.
В общем прозвоните всю цепь от МК до мотора и определите где падает напряжение .
Тогда и решать будем что к чему.
(Добавление)
Да , кстати проверьте питание драйвера (при подключеных моторах и МК ).
Может у вас идут помехи по питанию и МК тупо сбрасывается.
(Добавление)
Можете подключить к выходам МК индикаторные светодиоды (на каждую ногу)
через резисторы 100-500 Ом , так вы будете знать на какой ноге , в данный момент ,
какой логический уровень.
(Добавление)
А может просто драйвер "поджареный".
11. nest - 26 Мая, 2011 - 21:33:26 - перейти к сообщению
OIIO, а можно схему ещё раз? а то у меня не открывается что то
12. nestandart - 27 Мая, 2011 - 10:14:01 - перейти к сообщению
NEST , вот его схема.
Кстати а где кварц ?


13. OIIO - 27 Мая, 2011 - 10:50:53 - перейти к сообщению
nest, вот еще раз, выкладываю схемку
nestandart кварц используется собственный, как и в уроках ШАГ зА ШАГОМ
(Добавление)
т.е. тот который встроен в мегу
(Добавление)
архивчик cxemka.rar, содержит более ровную картинку чем та которая быстро была нарисована
14. killgur - 27 Мая, 2011 - 10:54:38 - перейти к сообщению
OIIO пишет:
nest, вот еще раз, выкладываю схемку
nestandart кварц используется собственный, как и в уроках ШАГ зА ШАГОМ
(Добавление)
т.е. тот который встроен в мегу
(Добавление)
архивчик cxemka.rar, содержит более ровную картинку чем та которая быстро была нарисована


кварца в меге нет, используется внутренний генератор
15. OIIO - 27 Мая, 2011 - 10:55:35 - перейти к сообщению
двигателя, использовал от обычных китайских маленьких машинок, с двумя батарейками
(Добавление)
killgur
да, точно, извеняюсь, использовался собственный Мегавский тактовый генератор.
Я же говорю делал по аналогии с уроками ШАГ за ШАГОМ, ПРОСТОЙ РОБОТ НА МИКРОКОНТРОЛЛЕРЕ (Часть 1,2,3)