Перейти к содержанию

neid

Members
  • Постов

    58
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные neid

  1. Всем привет! Есть схемка, приставка к автоосциллографу, её роль синхронизация по 1 цилиндру авто с системы зажигания. Хочу повторить и добавить подавление холостой искры т.к. не нашел у производителя в продаже, номиналы деталей есть почти все, вопрос по некоторым остался. На рисунке пометил их знаком вопроса. Кто может подсказать хотя бы примерный номинал деталей с учетом схемотехники?

    Безымянный.jpg

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

    #define rows 3
    #define cols 2
    // номера кнопок в соответствии со схемой
    const byte keys[rows][cols] =
    {
     {1,4},
     {2,5},
     {6,3}
    };
    // номера пинов
    const byte rowPins[rows] = {10, 9, 8}; // строки (желтый10, зеленый9, голубой8)
    const byte colPins[cols] = {7, 5}; // столбцы (черный7, красный5)
    
    // маски для клавиш
    #define MaskMediaButton	  1
    #define MaskRadioButton	  2
    #define MaskVolumeUpButton   4
    #define MaskVolumeDownButton 8
    #define MaskOkButton		 16
    #define MaskMuteButton	   32
    #define MaskScrollDown	   64
    #define MaskScrollUp		 128
    #define MaskFastPress	    256
    #define MaskLongPress	    512
    unsigned long starttime;
    bool workkbd;
    unsigned long startlongpresstime;
    bool oldpressed;
    /////////////////////////////////////////////////////////////////
    //*************************************************************
    // Светодиоды для визуального контроля
    // номера пинов
    //*************************************************************
    const int ledPin_1 = 0;	 
    const int ledPin_2 = 1;
    const int ledPin_3 = 2;
    const int ledPin_4 = 4;
    const int ledPin_5 = 12;
    const int ledPin_6 = 13;
    const int ledPin_7 = 14;
    const int ledPin_8 = 15;
    void setup()
    {
     Serial.begin(9600);
     int i;
     // строки - на выход
     for (i = 0; i < rows; ++i)
     {
       pinMode(rowPins[i], OUTPUT);
     }
    
     // столбцы - на вход
     for (i = 0; i < cols; ++i)
     {
       pinMode(colPins[i], INPUT);
       digitalWrite(colPins[i], HIGH); // включаем подтягивающий резистор 
     }
    
     starttime = millis();
     workkbd = false;
     oldpressed = false;
    }
    // сканирование джойстика
    unsigned int scan(void)
    {
     int i, j;
     unsigned int code = 0;
     bool pressed = false;
    
     for (i = 0; i < rows; ++i)
     {
       digitalWrite(rowPins[i], LOW);
       // кнопки
       for (j = 0; j < cols; ++j)
       {
      if(digitalRead(colPins[j]) == false)
      { 
        code |= 1 << (keys[i][j] - 1);
        pressed = true;
      }		
       }
     }//конец циклов
    ///////////////////////долго нажатие////////////////////////////////////////
      if (pressed == true)
      {
       if (oldpressed == false)
       {
      startlongpresstime = millis();
       }
       else
       {
      if (millis() - startlongpresstime > 1200 && (code & MaskOkButton)) // значение временного промежутка в мс
      {
       startlongpresstime = millis(); // сброс счетчика. иначе признак будет выполняться каждый цикл опроса
       code |= 512; 
      }
      if (millis() - startlongpresstime < 1000 && (code & MaskOkButton) ) // значение временного промежутка в мс
      {
       startlongpresstime = millis(); // сброс счетчика. иначе признак будет выполняться каждый цикл опроса
       code |= 256; 
      }
       }
     }
       oldpressed = pressed;
    /////////////////////////////////////////////////////////////
    
     return code;
    }
    
    // цикл программы
    void loop()
    {
     unsigned int code;
    
     code = scan();
     if (workkbd == false)
     {
       if (millis() - starttime > 3000)
      workkbd = true;
    
       return;
     }
       if (code & MaskMediaButton){
       Serial.print("Source>");
       Serial.println();
       digitalWrite(ledPin_1, HIGH);
       delay(200);
       digitalWrite(ledPin_1, LOW);
       }
    
    
       if (code & MaskRadioButton){
       Serial.print("Source<");
       Serial.println();
       digitalWrite(ledPin_2, HIGH);
       delay(200);
       digitalWrite(ledPin_2, LOW);
       }
    
       if (code & MaskVolumeUpButton){
       Serial.print("VolumeUp");
       Serial.println();
       digitalWrite(ledPin_3, HIGH);
       delay(200);
       digitalWrite(ledPin_3, LOW);
       }
    
     if (code & MaskVolumeDownButton){
       Serial.print("volumeDown");
       Serial.println();
       digitalWrite(ledPin_4, HIGH);
       delay(200);
       digitalWrite(ledPin_4, LOW);
       }
    
     if (code & MaskFastPress){
        Serial.print("TRFast");
        Serial.println();
       }
     if (code & MaskLongPress){	  
        Serial.print("TRLong");
        Serial.println();	  
     }
    
    
     if (code & MaskMuteButton){
       Serial.print("Mute");
       Serial.println();
       digitalWrite(ledPin_6, HIGH);
       delay(200);
       digitalWrite(ledPin_6, LOW);
       }
     if (code & MaskScrollDown){
       Serial.print("RotateDown");
       Serial.println();
       digitalWrite(ledPin_7, HIGH);
       delay(200);
       digitalWrite(ledPin_7, LOW);
       }
     if (code & MaskScrollUp){
       Serial.print("RotateUp");
       Serial.println();
       digitalWrite(ledPin_8, HIGH);
       delay(200);
       digitalWrite(ledPin_8, LOW);
       }
    
    }
    

  3. Всем привет! Никто не подскажет код опроса кнопок для моих фукнций работы лампы из Икеа. Алгоритм такой, есть три режима работы. Превый режим: ручной, прибаляем и убавляем яркость свечения лампы. Второй режим: лампа палавно тухнет и снова плавно разгорается и так до бесконечности, ну и третий просто ярко горит. Переход из режим в режим с помошью третий кнопки, вкл-режим1-кнопка3-режим2-кнопка3-режим3, 1-2-3 и так по кругу. Собираюсь делать это через функции. Помогите с идейкой!

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

    #include <avr/io.h>//библиотека ввода/вывода
    #include <avr/delay.h>
    
    typedef unsigned char u8;
    
    #define KEY_UP 1
    #define KEY_DN 2
    #define KEY_NEXT 4
    #define KEY_NONE 0
    
    //Програма инициализации ШИМ
    void init_pwm (void)
    {
     TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
     TCCR1B=(1<<CS10);		 //Делитель= /1
     OCR1A=0x00;			//Начальная яркость нулевая
    }
    
    
    
    
    // функция, которая опрашивает кнопки и возвращает код нажатой
    u8 get_key(void){
      u8 temp = ~(PINC & (KEY_UP | KEY_DN | KEY_NEXT));
      _delay_ms(15);
      if(temp != (~(PINC & (KEY_UP | KEY_DN | KEY_NEXT))))
         return KEY_NONE;
      else
         return temp;
    }
    
    static void mode1(void){
      u8 key;
      while(1){
         key = get_key();
         switch(key){
         case KEY_UP: if(OCR2 < 255) OCR2++;
            break;
         case KEY_DN: if(OCR2 > 0) OCR2--;
            break;
         case KEY_NEXT:
            return;
         }
      }
    }
    
    static void mode2(void){
      u8 key;
      static signed char reverse;
      while(1){
         key = get_key();
         if(key == KEY_NEXT) return;
         if(OCR1A == 255) reverse = -1;
         if(OCR1A == 0) reverse = 1;
         OCR1A += reverse;
         _delay_ms(100);
      }
    }
    
    static void mode3(void){
      while(get_key() != KEY_NEXT);
    }
    
    
    
    //Основная програма
    int main(void)
    { 
    
    PORTC=0x07; //порт 0 1 2 как вход
    DDRC=0x00;
    
    PORTB=0x00;
    DDRB=0x02; //PB1 как выход
    
    init_pwm(); //OCRA1 инициализация
    
    while(1){
         mode1();
         mode2();
         mode3();
      }
    
     }
    
    

  4. пока у меня задача стоит собрать устройство и прицепить к машинке, а экраны и все останьное по мере освоения, и познания. К вопросу почему на МК, потому что интерес к МК и программированию на С и опыты моему безгоду неделя. Чем больше в лес, тем больше дров, до ПИКов тоже доберусь)))

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

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

    VipAndrey и a_sergeevich хочу поблагодарить вас за то что отозвались и помогли. :rolleyes:

  5. тосол гонится по всей системе в том числе и через радиатор печки, ну и прицепи его прям к нему

    Спасибо большое за подсказку с транзисторами ;)

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

  6. Я с вас туею, вернее с вашей схемы. Да выкиньте вы этот опер и весь огород к нему, поставьте датчик тем-ры DS18b20.

    беру сигнал со штатного датчика охлаждающей жидкости, т.к. он расположен посеридине патрудка и меряет непосредственно темп. ОЖ, что и нужно для вкл. печки. Датчик который вы советуете нужно на хомут и к патрубку, но он будет снаружи(((( тоже самое уже у меня с автозапуском, там тоже есть датчик который снаружи, фигня получается, зимой по температуре никогда не завожу, толку от него только узнавать температуру на улице с брелка авто :rolleyes:

    ОУ применил, чтобы не исказить показания датчика ОЖ, т.к. они нужны ЭБУ машины. По К-линии считывать температуру мне еще не по силам, и занята она бортовым компом.

    С ULN2003 не рационально, я не знаю какие транзисторы лучше применить?

  7. повторюсь - один минус вашей схемы - нереентабильность использования мк. уж если мутите на мк - не поленитесь - добавьте в схему индикатор температуры в салоне + тот же самый датчик температуры салона. и привяжите автоматическое отключ. печки при достижении температуры заданной. этим вообще избавитесь от вкл=выкл печки вручную.

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

  8. delay_ms(500); //От этой задержки зависит скорость моргания светодиода при темп-ре от 50С до 70С.

    не могу понять почему эта строка не в теле цикла while(1). Хотя пробыdал и в тело кинуть? нет мигания светика( а реле отрабатывает как надо. Но когда выполняется следующее условие: if (adc_data[LAST_ADC_INPUT]<21), то горит как задумано.

    компилирую CodeVisionAVR, играюсь в Протусе.

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

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

  10. многое поменял, вместо меги8 поставил мегу 32, что под рукой оказалось, меги8 вообще нет пока...(( алгоритм вот какой стал:машина заводится с автозапуска(ваз2111), подает питание на устройство, вкл. и ждет пока температура двигателя не поднимится до 50 градусов, после через реле включает подогрев сидений, когда 70С - печку (заведомо подключаем к 1 скорости). Ну и работает до тех пор пока не сяду в машину и не нажму кнопоку. Чтобы потом самому вкл что надо и конролировать.

    вот с общими усилиями и советами что получилось по схеме:

    http://s014.radikal.ru/i327/1010/36/84eac75a211e.jpg

    Есть несколько вопросов по подключению реле к ULN2003A, и питания 12 вольт, правильно организовал?

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

    а вот сам код к этой погремушке:

    #include <mega32.h> 
    #include <delay.h>
    #define FIRST_ADC_INPUT 0
    #define LAST_ADC_INPUT 0
    unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; 
    #define ADC_VREF_TYPE 0x20 
    interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR 
    { 
    static unsigned char input_index=0; 
    
    adc_data[input_index]=ADCH; 
    
    if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) 
    input_index=0; 
    ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index; 
    
    delay_us(10); 
    
    ADCSRA|=0x40; 
    } 
    void main(void) 
    {
    //Порт В настройка 
    PORTC=0x00;
    DDRC=0xFF; // весь порт на выход
    
    // Port D настройка 
    PORTB=0x00;         
    DDRB.0=0x00;  // весь порт как вход 
    
    ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff); 
    ADCSRA=0xCC; 
    #asm("sei")
    PORTC.4=1; //устройство включено, светодиод горит постоянно
    while (1) {
    if(adc_data[LAST_ADC_INPUT]<205) PORTC.0=1;
       else PORTC.0=0;     //Приблизительно 50 град.
           if(adc_data[LAST_ADC_INPUT]<204) PORTC.2=1;
               else PORTC.2=0;
    if(adc_data[0]<21) PORTC.1=1; //Приблизительно 70град.
       else PORTC.1=0;
           if(adc_data[0]<21) PORTC.3=1;
               else PORTC.3=0;
    if (PINB.0==1) break;         
              };
    PORTC.0=0;
    PORTC.2=0;
    delay_ms(2000);
    PORTC.1=0;
    PORTC.3=0;
    delay_ms(2000);
    PORTC.4=0;
    }
    

  11. 173a3aa677a0.jpg

    вот накидал тут кое чего, гляньте правильно ли все, может чего накосячил:

    Датчик температуры охлаждающей жидкости (термисторный) устанавливается на впускном патрубке системы охлаждения в потоке охлаждающей жидкости двигателя. Термистор, находящийся внутри датчика, является термистором с "отрицательным температурным коэффициентом" - при нагреве его сопротивление уменьшается. Высокая температура охлаждающей жидкости вызывает низкое сопротивление (70 Ом + 2% при 130 °С), а низкая температура дает высокое сопротивление (100700 Ом ± 2% при -40 °С).

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

    не знаю можно обойтись без резистивно пары?

  12. Читаете только слова которые знаете или вообще всю тему целиком? сказал же что новичок, и с МК один раз только общался, я не прошу делать, мне схема приблизительная нужна в каком направлении делать, больше всего как сигнал вести от датчика температуры до МК... а про прошивку и остальное моя головная боль. Как модеру тебе надо себя поскромнее вести. Если зайти на сайт ВАЗовских форумов и посмотреть проблему подключения сигналок, то чуть ли не каждый второй хочет это сделать, и могут только через реле, вот тут точно ХРЕНЬ получается))))

  13. Всем привет)) вообщем идея такая, хочу сделать чтобы у меня включалась печка в ваз 2110 когда рабочая температура двигатея дойдет до 70 грудусов. Поясняю, к примеру алгоритм работы :

    Дополнителный канал настраиваю на сигналке так, чтобы он подавал напряжение и включал устройство (на автозапуске можно так организовать). Далее, устройство включено и ждет пока температура двигателя не поднимится до 70 градусов. После через реле включает двигатель печки (заведомо подключаем к 1 скорости). Ну и работает до тех пор пока: 1) не сработает концевик водительской двери, или 2) у автозапуска не кончится время и двигатель не заглохнет. Все это дело будет отображать светодиод.

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

    отсюда несколько вопросов:

    1. можно ли это дело организовать на Атмеге 16, т.к. имел дело только с ней, простенькое охранное устройство с моб.телефоном на дачу)

    у кого какие схемы и предложения, сам новичок, короме выше сказанного МК не пробывал ни чего и пользовался только 5 поводковым програматором(примитив вообщем)))

  14. видео работа регулятора в действии, хочу сипользовать в регулировке яркости светодиодной подсветки приборной панели в авто))) ссылка на регулятор: http://masterkit.ru/main/set.php?code_id=184591
  15. Всем привет. Прошу прощения и знаю что тема не раз уже упоминалась в форуме, но ни как не нашел то что мне нужно.

    Нужна схема регулировки яркости 28 светодиодов. схема будет применяться в авто, ваз 2110, а точнее для подсветки шкалы приборов. Светики выбрал белые. Схемка нужна простая и безотказная, и деталюшки чтобы редкими не были для нее. Заранее спасибо.

  16. С тахометра. Датчик давления масла зимой может тупить.

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

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

    хочу сделать что-то на подобии фена в машину назад, воздух будет гнать куллер компьютерный думаю достаточно будет... а вот спираль где взять чтобы от бортовой сети питалась или из чего сделать ума не приложу, может подскажете???? схемка у кого есть, даже самая примитивная! работать он будет не долго ну минут 5-10 от силы, только для распотевания стекол!

  18. У меня такой вопрос, вся моя компания предпочитает nokia, и вот два моих друга принесли мне по их словам испорченные карты ММС на 1 Гб фирмы Кингстом и микроСД на 512Мб которая шла в комплекте с телефоном... пробовали их вставлять в телефон и форматировать бесполезно, пробовал их форматировать в компе через кард-реадер, explorer.exe начинает виснуть... Можноли их как то возродить или уже все им хана в топку?

×
×
  • Создать...