i2m пишет:
mogalkov пишет:

Скорее всего проблема не в напряжении а в токе, и не в дуине а в компе. Стандарт усб 5в 500мА, но стандарт - одно, а реальность - другое. Кроме того на ноутах часто ради экономии питания снижают макс. ток усб до 100мА (чаще всего это в биосе переключается). В любом случае без тестера не поймешь.

ПК стационарный. Если у кого-то есть вольтметр, проверьте пожалуйста напряжение на пинах, сколько выдает на самом деле.

усб выдает 5.12в пины выдают 5.11в, разброс не большой, в пределах нормы. Максимальный ток не мерял, так как под рукой амперметр токо до 400мА. Но на моей мамке усб дает ток до 700мА (стандарт 500, но некоторые производители дают с запасом) потом срабатывает предохранитель и усб отключается.

i2m пишет:

Суть вопроса в заголовке, так и должно быть или это ненормально? Мультиметра под рукой нет, точно замерить не могу. На 13 пине уже есть резистор на 1кОМ если туда подключить свои светодиод, то понятное дело он будет светить тускло. Но это наблюдается на всех пинах. Нашел даташит на светодиоды максимальное напряжение 2,5В, ток 10мА, решил проверить и подключить светодиод без резистора на другой пин, сгорит так сгорит, но на удивление он светит абсолютно так же как и на 13 пине, как это объяснить? Получается там и не пахнет +5v. Плата Freeduino 2009.

Скорее всего проблема не в напряжении а в токе, и не в дуине а в компе. Стандарт усб 5в 500мА, но стандарт - одно, а реальность - другое. Кроме того на ноутах часто ради экономии питания снижают макс. ток усб до 100мА (чаще всего это в биосе переключается). В любом случае без тестера не поймешь.

53

(9 ответов, оставленных в Технические вопросы)

Сергей Деменков пишет:
GPP пишет:

Это реально вообще? Они такие маленькие! У меня больше нет вариантов? :(

Глаза боятся, а руки делают! Ничего страшного в этом нет. Тонкие заранее залуженые проводки (удобно шлейф старый от HDD), нормальный не кислый флюс (ЛТИ-120 самое то что надо), тонкий паяльник, твердые руки, вот и все, что нужно :)

...а самостоятельные изменения в модуле - это ребята весело написали - видать имели в виду, что штыревуху проще перепаивать, чем SMD, но по факту, лично мне, при необходимости, допустим отключить светодиод PWR (ну, например я ток потребления уменьшаю) проще SMD'шный резистор выпаять, чем штыревой.

Вместо флюса, удобнее взять пасту паяльную, что нить типа тиноль. При паяльнике заточеном под шило - самое оно.

а какая именно у тебя дуина? Определение питания влиять не должно. Все таки попробуй запитать от батарейки с включенным последовательно амперметром.

Вообще блок питания стоит брать больше чем 500мА, особенно если это что-то неизвестного происхождения. Слишком часто заявленные параметры бп не соответствуют действительности. В качестве примера: у меня валяется штук 6 бп от свичей разных, один - 9в 700мА, меряю 8.3В с нагрузкой на 480мА уже не тянет. Правда амперметр - китайский тестер, и доверия ему тож мало. Проверь не от бп а от батарейки на 9в.

56

(2 ответов, оставленных в Технические вопросы)

Вообщето серва не должна выключаться, ее смысл в том чтоб удерживать угол. Если уж очень хочешь выключать то пусти питание сервы через транзисторный ключ и задействуй еще один выход  на управление ключом.

Что то маловато тут самоделок выкладывают.
Прочитал я про http://robocraft.ru/blog/204.htmlУправление компьютером при помощи ИК приемника + Arduino, интересно, но мне хотелось бы управлять не компом а лампочкой.
Сначала принципиальная схема:
http://mogalkov.ath.cx/ircontrol/E3.JPG
Перечень элементов:

  • V+    = 5в

  • C1    = 100n

  • C2    = 100n

  • C5    = 100n

  • C6    = 470µ

  • HL1    = светодиод, цвет по вкусу

  • HL3    = светодиод, цвет по вкусу

  • IC1    = ATMEGA168-20PU

  • IR1    = TSOP31236

  • K1    =  реле 834-1A-B-C 5V - 10A 277V AC

  • R1    = 1k

  • R4    = 100

  • R5    = 120

  • R6    = 120

  • R8    = 100

  • VD2    =  диод, подойдет любой.

  • VT1    = KT315б

  • X1    = 16MHz

Пульт использовал старого тв тюнера пинакл.
Коды пульта в тупую копировал из терминала putty.
Сначала использовал время чтения сигнала 130, потом сократил до 64мс, по идее для этого пульта мог и до 32.
Основу скетча взял из указанной выше статьи.

  int mStr;// время старта
  int mStop; // значения времени в момент считывания
  int Str; // значения времени в момент считывания
  int Stop; // значения времени в момент считывания
  int i; // буфер
  int j; //счетчик символов
  boolean oneStep = false; // начало приёма кода
  boolean lastStep = false; //окончание кода

//
//
//кнопка 1
//код кнопки (то что передает пульт)
boolean sostA[130]={0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
//состояние действия кнопки (нужно только если одна кнопка имеет несколько действий, пример:включить - выключить)
int statA=0;
//статус сравнения при нажатии
int sostRA=0;
//кнопка 2        //0,0,0,0,1,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
boolean sostB[130]={0,0,0,0,1,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int statB=0;
int sostRB=0;
//кнопка вверх 000011111101110000111111001111111111111111111111111111111111111
boolean sostUP[130]={0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int statUP=0;
int sostRUP=0;
//кнопка низ 000011111100110011101111001111111111111111111111111111111111111
boolean sostDN[130]={0,0,0,0,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int statDN=0;
int sostRDN=0;
//кнопка центр       0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
boolean sostMD[130]={0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int statMD=0;
int sostRMD=0;


//Сравнение кнопок, определение какая нажата
void keyread(){
  //кнопка 1
     if (i != sostA[j]){sostRA=sostRA+1;}
  //кнопка 2
     if (i != sostB[j]){sostRB=sostRB+1;}
  //кнопка низ
     if (i != sostDN[j]){sostRDN=sostRDN+1;}
  //кнопка вверх
     if (i != sostUP[j]){sostRUP=sostRUP+1;}
  //кнопка центр
     if (i != sostMD[j]){sostRMD=sostRMD+1;}

}

//Выбор действия кнопки
void keyobrabotka()
{
  //кнопка 1
      if (sostRA==0){Serial.println("KEY A");if (statA==0){digitalWrite(7,HIGH);statA=1;}else if (statA==1){digitalWrite(7,LOW);statA=0;}}
  //кнопка 2
      if (sostRB==0){Serial.println("KEY B");if (statB==0){digitalWrite(10,HIGH);statB=1;}else if (statB==1){digitalWrite(10,LOW);statB=0;}}
  //кнопка низ
      if (sostRDN==0){Serial.println("KEY DOWN");}
  //кнопка вверх
      if (sostRUP==0){Serial.println("KEY UP");}
  //кнопка центр
      if (sostRMD==0){Serial.println("KEY MID");}

//сбрасываем состояния кнопок
sostRA=0;
sostRB=0;
sostRDN=0;
sostRUP=0;
sostRMD=0;
}


void setup()
{
  Serial.begin(9600);
  digitalWrite(13,HIGH);
  pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9,INPUT);
}

void loop() {

 mStr = micros();
 Str = millis();
 j = 0;

  if ((digitalRead(9) == 0)) {
  for(;;)
  {
    
    i = digitalRead(9);// считывание кода
    
    if(i == 0) 
    {
      digitalWrite(13,LOW);
    } else {
      digitalWrite(13,HIGH);
    }
    
    Serial.print(i,DEC);
    mStop = micros();
    //сравнение кнопок
    keyread();
    j = j + 1;
//определение конца передачи
    Stop = millis();
    if ((Stop - Str) >= 64) //Время чтения сигнала с пульта. Этот параметр для разных пультов может быть разным.
    {
      //Выбор действия кнопки
      keyobrabotka();
      Serial.println("END");//предаем 3 чтобы на компьютере отследить конец кода
      Serial.println(j,DEC);//передаем количество символов
      oneStep = false;
      j=0;
      break;
    }
  }
  }
}

Так как пускать на такое устройство дуину слишком жирно, использовал микроконтроллер (такой как и на дуине ATmega168-20PU) отдельно, чтобы не вытаскивать-вставлять туда суда МС, прошивал через ISP, на дуине около микросхемы FT232RL 4е вывода (у некоторых не распаяны) - это ISP программатор. Для прошивки ATMEGA168-20PU цепляем: 4й вывод к 1й ножке, 3й вывод к 17й ноге, 2й вывод к 19, 1й к 18й. Для прошивки использовал avrdude + avrdudeGUI. Чтобы узнать куда кладется hex файл кнопку компиляции нажимать надо вместе с шифтом.
Копируем путь.
http://mogalkov.ath.cx/ircontrol/compile.jpg
после компиляции копируем путь к файлу Вставляем в дудку и шьем.
http://mogalkov.ath.cx/ircontrol/avrdudeGUI.jpg
Вставляем в дудку и шьем
Видеопример работы:
На видео вместо реле я управляю светодиодом, так как контакты реле не влезли в макетку.
http://www.youtube.com/watch?v=rmZPLCte … r_embedded
По сравнению с макетом много в задумке поменялось.
Поменялась немного схема:
http://mogalkov.ath.cx/ircontrol/E3_02sm.JPG
соответственно и перечень элементов к ней. Некоторые элементы брал именно такие потому что были именно они, ничего другого не оказалось под рукой, а купить не позволило склизкое зеленое животное, сдавив горло перепончатой лапой:

  • C1    470µ 25v

  • C2    470µ 25v

  • C3    100n

  • C4    100n

  • C5    100n

  • HL1    зеленый

  • IC1    ATMEGA168-20PU

  • IR1    TSOP31236

  • K1    834-1A-B-C 5V 10A 277V AC

  • R1    120

  • R2    1k

  • R3    100

  • R4    120

  • VD1    1N5408

  • VD2    1N5408

  • VR1    7805

  • VT1    KT315б

  • X1    16MHz

Вот так выглядит печатная плата, правда вместо трансформатора и диодного моста я приклеил маленький импульсный блок питания на 6В 450мА от какого то старого, давно разобранного мобильника (трансформатор что хотел поставить сначала, 12В 1А, слишком громоздкий, да и для чего-нибудь другого сгодтся):
http://mogalkov.ath.cx/ircontrol/plata-004sm.JPG Перемычкой JP1 планировал возможность выбора питания, на случай если не найду реле на 5в. В скетче заменил 7й выход на 11й.
Тем кто захочет повторить это, вот  http://mogalkov.ath.cx/ircontrol/atmega168rele004.layплата в формате lay
Не очень компактно, не очень аккуратно, но я все равно это в стену замурую.

Ну а вот так это выглядит в готовом виде (сторону с дорожками я уже залил термоклеем, если не придумаю корпус, то залью и все остальное):

http://www.youtube.com/watch?v=nuGGmSE-j3M


Уменьшить размер можно: за счет блока питания (например безтрансформаторный бп с гасящим конденсатором), за счет МК (вместо ATmega168-20PU использовать ATmega168-20АU), за счет реле (вместо реле - симистор)

58

(11 ответов, оставленных в Технические вопросы)

Проверь работоспособность атмеги, какой именно скетч был в ней когда пожог? Вынь атмегу и посмотри как она отдельно, без остального работает. для этого  на 9 и 10 ножки вешаешь кварц 16МГц на 7 и 20 +5В, на 8 и 21 -, если записан был стандартный блинк то через резистор на 19пин пускаешь светодиод.

59

(9 ответов, оставленных в Технические вопросы)

Это реально, но очень сложно. Другие варианты есть:
1) Найти кого нить кто прошьет тебе.

2) Купить или собрать программатор.
Вот простой программатор на LPT порт
http://www.myrobot.ru/stepbystep/mc_programmer.php
http://eldigi.ru/site/programmators/2.php
Единственно что где то читал что если ошибешься можешь порт пожечь.

3) Купить еще одну дуину с разъемом.

60

(9 ответов, оставленных в Технические вопросы)

Видимо не получится, взглянул я на принципиальную схему: http://freeduino.ru/arduino/files/freed … scheme.gif там не разведено, то есть если хочешь получить программатор надо аккуратно подпаивать выводы к ft232rl там 11 - Reset, 9 - MOSI, 10 - MISO, 6 - SCK, Более точно посмотри как тут выведено: http://freeduino.ru/arduino/files/freed … scheme.gif

61

(1 ответов, оставленных в Технические вопросы)

Ты не привел схему подключения. По идее неплохо бы вход подтянуть к земле резистором на 10К.

62

(9 ответов, оставленных в Технические вопросы)

http://www.freeduino.ru/arduino/isp.html
Соединение с Arduino такое: 10 - Reset, 11 - MOSI, 12 - MISO, 13 - SCK

63

(2 ответов, оставленных в Технические вопросы)

amin пишет:

Здрасте, у меня такой вопрос, ддопустим я залил скетч на мк, а как удалить этот скетч из МК для заливки другого. Спасибо

Если ты заливал скетч средствами ардуино, то ничего удалять не надо, просто также как заливал льешь новый.

64

(5 ответов, оставленных в Технические вопросы)

Ale0m пишет:
mogalkov пишет:
Ale0m пишет:

спасибо большое, а вот матрицы для этих целей не подойдут?

Какие именно матрицы? В любом случае управлять ими желательно через контроллер или хотя бы транзистор от отдельного питания,  тогда точно подойдут. Напрямую скорее всего у дуины (любой) просто мощи не хватит.

вот, можно по подробнее пор котнроллер или транзистор от. питания... ну матрицы, я как бэ разновидностей много не видел, пока прицельно RGB...

Не зная что за матрица тебе врятли ктото что подскажет. Подбирается по параметрам, могут быть и со встроиными контроллерами.  Вариантов слишком много.  Кроме вопроса питания, вопрос количества самих светодиодов в матрице, у большинства дуин всего 14 цифровых выходов, а значит без дополнительных расширителей можно управлять 14ю сверодиодами. РГБ - это 3 светодиода в 1 корпусе, значит всего ты сможешь управлять 4мя РГБ и 2а порты дуины не заняты (скажем 0й и 1й для управления с компа)

Вот пример развязки на транзисторах, на биполярном и полевом мосфете, управляющих 12в нагрузкой. Но это именно пример и под определенные ситуации надо подбирать определенные детали:
http://mogalkov.ath.cx/shemATM168.jpg

65

(5 ответов, оставленных в Технические вопросы)

Ale0m пишет:

спасибо большое, а вот матрицы для этих целей не подойдут?

Какие именно матрицы? В любом случае управлять ими желательно через контроллер или хотя бы транзистор от отдельного питания,  тогда точно подойдут. Напрямую скорее всего у дуины (любой) просто мощи не хватит.

66

(5 ответов, оставленных в Технические вопросы)

Ale0m пишет:

вообщем, я только начинающий "техник", у меня преподователь, и друг зангимаются именно робототехникой, меня же интересует тоже программирование, но маленько другое, меня же больше интересуют световые эффекты, системы, вообщем всё с цветом, а главное, что можно будет спокойно где нибудьт применять, элементарный пример, прикрепление на одежду... вот к чему я клоню, какую плату нужно, для осуществления данных намерений... а то как бы щас сам выберу. закажу а окажется что-то не то, вот спрашиваю совет у экспертов...

Для игр со светодиодами они точно все подайдут, но в твоем случае имхо лучше брать nano без распайки ножек, только изза размера, ведь по идее на одежду чем меньше - тем лучше.  http://freeduino.ru/arduino/freeduino_nano.html

67

(1 ответов, оставленных в Технические вопросы)

Основная задача - выяснить как работает пульт, и какой протокол использует.
Вешаешь на дуину ИК-диод, и мигаешь.  Вот несколько ссылок:
http://radiokot.ru/articles/14/index.shtml
http://radiokot.ru/articles/16/index.shtml
http://robocraft.ru/blog/204.html

как ардуино шьет саму себя описано тут:
http://freeduino.ru/arduino/isp.html
http://www.pobot.ru/topic/show/103/
http://www.hobbytronic.ru/instrumenty-r … zchik.html

А по поводу скетча, ну просто МК с записанным скетчем из панельки дуины вытаскиваешь и ставишь в панельку устройства.  Вот здесь кто-то таким образом цветной фонарик делал:
http://www.freezelight.ru/archives/1300

Можно, но с 1им транзистором - только включить-выключить двигатель постоянного тока , понадобится несколько, и MotorShield для этого точно не нужен.

MotorShield управляет током до 0.6А (можно увеличить до 1.2А напаяв микрухи L293D одна на другую).  Для 20А тебе надо искать подходящий драйвер двигателей.

Заказывал у вас недавно ATmega168, и к сожалению в комплект не входит установочная панелька. Думаю она бы не намного увеличила цену, но было бы удобней.
Также не очень понравилось что на Motor Shield v2  микросхемы впаяны, а не на панельках.
Как написано у вас в описание шилда:
" с целью увеличения допустимой токовой нагрузки в два раза, можно напаять на микросхему L293D «нога к ноге» ещё одну L293D, это позволит управлять более мощными двигателями с максимально-продолжительным током в каждом канале управления до 1,2 А. "
Но без панелек это не очень удобно.

72

(6 ответов, оставленных в Технические вопросы)

R1 должен быть больше любого другого. Основная его задача создавать разницу. По сути вся эта конструкция (R1 - S - Rs) это как потенциометр, только не переменный (делитель напряжения).
Если напряжение между землей и аналог_ин = 0 - то значение со входа 0,
Если напряжение между землей и аналог_ин = 5 - то значение со входа 1024.

Проще как я сказал чтобы не считать, если только не хочешь действительно 1024 кнопки ставить, поставить  где то от 10К-100К R1 и подберать остальные с шагом в 1K.

Одновременное нажатие 2х клавиш это как нажатие другой клавиши с резистором Rд где 1/Rд=1/R1+1/R2 (паралельное включение резисторов) по этому если клавиш не очень много, то проще все варианты одновременного нажатия либо перебрать на тесте и использовать, либо просто игнорировать (нажато несколько = не нажато ни одной).

73

(6 ответов, оставленных в Технические вопросы)

Примерно так:
http://mogalkov.ath.cx/button.jpg

Таким способом можно на 1 вывод очень много кнопок повесить (вроде analogRead понимает от 0 до 1024) но для большего количества нужно смотреть с резисторами. Номиналы резисторов совершенно не обязательно такие.
Нажатие кнопки проще не высчитывать а определить тестовым скетчем:

int buttpin0 =2; //номер входа
int buttval0 =0; //результат значения входа
void setup(){Serial.begin(9600);} //включаем порт

void loop(){
buttval0 = analogRead(buttpin0); //снимаем значение со входа
Serial.println(buttval0); //отправляем значение в терминал
delay(3000); //ждем
}

Собственно смотришь в терминале у какой кнопки какое значение buttval0 .

Недостаток у метода 1: одновременное нажатие нескольких кнопок воспринимается как отдельная кнопка (собственно если планируется одновременное нажатие то его также можно протестировать). протестировать

74

(3 ответов, оставленных в Технические вопросы)

mogalkov пишет:

Кому интересно - нашел драйвер, на семерку, работает. http://www.efo.ru/doc/Ftdi/Ftdi.pl?784

Странно, но возможно дело в том что у меня win7 64

75

(3 ответов, оставленных в Технические вопросы)

nep пишет:

Только только начинаю знакомиться с Freeduino Nano v.5.8. Собираю схему с датчиками. общее питание устройства 24В. Для питания Freeduino выбираю DC/DC. Отсюда вопрос - какой ток потребления от 5 В? Можно и не по Nano. У меня есть еще Freeduino 2009

Ну учитывая что питается Freeduino от USB, то <0.8A. Это стандарт ограничения порта usb. Также  зависит это от того что ты в дуину воткнешь.  Но тебе никто не мешает померить.