Jump to content

nrgizer79

Members
  • Content Count

    20
  • Joined

  • Last visited

Community Reputation

0 Обычный

About nrgizer79

  • Rank
    Новенький
  • Birthday 10/22/1979

Информация

  • Пол
    Мужчина
  • Город
    СПб

Электроника

  • Стаж в электронике
    1-2 года
  1. В общем так: - понизил частоту работы АЦП до минимума - выбрал режим только с 8-ю битами Работает как надо. Всем спасибо.
  2. Подумал вот что. Может на время преобразования надо отключать прерывания. У меня используется прерывание по таймеру. Может это АЦП сбивает ?
  3. Всех приветствую! БП для автомобильного компьютера. Все работает, кроме..... Для контроля напряжения на аккумуляторе, когда все устройства "спят", подаю напряжение через делитель на АЦП1 (нога 7). При напряжении 10,5В на входе на ноге 7 д.б. 2,625В или значение 537 на АЦП1. Т.е. при значении менее 537 хотелось бы обесточивать всю схему. На деле АЦП правильно не считает: - если задавать int bat_volt_min в диапазоне меньше 500, то схема обесточивается при напряжении менее 10,4 В; - если в диапазоне более 500, то схема обесточивается при напряжении менее 11,5В. Т.е. не АЦП какое то, а триггер. Что я неправильно делаю ? Вот моя схемка БП: Вот код: #include <tiny13a.h> #define F_CPU 1200000UL #include <delay.h> // Назначим константы int bat_volt_min = 537; // Глобальные переменные bit first_start=0; bit batt_bad=0; bit power_on=0; bit LCD_state=0; unsigned int timer0_sec=0; unsigned int timer0_count=0; unsigned int batt_volt=0; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { timer0_count++; if (timer0_count==146) { timer0_sec+=1; timer0_count=0; } // if (PORTB.3==1 && power_on==1) // { // timer0_sec=0; // } } // Bandgap Voltage Reference: Off #define ADC_VREF_TYPE ((0<<REFS0) | (0<<ADLAR)) // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | ADC_VREF_TYPE; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=(1<<ADSC); // Wait for the AD conversion to complete while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCW; } // Выключение всего void all_off () { PORTB.4=1; LCD_state=0; PORTB.0=LCD_state; first_start=0; power_on=0; } // Нажатие кнопки Power на плате Odroid void power_on_off () { PORTB.1=1; delay_ms (300); PORTB.1=0; power_on=!power_on; } //Включение/выключение LCD & HUB void lcd_hub_on_off () { LCD_state=!LCD_state; PORTB.0=LCD_state; } // Проверка батареи void check_bat () { batt_volt = read_adc (1); if (batt_volt < bat_volt_min) { batt_bad=1; } else { batt_bad=0; }; } // Первый старт void first_start_func () { check_bat (); if (batt_bad==1) { all_off (); } if (PINB.3==1 && batt_volt>=bat_volt_min) { PORTB.4=0; LCD_state=1; PORTB.0=LCD_state; first_start=1; power_on=1; } timer0_count=0; timer0_sec=0; } void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=(1<<CLKPCE); CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Function: Bit5=In Bit4=Out Bit3=In Bit2=In Bit1=Out Bit0=Out DDRB=(0<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0); // State: Bit5=T Bit4=1 Bit3=T Bit2=T Bit1=0 Bit0=0 PINB=(0<<PINB5) | (1<<PINB4) | (0<<PINB3) | (0<<PINB2) | (0<<PINB1) | (0<<PINB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 37,500 kHz // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected // Timer Period: 6,8267 ms TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: Off GIMSK=(0<<INT0) | (0<<PCIE); MCUCR=(0<<ISC01) | (0<<ISC00); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIS1) | (0<<ACIS0); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<AIN0D) | (0<<AIN1D); // ADC initialization // ADC Clock frequency: 600,000 kHz // ADC Bandgap Voltage Reference: Off // ADC Auto Trigger Source: ADC Stopped // Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On DIDR0|=(0<<ADC0D) | (0<<ADC2D) | (0<<ADC3D) | (0<<ADC1D); ADMUX=ADC_VREF_TYPE; ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (1<<ADPS0); ADCSRB=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0); // Global enable interrupts #asm("sei") while (1) { if (first_start==0) { first_start_func (); } if (PINB.3==0 && timer0_sec>=10 && power_on==1) { power_on_off (); } if (PINB.3==0 && timer0_sec>=15 && LCD_state==1) { lcd_hub_on_off (); } if (PINB.3==0 && timer0_sec>=30) { check_bat (); } if (batt_bad==1) { all_off (); } if (PINB.3==0 && timer0_sec>=51000) { all_off (); } if (PINB.3==1 && power_on==0 && LCD_state==0 && batt_bad==0 && first_start==1) { lcd_hub_on_off (); timer0_sec=0; } if (PINB.3==1 && power_on==0 && timer0_sec>=5 && LCD_state==1 && batt_bad==0 && first_start==1) { power_on_off (); timer0_sec=0; } if (PINB.3==1 && power_on==1 && LCD_state==1) { timer0_sec=0; } } }
  4. Попробуйте по аналогам пройтись. Не думаю, что один только "техасс" ее делает. Т.к. питание у меня от одного источника всегда, выпаял микросхему, замкнул нужный вход с выходом....и все работает.
  5. Спасибо! По ногам совпадает. Осталось только купить. В Питере нет. Остаются китайцы.
  6. Приветствую всех! Помогите определить деталь по центру. Маркировка-35g4 2115 Это плата преобразователь hdmi-lvds. Что то по питанию. На эту деталь приходит напряжение с юсб и разъема питания. То ли какой то переключатель, то ли стабилизатор. Перепутал полярность и теперь плата не работает.
  7. ТО-220 ставить некуда, плату лень новую делать. Поменяю реле на 12-ти вольтовое и запитаю его от входного напряжения (одну дорожку порезать и один провод кинуть). Оставлю 78l05 только на МК.
  8. Т.е. по схеме все верно, ошибок нет ? Не может быть каких либо гармоник переменных, которые мультиметр не измеряет ?
  9. Померял - по выходу 5В потребление 43мА с включенным реле.
  10. Всех приветствую! Собрал такую схему "умного" БП в авто: После включения реле начинает греться U3 78l05 (палец не удержать). Непонятно: - МК потребляет ну 20мА - катушка реле по даташиту на 0.2Вт, т.е. 40мА Напряжение в авто 14В, на выходе стабилизатора 5В. Итого рассеиваемая мощность: 9В*60мА=0,54Вт. Или для такого корпуса это много ? P.S.: конденсаторы С1 и С4 правда не по 10нФ, а по 0.1нФ. Читал, что стабилизатор может уходить в "возбуд". Может тут что то такое ?
  11. Контроль напряжения батареи производится только при отсутствии сигнала АСС более 10 секунд. Если Вы об этом - "при понижении напряжения менее 11,5В будет полностью обесточивать".
  12. Такая мысль была - при старте МК устанавливать его выход в "1", открывать ключ и замыкать SD на землю, а когда нужно будет включить преобразователь, то МК в "0", ключ закрылся и SD "повисло" в воздухе. Одно НО.... Когда преобразователь выключен, потребление схемы д.б. минимальным. А тут порт МК будет в "1", ключ будет питаться, через SD пока непонятно, какой ток будет идти. Лишнее потребление.
  13. Выключается. А если "0" от МК через 10кОм - то не выключается.
  14. Я тоже так думал. На деле оказалось так, как я выше описал. Откуда из недр преобразователя берутся 9В - я не знаю....но надо их победить.
  15. Дошло дело до физической реализации. Выход МК РВ4 (3-я ножка) и порт S.D. преобразователя соединил через 10кОм. В итоге, в независимости от состояния порта МК преобразователь включен. При этом из порта S.D. на порт МК поступает напряжение 9В !!! Может у кого есть мысли, как подтянуть порт S.D. к земле при нуле на МК, и подтянуть порт S.D. к +5В при единице на МК ???
×
×
  • Create New...