Гость еще один max Опубликовано 30 Апреля, 2010 в 09:21 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:21 Последовательные ЦАП ЦАП с широтно-импульсной модуляцией Очень часто ЦАП входит в состав микропроцессорных систем. В этом случае, если не требуется высокое быстродействие, цифро-аналоговое преобразование может быть очень просто осуществлено с помощью широтно-импульсной модуляции (ШИМ). Схема ЦАП с ШИМ приведена на рис Наиболее просто организуется цифро-аналоговое преобразование в том случае, если микроконтроллер имеет встроенную функцию широтно-импульсного преобразования (например, AT90S8515 фирмы Atmel или 87С51GB фирмы Intel). Выход ШИМ управляет ключом S. В зависимости от заданной разрядности преобразования (для контроллера AT90S8515 возможны режимы 8, 9 и 10 бит) контроллер с помощью своего таймера/счетчика формирует последовательность импульсов, относительная длительность которых g =tи/ Т определяется соотношением g=D/2,n где N – разрядность преобразования, а D – преобразуемый код. Фильтр нижних частот сглаживает импульсы, выделяя среднее значение напряжения. В результате выходное напряжение преобразователя U=DU/2n Рассмотренная схема обеспечивает почти идеальную линейность преобразования, не содержит прецизионных элементов (за исключением источника опорного напряжения). Основной ее недостаток – низкое быстродействие. Стырил на _https://www.gaw.ru/html.cgi/txt/doc/dac/seqdacs.htm Остался вопрос по ФНЧ - видимо это конденсатор-резистор? Вишь, там пишут, что некритично их значение, но какое-то оно должно быть? Ибо можно либо не зарядить конденсатор импульсами, либо его просто заметно не будет... Я начинаю догадываться, зачем Вова спрашивал про осциллограф. У меня нету, но есть где взять! Я еще здорово надеюсь на Протеус... Уже назрела тестовая схема - переменный резистор, с него на вход ADC, полученные данные с помощью ШИМ и фильтра отправляются на выход... На входе и выходе вольтметры, на выходе еще осцилл... Даже какая-то демонстрационная программка была, где ШИМ упоминается. Скачал с сайта _https://www.123avr.com/ Дай Бог чтобы на Си :smile: Добавлено после раздумий: Не надо нервничать, четыре разряда резистивного ЦАП тебе за глаза и за уши, к чему там особая точность то? Мало, и восемь поставить можно, там ног целая куча останется. А чего так далеко в даташит залез то? Смотреть нада по архитектуре, а это 3-5 страница... Далеко? Да я и не лез, оно само. Набрал в поиске "DAC", меня и выбросило на 77 страницу. Сразу и прочитал ту фразу, которую надо. С ШИМ изящнее - один вывод, резистор и конденсатор. Господи, как многого я не знаю! С годами только понимаешь как много вокруг интересного... Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mikky Опубликовано 30 Апреля, 2010 в 09:33 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:33 :smile: Смоделируй...Жене скажи что Proteus - это такая игра компьютерная. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость еще один max Опубликовано 30 Апреля, 2010 в 09:36 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:36 :smile: Смоделируй...Жене скажи что Proteus - это такая игра компьютерная. Это еще хуже. Каждый подход к ПК дома в нерабочее время рассматривается как баловство. Хотя "Одноклассники" в список грехов не входят, "ВКонтакте" тоже :smile: Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mikky Опубликовано 30 Апреля, 2010 в 09:40 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:40 Ну-у-у-у!...Тогда - к ногтю её.. :smile: Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость alexander59 Опубликовано 30 Апреля, 2010 в 09:45 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:45 (изменено) Всем привет! С наступающими праздниками! Читаю, читаю, ничего непонимаю, но приятно видеть общение толковых людей! Вы хоть бы по русски изъяснялись, а то - протеус, вконтакте,цапы, ляпы и т.д. ???!!! Александр. Изменено 30 Апреля, 2010 в 09:50 пользователем alexander59 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mikky Опубликовано 30 Апреля, 2010 в 09:48 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:48 :smile: Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость alexander59 Опубликовано 30 Апреля, 2010 в 09:54 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 09:54 :smile: Вот, вот и я про тоже, ну ладно, работайте!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость alexander59 Опубликовано 30 Апреля, 2010 в 11:21 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 11:21 это глюк, полностью удалять не умею Володя, писать программы после дня рождения, это, как бы мягче выразиться, издевательство над тобой! Ребята! Берегите Володю!!! Александр. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость еще один max Опубликовано 30 Апреля, 2010 в 12:04 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 12:04 ...А теперь еще Макс толкает достать с шкапа книгу СИ за 21 день, лежащую там года четыре... Вова, я даже в мыслях не мечтал... А тут такой подарок! Из-за моего проекта ты возьмешься за Си? :smile: - "моя отчень довольна, однако!" А если серьезнее - он понятнее для меня. Все-таки держать в голове 32 регистра тяжко. Да и если надо два числа перемножить, то в Си это проще написать. Быстрее и короче конечно в Асме, но пока памяти хватает. Макс, не увлекайся эмулятором, он иногда такие бяки преподносит.Модель-с, однако. Однозначно на 100% согласен. Виртуальный секс реального не заменит. Но потренироваться поможет (это я не про секс, а про Протеус). Нашел про ШИМ, оказывается все достаточно просто, только в башку у меня не все уложилось: _https://www.123avr.com/z8.htm сварганил схемку: 2 переменных резистора идут на вход АЦП и контролируются вольтметрами, к выходам ШИМ подключены еще 2 вольтметра. На выходах ШИМ нули... Что-то я не так сконфигурировал: #include <mega8535.h> #include <delay.h> // Задаем переменные без знаковые 8-битные unsigned char res1; unsigned char res2; #define ADC_VREF_TYPE 0x00 // Функция чтения из АЦП unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } // Прерывание по таймеру1, в переменные грузим показания АЦП, из переменных в младший разряд ШИМ interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here res1= read_adc(1); res2= read_adc(2); OCR1AH=0; OCR1AL=res1; OCR1BH=0; OCR1BL=res2; } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; //Инициализацию портов С и D я здесь не показываю, в коде она есть // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 8000,000 kHz // Mode: Fast PWM top=03FFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x03; TCCR1B=0x09; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000,000 kHz // ADC Voltage Reference: AREF pin // ADC High Speed Mode: On // ADC Auto Trigger Source: None ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; SFIOR&=0xEF; SFIOR|=0x10; // Global enable interrupts #asm("sei") while (1) { // Place your code here }; } Все остальное вроде как всегда, смущает только вот этот фрагмент // OC1A output: Discon. // OC1B output: Discon. Что бы это значило? И при чем тут выходы аппаратного шим, если это конфигурирование таймера? Башка кончилась. Емкость мозга конечно большая, но буфер чтения переполнен. Надо переварить то, что есть. Поехал собираться, завтра утром раненько выезжать. Всем пока и удачных выходных! Я не теряюсь, читать-писать буду, а вот моделировать и паять не смогу :smile: Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mikky Опубликовано 30 Апреля, 2010 в 14:42 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 14:42 НО, САША!!!!! ЭТИ ТВАРИ, ПРИДУМАВШИЕ СИ, МК, АССЕМБЛЕР, ПРОТЕУС ПОЧЕМУ ТО ГОВОРЯТ ПО АНГЛИЙСКИ!!!!!! :smile: :smile: Макс, не увлекайся эмулятором, он иногда такие бяки преподносит. Модель-с, однако. Нагличане, я считаю, вообще виноваты во многом, если не во всем.. А Протеус подвирает иногда, однако. Хотя это самый дешёвый способ попробовать схему и прогу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mikky Опубликовано 30 Апреля, 2010 в 15:19 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 15:19 (изменено) Читаю, но лениво..Надо придумать под него задачу, тогда дня за три могу начать проги на нём писать. Пока в поиске..Думаю надо взять, макетку собрать, и тупо пробовать с одного камня на другой перекомпелировать, с PIC на Мегу, или ешо как... Макс, загляни всётки на "Ветряки" - там Сергей всё грамотно сделал по ШИМ и файл Протеуса лежит с рабочим вариантом, и исходник есть на "Си" , можешь позырить как там прально всё делается... Изменено 30 Апреля, 2010 в 15:24 пользователем mikky Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость yurkaf Опубликовано 30 Апреля, 2010 в 15:40 Жалоба Поделиться Опубликовано 30 Апреля, 2010 в 15:40 4. Перешить имеющийся бортовик с помощью "умных" из гаража. В неудачном случае имеем неисправный ECU и мертвую машину. Заехать на любой нормальный сервис где есть диллерский прибор MUT-3, этим прибором штатно перешивается моторный блок и так-же штатно включаются-выключаются различные функции... в твоем случае, вероятнее всего, ненужно ничего перешивать, нужно просто функцию круиз-контроля включить... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения