Форум ModelldepO  

Вернуться   Форум ModelldepO > Моделизм > Электрика и DCC > Arduino
Ответ
 
Опции темы Опции просмотра
Старый 29.09.2016, 17:45   #1
BR95009
Brocken-Meister
 
Аватар для BR95009
 
Регистрация: 27.04.2012
Адрес: !Msk
Сообщений: 8,605
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 110 раз(а) в 87 сообщениях
Сказал(а) спасибо: 7,012
Поблагодарили 9,314 раз(а) в 3,306 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (9355)
По умолчанию ATtiny85 - микроконтроллер для декодеров

Всем привет, наткнулся тут на вот такой чип:



Бывают с 8 ногами и с 14 ногами. Практически, это ардуина в едином корпусе, без обвязки, с встроенным осцилятором.

Очень маленькая, с ограниченной скоростью/памятью (20 MHz, 8 Kb). Но, например для скетчей освещения/декодеров ее вполне хватает. Ну и цена: 100 руб в Чипидипе.

Программируется он также из Arduino IDE с помощью UNO в качетсве программатора.

Распиновка:
Скрытый текст



Работа с чипом:
https://geektimes.ru/post/255310/

Видео по русски:
https://youtu.be/z9ff922jrCY

Хочу попробовать для декодеров. Уж больно ардуина много места занимает, даже Pro Mini.
__________________
H0 - DR/DB, Ep.III, G и H0m - HSB, Н0е - DR/ÖBB/Zillertalbahn Ep.V-VI. И эночка.
Московский Модуль H0-присоединяйтесь!
BR95009 вне форума  
Вверх
Старый 29.09.2016, 17:50   #2
bluxer
Михневский НОД
 
Аватар для bluxer
 
Регистрация: 16.02.2010
Адрес: Москва
Сообщений: 7,200
Сказал(а) 'не согласен(а)'!: 197
Сказали 'не согласен'! 182 раз(а) в 129 сообщениях
Сказал(а) спасибо: 4,019
Поблагодарили 10,477 раз(а) в 3,610 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (10624)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
Практически, это ардуина в едином корпусе, без обвязки, с встроенным осцилятором.
Для светофоров пойдет?
__________________
Садовую дорогу в каждый сад!
А единичку-в каждый дом!
С Н0 пора завязывать...
И снова развязывать:)
bluxer на форуме  
Вверх
Старый 29.09.2016, 18:35   #3
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 456
Поблагодарили 454 раз(а) в 135 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
Хочу попробовать для декодеров. Уж больно ардуина много места занимает, даже Pro Mini.
В разных местах интернета, товарищ laba выкладывал схемы декодеров освещения вагонов именно с этим чипом.
Скрытый текст

По ихнему подобию и сделал свет в свои вагоны, правда на атмеге8. Сам бы не разобрался...
В качестве скетча выступил переделанный пример dcc monitor для библиотеки DCC_Decoder.h


Желаю удачи в этом деле
Qvan22 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 29.09.2016, 18:58   #4
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Цитата:
Сообщение от bluxer Посмотреть сообщение
Для светофоров пойдет?
Пойдёт, но ограничение по выходам, максимум 5(Attiny85), и чип будет трудно перепрошить, без специального программатора.

Вот проект для ардуино на этом чипе: http://bazaar.launchpad.net/~tuxstef...o/minidecoder/



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

На Attiny44/84 видел схемы локомотивных декодеров.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
3 пользователя(ей) сказали cпасибо:
Старый 04.11.2018, 19:09   #5
Saddam
Местный
 
Аватар для Saddam
 
Регистрация: 06.09.2013
Адрес: Багдад
Сообщений: 7,437
Сказал(а) 'не согласен(а)'!: 41
Сказали 'не согласен'! 75 раз(а) в 60 сообщениях
Сказал(а) спасибо: 4,777
Поблагодарили 6,641 раз(а) в 2,914 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (6638)
По умолчанию

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

Из её плюсов наличие USB, и при этом плоская и маленькая плата. DCC стандартно идет на Pin2, еще остаётся 4 пина, что для сидячего европейского вагона вполне достаточно.
Вопросы пока такие.
Выходы у ATtiny как я понимаю аналоговые, нужно на них вешать транзисторные ключи или можно диоды так цеплять?
DCC обязательно через опторазвязку либо достаточно резистора, у Пако DCC через резистор и всё работает.
Saddam вне форума  
Вверх
Старый 04.11.2018, 19:29   #6
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 940
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,978
Поблагодарили 3,305 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3320)
По умолчанию

Цитата:
Сообщение от Saddam Посмотреть сообщение
DCC через резистор и всё работает
На ардуину делал через резистор 22кОм, все работает , думаю тут тоже будет, надо пробовать
xu56857 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 04.11.2018, 19:49   #7
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Цитата:
Сообщение от Saddam Посмотреть сообщение
нужно на них вешать транзисторные ключи или можно диоды так цеплять?
ИМХОКлючи лучше ставить.

---------- Сообщение добавлено в 19:49 ---------- Предыдущие сообщение было в 19:47 ----------

Цитата:
Сообщение от Saddam Посмотреть сообщение
DCC обязательно через опторазвязку либо достаточно резистора
Резистора вполне хватает.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 04.11.2018, 20:03   #8
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 456
Поблагодарили 454 раз(а) в 135 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Как-то делал на похожем дигиспарке отладочный шилд эмитирующий вагонный декодер на attiny85.
Очень удобно писать и отлаживать код прямо на столе. За основу брал библиотеку DCC_Decoder.h
Pin2 подключал через резистор 75ком.
Диодный мост состоял из 4х диодов шоттки.
Светодиоды питаются от входящих 14 вольт и управляются через транзисторы bc817.
В итоге получалось 2 обычных и 2 аппаратных шим канала (analogWrite()).
Еще остается одна нога которую можно использовать.
Но без дигиспарковской прошивки она отвечает за reset и я ее не использовал.

Заготовка для проверки шилда...
Скрытый текст
Arduino код:
#include <avr/io.h>
#include <DCC_Decoder.h>
#include <EEPROM.h>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Defines and structures
#define debug 0//
#define kDCC_INTERRUPT     0 //int 0
///////////////  eeprom
uint8_t dec_address 20;
uint8_t second_address 20;
uint8_t light_max 200;
uint8_t light_up 5;
uint8_t operating_mode 1;
//////////////

//unsigned long previousmicros = 0;

unsigned long light_lastMillis 0;
uint8_t light 0;
bool light_flag 0;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// The dcc decoder object and global data
//

static unsigned long lastMillis millis();
    
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Packet handlers
//

// ALL packets are sent to the RawPacket handler. Returning true indicates that packet was handled. DCC library starts watching for 
// next preamble. Returning false and library continue parsing packet and finds another handler to call.
boolean RawPacket_Handler(byte byteCountbytepacketBytes)
{

  
//fun read
    
if(packetBytes[0] == dec_address || packetBytes[0] == second_address)
    {        
      if(
byteCount == 3)
      {
                if (
packetBytes[1]&1<<4){light_flag 1;}  //F0
                
else{light_flag 0;}
                 
                if (
packetBytes[1]&1<<0){} //F1
                
else{}
                if (
packetBytes[1]&1<<1){} //F2                
                
else{}
                
                if (
packetBytes[1]&1<<2){digitalWrite(3,HIGH);} //F3
                
else{digitalWrite(3,LOW);}
                if (
packetBytes[1]&1<<3){digitalWrite(4,HIGH);} //F4
                
else{digitalWrite(4,LOW);}
      }
    }
    
//cv read
    
if(packetBytes[0] == dec_address && byteCount == 5)
    {
        if(
packetBytes[1] == 236)
        {
              
digitalWrite(4,HIGH);
              
              
uint8_t val 0;
              
noInterrupts();
              switch(
packetBytes[2])
              {
                case 
1
                  
val packetBytes[3];
                  
dec_address val;
                  
EEPROM.write(1,val);
                  break;
                
                case 
2
                  
val packetBytes[3];
                  
second_address val;
                  
EEPROM.write(2,val);
                  break;

                case 
3
                  
val packetBytes[3];
                  
light_max val;
                  
EEPROM.write(3,val);
                  break;
                  
                case 
4
                  
val packetBytes[3];
                  
light_up val;
                  
EEPROM.write(4,val);
                  break;
                  
                case 
5
                  
val packetBytes[3];
                  
operating_mode val;
                  
EEPROM.write(5,val);
                  break;               
              } 
              
interrupts();  
         }
    }    
    
    return 
true;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Setup
//
void setup() 
{    
   
eeprom_read(); 
   
DCC.SetRawPacketHandler(RawPacket_Handler);  
   
DCC.SetupMonitorkDCC_INTERRUPT );

      if(
operating_mode == 2)
   {
      
analogWrite(0,light_max);
      
analogWrite(1,light_max);
   }  
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Main loop
//
void loop()

    
DCC.loop();        
   
unsigned long mil millis();      
    if(
mil-light_lastMillis light_up)    
    {
      if(
light light_flag == 0){analogWrite(0,--light);analogWrite(1,light);}
      if(
light light_max light_flag == 1){analogWrite(0,++light);analogWrite(1,light);}
      
        
light_lastMillis millis();
    }   
   
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void eeprom_read()
{  
  if(
EEPROM.read(0) != 1)
  {
      
EEPROM.write(1,dec_address);
      
EEPROM.write(2,second_address);
      
EEPROM.write(3,light_max);
      
EEPROM.write(4,light_up);
      
EEPROM.write(5,operating_mode);
      
EEPROM.write(0,1);    
   }
  
  
dec_address =    EEPROM.read(1);
  
second_address EEPROM.read(2);
  
light_max =      EEPROM.read(3);
  
light_up =      EEPROM.read(4);
  
operating_mode EEPROM.read(5);

Миниатюры:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 1731
Размер:	321.8 Кб
ID:	164194
Qvan22 вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 04.11.2018, 21:06   #9
Saddam
Местный
 
Аватар для Saddam
 
Регистрация: 06.09.2013
Адрес: Багдад
Сообщений: 7,437
Сказал(а) 'не согласен(а)'!: 41
Сказали 'не согласен'! 75 раз(а) в 60 сообщениях
Сказал(а) спасибо: 4,777
Поблагодарили 6,641 раз(а) в 2,914 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (6638)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
Диодный мост состоял из 4х диодов шоттки.
То есть отдельного стабилизатора у вас нет?
А масштаб какой, на H0 при 18 вольтах на треке плюс диодный мост, контроллер скорее всего сгорит.
Saddam вне форума  
Вверх
Старый 04.11.2018, 23:03   #10
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 456
Поблагодарили 454 раз(а) в 135 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Цитата:
Сообщение от Saddam Посмотреть сообщение
То есть отдельного стабилизатора у вас нет?
А масштаб какой, на H0 при 18 вольтах на треке плюс диодный мост, контроллер скорее всего сгорит.
На моем варианте дигиспарка стоит "удобный" стабилизатор 78l05 и можно смело подавать до 30 вольт на вход VIN, в отличие от всяких промини и нано...
Qvan22 вне форума  
Вверх
Старый 25.11.2018, 17:03   #11
Saddam
Местный
 
Аватар для Saddam
 
Регистрация: 06.09.2013
Адрес: Багдад
Сообщений: 7,437
Сказал(а) 'не согласен(а)'!: 41
Сказали 'не согласен'! 75 раз(а) в 60 сообщениях
Сказал(а) спасибо: 4,777
Поблагодарили 6,641 раз(а) в 2,914 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (6638)
По умолчанию

Нашел вот такое видео, где за 5 минут изготавливается светофорный декодер, для немецких сигналов.

Кроме Digispark ATTINY85 потребуется диодный мост и резистор на 22 кОм. 85 микроконтроллер позволяет грузить выходы на 10мА, соответственно для светофоров подобраны сопротивления для того что-бы в эти 10 мА вписаться, для вэйсмана и бравы это 220 Ом.
Скетч вот
Saddam вне форума  
Вверх
7 пользователя(ей) сказали cпасибо:
Старый 25.11.2018, 21:51   #12
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Серводекодер на Attiny85 от Гатова.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
6 пользователя(ей) сказали cпасибо:
Старый 28.11.2018, 17:42   #13
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Прикрутил режим настройки позиций сервопривода, с помощью крутилки на мультимаусе. При входе в этот режим декодер начинает обрабатывать локомотивные команды скорости и направления. После того, как положение настроено, нажимаем F1 и потом FL, что приводит к записи текущей позиции в EEPROM. Для второй позиции всё делается аналогично, но только нажимаем не F1, а F2 и FL.

Кусок кода, который за это отвечает, вставляется в функцию void dccauswertung(), вышеуказанного скетча от Гатова. Собственно там есть заготовки для этого.

Скрытый текст
Код:
//если активен режим программирования позиций сервы от крутилки 
  if (data[0]==3){//если команда отправлена на третий локомотивный адрес
      byte moveServo;
//----------------------------------------------------------------------------------------------
//------------------------------ Скорость / направление движения (14 или 28 шагов) -------------
//----------------------------------------------------------------------------------------------      
      if ((data[1+verschub] >> 6) == B01) {  
        byte Vspeed = (data[1+verschub] & B1111) << 1; 
        bitWrite(Vspeed,0,bitRead(data[1+verschub],4));  //дополнительный бит скорости
         if (Vspeed>3){Vspeed=Vspeed-3; a=Vspeed;}
           else{a=0;}
        a = map(a,1,28,1,90);
      if (bitRead(data[1+verschub],5) == 0){moveServo = 90 - a;}
          else {moveServo = 90 + a;} 
      }
//-------------------------------------------------------------------------------------------------------------      
//---------------------------------- Скорость / направление движения (126 шагов) ------------------------------
//-------------------------------------------------------------------------------------------------------------      
      if (data[1+verschub] == B00111111) {
        byte Vspeed = data[2+verschub] & B01111111;
        switch (Vspeed) 
         {
           case 0: a=0; break;
           case 1: a=0; break;
            default: Vspeed--;  a=Vspeed;
         }
         a=map(a,1,126,1,90);
        if (data[2+verschub] >> 7 == 0){moveServo = 90 - a;}
          else {moveServo = 90 + a;}   
      }
 servo.write(moveServo);      
//------------------------------------------------------------------------------------------------------------      
//--------------------------------------- Функции F0 - F4 ----------------------------------------------------
//------------------------------------------------------------------------------------------------------------      
           if (((data[1+verschub] >> 5) & B111) == B100) {  
                    //if (bitRead(data[1+verschub],4) == 1) {;}
        if (bitRead(data[1+verschub],0) == 1 && bitRead(data[1+verschub],4) == 1) {
          //если активированы функции F1 и FL
           if (bitRead(data[1+verschub],1) == 0){//а функция F2 неактивна 
            EEPROM.update(EEPROMP1S,moveServo);//обновляем значение для первой позиции в EEPROM
            delay(1000);
            P1S = moveServo;
            }
           }
        if (bitRead(data[1+verschub],1) == 1 && bitRead(data[1+verschub],4) == 1) {
          //если активированы функции F2 и FL
           if (bitRead(data[1+verschub],0) == 0){//а функция F1 неактивна 
            EEPROM.update(EEPROMP2S,moveServo);//обновляем значение для второй позиции в EEPROM
            delay(1000);
            P2S = moveServo;
           }
          }
        //if ((data[1+verschub] & B11111) == 0){;}        
      }
//------------------------------------------------------------------------------------------------      
   }


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

__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!

Последний раз редактировалось laba; 02.02.2020 в 16:04.
laba вне форума  
Вверх
7 пользователя(ей) сказали cпасибо:
Старый 29.11.2018, 13:01   #14
MIKHON
Заглянувший
 
Регистрация: 14.10.2017
Адрес: Находка
Сообщений: 123
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 5 раз(а) в 3 сообщениях
Сказал(а) спасибо: 203
Поблагодарили 59 раз(а) в 30 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: скоро придёт к известности (59)
По умолчанию

Тоже задумался об использовании сего девайса для одной стрелки(RocoGeoline). Хорошо бы на кнопку программирования повесить ещё и переключение стрелки в противоположное от начального. Короткое нажатие переключает положение стрелки, длинное в режим программирования. И выход на индикацию положения.
MIKHON вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 29.11.2018, 13:39   #15
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Цитата:
Сообщение от MIKHON Посмотреть сообщение
Хорошо бы на кнопку программирования повесить ещё и переключение стрелки в противоположное от начального.
Идея хорошая, но как показала практика этот вход очень чувствителен к наводкам и иногда могут быть ложные срабатывания, при определённых условиях. Т.е. надо как-то от этого защищаться. Либо кнопку переносить на другой порт и менять принцип её работы.

---------- Сообщение добавлено в 13:39 ---------- Предыдущие сообщение было в 13:38 ----------

Цитата:
Сообщение от MIKHON Посмотреть сообщение
И выход на индикацию положения.
Я для этого прицепил два реле.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 29.11.2018, 15:30   #16
MIKHON
Заглянувший
 
Регистрация: 14.10.2017
Адрес: Находка
Сообщений: 123
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 5 раз(а) в 3 сообщениях
Сказал(а) спасибо: 203
Поблагодарили 59 раз(а) в 30 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: скоро придёт к известности (59)
По умолчанию

Цитата:
Сообщение от laba Посмотреть сообщение
этот вход очень чувствителен к наводкам и иногда могут быть ложные срабатывания, при определённых условиях
Я конечно не большой спец в этом, этот вход и так подтянут к плюсу, вроде должно исключить наводки. Можно ещё подтягивающий резистор уменьшить. Или это касается именно этого входа? Так вроде ещё три освобождаются?
Цитата:
Сообщение от laba Посмотреть сообщение
Я для этого прицепил два реле.
Я думал об автономности стрелки. На каждом ответвлении врезать по двухцветному светодиоду(зелёный-красный). Тот путь который открыт, загорается зелёным, который закрыт - красным.
MIKHON вне форума  
Вверх
Старый 29.11.2018, 16:54   #17
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Цитата:
Сообщение от MIKHON Посмотреть сообщение
Или это касается именно этого входа?
Да. Это аналоговый вход и на нём не просто отслеживается высокий и низкий уровень, а его амплитуда. Поэтому наводки для него очень критичны.
Если использовать цифровой порт, то тогда да, можно кнопку на него перевесить и сделать подтяжку к +, а кнопкой сажать его на GND, ну и не забыть сделать защиту от дребезга.

Немного переделал кусок, отвечающий за запоминание позиций сервы, при программировании от крутилки. Теперь всё работает следующим образом......
FL - ON
F1 - ON
F2 - OFF
Запоминаем позицию 1

FL - ON
F1 - OFF
F2 - ON
Запоминаем позицию 2

FL - ON
F1 - ON
F2 - ON
Выходим из режима программирования позиций сервопривода

Скрытый текст
Код:
//------------------------------------------------------------------------------------------------------------      
//--------------------------------------- Функции F0 - F4 ----------------------------------------------------
//------------------------------------------------------------------------------------------------------------      
           if (((data[1+verschub] >> 5) & B111) == B100) {  
             if (bitRead(data[1+verschub],4) == 1) {//если FL - ON
        if (bitRead(data[1+verschub],0) == 1 && bitRead(data[1+verschub],1) == 0) {//если F1 - ON, а F2 - OFF 
            EEPROM.update(EEPROMP1S,moveServo);//обновляем значение для первой позиции в EEPROM
            delay(1000);
            P1S = moveServo;
            }
        if (bitRead(data[1+verschub],1) == 1 && bitRead(data[1+verschub],0) == 0) {//если F2 - ON, а F1 - OFF
            EEPROM.update(EEPROMP2S,moveServo);//обновляем значение для второй позиции в EEPROM
            delay(1000);
            P2S = moveServo;
            }
        if (bitRead(data[1+verschub],1) == 1 && bitRead(data[1+verschub],0) == 1) {//если F2 - ON, а F1 - ON
            ProgMode = 0x01;  //Включаем режим программирования CV
            EEPROM.update(EEPROMCVLOCK, ProgMode); //сохраняем в память
            EEPROMReadToRam();//считываем новые данные из EEPROM
            }
          }     
      }
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
3 пользователя(ей) сказали cпасибо:
Старый 02.02.2020, 12:17   #18
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию Световой(светофорный) декодер Attiny85

Накидал на базе Гатовского скетча, бета-вариант светофорного декодера.
Конфигурация работы выходов настраивается индивидуально, с помощью определённого CV, для каждой из 4-х команд, обрабатываемых декодером. Состояния выходов и их режимы работы(горят или мигают) определяют соответствующие биты.
Например:
0000 0000 - все выходы выключены

0000 0001 - первый выход горит
0001 0001 - первый выход мигает

0000 0010 - второй выход горит
0010 0010 - второй выход мигает

0000 0100 - третий выход горит
0100 0100 - третий выход мигает

Можно совмещать работу выходов в одном CV.

Например:
0100 0101 - первый выход горит, третий мигает и т.д.

Мигание и плавное вкл-выкл реализовано на выходах с аппаратным ШИМ.

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

Скетч не претендует на идеальность, но вроде вполне работоспособный.
Вложения:
Тип файла: zip Tiny_Signal_Decoder_beta.zip (7.0 Кб, 95 просмотров)
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
9 пользователя(ей) сказали cпасибо:
Старый 09.02.2022, 12:16   #19
bna
Заглянувший
 
Регистрация: 18.01.2022
Адрес: Россия
Сообщений: 122
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 89
Поблагодарили 37 раз(а) в 14 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: на пути к лучшему (37)
По умолчанию

Подскажите, кто-то использовал встроенный стабилизатор Digispark в "боевом" режиме?
Некоторые источники утверждают, что даже на 12В он максимум переваривает миллиампер 200-250, чтобы не расплавить всё вокруг.
А уж от 18 вообще работает ярко, но очень недолго
bna вне форума  
Вверх
Старый 09.02.2022, 14:42   #20
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,012
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,688
Поблагодарили 1,634 раз(а) в 821 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
2 Всего
Репутация: обеспечил(а) себе прекрасное будущее (1669)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
На ардуину делал через резистор 22кОм
Цитата:
Сообщение от laba Посмотреть сообщение
Резистора вполне хватает.
а можно схему?
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума  
Вверх
Старый 09.02.2022, 16:51   #21
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 940
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,978
Поблагодарили 3,305 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3320)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
а можно схему?
вот примерно как тут : https://usuaris.tinet.cat/fmco/home_en.htm
Миниатюры:
Нажмите на изображение для увеличения
Название: 22к.JPG
Просмотров: 164
Размер:	57.1 Кб
ID:	197944
xu56857 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 09.02.2022, 17:42   #22
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,012
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,688
Поблагодарили 1,634 раз(а) в 821 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
2 Всего
Репутация: обеспечил(а) себе прекрасное будущее (1669)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
вот примерно
похоже вот ответ на мой вопрос, самая нижняя часть схемы
Скрытый текст

без гальванической развязки, конечно, не комильфо, точнее нормально только если питание тоже с дцц брать
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума  
Вверх
Старый 09.02.2022, 19:13   #23
osmanpasha
Заглянувший
 
Регистрация: 16.07.2019
Адрес: -
Сообщений: 79
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 49
Поблагодарили 124 раз(а) в 45 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: скоро придёт к известности (124)
По умолчанию

Цитата:
Сообщение от bna Посмотреть сообщение
Подскажите, кто-то использовал встроенный стабилизатор Digispark в "боевом" режиме?
Некоторые источники утверждают, что даже на 12В он максимум переваривает миллиампер 200-250, чтобы не расплавить всё вокруг.
А уж от 18 вообще работает ярко, но очень недолго
Не использовал, но вполне похоже на правду. Там стоит линейный регулятор, которому при токе 0.25А и напряжении 12В приходится рассеивать (12-5)*0.25=1.75 Ватта, что при отсутствии нормального радиатора (а там его нет) довольно много, хоть и скорее всего некритично. Если платка соответствует схеме, которую я нашел, то там стоит регулятор MC78M05BDTRKG, который имеет безумные Tja=90C/W (нагрев кристалла относительно воздуха при рассеивании 1Вт совсем без радиатора) и может рассеять примерно 1.4Вт (при минимальном размере площадки под пайку и 50C окружающей среды, что не факт, что соответствует реальному юзкейсу). Я не думаю, что там что-то сгорит или отпадет от платы, но платка будет ощутимо горячая.

При питании от 18В регулятор вообще должен был бы рассеивать 3.25Вт, что разогрело бы кристалл до градусов до 300, если бы его максимальная рабочая температура не была 150.
osmanpasha вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 09.02.2022, 21:28   #24
bna
Заглянувший
 
Регистрация: 18.01.2022
Адрес: Россия
Сообщений: 122
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 89
Поблагодарили 37 раз(а) в 14 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: на пути к лучшему (37)
По умолчанию

Цитата:
Сообщение от osmanpasha Посмотреть сообщение
При питании от 18В регулятор вообще должен был бы рассеивать 3.25Вт, что разогрело бы кристалл до градусов до 300, если бы его максимальная рабочая температура не была 150.
Ну т. е. с рельс по-любому нужно ставить внешний DC-DC конвертер?
А если светодиодную нагрузку запитать напрямую, минуя Ардуино (с него брать только управление)?
Даже ток на самого себя вряд ли переживет на таком напряжении?
bna вне форума  
Вверх
Старый 10.02.2022, 08:13   #25
osmanpasha
Заглянувший
 
Регистрация: 16.07.2019
Адрес: -
Сообщений: 79
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 49
Поблагодарили 124 раз(а) в 45 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: скоро придёт к известности (124)
По умолчанию

Цитата:
Сообщение от bna Посмотреть сообщение
Ну т. е. с рельс по-любому нужно ставить внешний DC-DC конвертер?
А если светодиодную нагрузку запитать напрямую, минуя Ардуино (с него брать только управление)?
Даже ток на самого себя вряд ли переживет на таком напряжении?
В плане тепловыделения - самого себя эта штука запитает, у микроконтроллера потребление всего 10-20 мА. Несколько светодиодов в довесок тоже запитает, особенно если на светодиоды подавать не 25 мА, а, скажем, 5. Если мы хотим ограничить тепловыделение на регуляторе, скажем, 1 Вт, то максимально допустимый суммарный ток будет 1/(18-5)=77 мА (т.е. при 5мА/диод, будет больше светодиодов, чем есть ног у микроконтроллера). Но если говорить о серьезной нагрузке, моторах или большом количестве светодиодов, то конечно лучше поставить импульсный DC-DC.

С питанием 18В вообще надо смотреть, из каких компонентов плата сделана и не сэкономили ли на регуляторе китайцы. Производитель Digispark на сайте пишет, что рекомендовано до 12В. Многие линейные регуляторы на 5В имеют максимальное входное 12В (поэтому ардуину, например, регламетно можно питать от не более 12В), так что в зависимости от компонентов, платка может вообще не поддерживать 18В.

PS. С рельсов по идее питание проходит через диодный мост, на котором падает c полтора вольта, это тоже можно учесть в вычислениях.
osmanpasha вне форума  
Вверх
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема Ремонт декодеров KotRa ЧАВО 28 02.12.2020 12:10
Линейка локомотивных декодеров likht Цифровая аппаратура Modelldepo 18 05.06.2014 10:42
Идентификация декодеров LSH Micro Mitugin Цифровая аппаратура Modelldepo 1 23.07.2013 18:19
Установка декодеров belsky Электрика и DCC 5 10.02.2010 19:17
Настройки Ваших декодеров vld Электрика и DCC 6 31.12.2008 01:11


Текущее время: 12:32. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Copyright © ModelldepO.ru 2006 -