Общение

russian-robots@conference.jabber.ru - Чат, в котором можно поболтать об электронике, создании роботов и программировании.
Как мне зайти в чат?

 Обсуждение

Не стесняйтесь оставлять комментарии, мне интересно и важно ваше мнение!
  • Wadimka: Подскажу где взять недорого строчники, идете/едите в любую контору которая ...
  • Vladimir: Об этом датчике я тоже знаю, хотелось с чегото начать изучать МК, а не слеп ...
  • Vladimir: Спсиба
  • Евгений: Стоит поставить инфракрасный датчик движения и не городить ничего :) Литера ...
  • Vladimir: Добрый день Евгений. Это мне для дома в кладовку. При входе на двери стоит ...
  • Евгений: Фотобарьер? По подробнее расскажите.
  • Vladimir: Добрый день. Прошу вас помочь в реализации пректа фотобарер на Tiny45, со с ...
  • Евгений: С таким кодом даже http://caxapa.ru/codebook/?search=BLSH ничего не находит ...
  • Управление ШИМом при помощи переменного резистора

    17th Июнь 2010 | Метки:

    Работает это устройство следующем образом, напряжение с переменного резистора через делитель напряжение подается на АЦП микроконтроллера, после окончания процесса оцифровки происходит проверка, в каком положении находится переменный резистор. если по центру то ШИМ на каналах OC1A и OC1B равен нулю. Если напряжение меньше половины напряжения питания, то

    OCR1AL=0×00;

    OCR1BL=255 – напряжение на АЦП;

    иначе                                                                                                                  OCR1BL=0×00;

    OCR1AL = напряжение на АЦП – 255;

    Код программы:

    #include<mega16.h>
    #include<stdio.h>
     
    interrupt [ADC_INT] void adc_isr(void)
    {
    unsigned int adc_data;
    double voltage;
     
    adc_data=ADCW;
    voltage = ((adc_data*2.56)/1024) * 1000;
    if(voltage>=240 && voltage<=260)
    {
    OCR1BL=0x00;
    OCR1AL=0x00;
    }
    else
    {
    if(voltage>255 && voltage<511)
    {
    OCR1BL=0x00;
    OCR1AL = (int)voltage-255;
    }
    else
    if(voltage<255)
    {
    OCR1AL=0x00;
    OCR1BL=255-(int)voltage;
    } }
    }
     
    void main(void)
    {
    TCCR1A=0xA1;
    TCCR1B=0x0C;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    DDRD.4=0xFF;
    DDRD.5=0xFF;
    ACSR=0x80;
    SFIOR=0x00;
    ADMUX=0xC0 & 0xff;
    ADCSRA=0b11001011;
     
    #asm("sei")
    while(1)
    {
    ADCSRA=0b11001011; //запускаем новое АЦ преобразование
    }}

    МК тактируется от внутреннего RC генератора на 8 МГЦ.

    Схема:

    Схема. atmega16

    Понравилась статья? Нажмите на любую из кнопок:

    0
    Пока комментариев нет.

    :D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: