Разделы сайта

Энергосбережение

Питание модуля измерения и передачи производится через бестрансформаторный блок питания от первого канала измеряемого напряжения. При падении напряжения на этом канале ниже уровня 90В модуль отключается.

Напряжение подается на конденсатор С1 и резистор R1, которые образуют реактивное сопротивление. Далее напряжение снимается на два диода (VD1, VD2), на которых происходит выпрямление питающего напряжения. Они образуют однополупериодный выпрямитель. Напряжение ограничивается по амплитуде стабилитроном VD3. Конденсатор C6 установлен для сглаживания пульсаций выпрямленного напряжения. Стабилизатор напряжения (кренка) DD1 используется для стабилизации питающего напряжения +5В микроконтроллера ATmega8.

Рисунок 3.14 - Схема питания индикатора

Приложение

Листинг Программы

01./***Использование АЦП.***/

.

.#include <avr/io.h>

04.#include <avr/interrupt.h>

.#include <util/delay.h>

.

. // -0-1-2-3-4-5-6-7-8-9-dp

.char SEGMENTE[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x80};

.

.volatile unsigned char segcounter = 0;

.volatileint display = 0;

12.

. // Прерывание по переполнению T2, динамическая индикация

14.ISR (TIMER2_OVF_vect)

. {

.PORTD = 0xFF;

.PORTB = (1 <<segcounter);

.

.switch (segcounter)

. {

.case 0:

.PORTD = ~(SEGMENTE [display% 10000 / 1000]);

.break;

.case 1:

.PORTD = ~((SEGMENTE [display% 1000 / 100])|0x80); // добавляемдесятичнуюточку

.break;

.case 2:

.PORTD = ~(SEGMENTE [display% 100 / 10]);

.break;

.}

.if ((segcounter++) > 2) segcounter = 0;

.}

.

.volatile unsigned long value;

35.volatile unsigned intadc_counter;

.

./***Прерывание по окончанию преобразования АЦП***/

38.ISR (ADC_vect)

. {

.value = value + (ADC*11/4);

.adc_counter++;

.}

.

./***Главнаяфункция***/

.int main (void)

. {

.DDRD = 0xFF;

.DDRB = (1 << PB0)|(1 << PB1)|(1 << PB2)|(1 << PB3);

.PORTD = 0x00;

.PORTB = 0x00;

.DDRC = 0x00;

52.

.TIMSK |= (1 << TOIE2); // разрешение прерывания по таймеру2

.TCCR2 |= (1 << CS21); // предделитель на 8

.

.ADCSRA = (1 << ADEN) // разрешение АЦП

.|(1 << ADSC) // запуск преобразования

.|(1 << ADFR) // непрерывный режим работы АЦП

.|(1 << ADPS2)|(1 << ADPS1)|(0 << ADPS0) // предделитель на 64 (частота АЦП 125kHz)

.|(1 << ADIE); // разрешение прерывания

.

.ADMUX = (1 << REFS1)|(1 << REFS0) // внутренний ИОН 2,56V

.|(0 << MUX3)|(0 << MUX2)|(0 << MUX1)|(0 << MUX0); // вход ADC0

.

._delay_ms(50);

.

.sei(); // глобально разрешаем прерывания

.

.while(1)

. {

.if (adc_counter> 300) // вычисляем среднее значение АЦП

72. {

.display = value/adc_counter;

.adc_counter = 0;

75.value = 0;

.}

._delay_ms(50);

.}

.}

Исходный код для индикатора с общим катодом

./***Использование АЦП. Цифровой вольтметр***/

.

.#include <avr/io.h>

04.#include <avr/interrupt.h>

.#include <util/delay.h>

Перейти на страницу: 1 2

Интересное из раздела

Однофазный инвертор напряжения
В данном курсовом проекте проектируется полупроводниковый преобразователь электрической энергии - автономный инвертор напряжения. Вначале преобразователи выпол ...

20-разрядный аналого-цифровой преобразователь, изготовленный по технологии КМОП 0,9 пм
Традиционные конструкции аналого-цифровых преобразователей (АЦП) использовали параллельную архитектуру и биполярные технологии для получения 8-битного разрешени ...

Определение параметров нелинейности усилителя аппаратуры ВЧ связи по ЛЭП на основе аппроксимации его коэффициента усиления и выбор оптимального режима
1. Аппроксимировать полиномом седьмой степени экспериментальную зависимость коэффициента усиления Кэ = f ( Uсм ) заданного усилительного каскада н ...