Авторизация
Партнеры
Место свободно
Выбор редакции
Новые обзоры
Вольтметр для зарядного устройства, схема
Вольтметр предназначен для индикации напряжения на заряжаемом аккумуляторе. Он может измерять напряжение в пределах от 6 до 20V, что позволяет его встроить практически в любое зарядное устройство, заряжающее как аккумуляторы для портативной аппаратуры, так и свинцовые для стартеров автомобильной или мотоциклетной, тракторной техники.
Вольтметр питается от измеряемой цепи, этим ограничивается нижний предел измерения, так как напряжение питания микроконтроллера не может быть меньше 5V. В то же время, если разъединить измеряемую и питающую цепи (использовать отдельный источник питания, не зависящий от измеряемой цепи) можно будет измерять напряжене в пределах 0-20V. Этот вариант может подойти для использования вольтметра для индикации выходного регулируемого напряжения лабораторного источника питания.
В основе устройства микроконтроллер PIC16F688 со встроенным АЦП. Максимальное напряжение на входе RA2 не может превышать 5V, поэтому в схеме имеется делитель на резисторах R1, R2 и аварийный ограничитель входного напряжения на стабилитроне VD1.
Измеряемое напряжение поступает на разъем Х1. Здесь оно разделяется на две цепи. На цепь питания, — напряжение поступает на интегральный стабилизатор А1 типа 7805, который поддерживает стабильным напряжение питания микроконтроллера 5V независимо от величины входного измеряемого напряжение, которое является и питающим одновременно.
На измерительную цепь напряжение поступает через делитель R1, R2. Резистор R2 взят подстроечный, многооборотный, с его помощью калибруют вольтметр сравнивая его показания с показаниями образцового вольтметр (например, мультиметра).
Разъем Х2 используется для внутрисхемного программирования, например, для обновления или внесения изменений в программу. Кнопка S1 предназначена для аварийного сброса если схема зависнет.
Индикация осуществляется на стандартном ЖК-двухстрочном индикаторе с подсветкой (выводы 15-16) и регулировкой контрастности (R4). Можно использовать и индикатор без подсветки.
Немного о работе устройства.
Для правильной работы АЦП требуется источник стабильного опорного напряжения, здесь в качестве такового используется напряжение питания +5V, таким образом стабильность работы АЦП практически зависит от стабильности интегрального стабилизатора А1. В результате АЦП преобразует в цифровой код любое напряжение от 0 до 5V работая 1024-мя ступенями (фактически от 0 до 1023). Таким образом разрешение равно 0,0049V на ступеньку преобразования.
Входной делитель (на R1 и R2) при правильной настройке делает умножение входного напряжение на 0,2457. Например, если входное напряжение равно 12V, то напряжение на входе RA2 будет равно 2,9484V. Далее вычисляется количество ступеней преобразования => 2,9484 /0,0049 = 601,7, то есть 601 целая ступень. Теперь остается выполнить умножение этого числа ступеней на два => 601 х 2 = 1202 и расставить запятые (индицируется только три разряда). Индицируется результат «12,0V».
Программа написана на языке С :
/* Project: Diqital Voltmeter based on PIC16F688
Internal Oscillator @ 4МНz, MCLR
EnaЬled, PWRT EnaЬled, WDT OFF
Constructor 09/2013
*/
// LCD module connections
sbit LCD_RS at RC4_bit;
sbit LCD_EN at RC5_bit;
sbit LCD_D4 at RC0_bit;
sbit LCD_D5 at RC1_bit;
sbit LCD_D6 at RC2_bit;
sbit LCD_D7 at RCЗ_bit;
sbit LCD_RS_Direction at TRISC4_bit;
sbit LCD_EN_Direction at TRISC5_bit;
sbit LCD_D4_Direction at TRISC0_bit;
sbit LCD_D5_Direction at TRISC1_bit;
sbit LCD_D6_Direction at TRISC2_bit;
sbit LCD_D7_Direction at TRISC3_ bit;
// End LCD module connections
char Messaqe1 [] = «ВАТТЕRY»;
unsiqned int ADC_Value, DisplayVolt;
char *volt = «00.0″;
void main() {
ANSEL = 0b00000100; // RA2/AN2 is analog input
ADCONO = 0b00001000; // Analog channel select @ AN2
ADCON1 = 0×00; // Reference voltage is Vdd
CMCON0 = 0×07 ; // Disable comparators
TRISC = 0b00000000; // PORTC All Outputs
TRISA = 0b00001100; // PORTA All Outputs, Except RA3 and RA2
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // CLEAR display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,Messagel);
Lcd_Chr(2,10,’V') ;
do {
ADC_Value = ADC_Read(2);
DisplayVolt = ADC_Value * 2;
volt[0] = DisplayVolt/1000 + 48;
volt[1] = (DisplayVolt/100)%10 + 48;
volt[3] = (DisplayVolt/10)%10 + 48;
Lcd_Out(2,5,volt);
delay_ms(500); // Hold for 500 ms
} while(1);
} // End main()
Скачать всё можно
Скомпилирована в MikroC Pro for PIC.
При прошивке устанавливают фьюзы:
Oscillator -> Internal RC No Clock
Watchdog Timer -> Off
Power Up Timer -> On
Master Clear Enable -> Enabled
Code Protect -> Off
Data EE Read Protect -> Off
Brown Out Detect -> BOD Enabled,
SBOREN Disabled
Internal External Switch Over Mode -> Enabled
Monitor Clock Fail-Safe -> Enabled
Монтаж выполнен на готовой макетной печатной плате («решето») размерами 80×30 мм.
Налаживание сводится к настройке входного делителя резистором R2 так чтобы показания соответствовали действительности. Желательно чтобы R2 был многооборотным (для точности).
Вольтметр питается от измеряемой цепи, этим ограничивается нижний предел измерения, так как напряжение питания микроконтроллера не может быть меньше 5V. В то же время, если разъединить измеряемую и питающую цепи (использовать отдельный источник питания, не зависящий от измеряемой цепи) можно будет измерять напряжене в пределах 0-20V. Этот вариант может подойти для использования вольтметра для индикации выходного регулируемого напряжения лабораторного источника питания.
В основе устройства микроконтроллер PIC16F688 со встроенным АЦП. Максимальное напряжение на входе RA2 не может превышать 5V, поэтому в схеме имеется делитель на резисторах R1, R2 и аварийный ограничитель входного напряжения на стабилитроне VD1.
Измеряемое напряжение поступает на разъем Х1. Здесь оно разделяется на две цепи. На цепь питания, — напряжение поступает на интегральный стабилизатор А1 типа 7805, который поддерживает стабильным напряжение питания микроконтроллера 5V независимо от величины входного измеряемого напряжение, которое является и питающим одновременно.
На измерительную цепь напряжение поступает через делитель R1, R2. Резистор R2 взят подстроечный, многооборотный, с его помощью калибруют вольтметр сравнивая его показания с показаниями образцового вольтметр (например, мультиметра).
Разъем Х2 используется для внутрисхемного программирования, например, для обновления или внесения изменений в программу. Кнопка S1 предназначена для аварийного сброса если схема зависнет.
Индикация осуществляется на стандартном ЖК-двухстрочном индикаторе с подсветкой (выводы 15-16) и регулировкой контрастности (R4). Можно использовать и индикатор без подсветки.
Немного о работе устройства.
Для правильной работы АЦП требуется источник стабильного опорного напряжения, здесь в качестве такового используется напряжение питания +5V, таким образом стабильность работы АЦП практически зависит от стабильности интегрального стабилизатора А1. В результате АЦП преобразует в цифровой код любое напряжение от 0 до 5V работая 1024-мя ступенями (фактически от 0 до 1023). Таким образом разрешение равно 0,0049V на ступеньку преобразования.
Входной делитель (на R1 и R2) при правильной настройке делает умножение входного напряжение на 0,2457. Например, если входное напряжение равно 12V, то напряжение на входе RA2 будет равно 2,9484V. Далее вычисляется количество ступеней преобразования => 2,9484 /0,0049 = 601,7, то есть 601 целая ступень. Теперь остается выполнить умножение этого числа ступеней на два => 601 х 2 = 1202 и расставить запятые (индицируется только три разряда). Индицируется результат «12,0V».
Программа написана на языке С :
/* Project: Diqital Voltmeter based on PIC16F688
Internal Oscillator @ 4МНz, MCLR
EnaЬled, PWRT EnaЬled, WDT OFF
Constructor 09/2013
*/
// LCD module connections
sbit LCD_RS at RC4_bit;
sbit LCD_EN at RC5_bit;
sbit LCD_D4 at RC0_bit;
sbit LCD_D5 at RC1_bit;
sbit LCD_D6 at RC2_bit;
sbit LCD_D7 at RCЗ_bit;
sbit LCD_RS_Direction at TRISC4_bit;
sbit LCD_EN_Direction at TRISC5_bit;
sbit LCD_D4_Direction at TRISC0_bit;
sbit LCD_D5_Direction at TRISC1_bit;
sbit LCD_D6_Direction at TRISC2_bit;
sbit LCD_D7_Direction at TRISC3_ bit;
// End LCD module connections
char Messaqe1 [] = «ВАТТЕRY»;
unsiqned int ADC_Value, DisplayVolt;
char *volt = «00.0″;
void main() {
ANSEL = 0b00000100; // RA2/AN2 is analog input
ADCONO = 0b00001000; // Analog channel select @ AN2
ADCON1 = 0×00; // Reference voltage is Vdd
CMCON0 = 0×07 ; // Disable comparators
TRISC = 0b00000000; // PORTC All Outputs
TRISA = 0b00001100; // PORTA All Outputs, Except RA3 and RA2
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // CLEAR display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,Messagel);
Lcd_Chr(2,10,’V') ;
do {
ADC_Value = ADC_Read(2);
DisplayVolt = ADC_Value * 2;
volt[0] = DisplayVolt/1000 + 48;
volt[1] = (DisplayVolt/100)%10 + 48;
volt[3] = (DisplayVolt/10)%10 + 48;
Lcd_Out(2,5,volt);
delay_ms(500); // Hold for 500 ms
} while(1);
} // End main()
Скачать всё можно
Скомпилирована в MikroC Pro for PIC.
При прошивке устанавливают фьюзы:
Oscillator -> Internal RC No Clock
Watchdog Timer -> Off
Power Up Timer -> On
Master Clear Enable -> Enabled
Code Protect -> Off
Data EE Read Protect -> Off
Brown Out Detect -> BOD Enabled,
SBOREN Disabled
Internal External Switch Over Mode -> Enabled
Monitor Clock Fail-Safe -> Enabled
Монтаж выполнен на готовой макетной печатной плате («решето») размерами 80×30 мм.
Налаживание сводится к настройке входного делителя резистором R2 так чтобы показания соответствовали действительности. Желательно чтобы R2 был многооборотным (для точности).
Похожие статьи: