L293D подается два напряжения одно для питания самой микросхемы 5в, пробовал подключать от блока питания, а второе для питания моторов от 4.5 до 36 вольт. Минусы все в одной куче. джойстик от ардуины 3.3 вольта. Плохо нет playstation проверить джойстик.
Всем привет. Танцы с бубном дали свой результат. Удалил программу Arduino, скачал по новой установил. Загрузил в ардуину и вот оно ЧУДО заработало, но с крестом все ОК а вот с аналогом: загружаю скетч и моторы начинают сразу крутиться нажимаю в перед один останавливается второй крутиться, назат тоже самое, а вот в влево или в право они останавливаются.
Проектировал плату под гусеничное шасси, но шасси так и не нашол по этому получилось вот что...
пока умеет ездить вперед, назад и поворачивать, в планах прикрутить к пульту потенциометр и сделать пропорциональное управление поворотом передних колес и замутить освещение - фары и поворотники
удобно подцеплять в данном случае нунчак от wii. 2 осевой джойстик, 2 кнопки и 3 осевой акселерометр. стоит копейки. только вот акселерометр странный. смесь гироскопа и акселерометра. реагирует и на ускорение и на положение. но что поделать дешевый китайский
Всем привет. Нужна ваша помощь. В написании программ я не силен так что сильно неругайтесь. Решил попробовать разделить управление джойстика. Суть в следующем: левый аналог джой крутит левый мотор вперед назад, правый аналог джой крутит правый мотор вперет назад. Получилось у меня так: левый джой вперед крутит мотор в одну сторону, назад крутит в ту же сторону, с правым такая же фигня.
Левый Джой вперед левый мотор крутит в одну сторону, левый Джой назад левый мотор крутит в туже сторону так же и правый Джой, а если левый Джой вперед а правый назад или левый Джой назад а правый вперед то моторы меняют направление. Надеюсь понятно.
проверьте драйвер. похоже вы что то напутали. если есть PWM и DIR должно вроде как работать. если напрямую к L298 цепляться то код конечно править придется
может завтра специально потестирую, может и я где ошибся
но у вас как будто упавление dir (управляет направлением вращения) не работает, не тот пин может подцепили
Красотень. Если и работать будет так же, как выглядит, то вообще зашибись.
спасибо. вот собрался программу писать, а не могу найти в библиотеке для nRF24l01 настройка выводов. уже по второму разу смотрю, но не вижу все равно))) сейчас в теме модуля буду писать
позанимавшись с библитекой с софтварным SPI решил решил переделать плату.
это позволяло улучшить ее, освободить пины, добавить отключение подсветки дисплея, использовать страндатную (лично проверенную библиотеку), добавить контроль напряжения аккумулятора, а также пины под возможное подключение энкодера
в той плате пины не соответствовали хардварному SPI поэтому хотел использовать софтварный. но потом прикинул с новыми хотелками решил переделать плату. развести не проблема, изготовить тоже, ламинатор уже в который раз выручает (спасибо жене что подарила). а если я в этом не ограничен, то не стал мучаться с софтварным, к тому что там были еще ограничения
проблема вот в чем: на плате изначально расчитывал на другие пины для радиомодуля, но вернул на хардварный SPI
хардваный ШИМ можно сделать только на 9 10 и 11 пинах. но используя библиотеку Servo шим нельзя использовать на 9 и 10 пинах. 11 пин используется для SPI.
итого ни одного свободного пина с аппаратным шимом
попробовал библиотеку softpwm. но не может откомпилироваться так как в меге8 нет 2 таймера
есть предложения?
у меня или как то сделать программый шим, или испльзовать ардуино нано например где есть еще 3 пина с аппаратным шимом
Столкнулся с такой же проблемой только при использовании библиотеки VirtualWire, даже тему тут создавал, у меня получилось только так зашимить как в последнем посте, но получилось всего четыре градации шима 25 -50 -75 и 100 % от времени цикла пин находится в high остальное время в low, в принципе мне этого хватило для управления двигателями через L293D.
Да, а что за платки в пульте, ну помимо самодельной с Atmegaи nrf24l01? Аккумулятор на 3,7?
на старых материнских платах биос ставили в dip-корпусах в широкие кроватки. ардуина про мини в них встает замечательно. правда только когда ноги распаяны по длинным сторонам. контакты по короткой стороне я выводил одтельным разъемом.
Хочю обратиться к вам за помошью. Проблемма такая : Есть два безколекторных двигателя ну и платы регулировки скорости конечно. потключить к ардуине у меня получяеться. Но тут стал вопрос как их синхронезировать. Тоесть ( управление джойстиком на основе двух потенциометров, Скажем один потенциометр ось Y второй ось X при подаче рычага джойстика в перёд показатели меняються с потенциометра Y при этом мне нужно чтоб оба двигателя кторые потключены на разные пины синхронно раскручивались в (скажем перёд) когда Y находиться в своём верхнем положении и оба двигателя работают на 100% Уважу рычаг джойстика в лево при этом показания Х будут расти а Y остаёться в том же диопозоне. В этом случае один двигатель должен плавно затухать а второй оставаться работать в соотвецтвии с положением джойстика. Дайте хоть какойто пример на основе которого я мог бы продолжить..
вот. только недопиленный. давно писал. мой джойстик если если немного увести в сторону значение по Y уменьшались (в джойстике кольцевое окно, в джойстиках с прямоугольным окном все проще, и если держать вперед на максимум и уводить в сторону Y не изменяется)
и там драйвер стоял L298 поэтому например вперед на максимум DIR=1 (условно назовем, на самом деле его там нет, ) и шим =255 едет на полной скорости вперед, шим = 0 стоп. а если DIR=0 (назад) при шим = 255 стоп, а при шим = 0 полная скорость. учитывайте это
#include <PS2X_lib.h> //for v1.6
PS2X ps2x; // create PS2 Controller Class
//13 Clock зеленый
//12 Data серый
//11 Command синий
//10 Attention коричневый
// 3.3V белый
// GND черный
int error = 0;
byte type = 0;
byte vibrate = 0;
boolean L_napr = 12;
byte L_drive = 11;
boolean R_napr = 10;
byte R_drive = 9;
byte UP;
byte DOWN;
byte LEFT;
byte RIGHT;
void setup(){
error = ps2x.config_gamepad(8,6,5,7, true, true); //Настройка выводов: (clock, command, attention, data, Pressures?, Rumble?)
pinMode(L_napr, OUTPUT);
pinMode(L_drive, OUTPUT);
pinMode(R_napr, OUTPUT);
pinMode(R_drive, OUTPUT);
}
void loop(){
ps2x.read_gamepad(false, vibrate);
//===========================================================================================
// Граничные условия для X и Y
//===========================================================================================
if(ps2x.Button(PSB_PAD_UP)) {
UP = ps2x.Analog(PSAB_PAD_UP);
}
else {
UP = 0;
}
if(ps2x.Button(PSB_PAD_DOWN)) {
DOWN = ps2x.Analog(PSAB_PAD_DOWN);
}
else {
DOWN = 0;
}
if(ps2x.Button(PSB_PAD_LEFT)) {
LEFT = ps2x.Analog(PSAB_PAD_LEFT);
}
else {
LEFT = 0;
}
if(ps2x.Button(PSB_PAD_RIGHT)) {
RIGHT = ps2x.Analog(PSAB_PAD_RIGHT);
}
else {
RIGHT = 0;
}
//===========================================================================================
// Остановка
//===========================================================================================
if (UP == 0 && DOWN == 0 && LEFT == 0 && RIGHT == 0){
digitalWrite(L_napr, LOW);
analogWrite(L_drive, 0);
digitalWrite(R_napr, LOW);
analogWrite(R_drive, 0);
}
//===========================================================================================
// ВПЕРЕД
//===========================================================================================
if (UP > 0 && DOWN == 0 && LEFT == 0 && RIGHT == 0){
digitalWrite(L_napr, HIGH);
analogWrite(L_drive, 255-UP);
digitalWrite(R_napr, HIGH);
analogWrite(R_drive, 255-UP);
}
//===========================================================================================
// НАЗАД
//===========================================================================================
if (UP == 0 && DOWN > 0 && LEFT == 0 && RIGHT == 0){
digitalWrite(L_napr, LOW);
analogWrite(L_drive, DOWN);
digitalWrite(R_napr, LOW);
analogWrite(R_drive, DOWN);
}
//===========================================================================================
// НАЛЕВО
//===========================================================================================
if (UP == 0 && DOWN == 0 && LEFT > 0 && RIGHT == 0){
digitalWrite(L_napr, LOW);
analogWrite(L_drive, LEFT);
digitalWrite(R_napr, HIGH);
analogWrite(R_drive, 255-LEFT);
}
//===========================================================================================
// НАПРАВО
//===========================================================================================
if (UP == 0 && DOWN == 0 && LEFT == 0 && RIGHT > 0){
digitalWrite(L_napr, HIGH);
analogWrite(L_drive, 255-RIGHT);
digitalWrite(R_napr, LOW);
analogWrite(R_drive, RIGHT);
}
//===========================================================================================
// ВПЕРЕД НАЛЕВО
//===========================================================================================
if (UP > 0 && DOWN == 0 && LEFT > 0 && RIGHT == 0){
digitalWrite(L_napr, HIGH);
analogWrite(L_drive, 255-UP+LEFT*2);
digitalWrite(R_napr, HIGH);
analogWrite(R_drive, 255-UP);
}
//===========================================================================================
// ВПЕРЕД НАПРАВО
//===========================================================================================
if (UP > 0 && DOWN == 0 && LEFT == 0 && RIGHT > 0){
digitalWrite(L_napr, HIGH);
analogWrite(L_drive, 255-UP);
digitalWrite(R_napr, HIGH);
analogWrite(R_drive, 255-UP+RIGHT*2);
}
//===========================================================================================
// НАЗАД НАЛЕВО
//===========================================================================================
if (UP == 0 && DOWN > 0 && LEFT > 0 && RIGHT == 0){
digitalWrite(L_napr, LOW);
analogWrite(L_drive, DOWN-LEFT*2);
digitalWrite(R_napr, LOW);
analogWrite(R_drive, DOWN);
}
//===========================================================================================
// НАЗАД НАПРАВО
//===========================================================================================
if (UP == 0 && DOWN > 0 && LEFT == 0 && RIGHT > 0){
digitalWrite(L_napr, LOW);
analogWrite(L_drive, DOWN);
digitalWrite(R_napr, LOW);
analogWrite(R_drive, DOWN-RIGHT*2);
}
delay(20);
}
так на драйвер нельзя подавать больше 5 вольт. вы 5 вольт берете с ардуины?
сегодня или завтра напишу тестовый скетч для проверки
p.s. к библиотеке есть пример. проверье им. проверьте подключение. пины. напряжение на приемник джойстика только 3.3 в можно
L293D подается два напряжения одно для питания самой микросхемы 5в, пробовал подключать от блока питания, а второе для питания моторов от 4.5 до 36 вольт. Минусы все в одной куче. джойстик от ардуины 3.3 вольта. Плохо нет playstation проверить джойстик.
Не знаю я просто подавал питание на микруху и двигуны нормально работали по команде с ардуино
хз. ну либо дело в джойстике либо вы его неправильно подключили. джойстик я понял работает , но очень медленно команды приходят?
на сайте обновилась версия библиотеки. теперь 1.8. была 1.6. попробуйте может поможет
вот ссылка
https://github.com/madsci1016/Arduino-PS2X/zipball/5d2be701af64d826d2683...
Всем привет. Танцы с бубном дали свой результат. Удалил программу Arduino, скачал по новой установил. Загрузил в ардуину и вот оно ЧУДО заработало, но с крестом все ОК а вот с аналогом: загружаю скетч и моторы начинают сразу крутиться нажимаю в перед один останавливается второй крутиться, назат тоже самое, а вот в влево или в право они останавливаются.
там нужно допиливать. есть один момент почему для джойстиков програмируется тяжелее. сами допишите
а так рад за вас. ждем танчик или машинку
Моторы заказал, как придут что-нибудь соберу.
Проектировал плату под гусеничное шасси, но шасси так и не нашол по этому получилось вот что...
пока умеет ездить вперед, назад и поворачивать, в планах прикрутить к пульту потенциометр и сделать пропорциональное управление поворотом передних колес и замутить освещение - фары и поворотники
удобно подцеплять в данном случае нунчак от wii. 2 осевой джойстик, 2 кнопки и 3 осевой акселерометр. стоит копейки. только вот акселерометр странный. смесь гироскопа и акселерометра. реагирует и на ускорение и на положение. но что поделать дешевый китайский
Всем привет. Нужна ваша помощь. В написании программ я не силен так что сильно неругайтесь. Решил попробовать разделить управление джойстика. Суть в следующем: левый аналог джой крутит левый мотор вперед назад, правый аналог джой крутит правый мотор вперет назад. Получилось у меня так: левый джой вперед крутит мотор в одну сторону, назад крутит в ту же сторону, с правым такая же фигня.
Скетч в 162 посте.
посмотрите как вставлять код
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
а дальше будем смотреть
я тогда только начинал программировать. завтра что нибудь покрасивее постараюсь написать. чуть больше теперь знаю, чуть лучше код
вот набросал. пробуйте
Попробовал скетч. Работает как у меня, только теперь если левый вперед а правый назад или правый вперед а левый назад меняет направление.
понятнее напишите. не понял что левый что правый вы сами то поняли? левый джойстик или левый двигатель?
Левый Джой вперед левый мотор крутит в одну сторону, левый Джой назад левый мотор крутит в туже сторону так же и правый Джой, а если левый Джой вперед а правый назад или левый Джой назад а правый вперед то моторы меняют направление. Надеюсь понятно.
ну там же не только вперед и назад. скорость регулируется правильно или нет?
драйвер подцепили правильно? приложите схему
конкретнее можете написать, при этом назовите одно направление вперед а другое назад на двигателе. например:
или если не можете конкретнее описать снимите видео, если не то не другое решайте проблему сами. я не экстрасенс
один канал не влияет на другой. неважно что на левом джойстике это не должно влиять на правый мотор. вы наверно драйвер неправильно подцепили
Как добавить видео?
просто ссылку
это твой драйвер. как ты его соеденяешь с ардуино?
Как сделать рисунок крупнее? А так там на рисунке написано. Подключение не менял на кресте и на аналоговом джое работает.
Видео.
http://youtu.be/UjpBdN19EE4
Проверяете что у вас вообще идет с аналогов:
Если с аналогами все в порядке проверяете драйвер:
Если двигатели будут крутиться только в одну сторону значит что то намудрили с драйвером или подключением.
проверьте драйвер. похоже вы что то напутали. если есть PWM и DIR должно вроде как работать. если напрямую к L298 цепляться то код конечно править придется
может завтра специально потестирую, может и я где ошибся
но у вас как будто упавление dir (управляет направлением вращения) не работает, не тот пин может подцепили
Проверяете что у вас вообще идет с аналогов:
Если с аналогами все в порядке проверяете драйвер:
Если двигатели будут крутиться только в одну сторону значит что то намудрили с драйвером или подключением.
с аналоговых должно идти насколько помню в центре 128, если поднимать вверх увеличивается до 255, вниз уменьшаться до 0. тестируйте
а потом уже и драйвер. спасибо максиму. пусть потестирует
Ура заработало :). На плате драйвера накасячил по этому и втыкал PWM 1 и PWM 2 не туда . ВСЕМ ОГРОМНОЕ СПАСИБО!!!
пожалуйста
в следующий раз будьте внимательнее
O.K.
Всем привет. Зацените http://youtu.be/Dz3zZstYpKE. В место одного мотора подключил серву.
я также делал. только сильнее разгонял машинку что она уходила в дрифт
пульт для машинки, пока без программы
МК с одной стороны. дисплей с обратной. связь nRF24L01
разъем для программирования сверху чтобы не разбирать каждый раз
разъем для зарядки аккумулятора от USB
плату для машинки тестировал. работает
Красотень. Если и работать будет так же, как выглядит, то вообще зашибись.
спасибо. вот собрался программу писать, а не могу найти в библиотеке для nRF24l01 настройка выводов. уже по второму разу смотрю, но не вижу все равно))) сейчас в теме модуля буду писать
Вот посмотрите эту библиотечку http://github.com/maniacbug/RF24
и на хабрахабре есть несколько статей
эта библиотека под хардварный SPI, под софтварный дали в теме радиомодуля
позанимавшись с библитекой с софтварным SPI решил решил переделать плату.
это позволяло улучшить ее, освободить пины, добавить отключение подсветки дисплея, использовать страндатную (лично проверенную библиотеку), добавить контроль напряжения аккумулятора, а также пины под возможное подключение энкодера
завтра буду изготавливать
эта библиотека под хардварный SPI,
А что мешает использовать хардверный SPI ?
в той плате пины не соответствовали хардварному SPI поэтому хотел использовать софтварный. но потом прикинул с новыми хотелками решил переделать плату. развести не проблема, изготовить тоже, ламинатор уже в который раз выручает (спасибо жене что подарила). а если я в этом не ограничен, то не стал мучаться с софтварным, к тому что там были еще ограничения
написал программу
но возникла проблема. нужна помощь
проблема вот в чем: на плате изначально расчитывал на другие пины для радиомодуля, но вернул на хардварный SPI
хардваный ШИМ можно сделать только на 9 10 и 11 пинах. но используя библиотеку Servo шим нельзя использовать на 9 и 10 пинах. 11 пин используется для SPI.
итого ни одного свободного пина с аппаратным шимом
попробовал библиотеку softpwm. но не может откомпилироваться так как в меге8 нет 2 таймера
есть предложения?
у меня или как то сделать программый шим, или испльзовать ардуино нано например где есть еще 3 пина с аппаратным шимом
+ вот видео
http://youtu.be/hOZznqyyhDo
Пульт вышел просто супер!
Столкнулся с такой же проблемой только при использовании библиотеки VirtualWire, даже тему тут создавал, у меня получилось только так зашимить как в последнем посте, но получилось всего четыре градации шима 25 -50 -75 и 100 % от времени цикла пин находится в high остальное время в low, в принципе мне этого хватило для управления двигателями через L293D.
Да, а что за платки в пульте, ну помимо самодельной с Atmega и nrf24l01? Аккумулятор на 3,7?
спасибо.
платы: внизу контроллер заряда для аккумулятора
http://www.ebay.com/itm/5V-MINI-USB-1A-1000mA-Lithium-Battery-Charging-B...
а над аккумулятором стоит преобразователь на 5 вольт
http://www.ebay.com/itm/0-9V-5V-to-5V-DC-DC-Booster-Module-USB-Mobile-St...
поставлю наверно mini. не буду пока заморачиваться. если найду решение можно будет по другому сделать
поставлю наверно mini. не буду пока заморачиваться. если найду решение можно будет по другому сделать
Проблема в том, что в меге8 банально не хватает таймеров и, похоже, ее не решить без смены чипа.
Кстати, BAM (Binary Angle Modulation) не подойдет?
поставлю наверно mini. не буду пока заморачиваться. если найду решение можно будет по другому сделать
Проблема в том, что в меге8 банально не хватает таймеров и, похоже, ее не решить без смены чипа.
Кстати, BAM (Binary Angle Modulation) не подойдет?
ага. так и есть.
но не думайте что я забил. нет. работа идет
под arduino pro mini сделана макетка
вот фотки
догадайтесь почему картинки зеркальные
а вот рельная макетка
флюс не отмывался еще. не все запаял
на старых материнских платах биос ставили в dip-корпусах в широкие кроватки. ардуина про мини в них встает замечательно. правда только когда ноги распаяны по длинным сторонам. контакты по короткой стороне я выводил одтельным разъемом.
да у меня такой метеринки нет, да и незачем
короче все собрал. работает. вот фото. завтра видео, уже темно на улице видео снимать
ну вот собственно и видео
https://www.youtube.com/watch?v=jVkJ6CHVy9c
Хочю обратиться к вам за помошью. Проблемма такая : Есть два безколекторных двигателя ну и платы регулировки скорости конечно. потключить к ардуине у меня получяеться. Но тут стал вопрос как их синхронезировать. Тоесть ( управление джойстиком на основе двух потенциометров, Скажем один потенциометр ось Y второй ось X при подаче рычага джойстика в перёд показатели меняються с потенциометра Y при этом мне нужно чтоб оба двигателя кторые потключены на разные пины синхронно раскручивались в (скажем перёд) когда Y находиться в своём верхнем положении и оба двигателя работают на 100% Уважу рычаг джойстика в лево при этом показания Х будут расти а Y остаёться в том же диопозоне. В этом случае один двигатель должен плавно затухать а второй оставаться работать в соотвецтвии с положением джойстика. Дайте хоть какойто пример на основе которого я мог бы продолжить..
заранее блогодарен
вот. только недопиленный. давно писал. мой джойстик если если немного увести в сторону значение по Y уменьшались (в джойстике кольцевое окно, в джойстиках с прямоугольным окном все проще, и если держать вперед на максимум и уводить в сторону Y не изменяется)
и там драйвер стоял L298 поэтому например вперед на максимум DIR=1 (условно назовем, на самом деле его там нет, ) и шим =255 едет на полной скорости вперед, шим = 0 стоп. а если DIR=0 (назад) при шим = 255 стоп, а при шим = 0 полная скорость. учитывайте это
По экранчику и работе с ним где можно почитать?