ATtiny13A 101 применение

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

karl2233 пишет:

да я цеплял резистор, а программно не получается - пишет  "was not declared in scope"

трабл,

дома с макеткой нужно глянуть, почему не работает как нужно.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

отож...

самое прикольное, что если заливать в Ардуино - то всё работает как надо (даже без указания что делать при РВ3=1).

а вот в Тини13... (

upd.

может надо применить что-то вроде оператора Switch? 

но не понятно почему в Ардуино работаеткод, а тут нет.

 

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

karl2233 Подправил в протеусе все работает,

в архиве проект протеуса и скетч.

 

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

огроменное спасибо!

подскажи пожалуйста, как сделать так, что б когда на РВ3 была лог 1 кнопка не изменяла состояние портов.

а то щас получается так:

1. на порту РВ3 лог 0 - всё переключает как надо.

2. отключаю порт РВ3 от общего(он через резистор 10к на +5В) и светодиоды на портах РВ0-РВ2 светят тусклее, значит там не лог 1 а что-то среднее. А если нажать кнопку то светодиоды на портах РВ0-РВ2 зажигаются хаотически, т.е. кнопка действует.

3. Мало того, когда отключаю РВ3 от общего, то сотояние портов изменяется на то, которого нет в скетче(т.е. получается дополнительный режим какой-то).

 

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

вот, так уже лучше стало:

#define Butt  PB4    // кнопка
#define Curr  PB2  // переключение тока
#define OnLi  PB1   // включение LI-Io
#define OnNi  PB0   // включение Ni-Mh
#define Sel   PB3   // порт разрешения считывания состояний кнопки
int regim=1; 
int flag=0;
int CelCurr=0;
void setup() {
  pinMode(Curr, OUTPUT);
  pinMode(OnLi, OUTPUT);
  pinMode(OnNi, OUTPUT);
  pinMode(Butt, INPUT);
  pinMode(Sel, INPUT);
}

 void loop()  { 
if(digitalRead(Sel)==LOW)
{
    if(digitalRead(Butt)==LOW&&flag==0)//если кнопка нажата, на РВ3 лог 0 и переменная flag равна 0  
        {
       regim++;   
       flag=1; 
       if(regim>4)//количество режимов 
         { 
          regim=1;//переключать режимы будем циклично 
         } 
      } 
       
    if(digitalRead(Butt)==HIGH&&flag==1)//если кнопка НЕ нажата и переменная flag равна - 1 
        {           
          flag=0;//обнуляем переменную 
        } 
        
     if(regim==1)//первый режим 
        { 
           digitalWrite(Curr, LOW);// ток "MIN"
           digitalWrite(OnLi, HIGH);// запрет Li-IO
           digitalWrite(OnNi, LOW);// выбран Ni-Mh 
        } 
      if(regim==2)//второй режим 
        {         
           digitalWrite(Curr, HIGH);// ток "MAX"
           digitalWrite(OnLi, HIGH);// запрет Li-IO
           digitalWrite(OnNi, LOW);// выбран Ni-Mh 
        } 
     if(regim==3)//третий режим 
        { 
           digitalWrite(Curr, LOW);// ток "MIN"
           digitalWrite(OnLi, LOW);// выбран Li-IO
           digitalWrite(OnNi, HIGH);// запрет Ni-Mh
        } 
     if(regim==4)//четвертый режим 
        {
           digitalWrite(Curr, HIGH);// ток "MAX"
           digitalWrite(OnLi, LOW);// выбран Li-IO
           digitalWrite(OnNi, HIGH);// запрет Ni-Mh 
        }
}
   }

вот этот код в Ардуино работает как надо:

int Butt = 3;// кнопка
int Curr = 4;// переключение тока
int OnLi = 5;// включение LI-Io
int OnNi = 6;// включение Ni-Mh
int Sel = 2;// порт разрешения считывания состояний кнопки
int regim=1; 
int flag=0;
//long previousMillis = 0;


void setup() {
  pinMode(Curr, OUTPUT);
  pinMode(OnLi, OUTPUT);
  pinMode(OnNi, OUTPUT);
  pinMode(Butt, INPUT);
  pinMode(Sel, INPUT);
}

 void loop()  { 
  if(digitalRead(3)==LOW&&flag==0&&(digitalRead(2)==LOW))//если кнопка нажата, на вхорде 2 лог 0 и перемення flag равна 0 , то ... 
     { 
       //millis() - previousMillis >50;
       regim++;   
       flag=1; 
       if(regim>4)//ограничим количество режимов 
         { 
          regim=1;//так как мы используем только одну кнопку,то переключать режимы будем циклично 
         } 
       
     } 
       
     if(digitalRead(3)==HIGH&&flag==1)//если кнопка НЕ нажата и переменная flag равна - 1 ,то ... 
        {           
           flag=0;//обнуляем переменную 
        } 
     if(regim==1)//первый режим 
        { 
           digitalWrite(Curr, LOW);// ток "MIN"
           digitalWrite(OnLi, HIGH);// запрет Li-IO
           digitalWrite(OnNi, LOW);// выбран Ni-Mh 
        } 
      if(regim==2)//второй режим 
        {         
           digitalWrite(Curr, HIGH);// ток "MAX"
           digitalWrite(OnLi, HIGH);// запрет Li-IO
           digitalWrite(OnNi, LOW);// выбран Ni-Mh 
        } 
     if(regim==3)//третий режим 
        { 
           digitalWrite(Curr, LOW);// ток "MIN"
           digitalWrite(OnLi, LOW);// выбран Li-IO
           digitalWrite(OnNi, HIGH);// запрет Ni-Mh
        } 
     if(regim==4)//четвертый режим 
        {
           digitalWrite(Curr, HIGH);// ток "MAX"
           digitalWrite(OnLi, LOW);// выбран Li-IO
           digitalWrite(OnNi, HIGH);// запрет Ni-Mh 
        }
        
  } 

в общем, победил я это )))))))))))

в чём причина была - хз, но оба кода в этом сообщении работают как надо: светодиодики переключаются "чисто", без паразитных засветов и прочего непотребства.

грешу на провода, которым подключал Тини13 на макетке, ибо ничего другого я не менял.

ну и условие чтения порта РВ3 задал в самом начале тела программы.

спасибо всем кто помогал!

гуртом и батька бити веселише(с)

з.ы. так я теперь великий программист  - уже вторую программу написал!

скоро буду издавать книгу  - "Моя борьба"(о программировании, а не то што вы подумали).

 

T3RAN13
Offline
Зарегистрирован: 04.06.2016

I need help!!!

Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:

1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на  _delay_ms(), но стало хуже.

2. цикл вайл работает непонятно -  выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.

использую Attiny13A PU, шью через USBasp.

вот скетч


#define hydrometr PB1
#define hydrometrData PB4
#define pump PB0
#define indicator PB2

void setup() {
   pinMode(hydrometr, OUTPUT); // питание на влагометр
   pinMode(pump, OUTPUT); // питание насос
   pinMode(hydrometrData, INPUT); // показания влагометра: 1- сухо; 0- влажно.
   pinMode(indicator, OUTPUT); // индикатор

   digitalWrite(pump, LOW); //выключаем насос
   digitalWrite(hydrometr, LOW); //выключаем влагометр
}

void loop() {
  digitalWrite(indicator, HIGH); //включаем индикатор
  delay(1000);
  digitalWrite(indicator, LOW); //выключаем индикатор
  
  digitalWrite(hydrometr, HIGH); //включаем влагометр
  delay(3000);
  int waterSensor = digitalRead(4); //показание влагометра
  delay(100);
  digitalWrite(hydrometr, LOW); //выключаем влагометр
  
  delay(1000);
  
  if (waterSensor == HIGH) { //если влагометр показывает засуху
      digitalWrite(pump, HIGH); //включаем насос
      delay(12000);
      digitalWrite(pump, LOW); //выключаем насос
  }

  delay(1000);

  indicatorLight();
}

void indicatorLight() {
  byte iStart = 0;
  byte iEnd = 180;
  while(iStart < iEnd){
    digitalWrite(indicator, HIGH); //включаем индикатор
    delay(1000);
    digitalWrite(indicator, LOW); //выключаем индикатор
    delay(9000);
    iStart++;
  }
}

 

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13 пишет:

I need help!!!

Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:

1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на  _delay_ms(), но стало хуже.

2. цикл вайл работает непонятно -  выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.

использую Attiny13A PU, шью через USBasp.

вот скетч


#define hydrometr PB1
#define hydrometrData PB4
#define pump PB0
#define indicator PB2

void setup() {
   pinMode(hydrometr, OUTPUT); // питание на влагометр
   pinMode(pump, OUTPUT); // питание насос
   pinMode(hydrometrData, INPUT); // показания влагометра: 1- сухо; 0- влажно.
   pinMode(indicator, OUTPUT); // индикатор

   digitalWrite(pump, LOW); //выключаем насос
   digitalWrite(hydrometr, LOW); //выключаем влагометр
}

void loop() {
  digitalWrite(indicator, HIGH); //включаем индикатор
  delay(1000);
  digitalWrite(indicator, LOW); //выключаем индикатор
  
  digitalWrite(hydrometr, HIGH); //включаем влагометр
  delay(3000);
  int waterSensor = digitalRead(4); //показание влагометра
  delay(100);
  digitalWrite(hydrometr, LOW); //выключаем влагометр
  
  delay(1000);
  
  if (waterSensor == HIGH) { //если влагометр показывает засуху
      digitalWrite(pump, HIGH); //включаем насос
      delay(12000);
      digitalWrite(pump, LOW); //выключаем насос
  }

  delay(1000);

  indicatorLight();
}

void indicatorLight() {
  byte iStart = 0;
  byte iEnd = 180;
  while(iStart < iEnd){
    digitalWrite(indicator, HIGH); //включаем индикатор
    delay(1000);
    digitalWrite(indicator, LOW); //выключаем индикатор
    delay(9000);
    iStart++;
  }
}

 

Схему подключения выложите.

И задержки delay больше 3000 лучше не использовать заменить на милис.

Zahar
Zahar аватар
Offline
Зарегистрирован: 16.11.2013

Попробуй использовать версию 1,0,5. Мне кажеться она корректнее работает.

По поводу кода, мне кажеться он какойто кривоватенький.

1) Для чего 17,18,19 строки? Их можно перенести в setup.

2) В 23 строке, почему int а не boolean?

3) В 23 строке, почему 4 а не hydrometrData?

4) Зачем запускать помпу на 12 сек, ведь не известно хватит ли воды или наоборот перебор. Затем ждать секунду и моргать херову тучу раз, не известно что этим сигнализируя.

Почему просто не замерять постоянно влажность и если не хватает то включить помпу на несколько секунд, замерить снова и т.д.

А индекатор например включать только в том случае если всё ОК или НЕ ОК.

Да и вот ещё, попробуй работать на частоте 9,6MHz.

T3RAN13
Offline
Зарегистрирован: 04.06.2016

bodriy2014 пишет:

T3RAN13 пишет:

I need help!!!

Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:

1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на  _delay_ms(), но стало хуже.

2. цикл вайл работает непонятно -  выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.

использую Attiny13A PU, шью через USBasp.

вот скетч

#define hydrometr PB1
#define hydrometrData PB4
#define pump PB0
#define indicator PB2

void setup() {
   pinMode(hydrometr, OUTPUT); // питание на влагометр
   pinMode(pump, OUTPUT); // питание насос
   pinMode(hydrometrData, INPUT); // показания влагометра: 1- сухо; 0- влажно.
   pinMode(indicator, OUTPUT); // индикатор

   digitalWrite(pump, LOW); //выключаем насос
   digitalWrite(hydrometr, LOW); //выключаем влагометр
}

void loop() {
  digitalWrite(indicator, HIGH); //включаем индикатор
  delay(1000);
  digitalWrite(indicator, LOW); //выключаем индикатор
  
  digitalWrite(hydrometr, HIGH); //включаем влагометр
  delay(3000);
  int waterSensor = digitalRead(4); //показание влагометра
  delay(100);
  digitalWrite(hydrometr, LOW); //выключаем влагометр
  
  delay(1000);
  
  if (waterSensor == HIGH) { //если влагометр показывает засуху
      digitalWrite(pump, HIGH); //включаем насос
      delay(12000);
      digitalWrite(pump, LOW); //выключаем насос
  }

  delay(1000);

  indicatorLight();
}

void indicatorLight() {
  byte iStart = 0;
  byte iEnd = 180;
  while(iStart < iEnd){
    digitalWrite(indicator, HIGH); //включаем индикатор
    delay(1000);
    digitalWrite(indicator, LOW); //выключаем индикатор
    delay(9000);
    iStart++;
  }
}

 

Схему подключения выложите.

И задержки delay больше 3000 лучше не использовать заменить на милис.

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

 

Zahar пишет:

Попробуй использовать версию 1,0,5. Мне кажеться она корректнее работает.

По поводу кода, мне кажеться он какойто кривоватенький.

1) Для чего 17,18,19 строки? Их можно перенести в setup.

2) В 23 строке, почему int а не boolean?

3) В 23 строке, почему 4 а не hydrometrData?

4) Зачем запускать помпу на 12 сек, ведь не известно хватит ли воды или наоборот перебор. Затем ждать секунду и моргать херову тучу раз, не известно что этим сигнализируя.

Почему просто не замерять постоянно влажность и если не хватает то включить помпу на несколько секунд, замерить снова и т.д.

А индекатор например включать только в том случае если всё ОК или НЕ ОК.

Да и вот ещё, попробуй работать на частоте 9,6MHz.

для версии 1.0.5 коре создает толстопопые скетчи, я в 1 кб не влезу.

1-3 пофикшу и попробую

4) это автоматическая поливалка, влажность почвы измеряю перед поливом. если помпа даже поработает в хоолостую - не смертельно.

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

Индикатором я мигаю чб понять что все работает(дебаг) и батарейка не сдохла. раз в 10 секунд мигнуть не смертельно опять же. А вот цикл проверки раз в пол часа. с такой частотой мигать мне не улыбается, дебажить не реально.

у меня на частоте 9.6 больше для delay(1000) по факту 10 секунд задержка

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13 пишет:

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

--В схеме подтяните резистором ресет к VCC, это обязательно, иначе будут не произвольные ресеты.

--функция delay тоже не останавливает контроллер, он просто стоит в ней и щелкает. Выше 3000 особенно в тини она работает плохо!

T3RAN13
Offline
Зарегистрирован: 04.06.2016

bodriy2014 пишет:

--В схеме подтяните резистором ресет к VCC, это обязательно, иначе будут не произвольные ресеты.

--функция delay тоже не останавливает контроллер, он просто стоит в ней и щелкает. Выше 3000 особенно в тини она работает плохо!

какое максимальное значение отдает millis()??

за ресет спс

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

2N7000 всего 400мА - для движка нормально будет?

и ещё, мне кажется что такое устройство проще сделать без МК, на 555 таймере или триггере

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13 пишет:

какое максимальное значение отдает millis()??

за ресет спс

Переменная нужна unsigned long, гуглится легко

millis()

Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.

 

Zahar
Zahar аватар
Offline
Зарегистрирован: 16.11.2013

T3RAN13 пишет:

для версии 1.0.5 коре создает толстопопые скетчи, я в 1 кб не влезу.

1-3 пофикшу и попробую

4) это автоматическая поливалка, влажность почвы измеряю перед поливом. если помпа даже поработает в хоолостую - не смертельно.

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

Индикатором я мигаю чб понять что все работает(дебаг) и батарейка не сдохла. раз в 10 секунд мигнуть не смертельно опять же. А вот цикл проверки раз в пол часа. с такой частотой мигать мне не улыбается, дебажить не реально.

у меня на частоте 9.6 больше для delay(1000) по факту 10 секунд задержка

Засунул твой скетч в 1.0.5 = 556 байт, так что всё влезает.

зачем на схеме R2, чтобы греть вселенную?

MOSFET поставь из старой материнки или IRL3705.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13

По схеме как уже заметили выше есть вопросы, дополнил вашу схему и считаю что это необходимый минимум чтоб работало.

-резистор на ресет 10К или около

-резистор подтяжки мосфета к земле нужен 10К или около, если не поставите будет закрываться в линейном режиме сгорит.

-резистор на затвор мосфета от 150 до 300 чтоб защитить порт тини13

-кондеры по питанию тини13 и движка обязательны! на тини13 от 10 до 50, на движок от 100 и выше.

-и это при условии что ключ должен от 5В открываться, с материнок самое то.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

а может у кого есть работающая и проверенная схема 4-х сенсорных кнопок на Attiny13/85?

Выход - 4 линии LO/HIGH, или в SoftwareSerial, или любой другой способ кодирования по двум проводам.

 

T3RAN13
Offline
Зарегистрирован: 04.06.2016

karl2233 пишет:

2N7000 всего 400мА - для движка нормально будет?

и ещё, мне кажется что такое устройство проще сделать без МК, на 555 таймере или триггере

норма, там потребление у движка 200макс, у меня на 50мА отлично работает). я не хочу сенсор постоянно включенным держать, зачем опыты по электролизу в горшке??? сенсор раствориться.

T3RAN13
Offline
Зарегистрирован: 04.06.2016

bodriy2014 пишет:

Переменная нужна unsigned long, гуглится легко

millis()

Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.

 

спасибо, у нас не ардуина, потому и спрашиваю

T3RAN13
Offline
Зарегистрирован: 04.06.2016

bodriy2014 пишет:

T3RAN13

По схеме как уже заметили выше есть вопросы, дополнил вашу схему и считаю что это необходимый минимум чтоб работало.

1) -резистор на ресет 10К или около

2) -резистор подтяжки мосфета к земле нужен 10К или около, если не поставите будет закрываться в линейном режиме сгорит.

3) -резистор на затвор мосфета от 150 до 300 чтоб защитить порт тини13

4) -кондеры по питанию тини13 и движка обязательны! на тини13 от 10 до 50, на движок от 100 и выше.

5) -и это при условии что ключ должен от 5В открываться, с материнок самое то.

1) уже сделал

2) от чего сгорит,у  меня там сопротивление ток ограничивает через сток???

3) тут тоже не понимаю, зачем порт спосать от полевика??? там же не считая токов утечек через врата только напряжение на них, или я что-то не понимаю???

4) конденсаторы тоже не понимаю за чем, во первых в стабилизаторах они уже наверняка какие-то присутвуют, во вторых токи потребления в первом случае будет где-то в раене 30-40мА, во втором 50мА. Плюс сами сабилизаторы с защитой и не отдадут более 100мА на нос. поэтому не понимаю зачем там кондеры???

5) это я так понял предлагаете от юсб запитываться??? мне мобильность важнее, я от кроны питаюсь)

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13 пишет:

1) уже сделал

2) от чего сгорит,у  меня там сопротивление ток ограничивает через сток???

3) тут тоже не понимаю, зачем порт спосать от полевика??? там же не считая токов утечек через врата только напряжение на них, или я что-то не понимаю???

4) конденсаторы тоже не понимаю за чем, во первых в стабилизаторах они уже наверняка какие-то присутвуют, во вторых токи потребления в первом случае будет где-то в раене 30-40мА, во втором 50мА. Плюс сами сабилизаторы с защитой и не отдадут более 100мА на нос. поэтому не понимаю зачем там кондеры???

5) это я так понял предлагаете от юсб запитываться??? мне мобильность важнее, я от кроны питаюсь)

2-мосфет расчитан на работу в режиме ключа, если будет медленно закрываться он будет дополнительным сопротивлением в цепи и может не выдержать по тепловыделению.

3-затвор мосфета это кандер  при открытии токи там в импульсе АЦЦКИЕ порт может не выдержать, резистор их ограничивает. Вот хорошая статья.

4-в линейных стабилизаторах по даташиту положенны конденсаторы.

5-вы не писали что от батарейки, тогда линейные стабилизаторы это лажа они выжрут батарейку(((

 

T3RAN13
Offline
Зарегистрирован: 04.06.2016

bodriy2014 пишет:

5-вы не писали что от батарейки, тогда линейные стабилизаторы это лажа они выжрут батарейку(((

какие варианты для батарейки?

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13 пишет:

какие варианты для батарейки?

Оптимальнее всего вообще не преобразовывать.

Подобрать источник питания чтоб питал и тини а насос .

сколько нужно насосу чтоб качал?

--Например взять две банки литиевых АКБ и последовательно соединить, насос питается от двух банок а тини отпервой.Заряжать отсоединяя, паралельно чтоб балансировались.

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

--или одна банка лития от нее питается тини и от нее повышающий ДС питает насос.

T3RAN13
Offline
Зарегистрирован: 04.06.2016

Тогда мне проще солнечную батарею 12В с суперконденсатором на 100 фарад к текущей схеме прикрутить)

Но за помощ спасибо)

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

T3RAN13 пишет:

Тогда мне проще солнечную батарею 12В с суперконденсатором на 100 фарад к текущей схеме прикрутить)

Но за помощ спасибо)

Ваших возможностей не знаю, но кроны дорогие и стабы +насос их жрать будут пачками!)

Мне больше нравится связка солнечная+литий.

У суперконденсатора емкость большая но она считается от ноля, а нам для контроллера меньше 2В уже не пойдет. В одеале от 5В до 3В как раз под литий.

 

T3RAN13
Offline
Зарегистрирован: 04.06.2016

да, кондер 2,7 вольта, я думал 3,7, незадачка)

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Оу, я рад что эта тема всё ещё живёт, а я то уже начал понемногу отходить от этого.
http://arduino.ru/forum/programmirovanie/stm32f103-arduino-ide

auct
Offline
Зарегистрирован: 14.12.2014

Народ! Если ногу Ресет замкнуть и держать на общий, тинька будет энергию батарейки жрать?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

auct пишет:

Народ! Если ногу Ресет замкнуть и держать на общий, тинька будет энергию батарейки жрать?

купи мультиметр и проверяй.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Спрошу тут.

Наконец-то дошли руки до драйвера моторов на мосфетных полумостах АО4606 .. поднял схемку (тут в проектах обсуждалась), перечитал и заценил решение с применением ATtiny (пост №254 в той темки кажись) .. но, возник вопрос по организации I2C на базе тинек. Пошукал поиском и как-то "не нашлось".

Соответственно, киньте в меня ссылками, где можно взять образец кода реализации I2C-slave для Attiny.

А равно интересны советы какую конкретно тиньку есть смысл использовать? Хочется в результате получить DC-motor shield, способный получать команды по I2C "интеллектуального" уровня, типа "включить мотор вперед на 3сек со скоростью 250об/мин" и имеющий вход энкодера и контроль напряжения аккумуляторов для коррекции ШИМ по мере разряда аккумов с сохранением требуемой скорости моторов. Можно ли найти тиньку для управления сразу несколькими моторами (2/4шт)?

Да, желательный размер платы шилда надо упихать в 32х40 .. 40х56 .. 32х56 мм :)

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Arhat109-2

Может вы веткой ошиблись.

Вы хотите это все написать под тини13?

У нее всего один таймер и делать ШИМ и программный И2С не получится.

Подымайтесь до меги8 или выше168/328.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Примерно. Не знаю пока какую конкретно тиньку взять. Само обсуждение было в этой теме пост 254 - схема под программное управление. Надо 1 простой выход и 2 ШИМ канала на управление 1 мотором. По идее, тинька тянет (на пред. стр. есть примеры), остается вопрос связи по I2C или какой ещё протокол с "главной мегой".

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Arhat109-2 пишет:

Примерно. Не знаю пока какую конкретно тиньку взять. Само обсуждение было в этой теме пост 254 - схема под программное управление. Надо 1 простой выход и 2 ШИМ канала на управление 1 мотором. По идее, тинька тянет (на пред. стр. есть примеры), остается вопрос связи по I2C или какой ещё протокол с "главной мегой".

Я писал у тини всего один таймер и он занят в том посте для ШИМ, апаратного И2С нет поэтому нужно делать програмно, но для этого таймеров уже не остается. Управление моторами она потянет, но на получение команд и ответ ее не хватит. Берите другой камень.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А реализовать программный I2C не получится? Я собственно такой имел ввиду, когда спросил про образцы кода ..

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Arhat109-2 пишет:

А реализовать программный I2C не получится? Я собственно такой имел ввиду, когда спросил про образцы кода ..

я смотрю  ответы на ваши вопросы через слово читаете, пост #930

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

Нашел 24-ю тиньку (SOIC-14) по 0.5у.е., вроде как с I2C, но у нее 4 канала ШИМ замешаны с выходами для I2C .. на управление 2-я моторами не годится.

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Xumuk пишет:

подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини

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

Или вы имели что-то другое ввиду???

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

bodriy2014 пишет:

Xumuk пишет:

подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини

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

Или вы имели что-то другое ввиду???

да именно так, но еще и должна быть прозвонка

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

Xumuk пишет:

bodriy2014 пишет:

Xumuk пишет:

подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини

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

Или вы имели что-то другое ввиду???

да именно так, но еще и должна быть прозвонка, нечто подобное используют автоэлектрики...

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Очередная поделка на тини13.

Видео с кратким описанием

Видео работы под музыку

Страничка где все расписано.

 

MkTwo
MkTwo аватар
Offline
Зарегистрирован: 28.08.2016

Добрый день, народ! Не знал куда написать, поэтому пишу сюда, есть проблема с Attiny13A - попытался залить загрузчик ардуино в него:

1) подключил USBasp программатор согласно схеме

2) скачал платформу Attiny13 для ардуино, закинул в папку hardware

3) выбрал платформу и частоту 1.2МГц, программатор USBasp

4) нажал "записать загрузчик"

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

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

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

MkTwo пишет:

Добрый день, народ! Не знал куда написать, поэтому пишу сюда, есть проблема с Attiny13A - попытался залить загрузчик ардуино в него:

1) подключил USBasp программатор согласно схеме

2) скачал платформу Attiny13 для ардуино, закинул в папку hardware

3) выбрал платформу и частоту 1.2МГц, программатор USBasp

4) нажал "записать загрузчик"

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

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

---Объем памяти тини13 очень мал, поэтому загрузчик туда никто не льет.

Пишите код под тини13 дальше компилируете его в hex и его льете в тини по четырем проводками MISO, MOSI, SCK, Reset.

Для загрузки можно использовать USBasp или любую ардуино.

В ютюбе есть русское видео можно наглядно посмотреть.

---Если вы залочили контроллер то его как и любой контроллер AVR можно разлочить высоковольтным программатором, но это уже сложнее, но в поиске на русском тоже полно инфы.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

MkTwo, зачем там загрузчик, если у Вас есть программатор??? Скетчи загружаются элементарно через ту же Arduino IDE: "Файл" - "Загрузить с помощью программатора".

MkTwo
MkTwo аватар
Offline
Зарегистрирован: 28.08.2016

Jeka_M пишет:

MkTwo, зачем там загрузчик, если у Вас есть программатор??? Скетчи загружаются элементарно через ту же Arduino IDE: "Файл" - "Загрузить с помощью программатора".

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

Cформированная командная строка:
avrdude.exe -p t13 -c usbasp -P usb -e


avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0xffff07
avrdude.exe: Expected signature for ATtiny13 is 1E 90 07
             Double check chip, or use -F to override this check.

avrdude.exe done.  Thank you.

Выскакивает ошибка что программируемый контроллер не обнаружен. 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

MkTwo пишет:

Выскакивает ошибка что программируемый контроллер не обнаружен. 

Нет, ошибка другая - контроллер обнаружен, но некорректно считалась его сигнатура. Вероятные причины:

- слишком длинные провода от программатора до микроконтроллера (желательно не более 15-20 см)

- МК работает на маленькой частоте (1,2 МГц), тогда на самом USBasp нужно установить джампер JP3 для понижения частоты программирования.

MkTwo
MkTwo аватар
Offline
Зарегистрирован: 28.08.2016

спасибо огромное, действительно, поставил перемычку и всё прочиталось) уточните пожалуйста насчёт вообще системы заливки скетчей напрямую в микроконтроллеры - как я думал, загрузчик, который заливается из Arduino IDE это своеобразный компилятор скетча ардуино в язык микроконтроллера, а получается что можно скетчи напрямую в мк заливать? зачем тогда нужен загрузчик вообще?

evgta
Offline
Зарегистрирован: 02.09.2016

чтобы грузить скетчи через USB ардуины напрямую без программатора.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

MkTwo пишет:

спасибо огромное, действительно, поставил перемычку и всё прочиталось) уточните пожалуйста насчёт вообще системы заливки скетчей напрямую в микроконтроллеры - как я думал, загрузчик, который заливается из Arduino IDE это своеобразный компилятор скетча ардуино в язык микроконтроллера, а получается что можно скетчи напрямую в мк заливать? зачем тогда нужен загрузчик вообще?


Загрузчик находится в памяти самого МК и позволяет его прошивать по двум проводам RX и TX больше он не для чего не нужен, еще он занимает в памяти МК от 500 до 700Kb.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

bodriy2014, от 512 до 2048 Байт :-)

MkTwo
MkTwo аватар
Offline
Зарегистрирован: 28.08.2016

получается, если есть программатор, то можно просто выбрать "Программатор - USBasp" и заливать по кнопке "Загрузить через программатор"? никаких загрузчиков записывать предварительно не надо? а то я на ATmega8A сначала записал загрузчик, а потом заливаю скетчи как в обычную ардуино...

и ещё вопрос - залил blink в ардуино, там delay(1000); стандартный, так он мигает примерно в 10 раз реже... я как понимаю эта тема известная наверное, можете дать ссылку где можно почитать про это?