8-900-374-94-44
[email protected]
Slide Image
Меню

Ампервольтметр на atmega8 своими руками: Вольтамперметр МК Atmega8 с автоматическим выбором измеряемого диапазона силы тока

Содержание

Вольтамперметр МК Atmega8 с автоматическим выбором измеряемого диапазона силы тока

'* Filename : Вольтметр, 2х диапазонный ампертметр *
'* Revision : 5.1 *
'* Controller : ATMEGA8 *
'* Compiler : BASCOM-AVR 2.0.6.1 *
'* Author : MACTEPOK *
'*******************************************************************************
$regfile = "m8def.dat" 'определяем контроллер
$crystal = 8000000 'внутренний генератор
'$sim
$lib "mcsbyte.lbx" 'подключаем библиотеку функций

Config Pinc.0 = Input : Portc.0 = 1 'кнопка Выбор
Config Pinc.1 = Input : Portc.1 = 1 'кнопка Вверх
Config Pinc.2 = Input : Portc.2 = 1 'кнопка Вниз

Config Portd = Output : Config Portb = Output 'порты на выход к которым подключен индикатор

Load1 Alias Portb.3 'нагрузка №1
Load2 Alias Portb.4 'нагрузка №2
Vibor Alias Pinc.0 'кнопка Выбор
Up Alias Pinc.1 'кнопка Вверх
Down Alias Pinc.2 'кнопка Вниз

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'настраиваем АЦП
Dim W As Byte , Y As Byte , X As Byte , I As Byte , Z As Byte , Chislo(6) As Integer , Channel_1 As Integer , On1 As Word , Off1 As Word , Channel_2 As Integer , On2 As Word , Off2 As Word , Channel_3 As Integer , Sostoyanie As Byte , Sostoyanie_2 As Byte , Copy_print As Integer , Copy_print_sec As Integer , Copy_var As Integer , _print As Integer , _print_sec As Integer , Pokazaniya As Integer , View_menu As Byte , Booton_flag As Bit , Booton_flag_2 As Bit , Count As Word , Error_flag As Bit

Dim On2_l As Word , On2_h As Word , Off2_l As Word , Off2_h As Word , Diapazon As Byte
Dim Razryad_1 As Byte , Razryad_2 As Byte , Temp_najatiya As Byte , Indicator As Byte
Dim Menu_punkt As Byte 'пункт меню
Dim Set_flag As Bit 'флаг режима настройки уставок
Dim Podskaz_flag As Bit , Podskaz_flag_sec As Bit 'флаги режима отображения подсказок на соответствующих каналах
Dim Default As Eram Byte At &h24 'переменная EEPROM для записи начальных уставок для первого включения прибора

'A Alias Portd.5 : B Alias Portd.7 : C Alias Portd.3 : D Alias Portd.1 'порты, к которым подключены сегменты индикатора
'E Alias Portd.0 : F Alias Portd.6 : G Alias Portd.4 : H Alias Portd.2 '
'Dig1 Alias Portb.0 : Dig2 Alias Portb.1 : Dig3 Alias Portb.2 ' порты, к которым подключены общие аноды 1го индикатора
'Dig1_sec Alias Portb.5 : Dig2_sec Alias Portb.6 : Dig3_sec Alias Portb.7 ' порты, к которым подключены общие аноды 2го индикатора

A Alias Portd.2 : B Alias Portd.6 : C Alias Portb.7 : D Alias Portb.2 'порты, к которым подключены сегменты индикатора
E Alias Portd.0 : F Alias Portb.6 : G Alias Portd.7 : H Alias Portb.5 '
Dig1 Alias Portd.3 : Dig2 Alias Portd.4 : Dig3 Alias Portd.1 ' порты, к которым подключены общие аноды 1го индикатора
Dig1_sec Alias Portd.5 : Dig2_sec Alias Portb.0 : Dig3_sec Alias Portb.1 ' порты, к которым подключены общие аноды 2го индикатора

For X = 1 To 6 ' присваиваем всем цифрам пустоту, чтоб в момент включения не высвечивались нули
Chislo(x) = 11
Next
'*********** ___ Переключение типа индикаторов (ОК/ОА) ___ *********************
Readeeprom Indicator , 30
If Vibor = 0 Then ' Удерживая кнопку УСТ, подаем питание.
For X = 1 To 200
If X = 150 Then ' При длительном нажатии
Set Booton_flag
Toggle Indicator.3 ' Переключаем младший (четвертый) бит переменной. Номер бита выбрал произвольно
Writeeeprom Indicator , 30
If Indicator = &B00000000 Then ' Если переключили на ОА, зажжем все сегменты идикатора для подтверждения

Reset A : Reset B : Reset C : Reset D : Reset E : Reset F : Reset G : Reset H
Set Dig1 : Set Dig2 : Set Dig3 : Set Dig1_sec : Set Dig2_sec : Set Dig3_sec
End If
If Indicator = &B00001000 Then ' Если переключили на ОK, зажжем все сегменты идикатора для подтверждения
Set A : Set B : Set C : Set D : Set E : Set F : Set G : Set H
Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig1_sec : Reset Dig2_sec : Reset Dig3_sec
End If
Waitms 1500
Exit For
End If
If Vibor = 1 Then Exit For
Waitms 10
Next
End If
'*******************************************************************************
If Default = 255 Then 'при первом запуске, когда Default=255
Off1 = 120 'присваиваем начальный уставки
On1 = 110
' Off2 = 60
' On2 = 50
On2_l = 800
On2_h = 99
Off2_l = 600
Off2_h = 99
Indicator = &B00000000 ' для ОА. Indicator = &B00001000 для ОК
Razryad_1 = &B10111011
Razryad_2 = &B11101110
Writeeeprom On1 , 0 ' Записываем в EEPROM уставку ON1
Writeeeprom Off1 , 5 ' Записываем в EEPROM уставку OFF1
' Writeeeprom On2 , 10 ' Записываем в EEPROM уставку ON2
' Writeeeprom Off2 , 14 ' Записываем в EEPROM уставку OFF2
Writeeeprom On2_l , 22
Writeeeprom On2_h , 24
Writeeeprom Off2_l , 26
Writeeeprom Off2_h , 28
Writeeeprom Razryad_1 , 16
Writeeeprom Razryad_2 , 17
Writeeeprom Indicator , 30
Default = 100 ' присваиваем значение 100(произвольное, отличное от 255) и больше этот кусок кода выполняться не будет
End If
Readeeprom On1 , 0 ' Считываем из EEPROM уставку ON1
Readeeprom Off1 , 5 ' Считываем из EEPROM уставку OFF1
' Readeeprom On2 , 10 ' Считываем из EEPROM уставку ON2
' Readeeprom Off2 , 14 ' Считываем из EEPROM уставку OFF2
Readeeprom On2_l , 22
Readeeprom On2_h , 24
Readeeprom Off2_l , 26
Readeeprom Off2_h , 28
Readeeprom Razryad_1 , 16
Readeeprom Razryad_2 , 17

Config Timer0 = Timer , Prescale = 8 : On Timer0 Pulse ' конфигурируем таймер 0 и назначаем подпрограмму которая выполняется при переполнении таймера
Config Timer1 = Timer , Prescale = 1 : On Timer1 Bootons ' конфигурируем таймер 1 и назначаем подпрограмму которая выполняется при переполнении таймера
Enable Interrupts : Enable Timer0 : Enable Timer1 ' разрешаем прерывания, таймер 0, таймер 1
Start Timer0 : Start Timer1

Start Adc ' начало преобразования

If On2_l > 999 Then On2 = On2_h Else On2 = On2_l
If Off2_l > 999 Then Off2 = Off2_h Else Off2 = Off2_l

Do
 If X > 40 Then ' увеличили период опроса АЦП, чтобы значения не прыгали 
Stop Timer0 : Stop Timer1 ' на время преобразования останавливаем таймеры
Channel_1 = Getadc(5) ' Вольтметр 0..500 В 'опрос АЦП (диапазон от 0 до 1023) (1 канал)
' Channel_1 = 1023 - Channel_1 'инвертирование раскомментировать===========
 Channel_1 = Channel_1 / 2.046 'пересчет тут любая формула для требуемого диапазона или необходимой характеристики 
If Channel_1 > 500 Then Channel_1 = 500 'верхний предел показаний

Channel_2 = Getadc(4) ' Ток 1,00 .. 9,99 А 'опрос АЦП (2 канал)
' Channel_2 = Channel_2 'пересчет тут любая формула для требуемого диапазона или необходимой характеристики 
If Channel_2 > 999 Then Channel_2 = 999 'верхний предел показаний
' Razryad_2 = &B01110111
Diapazon = 2
If Channel_2 < 100 Then
Channel_2 = Getadc(3) ' Ток 0 .. 999 mА 'опрос АЦП (3 канал)
If Channel_2 > 999 Then Channel_2 = 999
' Razryad_2 = &B11101110
Diapazon = 1

End If
X = 0 '
End If
Start Timer0 : Start Timer1
If On1 < Off1 Then 'если уставка ON1 < OFF1 то режим нагревателя
If Channel_1 <= On1 Then Sostoyanie = 1 'если значение первого канала АЦП ниже уставки ON1, то включаем нагрузку №1
If Channel_1 >= Off1 Then Sostoyanie = 0 'если значение первого канала АЦП выше уставки OFF1, то выключаем нагрузку №1
Else 'если уставка ON1 > OFF1 то режим охладителя
If Channel_1 >= On1 Then Sostoyanie = 1 'если значение первого канала АЦП выше уставки ON1, то включаем нагрузку №1
If Channel_1 <= Off1 Then Sostoyanie = 0 'если значение первого канала АЦП ниже уставки OFF1, то выключаем нагрузку №1
End If

If Sostoyanie = 1 Then Set Load1 Else Reset Load1 'управление 1м каналом нагрузки

' If On2 < Off2 Then 'если уставка ON2 < OFF2 то режим нагревателя
' If Channel_2 <= On2 Then Sostoyanie_2 = 1 'если давление ниже уставки ON2, то включаем нагрузку №2
' If Channel_2 >= Off2 Then Sostoyanie_2 = 0 'если давление выше уставки OFF2, то выключаем нагрузку №2
' Else 'если уставка ON2 > OFF2 то режим охладителя
' If Channel_2 >= On2 Then Sostoyanie_2 = 1 'если давление выше уставки ON2, то включаем нагрузку №2

' If Channel_2 <= Off2 Then Sostoyanie_2 = 0 'если давление ниже уставки OFF2, то выключаем нагрузку №2
' End If
If Diapazon = 2 Then
If Channel_2 >= On2_h Then Sostoyanie_2 = 1
If Channel_2 < Off2_h Then Sostoyanie_2 = 0
Else
If Channel_2 >= On2_l Then Sostoyanie_2 = 1
If Channel_2 < Off2_l Then Sostoyanie_2 = 0
End If

If Sostoyanie_2 = 1 Then Set Load2 Else Reset Load2 'управление 2м каналом нагрузки

Loop

'*******************************************************************************
' Индикация

Pulse:
If View_menu <> 0 And Error_flag = 0 Then Incr Count 'если находимся в меню и нет ошибки ввода уставок,то инкриментируем счетчик, который отвечает за автоматический выход из меню (~ через 5 сек)
If Count > 7000 Then 'задается время автоматического выхода из меню
Count = 0 'сброс счетчика
View_menu = 0 ' выход из меню в основной режим
End If
' H = 1 ' выключаем точку на индикаторе
Stop Timer0 'останавливаем таймер 0
Select Case View_menu 'в зависимости от пункта меню, записываем в переменные расчета следующие данные

Case 0 :
_print = Channel_1 ' основной режим. 1й индикатор показывает значение АЦП 1го канала
_print_sec = Channel_2 ' основной режим. 2й индикатор показывает значение АЦП 2го канала
If Diapazon = 2 Then Razryad_2 = &B01110111 Else Razryad_2 = &B11101110

Case 1 :
_print = On1 ' 1й индикатор показывает значение уставки ON1
_print_sec = Channel_2 ' 2й индикатор показывает значение АЦП 2го канала
Case 2 :
_print = Off1 ' 1й индикатор показывает значение уставки OFF1
_print_sec = Channel_2 ' 2й индикатор показывает значение АЦП 2го канала
Case 3 :
_print = Channel_1 ' 1й индикатор показывает значение АЦП 1го канала
If On2_l = 1000 Then Razryad_2 = &B01110111 Else Razryad_2 = &B11101110
_print_sec = On2 ' 2й индикатор показывает значение уставки ON2
Case 4 :
_print = Channel_1 ' 1й индикатор показывает значение АЦП 1го канала
If Off2_l = 1000 Then Razryad_2 = &B01110111 Else Razryad_2 = &B11101110
_print_sec = Off2 ' 2й индикатор показывает значение уставки OFF2

End Select

If Podskaz_flag = 0 Then 'если не выводим на 1й индикатор подсказки, то работаем с числами

Copy_print = _print '
Copy_var = Copy_print '
For I = 3 To 1 Step -1 ' цикл в котором разбивается переменная на 3 числа
Chislo(i) = Copy_print Mod 10 ' заносим в масив последнюю цифру от числа Copy_print(123 mod 10 = 3)
Copy_print = Copy_print / 10 ' отсекаем последнюю цифру от числа Copy_print (123/10=12)
Next ' убираем незначимые нули
If Copy_var < 100 Then Chislo(1) = 11 'для 2х значного числа
' If Copy_var < 10 Then Chislo(2) = 11 'для однозначного числа
End If
If Podskaz_flag_sec = 0 Then 'если не выводим на 2й индикатор подсказки, то работаем с числами
Copy_print_sec = _print_sec '
Copy_var = Copy_print_sec
For I = 6 To 4 Step -1 ' цикл в котором разбивается переменная на 3 числа
Chislo(i) = Copy_print_sec Mod 10 ' заносим в масив последнюю цифру от числа _print(123 mod 10 = 3)
Copy_print_sec = Copy_print_sec / 10 ' отсекаем последнюю цифру от числа Copy_print_sec (123/10=12)
Next 'убираем незначимые нули
' If Copy_var < 100 Then Chislo(4) = 11 'для 2х значного числа
' If Copy_var < 10 Then Chislo(5) = 11 'для однозначного числа
End If

If Indicator = 0 Then ' Гасим индикаторы перед выводом информации

Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig1_sec : Reset Dig2_sec : Reset Dig3_sec ' Для индикатора с ОА
Else
Set Dig1 : Set Dig2 : Set Dig3 : Set Dig1_sec : Set Dig2_sec : Set Dig3_sec 'Для индикатора с ОK
End If

Incr W : If W > 6 Then W = 1 ' выбираем какую цифру сейчас включать
Y = 0
Gosub Look : A = Z ' переходим к подпрограмме Look, которая определяет нужно ли сейчас загорется сегменту А
Gosub Look : B = Z
Gosub Look : C = Z
Gosub Look : D = Z
Gosub Look : E = Z
Gosub Look : F = Z
Gosub Look : G = Z

Select Case W ' включаем цифру(разряд) которую выбрали (w). Подаем плюс на общий провод конкретной цифры (разряда)
Case 1 :
If Indicator = 0 Then
Set Dig3
If Podskaz_flag = 0 Then H = Razryad_1.3 Else H = 1
Else
Reset Dig3
If Podskaz_flag = 0 Then
H = Razryad_1.3
Toggle H
Else
H = 0
End If
End If
Case 2 :
If Indicator = 0 Then
Set Dig2
If Podskaz_flag = 0 Then H = Razryad_1.2 Else H = 1
Else
Reset Dig2
If Podskaz_flag = 0 Then
H = Razryad_1.2
Toggle H
Else
H = 0
End If
End If
Case 3 :

If Indicator = 0 Then
Set Dig1
If Podskaz_flag = 0 Then H = Razryad_1.1 Else H = 1
Else
Reset Dig1
If Podskaz_flag = 0 Then
H = Razryad_1.1
Toggle H
Else
H = 0
End If
End If
Case 4 :
If Indicator = 0 Then
Set Dig3_sec
If Podskaz_flag_sec = 0 Then H = Razryad_2.3 Else H = 1
Else
Reset Dig3_sec
If Podskaz_flag = 0 Then
H = Razryad_2.3
Toggle H
Else
H = 0
End If
End If
Case 5 :
If Indicator = 0 Then
Set Dig2_sec
If Podskaz_flag_sec = 0 Then H = Razryad_2.2 Else H = 1
Else
Reset Dig2_sec
If Podskaz_flag = 0 Then
H = Razryad_2.2
Toggle H
Else
H = 0
End If
End If
Case 6 :
If Indicator = 0 Then
Set Dig1_sec
If Podskaz_flag_sec = 0 Then H = Razryad_2.1 Else H = 1
Else
Reset Dig1_sec
If Podskaz_flag = 0 Then
H = Razryad_2.1
Toggle H
Else
H = 0
End If
End If
End Select
'

Start Timer0
Return
'
Look: ' подпрограмма которая определяет нужно ли сейчас гореть сегменту, который вызвал эту подпрограмму
Z = Chislo(w) * 7 : Z = Y + Z ' определяем порядковый номер числа из таблици DATA. W - это цифра которую будем выводить 1..2..3, Y это номер сегмента (A=0 B=1 C=2...G=7)
If Indicator = 0 Then
Z = Lookup(z , Cifri_oa) ' выбираем из таблици включить или выключить нужный сегмент -OA
Else
Z = Lookup(z , Cifri_ok) '-OK
End If
Incr Y 'Y это номер сегмента (A=0 B=1 C=2...). Chislo(w) * 7 - переход на начало нужной строки Data.Z = Y + Z - по очереди перебираем сегменты в строке.
Return
'
Cifri_oa:
' таблица сегментом для индикаторов с общим плюсом |Chislo(i) | Символ |
Data 0 , 0 , 0 , 0 , 0 , 0 , 1 '0
Data 1 , 0 , 0 , 1 , 1 , 1 , 1 '1
Data 0 , 0 , 1 , 0 , 0 , 1 , 0 '2
Data 0 , 0 , 0 , 0 , 1 , 1 , 0 '3
Data 1 , 0 , 0 , 1 , 1 , 0 , 0 '4
Data 0 , 1 , 0 , 0 , 1 , 0 , 0 '5
Data 0 , 1 , 0 , 0 , 0 , 0 , 0 '6
Data 0 , 0 , 0 , 1 , 1 , 1 , 1 '7
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 '8
Data 0 , 0 , 0 , 0 , 1 , 0 , 0 '9
Data 1 , 1 , 1 , 1 , 1 , 1 , 0 '10 "-"
Data 1 , 1 , 1 , 1 , 1 , 1 , 1 '11 ""
Data 1 , 1 , 1 , 0 , 0 , 0 , 1 '12 "L"
Data 1 , 1 , 0 , 1 , 0 , 1 , 0 '13 "n"
Data 0 , 1 , 1 , 1 , 0 , 0 , 0 '14 "F"
Data 0 , 1 , 1 , 0 , 0 , 0 , 0 '15 "E"
Data 1 , 1 , 1 , 1 , 0 , 1 , 0 '16 "r"

'*******************************************************************************
Cifri_ok:
' таблица сегментом для индикаторов с общим минусом |Chislo(i) | Символ |
Data 1 , 1 , 1 , 1 , 1 , 1 , 0 '0
Data 0 , 1 , 1 , 0 , 0 , 0 , 0 '1
Data 1 , 1 , 0 , 1 , 1 , 0 , 1 '2
Data 1 , 1 , 1 , 1 , 0 , 0 , 1 '3
Data 0 , 1 , 1 , 0 , 0 , 1 , 1 '4
Data 1 , 0 , 1 , 1 , 0 , 1 , 1 '5
Data 1 , 0 , 1 , 1 , 1 , 1 , 1 '6
Data 1 , 1 , 1 , 0 , 0 , 0 , 0 '7
Data 1 , 1 , 1 , 1 , 1 , 1 , 1 '8
Data 1 , 1 , 1 , 1 , 0 , 1 , 1 '9
Data 0 , 0 , 0 , 0 , 0 , 0 , 1 '10 "-"
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 '11 "" пусто
Data 0 , 0 , 0 , 1 , 1 , 1 , 0 '12 "L"
Data 0 , 0 , 1 , 0 , 1 , 0 , 1 '13 "n"
Data 1 , 0 , 0 , 0 , 1 , 1 , 1 '14 "F"
Data 1 , 0 , 0 , 1 , 1 , 1 , 1 '15 "E"
Data 0 , 0 , 0 , 0 , 1 , 0 , 1 '16 "r"

'*******************************************************************************
'
'*******************************************************************************
' Опрос кнопок
Bootons:
Incr X
Stop Timer1
If Vibor = 0 And Booton_flag = 0 And Up = 1 And Down = 1 Then Gosub Set_mode ' Нажатие кнопки УСТ
If Set_flag = 1 And Vibor = 1 Then 'Кнопки Вверх и Вниз активны только после входа в меню
If Up = 0 Then Gosub Up_const
If Down = 0 Then Gosub Down_const
End If
If Vibor = 0 And Up = 0 And View_menu = 0 And Booton_flag_2 = 0 Then Gosub Set_h_led1
' If Vibor = 0 And Down = 0 And View_menu = 0 And Booton_flag_2 = 0 Then Gosub Set_h_led2

If Vibor = 1 And Up = 1 And Down = 1 Then Reset Booton_flag 'сброс флага удержания кнопки
If Vibor = 1 Then Reset Booton_flag_2
Start Timer1 : Start Timer0
Return
'*******************************************************************************
'
'
Set_mode:
Enable Interrupts : Enable Timer0 : Start Timer0

Set Set_flag ' поднимаем флаг режима настройки уставок (находимся в меню)
Set Booton_flag ' поднимаем флаг удержания кнопки (пока не сбросится, в следующий пункт меню не попадаем)
Count = 0 'сброс счетчика автоматического выхода из меню
If On1 = Off1 Or On2_l = Off2_l And On2_h = Off2_h Then Gosub Errors 'Блокировка ввода уставок. Переходим в подпрограмму индикации ошибки
Incr View_menu ' следующий пункт меню
If View_menu > 4 Then View_menu = 0 ' всего 4 пункта меню, 0й - основной режим

Select Case View_menu 'индикация подсказок пунктов меню
Case 0 : ' ---
Set Podskaz_flag
Set Podskaz_flag_sec
Chislo(1) = 10
Chislo(2) = 10
Chislo(3) = 10
Chislo(4) = 10
Chislo(5) = 10
Chislo(6) = 10
Reset Set_flag '
Waitms 500
Stop Timer1 : Stop Timer0
' Writeeeprom Off2 , 14 ' запись уставки OFF2 в EEPROM
Writeeeprom Off2_l , 26
Writeeeprom Off2_h , 28
Case 1 : ' On1
Set Podskaz_flag 'Поднимаем флаг вывода подсказок (буквы) на 1й индикатор
Chislo(3) = 1
Chislo(2) = 13
Chislo(1) = 0
Waitms 500

Case 2 : ' OF1
Set Podskaz_flag 'Поднимаем флаг вывода подсказок (буквы) на 1й индикатор
Chislo(3) = 1
Chislo(2) = 14
Chislo(1) = 0
Waitms 500
Stop Timer1 : Stop Timer0
Writeeeprom On1 , 0 ' запись уставки ON1 в EEPROM

Case 3 : ' On2
Set Podskaz_flag_sec 'Поднимаем флаг вывода подсказок (буквы) на 2й индикатор
Chislo(6) = 2
Chislo(5) = 13
Chislo(4) = 0
Waitms 500
Stop Timer1 : Stop Timer0
Writeeeprom Off1 , 5 ' запись уставки OFF1 в EEPROM

Case 4 : ' OFF2
Set Podskaz_flag_sec 'Поднимаем флаг вывода подсказок (буквы) на 2й индикатор
Chislo(6) = 2
Chislo(5) = 14
Chislo(4) = 0
Waitms 500
Stop Timer1 : Stop Timer0
' Writeeeprom On2 , 10 ' запись уставки ON2 в EEPROM
Writeeeprom On2_l , 22
Writeeeprom On2_h , 24
End Select

Reset Podskaz_flag
Reset Podskaz_flag_sec
Return
'
Errors:
Set Error_flag ' поднимаем флаг ошибки
If On1 = Off1 Then
Set Podskaz_flag
Chislo(1) = 15
Chislo(2) = 16 'Выводим подсказку Err и мигаем на 1м индикаторе
Chislo(3) = 16
Waitms 500
Chislo(1) = 11
Chislo(2) = 11
Chislo(3) = 11
Waitms 500
Chislo(1) = 15
Chislo(2) = 16
Chislo(3) = 16
Waitms 500
Chislo(1) = 11
Chislo(2) = 11
Chislo(3) = 11
Waitms 500
End If
If On2_l = Off2_l And On2_h = Off2_h Then
Set Podskaz_flag_sec
Chislo(4) = 15
Chislo(5) = 16 'Выводим подсказку Err и мигаем на 2м индикаторе
Chislo(6) = 16
Waitms 500
Chislo(4) = 11
Chislo(5) = 11
Chislo(6) = 11
Waitms 500
Chislo(4) = 15
Chislo(5) = 16
Chislo(6) = 16
Waitms 500
Chislo(4) = 11
Chislo(5) = 11
Chislo(6) = 11
Waitms 500
End If
Select Case View_menu ' взависимости от того, в каком пункте меню ввели неверное значение
Case 0 : ' возвращаем из EEPROM предыдущие значения
Case 1 :
Readeeprom On1 , 0
Case 2 :
Readeeprom Off1 , 5
Case 3 :
' Readeeprom On2 , 10
Readeeprom On2_l , 22
Readeeprom On2_h , 24
Case 4 :
' Readeeprom Off2 , 14
Readeeprom Off2_l , 26
Readeeprom Off2_h , 28
End Select
Decr View_menu ' возвращаемся в предыдущий пункт меню (в ошибочный)
Count = 0 : Reset Error_flag
Return
'
Up_const:
Enable Interrupts : Enable Timer0 : Start Timer0
Count = 0
Select Case View_menu
Case 1 :
If On1 < 999 Then Incr On1 '
Case 2 : '
If Off1 < 999 Then Incr Off1
Case 3 : '
' If On2 < 999 Then Incr On2
If On2_l < 1000 Then
Razryad_2 = &B11101110
On2_h = 99
Incr On2_l
On2 = On2_l
End If
If On2_l > 999 Then
Razryad_2 = &B01110111
If On2_h < 999 Then Incr On2_h
On2 = On2_h
End If '
Case 4 : '
' If Off2 < 999 Then Incr Off2
If Off2_l < 1000 Then
Razryad_2 = &B11101110
Off2_h = 99
Incr Off2_l
Off2 = Off2_l
End If
If Off2_l > 999 Then
Razryad_2 = &B01110111
If Off2_h < 999 Then Incr Off2_h
Off2 = Off2_h
End If
End Select
Waitms 15
Return
'
'
Down_const:
Enable Interrupts : Enable Timer0 : Start Timer0
Count = 0
Select Case View_menu
Case 1 :
If On1 > 0 Then Decr On1 ' добавляется второе условие при работе с отрицательными числами
Case 2 :
If Off1 > 0 Then Decr Off1
Case 3 :
' If On1 > 0 Then Decr On2
If On2_h > 99 Then
Razryad_2 = &B01110111
On2_l = 1000
If On2_h > 99 Then Decr On2_h
On2 = On2_h
End If
If On2_h < 100 Then
Razryad_2 = &B11101110
If On2_l > 0 Then Decr On2_l
On2 = On2_l
End If
Case 4 :
' If Off2 > 0 Then Decr Off2
If Off2_h > 99 Then
Razryad_2 = &B01110111
Off2_l = 1000
If Off2_h > 99 Then Decr Off2_h
Off2 = Off2_h
End If
If Off2_h < 100 Then
Razryad_2 = &B11101110
If Off2_l > 0 Then Decr Off2_l
Off2 = Off2_l
End If
End Select
Waitms 15
Return
'
'
Set_h_led1:
Set Booton_flag_2
Rotate Razryad_1 , Left
Stop Timer1 : Stop Timer0
Writeeeprom Razryad_1 , 16
Return
'
'
Set_h_led2:
' Set Booton_flag_2
' Rotate Razryad_2 , Left
' Stop Timer1 : Stop Timer0
' Writeeeprom Razryad_2 , 17
Return

Цифровой вольтметр на Atmega8. Схема принципиальная. Прошивка.

Представленное здесь устройство пригодится, если у Вас есть блок питания с выходным напряжение 0-10 В. Именно такие пределы измерения "заложены" в схему представленную на рисунке. В ее основе - микроконтроллер Atmega8 (U1) в стандартном корпусе DIP. Он может показаться громоздким, но был выбран из-за широкой популярности, а также по причине того, что программаторы, для данного микроконтроллера очень распространены. Atmega8 используют большинство радиолюбителей и в Интернете можно найти немало схем с этим микроконтроллером. Поэтому, если Вам не понравится данный вольтметр, Atmega8 не останется лежать без дела.

Цифровой вольтметр на Atmega8. Схема принципиальная.

Показатели измерения вольтметра будут отображаться на цифровом семисегментном трехзначном индикаторе (DISP1). Дам немного информации по поводу него.

7-сегментный цифровой LED индикатор - это индикатор, состоящий из семи светодиодов, установленных в форме цифры 8. Зажигая или выключая соответствующие LED-ы (сегменты) можно отображать цифры от нуля до девяти, а так же некоторые буквы. Обычно используется несколько цифровых индикаторов, чтобы создать многозначные цифры - для этого индикаторы снабжены сегментом в виде запятой (точки) - dp. В итоге, у одного индикатора 8 сегментов, хотя называют их по числу цифровых сегментов 7-сегментным.

Каждый сегмент индикатора представляет собой отдельный светодиод, который может быть включен (светиться) или выключен (не светиться) в зависимости от полярности подаваемого на них напряжения. Индикаторы бывают как с общим катодом, так и с общим анодом. Речь идет об общем соединении всех светодиодов (сегментов). Кроме этого, индикаторы могут содержать несколько цифр, в таком случаем каждая цифра называется разрядом или знаком. Например, трехразрядный (трехзначный) семисегментный индикатор содержит три цифры. Именно такой индикатор и понадобится для этого устройства.

Устройство 7-сегментного индикатора.

В конструкции используется индикатор красного свечения GNT-2831BD-11 с общим анодом. Резисторы R1-R8 определяют ток в индикаторе и, следовательно, его яркость. Их сопротивление не должно превышать максимальный выходной ток (40 мА), даже когда все 8 светодиодов горят сразу. В схеме используется несимметричный 10-битный АЦП (аналого-цифровой преобразователь), находящийся в AVR. Диапазон выходного значения составляет 0-999. Когда будет достигнут предел этих значений, появится символ "---".

На входе вольтметра (in) установлен делитель напряжения из резисторов R9, R10 и R11, обеспечивая диапазон измерения до 10 В с погрешностью 0,01 В. На выводе 23 микроконтроллера U1 делитель формирует напряжение, которое не должно превышать 2,5 В. Входное сопротивление вольтметра близко к 1мОм. Для калибровки вольтметра подайте на его вход точно известное напряжение и, перемещая подстроечный резистор R11, добейтесь на индикаторе таких же показаний.

Частота обновления вольтметра составляет около 4 Гц. Схема питается от стабилизированного источника напряжением 5 В. Потребляемый ток устройства составляет около 25 мА (большая часть потребления приходится на индикатор). Компоненты C1 и C2 расположите как можно ближе к микроконтроллеру.

Правильно выставленные биты представлены на рисунке ниже.

Конфигурационные биты вольтметра.

Если Вам необходимы пределы измерения до 100 В, измените значение R10 на 9,1мОм и R11 на 2,2 мОм. Тогда Вы получите желаемый диапазон измерения с погрешностью 0,1 В и входным сопротивлением около 10мОм. В этом случае придется изменить и место точки индикатора, чтобы она отображалась за двумя символами, а не за первым, как на схеме. Для этого вывод 28 микросхемы U1 оставьте свободным, а к общему проводу подключите вывод 27. Теперь вместо символов в виде 0.00 будут отображаться 00.0.

Прошивку можно скачать с нашего файлового архива: proshivka_voltmeter.zip [526 б]

Как сделать вольтметр на микроконтроллере AVR

Подробности
Категория: Микроконтроллеры
Опубликовано 25.04.2014 09:22
Автор: Admin
Просмотров: 15352

Вольтметр на микроконтроллере Atmega8 и на светодиодном индикаторе FYT-3031-BSR-21 с общим анодом, применяют в измерениях напряжений блоков питания, при контроле зарядки аккумуляторов и  в других устройствах.

Технические характеристики вольтметра

  • количество сегментов индикатора – 3;
  • измеряемый диапазон напряжения: 0 – 50 В;
  • измерительный шаг - 0.1 В;
  • расчетная погрешность - 0.3%;
  • U напряжение питания  от 6 до 14 В.

Схема вольтметра представлена на рисунке ниже.


Схема работы вольтметра на микроконтроллере

Питающее входное напряжение ограничивает и стабилизирует микросхема DA1 - 7805. Диод VD1 является своего рода гарантом того что полярность не перепутана. Конденсаторы С1 и С2 стабилизируют работу микросхемы. Измеряемое напряжение подается на вход микроконтроллера через делитель напряжения, R1 и R2 которые расширяют диапазон измерения. Напряжение получаемое на входе в АЦП преобразуется в цифровое значение. Резистор R3 номиналом 10 кОм необходим для защиты микроконтроллера от случайного сброса.

Полученное таким образом цифровое значение раскладывается на разряды. Вывод значения каждого разряда производится последовательно при помощи динамической индикации. Набор резисторов R4 - R11 ограничивает ток в сегментах индикатора до приемлемых значений. На выводах A1 - A3 появляется положительное напряжение последовательно.

Детали и настройка схемы

Резистор R1 лучше применить прецизионный, как пример, типа С2-36 (допуск 0.5%) или С2-29В-0,125 ( допуск 0.25-0.5%). Сопротивление R2 для подстройки многооборотное, как пример, тип его 3296W. Сопротивления R3 - R11 мощностью 0,125-0,5 ватт (допуск +10%) , как пример, тип С2-33; CF1/4 и т. д. Конденсаторы С1, С2 подойдут электролитический любые с пределом Т* = 105*С, емкостью – 22-47 мкФ. Конденсатор С3 с керамики, как пример, К10-17Б. Диод VD1 лучше заменить бы на 1N4148 или даже более мощный КД247; 1N4001; и т. д. Стабилизатор U до 5 В DA1 любой, но в корпусе TO220, как пример, КР142ЕН5А и т. д.

При настройке прибора на вход дают образец напряжения – под 50 В, но не больше, и регулировкой R2 достигают того, чтобы совпали показания вольтметра и образец напряжения. Потом ось резистора подстройки контрят нитрокраской или цапонлаком, которые быстро сохнут.

Сборка вольтметра

При динамичном управлении индикаторами светодиодными необходимо учитывать эффект от накопившихся зарядов в светодиодах. Если просто снимается U с сегмента, то накопленный заряд в диффузионной емкости p-n-p перехода будет еще какое-то время засвечивать индикатор, пока p-n-p-переходная емкость полностью не потеряет заряд. Это называется паразитной подсветкой индикатора. Чтобы быстро рассеять данный заряд и четко гасить индикатор, необходимо подать на сегменты U с обратной полярностью (как пример, для индикатора с 1-общим анодом на сегмент-катод надо подать уровень до 5 В, а на анод – уровень 0 В.)

Точность вольтметра на микроконтроллере с АЦП 10 - ти разрядными не очень высокая, составляет всего лишь примерно 0.3 %. Ее вычисляют следующим образом: ошибка дискретности 1LSB + нелинейная ошибка (по Даташиту – это 2LSB). Суммарная ошибка будет равна 3LSB. Соответственно погрешность относительная 3/1024~0,3%. Погрешность абсолютная для показаний близких к 50 В 0.3% = ±0,15 В.

Следовательно, разница при этом между завышенными показаниями и заниженными вдвое больше и равняется она - 0.3 В. Говоря другими словами, прибор настраивается так, чтобы отклонения показаний получались не односторонними, а симметричными по отношению к заданной характеристики.

Исходный код и прошивка для вольтметра

  • < Назад
  • Вперёд >
Добавить комментарий

Вольтамперметр на Ардуино (ATmega8 ).

Надоело мне тестировать всевозможные стабилизаторы и блоки питания в слепую, подключая к ним различного рода резисторы и прочую чепуху и решил я собрать электронную нагрузку, а какая нагрузка без блока индикации? Правильно, фиговая! Поэтому был собран вольтамперметр, на базе имеющихся в наличие микроконтроллера ATmega8 и дисплея 16 символов на 2 строки.

В устройстве применено совсем не много деталей, пробегусь по основным узлам. Питание микроконтроллера и дисплея реализовано от отдельного источника состоящего из 2-х литиевых банок формата 18650 и линейного стабилизатора на пять вольт L7805, перед которым расположен делитель напряжения R1 — R2 необходимый для измерения напряжения на аккумуляторах. Подстроечный резистор R3 служит для настройки контраста дисплея. При включении устройство в течении 3-х секунд выводит на дисплее напряжение на аккумуляторах.

Напряжение подключаемого источника питания измеряется на делителе R4 — R5. Коэффициент этого делителя позволит микроконтроллеру измерять напряжение до 55 вольт, что более чем достаточно для моих целей.

Силу тока микроконтроллер определяет измеряя напряжение на резисторе R6 в качестве которого я использовал 2 параллельно подключенных резистора на 3 ома, а следовательно их общее сопротивление равно 1.5 ома и это не лучший выбор так как при больших токах и малом сопротивлении нагрузки такое значение будет сильно влиять на измерения. Необходимо использовать резистор сопротивлением не более 1 ома и мощностью не менее 2 ватт. Как вариант из доступных, можно параллельно установить два 2-х ватных резистора сопротивление 1 ом каждый.

Резистор R6 включен последовательно с нагрузкой, определив напряжение получившегося делителя и зная напряжение подключенного источника питания, микроконтроллер высчитывает сопротивление нагрузки, ток и потребляемую мощность, после чего выдает получившиеся значения на дисплей.

Дисплей устанавливается на плату со стороны дорожек и крепиться к ней 18-ти миллиметровыми винтами М3. При разводки платы я допустил ошибку и промахнулся с одним из крепежный отверстий, если вы захотите собрать схему, то это легко исправить, например немного переместив входное отверстие для подключения плюса питания от аккумулятора, свободного места на плате осталось достаточно, но и на 3-х винтах дисплей держится отлично. При сборки следует обратить внимание, что на плате имеются перемычки. Проставки для винтов в моём случае распечатаны на 3д принтере и имеют высоту 11 миллиметров.

Перед заливкой прошивки в микроконтроллер, необходимо задать некоторые параметры (строки с 30 по 35):

  reference_voltage = 4.95; // Значение опорного напряжения в вольтах
  shunt_resistance = 1.50;  // Сопративление шунта (резистора R6) в омах
  float R1 = 14810.00;      // Сопративление резистора R1 делителя напряжения аккумулятора в омах
  float R2 = 12020.00;      // Сопративление резистора R2 делителя напряжения аккумулятора в омах
  float R4 = 4625.00;       // Сопративление резистора R4 делителя напряжения вольтметра в омах
  float R5 = 470.00;        // Сопративление резистора R5 делителя напряжения вольтметра в омах

В качестве опорного напряжения использовано напряжение питания микроконтроллера, а так как стабилизатор L7805 выдает на выходе не точные 5 вольт, то необходимо измерить выходное напряжение стабилизатора мультиметром и внести его значение в прошивку. Аналогично необходимо поступить с резисторами и вписать в прошивку их точные значения.

В виде бонуса! Подписчик YouTube канала Дмитрий Ягупов развел плату для дисплея с подсветкой и любезно предоставил Fuse-биты для работы ATMega8 от внутреннего генератора на 8МГц на случай если кто захочет прошивать не из под Arduino IDE. Скачать архив.

Простой амперметр на AVR на 3 и 0.3А

Это продолжение статьи об универсальном измерительном приборе на микроконтроллере. В ней речь пойдет о том, как на нашей универсальной плате сделать простой амперметр с пределом либо на 3А, либо на 300мА.

Схема

Схема и плата разработанного прибора универсальна. Для сборки амперметра необходимо установить на плату измерительный шунт и операционный усилитель. При этом схема будет выглядеть так:

Схема амперметра на AVR

… и печатная плата

Печатная плата амперметра

Проект платы в формате Sprint-Layout 5.0 можно скачать по ссылке.

Амперметр на 3А

Для сборки версии с пределом измерения от 0 до 3А вам потребуется установить на плату:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805, 3шт.
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DA2 — операционный усилитель L358N в корпусе SO8, 1шт.
  5. DD1 — микроконтроллер Atmega8a-au, 1шт.
  6. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  7. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  8. R1 — резистор с сопротивлением 0,1 Ом мощностью 1Вт, 1шт.
  9. R4 — чип-резистор 0805 на 1кОм, 1шт.
  10. R5 — подстроечный резистор CA6V на 25кОм, 1шт
  11. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  12. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  13. VT1-VT3 — транзисторы BC807-40, 3шт.
  14. Гребенка PLS-контактов

При токе через шунт R1 3А, падение напряжения на нем составит 0,3В. Резисторами R4, R5 задается коэффициент усиления этого сигнала по напряжению примерно в 10 раз. Усиленное напряжение поступает на АЦП микроконтроллера. На шунте при этом будет выделяться мощность 0,9Вт, что близко к максимально допустимой мощности. Если вы планируете часто его использовать на пределе измерения, то поставьте резистор R1 с большей мощностью.
Собранный амперметр выглядит следующим образом:

Амперметр на МК с лицевой стороны

Амперметр на МК с обратной стороны

Прошивку амперметра можно скачать здесь. Фьюз-биты без изменения.
На видео подробно показан процесс работы амперметра. К сожалению, у нас не было источника тока на 3А, поэтому нельзя было показать, что при токе больше 3А вольтметр выводит сообщение о переполнении.

Амперметр на 300мА

Отличие амперметра на 300мА от предыдущей версии исключительно в том, что необходимо поставить шунтирующее сопротивление R1 на 1Ом-1Вт и загрузить в память микроконтроллера другую прошивку.

Предосторожности

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

UPD:

Для того чтобы сделать версию на 50А необходимо установить элементы как в 3х-амперной версии, кроме резистора R1. Его сопротивление нужно уменьшить до 0,01Ом. Прошивку можно скачать здесь.

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

Двухдиапазонный цифровой вольтметр на микроконтроллере Atmega8

В это статье приводится пример простой схемы цифрового вольтметра способного производить измерения в двух диапазонах. Основа вольтметра – микроконтроллер Atmega8 фирмы ATMEL Corporation.

Технические показатели цифрового вольтметра

  • Уровень измеряемого напряжения – 0…100 вольт.
  • Число диапазонов — 2 (0…10 В, 10…100 В).
  • Сопротивление входа — приблизительно 300 кОм.
  • Автоматическое переключение между диапазонами.

Описание работы

 

Схема достаточно проста. Поскольку в схеме вольтметра применена динамическая индикация отпала необходимость в токоограничивающих резисторах в цепи индикатора BT-M51DRD.

Hantek 2000 - осциллограф 3 в 1

Портативный USB осциллограф, 2 канала, 40 МГц....

В случае если возникнет необходимость поднять входное сопротивление вольтметра (хотя 300 кОм вполне достаточно), то для этого нужно будет заменить операционный усилитель LM358 на другой с входной частью на полевых транзисторах, к примеру, ОУ TL082. Так же будет необходимо пересчитать и делители напряжений на входе на резисторах R1, R4 и R2,  R6. В качестве источника опорного напряжения применен управляемый стабилизатор TL431. Фильтр для АЦП микроконтроллера Atmega8 выполнен на L1C3.

В конструкции цифрового вольтметра применены SMD резисторы и конденсаторы размера 0805. Индикатор с общим анодом. Плата изготовлена по технологии ЛУТ на двухстороннем текстолите.

Работа микроконтроллера Atmega8 в данном устройстве организована от внутреннего 8 МГц генератора. В печатке не предусмотрен разъем для внутрисхемного программирования. Просто подпаиваем провода от AVR программатора к соответствующим контактам на плате. Для сигналов RESET и MOSI на плате подготовлены 2 контактные площадки. Для сигнальных линий MISO и SCK можно взять выводы 2 и 3 индикатора.

Фьюзы при программировании микроконтроллера выставляем следующим образом:

Порядок настройки

Первым делом путем подбора сопротивления резистора R23 выставляем образцовое опорное напряжение на ножке 21 (AREF) в районе 2,5…2,6 вольт. Далее подбираем сопротивления для каждого из диапазонов (первый – R17, второй – R16), чтобы отображаемое напряжение точно соответствовало фактическому. Уменьшение данных сопротивлений уменьшает показание на индикаторе. От подобранных номиналов зависит точность измерения цифрового вольтметра.

Скачать прошивку (886 bytes, скачано: 801)

Источник: radiokot.ru

ВОЛЬТАМПЕРМЕТР НА МИКРОКОНТРОЛЛЕРЕ В ЛАБОРАТОРНЫЙ БП

ВОЛЬТАМПЕРМЕТР НА МИКРОКОНТРОЛЛЕРЕ В ЛАБОРАТОРНЫЙ БП

      В наш век прогресса у любого радиолюбителя самый главный прибор при наладке устройств это лабораторный блок питания (БП). БП может быть как самодельный, так и заводского исполнения. Отличаются по сложности, может быть собран всего на одном линейном регуляторе напряжения, например LM317T, может быть собран на операционных усилителях, на транзисторах. БП может иметь защиту от КЗ, или наоборот, регулируемое ограничение выходного тока. А более совершенные БП имеют переключение режима «Защита от КЗ/Ограничение выходного тока». Но почти все БП оборудованы в лучшем случае стрелочным вольтметром. Цифровой вольтметр сложен в изготовлении и настройке, и чаще всего требует применения специализированных микросхем АЦП, например, КР572ПВ2А. 

     Но вся сложность заключается не в изготовлении платы, а в необходимости применения двухполярного питания +5 В, -5 В для питания указанной микросхемы. Для этого нужен отдельный маломощный БП или отдельные обмотки трансформатора. Таким образом, данные АЦП не очень зарекомендовали себя в радиолюбительской практике. Что же происходит? На дворе XXI-й век, а дизайна любительских БП не коснулся прогресс? Необходимо исправить эту ситуацию! Задумавшись над этим, я пришел к выводу, что надо сделать собственное устройство индикации параметров БП на микроконтроллере. В связи с этим и была разработан модуль – цифровой вольтамперметр. Который и будет рассмотрен далее более подробно. Данная разработка предложена вам для повторения и возможной доработки, так как она выполнена в пилотном варианте и требует доработок..(Планировалась функция вычисления потребляемой мощности и отображение на индикаторе, но до этого не дошли лапы, а при испытании обнаружены баги при измерении тока.) Но даже в таком варианте данная схема вполне работоспособна и может быть предложена для повторения даже начинающим радиолюбителям. Основной упор делался на то, чтобы сохранить минимальную сложность, чтобы не оставить за бортом начинающих радиолюбителей. Вот что у меня получилось.

     Схема и рисунок печатной платы представлены далее.

     Устройство обеспечивает следующие параметры и функции:

  • 1. Измерение и индикация выходного напряжения блока питания в диапазоне от 0 до 100 В, с дискретностью 0,01 В
  • 2. Измерение и индикация выходного тока нагрузки блока питания в диапазоне от 0 до 10 А с дискретностью 10 мА
  • 3. Погрешность измерения — не хуже ±0,01 В (напряжение) или ±10 мА (ток)
  • 4. Переключение между режимами измерения напряжение/ток осуществляется с помощью кнопки с фиксацией в нажатом положении.
  • 5. Вывод результатов измерения на большой четырехразрядный индикатор. При этом три разряда используются для отображения значения измеряемой величины, а четвертый – для индикации текущего режима измерения.
  • 6. Особенность моего вольтамперметра – автоматический выбор предела измерения. Смысл в том, что напряжения 0-10 В отображаются с точностью 0,01 В, а напряжения 10-100 В с точностью 0,1 В.
  • 7. Реально делитель напряжения рассчитан с запасом, если измеряемое напряжение увеличивается больше 110 В (ну может кому-то надо меньше, можно исправить это в прошивке), на индикаторе отображаются символы перегрузки – O.L (Over Load). Аналогично сделано и с амперметром, при превышении измеряемого тока больше 11 А вольтамперметр переходит в режим индикации перегрузки.

   Вольтметр осуществляет измерение и индикацию только положительных значений тока и напряжения, причем для измерения тока используется шунт в цепи «минуса». Устройство выполнено на микроконтроллере DD1 (МК) ATMega8-16PU.

 Технические параметры ATMEGA8-16PU:

  • Ядро AVR
  • Разрядность 8
  • Тактовая частота, МГц 16
  • Объем ROM-памяти 8K
  • Объем RAM-памяти 1K
  • Внутренний АЦП, кол-во каналов 23
  • Внутренний ЦАП, кол-во каналов 23
  • Таймер 3 канала
  • Напряжение питания, В 4.5…5.5
  • Температурный диапазон, C 40...+85
  • Тип корпуса DIP28

     Количество дополнительных элементов схемы — минимально. (Более полные данные на МК можно узнать из даташита на него). Резисторы на схеме — типа МЛТ-0,125 или импортные аналоги, электролитический конденсатор типа К50-35 или аналогичный, напряжением не менее 6,3 В, емкость его может отличаться в большую сторону. Конденсатор 0,1 мкФ — керамический импортный. Вместо DA1 7805 можно применить любые аналоги. Максимальное напряжение питания устройства определяется максимальным допустимым входным напряжением этой микросхемы. О типе индикаторов сказано далее. При переработке печатной платы возможно применение иных типов компонентов, в том числе SMD.

     Резистор R… импортный керамический, сопротивление 0,1 Ом 5 Вт, возможно применение более мощных резисторов, если габариты печатки позволяют установить. Также нужно изучить схему стабилизации тока БП, возможно там уже есть токоизмерительный резистор на 0,1 Ом в минусовой шине. Можно будет использовать по возможности этот резистор. Для питания устройства может использоваться либо отдельный стабилизированный источник питания +5 В (тогда микросхема стабилизатора питания DA1 не нужна), либо нестабилизированный источник +7…30 В (с обязательным использованием DA1). Потребляемый устройством ток не превышает 80 мА. Следует обращать внимание на то, что стабильность питающего напряжения косвенно влияет на точность измерения тока и напряжения. Индикация — обычная динамическая, в определенный момент времени светится только один разряд, но из-за инерционности нашего зрения мы видим светящимися все четыре индикатора и воспринимаем как нормальное число.

     Использовал один токоограничительный резистор на один индикатор и отказался от необходимости дополнительных транзисторных ключей, т. к. максимальный ток порта МК в данной схеме не превышает допустимые 40 мА. Путем изменения программы можно реализовать возможность использования индикаторов как с общим анодом, так и с общим катодом. Тип индикаторов может быть любым — как отечественным, так и импортным. В моем варианте применены двухразрядные индикаторы VQE-23 зеленого свечения с высотой цифры 12 мм (это древние, мало-яркие индикаторы, найденные в старых запасах). Здесь приведу его технические данные для справки;

  • Индикатор VQE23, 20x25mm, ОК, зеленый
  • Двухразрядный 7-сегментный индикатор.
  • Тип Общий катод
  • Цвет зеленый (565nm)
  • Яркость 460-1560uCd
  • Десятичные точки 2
  • Номинальный ток сегмента 20mA

     Ниже указано расположение выводов и габаритный чертеж индикатора:

 

  • 1. Анод h2
  • 2. Анод G1
  • 3. Анод A1
  • 4. Анод F1
  • 5. Анод B1
  • 6. Анод B2
  • 7. Анод F2
  • 8. Анод A2
  • 9. Анод G2
  • 10. Анод h3
  • 11. Анод C2
  • 12. Анод E2
  • 13. Анод D2
  • 14. Общ катод К2
  • 15. Общ катод К1
  • 16. Анод D1
  • 17. Анод E1
  • 18. Анод C1

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

• Сначала необходимо пропаять перемычки (переходные отверстия), которых много под индикаторами и возле микроконтроллера. 
• Затем микроконтроллер DD1. Для него можно использовать цанговую панельку, при этом ее надо устанавливать не до упора в плату, чтобы можно было пропаять выводы со стороны микросхемы. Т.к. не было под лапой цанговой панельки, было решено впаять МК намертво в плату. Для начинающих не рекомендую, в случае неудачной прошивки 28-ногий МК очень неудобно заменять.
• Затем все прочие элементы.

     Эксплуатация данного модуля вольтамперметра не требует объяснения. Достаточно правильно подключить питание и измерительные цепи. Разомкнутый джемпер или кнопка – измерение напряжения, замкнутый джемпер или кнопка – измерение тока. Прошивку можно залить в контроллер любым доступным для вас способом. Из Fuse-битов, что необходимо сделать, так это включить встроенный генератор 4 МГц. Ничего страшного не случится, если их не прошить, просто МК будет работать на 1 МГц и цифры на индикаторе будут сильно мерцать. 

     А вот и фотография вольтамперметра:

     Я не могу дать конкретных рекомендаций, кроме вышесказанных, о том, как подключить устройство к конкретной схеме блока питания — ведь их такое множество! Надеюсь, эта задача действительно окажется такой легкой, как это я себе представляю.

     P.S. В реальном БП данная схема не проверялась, собрана как макетный образец, в будущем планируется сделать простой регулируемый БП с применением данного вольтамперметра. Буду благодарен тем, кто испытает в работе данный вольтамперметр и укажет на существенные и не очень недостатки. За основу взята схема от ARV Моддинг блока питания с сайта радиокот. Прошивку для микроконтроллера ATmega8 c исходными кодами для CodeVision AVR C Compiler 2.04, и плату в формате ARES Proteus можно скачать на ФОРУМЕ. Также прилагается рабочий проект в ISIS Proteus. Материал предоставил – i8086.

Atmega8 на базе вольтметра амперметр v2 - схемы DIY

Danke der Code funktioniert nach ein paar Konvertierungsfehlern. 🙂
4 мой Симсон: XD

$ regfile = "m8def.dat"
$ crystal = 8000000
$ hwstack = 40
$ swstack = 16
$ frameize = 32

Config Lcd = 16 * 2
Config Lcdpin = Pin, Db4 = Portd.4, Db5 = Portd.3, Db6 = Portd.2, Db7 = Portd.1, E = Portd.5, Wr = Portd.6, RS = Portd.7
Курсор выключен
Dim Mess_volt As Word
Dim Mess_amper As Word
Dim Volt as single, V as String * 10
Dim Amper as single, A As String * 10
Dim Watt as single, W as String * 10
Const Adc_multi = 0.0146484375
Config Adc = Single, Prescaler = Auto, Reference = Avcc
Start Adc
Deflcdchar 0, 32, 32, 32, 31, 32, 32, 32, 32 'заменить [x] числом (0-7)
Deflcdchar 1, 32, 16, 8, 4, 2, 1, 32, 32 'заменить [x] числом (0-7)
Deflcdchar 2, 32, 4, 4, 4, 4, 4, 32, 32' заменить [x] с номером (0-7)
Deflcdchar 3, 32, 1, 2, 4, 8, 16, 32, 32 'заменить [x] на номер (0-7)
Cls
Locate 1, 1
Lcd «Счетчик VAW 1.0 "
Найдите 2, 1
ЖК" KR51 / 1 Vape "
Подождите 1
Cls
Найдите 1, 1
ЖК-дисплей" 5V Switcher 2.5A "
Найдите 2, 1
ЖК-дисплей" USB-зарядное устройство "
Подождите 1
Cls
Найдите 1, 1
Lcd "By DR"
Locate 2, 2
Lcd ": -)"
Locate 2, 1
Lcd Chr (0)
Waitms 200
Locate 2, 1
Lcd Chr (1)
Waitms 200
Locate 2, 1
Lcd Chr (2)
Waitms 200
Locate 2, 1
Lcd Chr (3)
Waitms 200
Locate 2, 1
Lcd Chr (0)
Waitms 200
Locate 2, 1
Lcd Chr (1)
Waitms 200
Locate 2, 1
Lcd Chr (2)
Waitms 200
Locate 2, 1
Lcd Chr (3)
Waitms 200
Cls
Do
Mess_volt = Getadc (0)
Volt = Mess_volt * Adc_multi
Вольт = Вольт * 80
Вольт = Вольт / 50
Mess_amper = Getadc (1)
Ампер = Mess_amper * Adc_multi
Ампер = Ампер * 80
Ампер = Ампер / 50
Ватт = 0
Вт = Ватт +
Ватт = Ватт * Ампер
В = Предохранитель (вольт, "#.## ")
A = предохранитель (ампер," #. ## ")
W = предохранитель (ватт," #. ## ")
Местоположение 1, 4: ЖК-дисплей" Вольт * "; В
Найдите 2, 4 : ЖК-дисплей «Amp. *»; A
Wait 3
Locate 2, 4: ЖК «Watt *»; W
Wait 1
Loop

Цифровой амперметр

с использованием микроконтроллера AVR (ATmega8): принципиальная схема и код

В этом проекте мы собираемся создать амперметр низкого диапазона с использованием микроконтроллера ATMEGA8 . В ATMEGA8 для этого мы собираемся использовать 10-битный АЦП (аналого-цифровое преобразование).Хотя у нас есть несколько других способов получить текущий параметр из схемы, мы собираемся использовать метод резистивного сброса, потому что это самый простой и простой способ получить текущий параметр.

В этом методе мы собираемся передать ток, который необходимо измерить, на небольшое сопротивление, тем самым мы получим падение на этом сопротивлении, которое связано с током, протекающим через него. Это напряжение через сопротивление подается на ATMEGA8 для преобразования в АЦП. При этом у нас будет ток в цифровом виде, который будет отображаться на ЖК-дисплее 16x2.

Для этого воспользуемся схемой делителя напряжения. Мы собираемся пропустить ток через полную ветвь сопротивления. Измеряется середина ветви. При изменении тока будет линейное изменение сопротивления. Таким образом, у нас есть напряжение, которое изменяется линейно.

Теперь важно отметить, что входной сигнал, принимаемый контроллером для преобразования АЦП, составляет всего 50 мкА. Этот эффект нагрузки резистивного делителя напряжения важен, поскольку ток, потребляемый из Vout делителя напряжения, увеличивает процент ошибок, поэтому нам не нужно беспокоиться об эффекте нагрузки.

Необходимые компоненты

Аппаратное обеспечение: ATMEGA8, источник питания (5 В), ПРОГРАММАТОР AVR-ISP, JHD_162ALCD (16 * 2LCD), конденсатор 100 мкФ, конденсатор 100 нФ (4 шт.), Резистор 100 Ом (7 шт.) Или 2,5 Ом (2 шт.), 100 кОм резистор.

Софт: Atmel studio 6.1, прогисп или флеш магия.

Принципиальная схема и рабочее объяснение

[См. Это руководство, чтобы понять, как подключить ЖК-дисплей к микроконтроллеру AVR]

Напряжение на R2 и R4 не является полностью линейным; это будет шумно.10 = 5 мВ. Таким образом, на каждые 5 мВ приращения на входе у нас будет приращение на единицу на цифровом выходе.

Теперь нам нужно установить регистр АЦП исходя из следующих условий:

1. Прежде всего нам нужно включить функцию ADC в ADC.

2. Вот и получим максимальное входное напряжение для преобразования АЦП + 5В. Таким образом, мы можем установить максимальное значение или опорное значение АЦП на 5 В.

3. Контроллер имеет функцию преобразования триггера, которая означает, что преобразование АЦП происходит только после внешнего триггера, поскольку мы не хотим, чтобы нам нужно было настраивать регистры для работы АЦП в непрерывном автономном режиме.

4. Для любого АЦП частота преобразования (аналоговое значение в цифровое значение) и точность цифрового выхода обратно пропорциональны. Поэтому для большей точности цифрового вывода мы должны выбирать меньшую частоту. Для обычных часов АЦП мы устанавливаем предварительную продажу АЦП на максимальное значение (2). Поскольку мы используем внутренние часы с частотой 1 МГц, частота АЦП будет (1000000/2).

Это единственные четыре вещи, которые нам нужно знать, чтобы начать работу с ADC.

Все вышеупомянутые четыре функции устанавливаются двумя регистрами,

КРАСНЫЙ (ADEN): этот бит должен быть установлен для включения функции АЦП ATMEGA.

СИНИЙ (REFS1, REFS0): эти два бита используются для установки опорного напряжения (или максимального входного напряжения, которое мы собираемся дать). Поскольку мы хотим иметь опорное напряжение 5 В, REFS0 следует установить по таблице.

ЖЕЛТЫЙ (ADFR): этот бит должен быть установлен для непрерывной работы АЦП (режим автономной работы).

РОЗОВЫЙ (MUX0-MUX3): эти четыре бита указывают входной канал. Поскольку мы собираемся использовать ADC0 или PIN0, нам не нужно устанавливать какие-либо биты, как указано в таблице.

КОРИЧНЕВЫЙ (ADPS0-ADPS2): эти три бита предназначены для установки предскалярного значения для АЦП.Поскольку мы используем прескаляр, равный 2, мы должны установить один бит.

ТЕМНО-ЗЕЛЕНЫЙ (ADSC): этот бит устанавливается для АЦП, чтобы начать преобразование. Этот бит можно отключить в программе, когда нам нужно остановить преобразование.

[Также проверьте: цифровой вольтметр с микроконтроллером AVR]

проектирование и создание цифрового вольтметра с использованием микроконтроллера avr atmega8 - для тем и материалов проектов B.Sc, HND и OND

ПРОЕКТИРОВАНИЕ И КОНСТРУКЦИЯ ЦИФРОВОГО ВОЛЬТМЕТРА С МИКРОКОНТРОЛЛЕРОМ AVR ATMEGA8

РЕФЕРАТ

Эта работа проводится на цифровом вольтметре с использованием микроконтроллера ATMEGA8, который представляет собой прибор, используемый для измерения разности электрических потенциалов между двумя точками в электрической цепи.Цифровой вольтметр отображает в цифровом виде напряжение, ток или сопротивление с помощью аналого-цифрового преобразователя. Цифровые вольтметры могут измерять диапазон напряжений переменного тока (AC), напряжения постоянного тока (DC) или как напряжения переменного, так и постоянного тока. Устройства обычно отображают от трех до семи цифр.

ГЛАВА ПЕРВАЯ

1.2 ПРЕДПОСЫЛКИ ИССЛЕДОВАНИЯ
Цифровой вольтметр - это прибор, который измеряет напряжение или падение напряжения в цепи.Цифровой вольтметр использует твердотельные компоненты и отображает значения в цифровом виде. Как правило, цифровые вольтметры (цифровые вольтметры) могут использоваться для определения чрезмерного сопротивления, которое может указывать на обрыв цепи или заземление. Они также используются для определения низкого напряжения или падений напряжения, которые могут указывать на плохое соединение. Положительный вывод подключается к положительной стороне схемы, а отрицательный вывод подключается к заземлению схемы. Внутреннее сопротивление цифровых вольтметров - это импеданс, который обычно выражается в омах на вольт.Это количество относительно велико, чтобы устройство не потребляло значительный ток и не нарушало работу проверяемой цепи. Чувствительность вольтметра определяет диапазон напряжений, который могут измерять цифровые вольтметры.
Цифровые вольтметры могут измерять диапазон напряжений переменного тока (AC), напряжения постоянного тока (DC) или как напряжения переменного, так и постоянного тока. Устройства обычно отображают от трех до семи цифр. Некоторые цифровые вольтметры могут регистрировать минимальные и максимальные напряжения, называемые пиковыми показаниями.Другие измеряют среднеквадратичное значение (RMS), диапазон частот или мощность сигнала в децибелах. Цифровые вольтметры также используются для контроля резистивных датчиков температуры (RTD), термопар, транзисторов и диодов. Настольные, монтируемые в стойку и портативные устройства широко доступны. Устройства с батарейным питанием не требуют подключения к электросети. Цифровые вольтметры с непрерывной слышимостью издают звуковой сигнал при касании щупами. Устройства с возможностью аналоговой гистограммы отображают такие показания состояния, как заряд батареи, уровень сигнала и непрерывность.
Некоторые цифровые вольтметры взаимодействуют с компьютерами и включают встроенное программное обеспечение для мониторинга таких приложений, как сбор данных. Программируемые устройства позволяют пользователям устанавливать значения, которые запускают процедуры мониторинга. Часто доступны устройства хранения данных, регистрации и съемные устройства хранения данных. Некоторые цифровые вольтметры позволяют пользователям регулировать частоту дискретизации или предоставлять внутреннюю память. Другие включают функцию автоматического выбора диапазона, которая автоматически регулирует диапазон измерения. Варианты вывода включают интерфейсную шину общего назначения (GPIB), десятичное двоичное кодирование (BCD) и цифро-аналоговое преобразование (DA).RS232 - это стандартный протокол связи для последовательных портов. IEEE 488 - стандартный протокол связи для параллельных портов.
1.2 ЦЕЛЬ ПРОЕКТА
Основная цель данной работы - разработать устройство, которое с помощью микропроцессора ATMEGA8 будет численно отображать напряжение, ток или сопротивление между двумя точками в электрической цепи.

1.3 ЗНАЧЕНИЕ ПРОЕКТА
Преимущества использования микроконтроллера Atmega8 в данной работе следующие:

  • Имеет низкое энергопотребление
  • Он имеет лучшее разрешение дисплея в Амперах при использовании резистора с низким сопротивлением падения напряжения.
  • Размер печатной платы намного меньше, всего 5 x 5 см. По-прежнему нет SMD компонентов.
  • Он имеет простую калибровку, только одну настройку напряжения и одну предварительную настройку ампер, отсутствие обнаружения напряжения.

1,4 ПРЕИМУЩЕСТВА ПРОЕКТА

  • Они точнее аналоговых мультиметров.
  • Они уменьшают ошибки чтения и интерполяции.
  • Функция «автополярность» может предотвратить проблемы с подключением измерителя к испытательной цепи с неправильной полярностью.
  • Ошибки параллакса устранены. Если на стрелку аналогового мультиметра смотреть под другим углом, вы увидите другое значение. Это ошибка параллакса. Цифровой дисплей цифрового мультиметра решает эту проблему
  • Дисплей цифрового мультиметра не имеет движущихся частей. Это избавляет их от износа и ударов.
  • Скорость чтения увеличена, так как читать легче.
  • В отличие от аналоговых мультиметров, настройка нуля не требуется.
  • Цифровой выход подходит для дальнейшей обработки или записи и может быть полезен в быстро расширяющемся диапазоне приложений, управляемых компьютером.
  • С появлением интегральных схем, размер, стоимость и требования к мощности цифровых мультиметров резко сократились.
  • Точность увеличена за счет цифрового считывания. Вы можете ошибиться при чтении шкалы аналогового мультиметра, но цифровые мультиметры имеют ЖК-дисплей для отображения точных показаний.
  • Цифровые мультиметры
  • могут использоваться для проверки целостности цепи, конденсаторов, диодов и транзисторов. Более совершенные цифровые мультиметры также могут измерять частоту.
  • Функция «автоматического выбора диапазона» цифрового мультиметра помогает в выборе различных диапазонов измерения, что может предотвратить повреждение измерителя в случае выбора неправильного диапазона.
  • Портативный размер позволяет легко носить с собой куда угодно.
  • Они вызывают меньшее воздействие нагрузки измерителя на тестируемые цепи.
  • Некоторые современные цифровые мультиметры имеют микропроцессоры и могут сохранять показания для дальнейшей обработки. Они имеют очень высокий входной импеданс.

1.5 ОГРАНИЧЕНИЕ ПРОЕКТА

ЖК-дисплей зависит от батареи или внешнего источника питания. Когда батарея разряжена, дисплей будет тусклым, что затрудняет чтение. В случае колебаний или переходных процессов он может записать ошибку. Нагревание ATMEGA8 во время использования может изменить его свойства, что приведет к ошибкам в измеренных значениях.Есть ограничение по напряжению. Если его увеличить сверх установленного лимита, счетчик выйдет из строя. Цифровая природа делает его непригодным для регулировки схем настройки или пиков перестраиваемых характеристик. Они дороги из-за высокой стоимости изготовления.

1.6 ОРГАНИЗАЦИЯ РАБОТЫ ПРОЕКТА
Различные этапы разработки этого проекта были должным образом разделены на пять глав, чтобы облегчить всестороннее и краткое чтение.В этом тезисе проекта проект организован последовательно следующим образом:
Первая глава этой работы посвящена введению в цифровой вольтметр. В этой главе обсуждались предыстория, значение, объективные ограничения и проблема цифрового вольтметра.
Глава вторая посвящена обзору литературы по цифровому вольтметру. В этой главе была рассмотрена вся литература, относящаяся к этой работе.
Глава третья посвящена методологии проектирования. В этой главе обсуждались все методы, задействованные во время проектирования и строительства.
Глава четвертая посвящена анализу тестирования. Были проанализированы все тесты, которые привели к точным результатам.
Глава пятая - заключение, рекомендации и ссылки.


Этот материал представляет собой полный и хорошо проработанный проектный материал строго для академических целей, который был одобрен разными преподавателями из разных высших учебных заведений. Мы делаем аннотацию и первую главу видимыми для всех.

Все темы проекта на этом сайте состоят из 5 (пяти) глав.Каждый Материал проекта включает: Аннотация + Введение + и т. Д. + Обзор литературы + методология + и т. Д. + Заключение + Рекомендация + Ссылки / Библиография.

Кому " ЗАГРУЗИТЬ " полный материал по данной теме выше нажмите «ЗДЕСЬ»

Хотите наши Банковские счета ? пожалуйста, нажмите ЗДЕСЬ

Для просмотра других связанных тем щелкните ЗДЕСЬ

К " САММИТ " новых тем, разработайте новую тему ИЛИ вы не видели свою тему на нашем сайте, но хотите подтвердить ее доступность нажмите ЗДЕСЬ

Хотите, чтобы мы провели исследования по вашей новой теме? если да, нажмите " ЗДЕСЬ "

У вас есть вопросы по поводу нашей почты / услуг? нажмите ЗДЕСЬ , чтобы получить ответы на свои вопросы

Вы также можете посетить нашу страницу в Facebook: fb.me / hyclas , чтобы просмотреть другие наши родственные конструкции (или дизайн) фото


Для получения дополнительной информации свяжитесь с нами любым из следующих способов:

Мобильный номер: +2348146561114 или +2347015391124 [Mr. Невинный]

Адрес электронной почты : [email protected]

Watsapp № : +2348146561114

Чтобы увидеть наш дизайн Pix: Вы также можете посетить нашу страницу в facebook по адресу fb.me / hyclas за наши дизайнерские фотографии / картинки.


ЕСЛИ ВЫ УДОВЛЕТВОРЕНЫ НАШИ УСЛУГАМИ, ПОЖАЛУЙСТА, НЕ ЗАБЫВАЙТЕ ПРИГЛАШАТЬ ДРУЗЕЙ И КУРСОВ НА НАШУ СТРАНИЦУ.

% PDF-1.6 % 18600 0 объект > эндобдж xref 18600 794 0000000016 00000 н. 0000021637 00000 п. 0000021773 00000 п. 0000021990 00000 п. 0000022021 00000 н. 0000022075 00000 п. 0000022114 00000 п. 0000022358 00000 п. 0000022472 00000 п. 0000022561 00000 п. 0000022646 00000 п. 0000022734 00000 п. 0000022822 00000 п. 0000022910 00000 п. 0000022998 00000 н. 0000023086 00000 п. 0000023174 00000 п. 0000023262 00000 н. 0000023350 00000 п. 0000023438 00000 п. 0000023526 00000 п. 0000023614 00000 п. 0000023702 00000 п. 0000023790 00000 п. 0000023878 00000 п. 0000023966 00000 п. 0000024054 00000 п. 0000024142 00000 п. 0000024230 00000 п. 0000024318 00000 п. 0000024406 00000 п. 0000024494 00000 п. 0000024582 00000 п. 0000024670 00000 п. 0000024758 00000 п. 0000024846 00000 п. 0000024934 00000 п. 0000025022 00000 п. 0000025110 00000 п. 0000025198 00000 п. 0000025286 00000 п. 0000025374 00000 п. 0000025462 00000 п. 0000025550 00000 п. 0000025638 00000 п. 0000025726 00000 п. 0000025814 00000 п. 0000025902 00000 п. 0000025990 00000 н. 0000026078 00000 п. 0000026166 00000 п. 0000026254 00000 п. 0000026342 00000 п. 0000026430 00000 н. 0000026518 00000 п. 0000026606 00000 п. 0000026694 00000 п. 0000026782 00000 п. 0000026870 00000 п. 0000026958 00000 п. 0000027046 00000 п. 0000027134 00000 п. 0000027222 00000 п. 0000027310 00000 п. 0000027398 00000 н. 0000027486 00000 н. 0000027574 00000 п. 0000027662 00000 н. 0000027750 00000 п. 0000027838 00000 п. 0000027926 00000 н. 0000028014 00000 п. 0000028102 00000 п. 0000028190 00000 п. 0000028278 00000 п. 0000028366 00000 п. 0000028454 00000 п. 0000028542 00000 п. 0000028630 00000 п. 0000028718 00000 п. 0000028806 00000 п. 0000028894 00000 п. 0000028982 00000 п. 0000029070 00000 н. 0000029158 00000 п. 0000029246 00000 п. 0000029334 00000 п. 0000029422 00000 н. 0000029510 00000 п. 0000029598 00000 п. 0000029686 00000 п. 0000029774 00000 п. 0000029862 00000 н. 0000029950 00000 н. 0000030038 00000 п. 0000030126 00000 п. 0000030214 00000 п. 0000030302 00000 п. 0000030390 00000 п. 0000030478 00000 п. 0000030566 00000 п. 0000030654 00000 п. 0000030742 00000 п. 0000030830 00000 п. 0000030918 00000 п. 0000031006 00000 п. 0000031094 00000 п. 0000031182 00000 п. 0000031270 00000 п. 0000031358 00000 п. 0000031446 00000 п. 0000031534 00000 п. 0000031622 00000 п. 0000031710 00000 п. 0000031798 00000 п. 0000031886 00000 п. 0000031974 00000 п. 0000032062 00000 н. 0000032150 00000 п. 0000032238 00000 п. 0000032326 00000 п. 0000032414 00000 п. 0000032502 00000 п. 0000032590 00000 н. 0000032678 00000 н. 0000032766 00000 п. 0000032854 00000 п. 0000032942 00000 п. 0000033030 00000 н. 0000033118 00000 п. 0000033206 00000 п. 0000033294 00000 п. 0000033382 00000 п. 0000033470 00000 п. 0000033558 00000 п. 0000033646 00000 п. 0000033734 00000 п. 0000033822 00000 п. 0000033910 00000 п. 0000033998 00000 п. 0000034086 00000 п. 0000034174 00000 п. 0000034262 00000 п. 0000034350 00000 п. 0000034438 00000 п. 0000034526 00000 п. 0000034614 00000 п. 0000034702 00000 п. 0000034790 00000 н. 0000034878 00000 п. 0000034966 00000 п. 0000035054 00000 п. 0000035142 00000 п. 0000035230 00000 п. 0000035318 00000 п. 0000035406 00000 п. 0000035494 00000 п. 0000035582 00000 п. 0000035670 00000 п. 0000035758 00000 п. 0000035846 00000 п. 0000035934 00000 п. 0000036022 00000 п. 0000036110 00000 п. 0000036198 00000 п. 0000036286 00000 п. 0000036374 00000 п. 0000036462 00000 н. 0000036550 00000 п. 0000036638 00000 п. 0000036726 00000 н. 0000036814 00000 п. 0000036902 00000 п. 0000036990 00000 н. 0000037078 00000 п. 0000037166 00000 п. 0000037254 00000 п. 0000037342 00000 п. 0000037430 00000 п. 0000037518 00000 п. 0000037606 00000 п. 0000037694 00000 п. 0000037782 00000 п. 0000037870 00000 п. 0000037958 00000 п. 0000038046 00000 п. 0000038134 00000 п. 0000038222 00000 п. 0000038310 00000 п. 0000038398 00000 п. 0000038486 00000 п. 0000038574 00000 п. 0000038662 00000 п. 0000038750 00000 п. 0000038838 00000 п. 0000038926 00000 п. 0000039014 00000 п. 0000039102 00000 п. 0000039190 00000 п. 0000039278 00000 п. 0000039366 00000 п. 0000039454 00000 п. 0000039542 00000 п. 0000039630 00000 н. 0000039718 00000 п. 0000039806 00000 п. 0000039894 00000 п. 0000039982 00000 п. 0000040070 00000 п. 0000040158 00000 п. 0000040246 00000 п. 0000040334 00000 п. 0000040422 00000 п. 0000040510 00000 п. 0000040598 00000 п. 0000040686 00000 п. 0000040774 00000 п. 0000040862 00000 п. 0000040950 00000 п. 0000041038 00000 п. 0000041126 00000 п. 0000041214 00000 п. 0000041302 00000 п. 0000041390 00000 н. 0000041478 00000 п. 0000041566 00000 п. 0000041654 00000 п. 0000041742 00000 п. 0000041829 00000 п. 0000041916 00000 п. 0000042003 00000 п. 0000042090 00000 н. 0000042177 00000 п. 0000042264 00000 н. 0000042351 00000 п. 0000042438 00000 п. 0000042525 00000 п. 0000042612 00000 п. 0000042699 00000 п. 0000042786 00000 н. 0000042873 00000 п. 0000042960 00000 п. 0000043047 00000 п. 0000043134 00000 п. 0000043221 00000 п. 0000043308 00000 п. 0000043395 00000 п. 0000043482 00000 п. 0000043569 00000 п. 0000043656 00000 п. 0000043743 00000 п. 0000043830 00000 н. 0000043917 00000 п. 0000044004 00000 п. 0000044091 00000 п. 0000044178 00000 п. 0000044265 00000 п. 0000044352 00000 п. 0000044439 00000 п. 0000044526 00000 п. 0000044613 00000 п. 0000044700 00000 п. 0000044787 00000 п. 0000044874 00000 н. 0000044961 00000 п. 0000045048 00000 п. 0000045135 00000 п. 0000045222 00000 п. 0000045309 00000 п. 0000045396 00000 п. 0000045483 00000 п. 0000045570 00000 п. 0000045657 00000 п. 0000045744 00000 п. 0000045831 00000 п. 0000045918 00000 п. 0000046005 00000 п. 0000046092 00000 п. 0000046179 00000 п. 0000046266 00000 п. 0000046353 00000 п. 0000046440 00000 п. 0000046527 00000 н. 0000046614 00000 п. 0000046701 00000 п. 0000046788 00000 п. 0000046875 00000 п. 0000046962 00000 п. 0000047049 00000 п. 0000047136 00000 п. 0000047223 00000 п. 0000047310 00000 п. 0000047397 00000 п. 0000047484 00000 п. 0000047571 00000 п. 0000047658 00000 п. 0000047745 00000 п. 0000047832 00000 п. 0000047919 00000 п. 0000048006 00000 п. 0000048093 00000 п. 0000048180 00000 п. 0000048267 00000 п. 0000048354 00000 п. 0000048441 00000 п. 0000048528 00000 п. 0000048615 00000 н. 0000048702 00000 п. 0000048789 00000 н. 0000048876 00000 н. 0000048963 00000 н. 0000049050 00000 п. 0000049137 00000 п. 0000049224 00000 п. 0000049311 00000 п. 0000049398 00000 п. 0000049485 00000 п. 0000049572 00000 п. 0000049659 00000 п. 0000049746 00000 п. 0000049833 00000 п. 0000049920 00000 н. 0000050007 00000 п. 0000050094 00000 п. 0000050181 00000 п. 0000050268 00000 н. 0000050355 00000 п. 0000050442 00000 п. 0000050528 00000 п. 0000050614 00000 п. 0000050700 00000 п. 0000050786 00000 п. 0000050872 00000 п. 0000050958 00000 п. 0000051044 00000 п. 0000051130 00000 п. 0000051216 00000 п. 0000051302 00000 п. 0000051388 00000 п. 0000051473 00000 п. 0000051650 00000 п. 0000051755 00000 п. 0000051859 00000 п. 0000052787 00000 п. 0000053688 00000 п. 0000054663 00000 п. 0000055513 00000 п. 0000056371 00000 п. 0000057037 00000 п. 0000057675 00000 п. 0000058638 00000 п. 0000059681 00000 п. 0000060768 00000 п. 0000060908 00000 п. 0000061305 00000 п. 0000062319 00000 п. 0000063222 00000 п. 0000068577 00000 п. 0000074375 00000 п. 0000074452 00000 п. 0000080404 00000 п. 0000080657 00000 п. 0000080993 00000 п. 0000081518 00000 п. 0000081619 00000 п. 0000082144 00000 п. 0000082245 00000 п. 0000082309 00000 п. 0000082408 00000 п. 0000082524 00000 п. 0000082716 00000 н. 0000082908 00000 п. 0000083091 00000 п. 0000083242 00000 п. 0000083354 00000 п. 0000083535 00000 п. 0000083624 00000 п. 0000083719 00000 п. 0000083857 00000 п. 0000084002 00000 п. 0000084132 00000 п. 0000084382 00000 п. 0000084508 00000 п. 0000084693 00000 п. 0000084937 00000 п. 0000085062 00000 п. 0000085247 00000 п. 0000085484 00000 п. 0000085618 00000 п. 0000085870 00000 п. 0000086103 00000 п. 0000086238 00000 п. 0000086359 00000 п. 0000086535 00000 п. 0000086686 00000 п. 0000086869 00000 п. 0000087121 00000 п. 0000087245 00000 п. 0000087422 00000 п. 0000087620 00000 п. 0000087719 00000 п. 0000087885 00000 п. 0000088057 00000 п. 0000088213 00000 п. 0000088367 00000 п. 0000088555 00000 п. 0000088655 00000 п. 0000088810 00000 п. 0000088960 00000 п. 0000089099 00000 н. 0000089240 00000 п. 0000089447 00000 п. 0000089610 00000 п. 0000089715 00000 п. 0000089966 00000 н. 00000

00000 п. 00000
00000 п. 00000

00000 п. 00000

00000 п. 00000

00000 п. 0000091037 00000 п. 0000091163 00000 п. 0000091321 00000 п. 0000091501 00000 п. 0000091641 00000 п. 0000091845 00000 п. 0000092025 00000 п. 0000092165 00000 п. 0000092324 00000 п. 0000092480 00000 п. 0000092587 00000 п. 0000092780 00000 п. 0000092939 00000 п. 0000093103 00000 п. 0000093290 00000 п. 0000093407 00000 п. 0000093668 00000 п. 0000093872 00000 п. 0000094012 00000 п. 0000094191 00000 п. 0000094390 00000 п. 0000094586 00000 п. 0000094718 00000 п. 0000094896 00000 п. 0000095071 00000 п. 0000095174 00000 п. 0000095348 00000 п. 0000095455 00000 п. 0000095637 00000 п. 0000095774 00000 п. 0000095900 00000 п. 0000096016 00000 п. 0000096170 00000 п. 0000096279 00000 н. 0000096436 00000 п. 0000096572 00000 п. 0000096662 00000 н. 0000096826 00000 п. 0000096944 00000 п. 0000097050 00000 п. 0000097156 00000 п. 0000097264 00000 н. 0000097399 00000 н. 0000097516 00000 п. 0000097651 00000 п. 0000097834 00000 п. 0000097938 00000 п. 0000098055 00000 п. 0000098210 00000 п. 0000098336 00000 п. 0000098532 00000 п. 0000098686 00000 п. 0000098815 00000 п. 0000098969 00000 п. 0000099112 00000 н. 0000099286 00000 н. 0000099418 00000 н. 0000099558 00000 п. 0000099704 00000 п. 0000099836 00000 н. 0000100016 00000 н. 0000100182 00000 н. 0000100344 00000 н. 0000100536 00000 н. 0000100662 00000 н. 0000100869 00000 н. 0000101020 00000 н. 0000101163 00000 н. 0000101327 00000 н. 0000101462 00000 н. 0000101587 00000 н. 0000101707 00000 н. 0000101826 00000 н. 0000101992 00000 н. 0000102135 00000 н. 0000102270 00000 н. 0000102419 00000 п. 0000102520 00000 н. 0000102643 00000 п. 0000102771 00000 н. 0000102902 00000 н. 0000103049 00000 н. 0000103166 00000 п. 0000103293 00000 н. 0000103443 00000 н. 0000103578 00000 п. 0000103710 00000 п. 0000103876 00000 н. 0000104036 00000 н. 0000104204 00000 н. 0000104352 00000 п. 0000104544 00000 н. 0000104714 00000 н. 0000104892 00000 н. 0000105018 00000 н. 0000105155 00000 н. 0000105281 00000 н. 0000105407 00000 п. 0000105532 00000 н. 0000105724 00000 н. 0000105893 00000 п. 0000106043 00000 н. 0000106199 00000 п. 0000106388 00000 п. 0000106543 00000 н. 0000106686 00000 п. 0000106883 00000 н. 0000107005 00000 н. 0000107122 00000 н. 0000107294 00000 н. 0000107435 00000 п. 0000107592 00000 п. 0000107750 00000 н. 0000107931 00000 п. 0000108097 00000 н. 0000108267 00000 н. 0000108447 00000 н. 0000108610 00000 п. 0000108783 00000 н. 0000108964 00000 н. 0000109147 00000 н. 0000109306 00000 н. 0000109478 00000 п. 0000109634 00000 п. 0000109751 00000 п. 0000109874 00000 н. 0000110028 00000 н. 0000110218 00000 н. 0000110378 00000 п. 0000110480 00000 н. 0000110588 00000 н. 0000110728 00000 н. 0000110856 00000 н. 0000111026 00000 н. 0000111207 00000 н. 0000111364 00000 н. 0000111538 00000 н. 0000111644 00000 н. 0000111801 00000 н. 0000111989 00000 н. 0000112143 00000 н. 0000112323 00000 н. 0000112446 00000 н. 0000112587 00000 н. 0000112761 00000 н. 0000112892 00000 н. 0000113033 00000 н. 0000113156 00000 н. 0000113309 00000 н. 0000113499 00000 н. 0000113647 00000 н. 0000113776 00000 н. 0000113949 00000 н. 0000114092 00000 н. 0000114216 00000 н. 0000114395 00000 н. 0000114590 00000 н. 0000114774 00000 н. 0000114969 00000 н. 0000115163 00000 н. 0000115332 00000 н. 0000115523 00000 н. 0000115625 00000 н. 0000115735 00000 н. 0000115855 00000 н. 0000115996 00000 н. 0000116220 00000 н. 0000116376 00000 н. 0000116548 00000 н. 0000116766 00000 н. 0000116926 00000 н. 0000117071 00000 н. 0000117227 00000 н. 0000117404 00000 н. 0000117510 00000 п. 0000117637 00000 н. 0000117825 00000 н. 0000117982 00000 п. 0000118159 00000 н. 0000118284 00000 н. 0000118425 00000 н. 0000118548 00000 н. 0000118700 00000 н. 0000118872 00000 н. 0000118996 00000 н. 0000119174 00000 н. 0000119332 00000 н. 0000119522 00000 н. 0000119701 00000 н. 0000119802 00000 н. 0000119908 00000 н. 0000120012 00000 н. 0000120145 00000 н. 0000120296 00000 н. 0000120448 00000 н. 0000120569 00000 н. 0000120762 00000 н. 0000120904 00000 н. 0000121077 00000 н. 0000121278 00000 н. 0000121386 00000 н. 0000121491 00000 н. 0000121697 00000 н. 0000121785 00000 н. 0000121981 00000 н. 0000122120 00000 н. 0000122265 00000 н. 0000122473 00000 н. 0000122634 00000 н. 0000122771 00000 н. 0000122993 00000 н. 0000123150 00000 н. 0000123284 00000 н. 0000123422 00000 н. 0000123588 00000 н. 0000123702 00000 н. 0000123873 00000 н. 0000124064 00000 н. 0000124201 00000 н. 0000124327 00000 н. 0000124481 00000 н. 0000124612 00000 н. 0000124775 00000 н. 0000124939 00000 н. 0000125081 00000 н. 0000125208 00000 н. 0000125347 00000 н. 0000125514 00000 н. 0000125680 00000 н. 0000125833 00000 н. 0000126018 00000 н. 0000126205 00000 н. 0000126391 00000 н. 0000126536 00000 н. 0000126711 00000 н. 0000126844 00000 н. 0000126981 00000 п. 0000127106 00000 н. 0000127295 00000 н. 0000127437 00000 н. 0000127591 00000 н. 0000127783 00000 н. 0000127899 00000 н. 0000128007 00000 н. 0000128222 00000 н. 0000128422 00000 н. 0000128540 00000 н. 0000128734 00000 н. 0000128953 00000 н. 0000129067 00000 н. 0000129204 00000 н. 0000129338 00000 н. 0000129478 00000 н. 0000129627 00000 н. 0000129761 00000 н. 0000129896 00000 н. 0000130041 00000 н. 0000130187 00000 н. 0000130337 00000 н. 0000130493 00000 п. 0000130633 00000 н. 0000130777 00000 н. 0000130913 00000 п. 0000131051 00000 н. 0000131255 00000 н. 0000131426 00000 н. 0000131586 00000 н. 0000131762 00000 н. 0000131890 00000 н. 0000132023 00000 н. 0000132239 00000 н. 0000132360 00000 н. 0000132485 00000 н. 0000132647 00000 н. 0000132787 00000 н. 0000132952 00000 н. 0000133138 00000 п. 0000133278 00000 н. 0000133423 00000 н. 0000133613 00000 н. 0000133817 00000 н. 0000133977 00000 н. 0000134117 00000 н. 0000134368 00000 н. 0000134516 00000 н. 0000134672 00000 н. 0000134895 00000 н. 0000135016 00000 н. 0000135149 00000 н. 0000135341 00000 п. 0000135522 00000 н. 0000135675 00000 н. 0000135862 00000 н. 0000136036 00000 н. 0000136214 00000 н. 0000136423 00000 н. 0000136586 00000 н. 0000136731 00000 н. 0000136876 00000 н. 0000137062 00000 н. 0000137202 00000 н. 0000137362 00000 н. 0000137497 00000 н. 0000137676 00000 н. 0000137803 00000 н. 0000137959 00000 н. 0000138216 00000 н. 0000138308 00000 н. 0000138424 00000 н. 0000138554 00000 н. 0000138683 00000 н. 0000138840 00000 н. 0000138943 00000 н. 0000139098 00000 н. 0000139251 00000 н. 0000139409 00000 н. 0000139558 00000 н. 0000139718 00000 н. 0000139874 00000 н. 0000140008 00000 н. 0000140141 00000 п. 0000140284 00000 н. 0000140424 00000 н. 0000140542 00000 н. 0000140723 00000 п. 0000140859 00000 п. 0000140994 00000 н. 0000141145 00000 н. 0000141326 00000 н. 0000141464 00000 н. 0000141624 00000 н. 0000141758 00000 н. 0000141936 00000 н. 0000142086 00000 н. 0000142272 00000 н. 0000142430 00000 н. 0000142569 00000 н. 0000142691 00000 н. 0000142834 00000 н. 0000142982 00000 н. 0000143131 00000 п. 0000143267 00000 н. 0000143444 00000 н. 0000143592 00000 н. 0000143781 00000 п. 0000143941 00000 н. 0000144080 00000 н. 0000144202 00000 н. 0000144350 00000 н. 0000144486 00000 н. 0000144592 00000 н. 0000144789 00000 н. 0000144989 00000 н. 0000145190 00000 н. 0000145389 00000 н. 0000145587 00000 н. 0000145788 00000 н. 0000145985 00000 н. 0000146189 00000 п. 0000146386 00000 п. 0000146583 00000 н. 0000146780 00000 н. 0000146978 00000 н. 0000147178 00000 н. 0000147383 00000 н. 0000147588 00000 н. 0000147788 00000 н. 0000147989 00000 н. 0000148192 00000 н. 0000148393 00000 н. 0000148594 00000 н. 0000148796 00000 н. 0000148997 00000 н. 0000016516 00000 п. трейлер ] / Назад 6239112 >> startxref 0 %% EOF 19393 0 объект > поток a0 雋 \ nE * 8fqIz @ -N = 9R \ L + Р% l ?.Ca۵; U =% 1şl ~ i̕ @ z`1tzϺq; 1F] E / MuzMzDQYuZ'swK .Zn? FrjE DgsJ = է Zfohy, T e @ 0`4 [k8b_ Oub] Q "ΗX ȼ .-} zSJZcp

Самый простой цифровой вольтметр с AVR

Самый простой цифровой вольтметр с AVR

Это, наверное, самый простой из возможных цифровых вольтметров с микроконтроллером Atmel AVR. Схема управляется микропроцессором IO1 - Atmel AVR ATmega8 (ATmega8, ATmega8L), программа для загрузки и настройки битов настройки ниже.(ATmega8 может показаться слишком "большим", но был выбран потому, что это один из наиболее часто используемых AVR и его часто можно найти в ящике.) Трехзначный семисегментный светодиодный дисплей используется для отображения значения. Катоды подключены к порту D, анодов к младшим 3 битам порта B. Использование сверхъяркого дисплея позволяет опустить текущую усилительные транзисторы. Дисплей управляется мультиплексированием (матрицей) и подключается обычным мультиплексным способом. Я использовал трехзначный желтый дисплей T-5631BUY-11 с яркостью 150-200мкд.Резисторы с R1 по R8 определяют ток на дисплее и, следовательно, его яркость. Их выбрали не превышен максимальный выходной ток (40 мА), даже когда все 8 светодиодов горят одновременно. Схема использует несимметричный 10-разрядный АЦП (аналого-цифровой преобразователь) в AVR. Выходные значения колеблются от 0 до 1023, но потому что не стоит добавлять четвертую цифру. для узкого диапазона от 1000 до 1023 диапазон ограничен до 0 до 999. При более высоком значении появится символ «---». Диапазон вольтметра соответствует входному напряжению 2.5 В. Вход подключается через делитель на 1/4, состоящий из R9, R10 и P1, обеспечивая диапазон 10 В с разрешением до 0,01 В. Входное сопротивление составляет примерно 1 МОм. (Если вам нужен диапазон 100 В, измените значение R10 на 9M1 и P1 на 2M2. Тогда у вас будет Диапазон 100 В с разрешением 0,1 В и входным сопротивлением около 10 МОм.) Калибровка вольтметра выполняется по известному напряжению путем настройки подстроечного резистора P1. Перемычки DP1 и DP2 могут использоваться для подсветки десятичных знаков.DP1 загорается десятичным понятием после первого числа (0,00), DP2 загорается точкой после второго числа (00,0). Частота обновления вольтметра около 4 Гц. IO1 использует внутренний RC-генератор с частотой 1 МГц. Схема питается от источника питания около 5В. Потребление тока около 25 мА (большая часть - это потребление светодиодного дисплея). Поместите C1 и C2 как можно ближе к IO1 AVR. Измеритель может быть полезен как усовершенствование лабораторного источника питания, индикатора напряжения бортовой сети транспортного средства, напряжения питания ПК, напряжения батареи в ИБП и т. Д.Напряжение питания 5 В можно получить, используя простой источник питания, например, на интегральной схеме 7805. Используйте соответствующий предохранитель на входе питания.
Программа для бесплатного скачивания:
исходный код на ассемблере (ASM)
скомпилированный HEX файл (298 байт)
Как записать программу в AVR описано , здесь .

Могу послать вам запрограммированный микроконтроллер. Для дополнительной информации щелкните здесь.

Принципиальная схема простейшего цифрового вольтметра с AVR ATmega8.


Установка битов конфигурации.


Тестирование вольтметра с ATmega8.


Видео - проверка простого вольтметра AVR.

Добавлен: 27. 6. 2012
дом

Блок питания 22V 2,5A Плата управления Atmega8 - Share Project

Блок питания 22V 2,5A Плата управления Atmega8

Хороший, надежный и простой в использовании настольный блок питания, вероятно, является самым важным и наиболее часто используемым устройством в любой электронной лаборатории.

Правильный настольный блок питания с электронной стабилизацией - важное, но тоже дорогостоящее устройство. Используя конструкцию на основе микроконтроллера, мы можем создать блок питания, который имеет множество дополнительных функций, прост в сборке и очень доступен.

Основная идея электрического дизайна

Распространенное заблуждение о цифровых источниках питания состоит в том, что люди предполагают, что все является цифровым, и не понимают, как это может работать со схемой на основе микроконтроллера.Нам нужно чистое и стабильное аналоговое напряжение на выходе, и для этого мы используем аналоговые компоненты. Только аналоговые компоненты достаточно быстры, чтобы устранить рябь из-за изменений нагрузки или любого оставшегося шума 50/60 Гц.

Напряжение эмиттера на транзисторе связано с напряжением на базе, а не с входным напряжением на коллекторе. Однако основной ток течет от C к E. Эта простая схема вырабатывает чистое постоянное напряжение. Он устраняет шум, проникающий через штырь коллектора, и контролирует изменения нагрузки на стороне эмиттера.


Другими словами, наш цифровой источник питания имеет полностью аналоговую систему управления для быстрого реагирования на изменения нагрузки и напряжения, и мы накладываем вторую цифровую систему управления для более интересных функций, которые необходимы настольному источнику питания. Давайте удалим аккумулятор из этой схемы и построим простейший источник питания с электронной стабилизацией. Он состоит из 2 основных частей: транзистора и опорного напряжения, генерируемого Z-диодом.


Выходное напряжение этой цепи Uref - 0.7В. 0,7 В - это примерно падение напряжения между B и E на транзисторе. Z-диод и резистор генерируют стабильное опорное напряжение, даже если входной сигнал колеблется и зашумлен. Транзистор необходим для работы с более высокими токами, чем могут обеспечить только Z-диод и резистор. В этой конфигурации транзистор просто усиливает ток. Ток, который должен обеспечивать резистор и Z-диод, равен выходному току, деленному на hfe (hef - это число, которое вы можете найти в таблице данных транзистора).

Какие проблемы с этой схемой?

Это довольно серьезные ограничения, которые делают эту схему непригодной для использования, но она по-прежнему является основным строительным блоком всех источников питания с электронным регулированием.

Чтобы преодолеть эти проблемы, вам нужен некоторый «интеллект», который будет регулировать ток на выходе и переменное опорное напряжение. Вот и все (... и это значительно усложняет схему).

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

Сегодня микроконтроллеры настолько быстры, что все это можно легко сделать программно. Прелесть в том, что в качестве побочного эффекта вы получаете бесплатно вольтметр и амперметр. Контур управления в микроконтроллерах так или иначе должен знать значения напряжения и тока. Вам просто нужно отобразить их. Что нам нужно от микроконтроллера:

Проблема в том, что DA-преобразователь должен быть очень быстрым.Если на выходе обнаружено короткое замыкание, мы должны немедленно снизить напряжение на основе транзистора, иначе он умрет. Быстро означает в пределах миллисекунд (так же быстро, как операционный усилитель).

ATmega8 имеет более чем достаточно быстрый аналого-цифровой преобразователь, но на первый взгляд в нем нет DA-преобразователя. Можно использовать широтно-импульсную модуляцию (ШИМ) и аналоговый фильтр нижних частот, чтобы получить ЦАП, но одна ШИМ слишком медленная, чтобы реализовать защиту от короткого замыкания в программном обеспечении.Как построить быстрый DA-преобразователь?

Релейная диаграмма R-2R

Есть много способов построить цифро-аналоговый преобразователь, но нам нужен быстрый и дешевый преобразователь, который может легко взаимодействовать с нашим микроконтроллером. Существует схема DA-преобразователя, известная как «лестница R-2R». Он состоит только из резисторов и переключателей. Есть два типа резисторов. Один со значением R и один с удвоенным значением R.


Выше показан 3-битный преобразователь R2R-DA. Логика управления перемещает переключатели между GND и Vcc.Цифровая «единица» соединяет переключатель с Vcc, а цифровой «ноль» - с GND. Что делает эта схема? Он выдает напряжения с шагом Vcc / 8. Обычно выходное напряжение равно Z * (Vcc / (Zmax + 1), где Z - цифровое число. В случае 3-битного аналого-цифрового преобразователя это: 0-7.

Внутреннее сопротивление схемы, как видно из выходной сигнал равен R.

Вместо использования отдельных переключателей мы можем подключить лестницу R-2R к выходным линиям микроконтроллера.

Генерация переменного сигнала постоянного тока с помощью ШИМ (широтно-импульсной модуляции)

Широтно-импульсная модуляция - это метод, в котором генерировать импульсы и пропускать их через фильтр нижних частот с частотой среза намного ниже, чем частота импульсов.Это приводит к сигналу постоянного тока, а напряжение зависит от ширины этих импульсов.


Использование ШИМ для генерации переменного напряжения постоянного тока.

Atmega8 обеспечивает аппаратную 16-битную ШИМ. То есть: теоретически у вас может быть 16-битный ЦАП с очень небольшим количеством компонентов. Чтобы получить истинный сигнал постоянного тока из сигнала ШИМ, необходимо усреднить его с помощью фильтра, а это может быть проблемой при высоких разрешениях. Чем выше точность, тем ниже частота сигнала ШИМ. Это снова означает, что вам нужны большие конденсаторы, а время отклика очень медленное.Первое и второе поколение цифровых источников питания постоянного тока имели 10-битный ЦАП с R2R-схемой. То есть: выход может быть установлен с шагом 1024. Если вы запустите atmega на частоте 8 МГц и используете 10-битный ЦАП с ШИМ, тогда импульсы сигнала ШИМ будут иметь частоту 8 МГц / 1024 = 7,8 кГц. Чтобы получить из этого несколько хороший сигнал постоянного тока, вам необходимо отфильтровать его с помощью фильтра нижних частот второго порядка с частотой 700 Гц или меньше.

Вы можете себе представить, что произойдет, если вы воспользуетесь 16-битным ШИМ. 8 МГц / 65536 = 122 Гц. Для этого понадобится НЧ 12 Гц.

Объединение R2R-лестницы и PWM

Возможно объединение идеи PWM и R2R-лестницы.В этой конструкции мы будем использовать 7-битную R2R-лестницу в сочетании с 5-битным ШИМ-сигналом. При системной частоте 8 МГц и разрешении 5 бит мы получим сигнал 250 кГц. 250 кГц можно даже преобразовать с помощью небольших конденсаторов в сигнал постоянного тока.

Первоначальная версия цифрового блока питания постоянного тока tuxgraphics имела 10-битный ЦАП, основанный на схеме R2R. В этом новом дизайне мы используем R2R-лестницу и ШИМ с общим разрешением 12 бит.

Передискретизация

За счет некоторого времени обработки можно увеличить разрешающую способность аналого-цифрового преобразователя (АЦП).Это называется передискретизацией.
Четырехкратная передискретизация дает двойное разрешение. То есть: можно использовать 4 последовательных отсчета, чтобы получить вдвое больше шагов на АЦП. Теория передискретизации объясняется в PDF-документе, который вы можете найти в конце этой статьи. Мы используем передискретизацию для контура управления напряжением. Для токового контура управления мы используем исходное разрешение АЦП, поскольку быстрое время отклика здесь более важно, чем разрешение.

Более детальный дизайн

Итак, вот теперь более детальный дизайн вышеуказанной схемы.


Некоторые технические детали все еще отсутствуют:

  • ЦАП (цифро-аналоговый преобразователь) не может обеспечить ток для управления силовым транзистором

  • Микроконтроллер работает при 5 В, поэтому максимальный выход ЦАП составляет 5 В, что означает, что максимальное выходное напряжение за силовым транзистором будет 5-0,7 = 4,3 В.

Чтобы исправить это, мы должны добавить усилители тока и напряжения.

Добавление каскада усилителя к ЦАП

Добавляя усилители, мы должны помнить, что они должны работать с большими сигналами.Большинство конструкций усилителей (например, для аудио) сделаны в предположении, что сигналы будут слабыми по сравнению с напряжением питания. Так что забудьте все классические книги о конструкции транзисторных усилителей.

Мы могли бы использовать операционные усилители, но они потребуют дополнительных положительных и отрицательных напряжений питания, которых мы хотим избежать.

Существует также дополнительное требование, согласно которому усилитель должен переходить от нулевого напряжения к стабильному состоянию без колебаний. На словах не должно быть коротких колебаний или скачков на выходе при включении источника питания.

На схеме ниже показан каскад усилителя, который подходит для этой цели.

Начнем с силового транзистора. Мы используем BD245 (Q1). Согласно паспорту этот транзистор имеет hfe = 20 на выходе 3А. Следовательно, он потребляет около 150 мА. Для усиления тока мы используем конфигурацию, известную как «транзистор Дарлингтона». Для этого впереди ставим транзистор средней мощности. Обычно они имеют значение hfe от 50 до 100. Это снизит необходимый ток до менее 3 мА (150 мА / 50).3 мА можно управлять с помощью транзисторов с малым сигналом, таких как BC547 / BC557. Эти малосигнальные транзисторы очень хороши для построения усилителя напряжения.

Для выхода 30 В мы должны как минимум усилить 5 В от ЦАП в 6 раз. Для этого мы объединяем транзисторы PNP и NPN, как показано выше. Коэффициент усиления напряжения этой цепи составляет:

 Вампл = (R6 + R7) / R7 

Источник питания должен быть доступен в 2 версиях: макс. Выход 30 и макс. Выход 22 В. Комбинация 1К и 6.8K дает коэффициент 7,8, что хорошо для версии на 30 В и имеет место для возможных потерь из-за более высоких токов (наша формула является линейной. Реальность нелинейна). Для версии 22V мы используем 1K и 4,7K.

Внутреннее сопротивление цепи, как видно на основе BC547, составляет:

 Rin = hfe1 * S1 * R7 * R5 = 100 * 50 * 1K * 47K = 235 МОм

- hfe составляет от 100 до 200 для транзистора BC547
- S - наклон кривой усиления транзистора и равен
около 50 [единица измерения = 1 / Ом] 

Этого более чем достаточно для подключения к нашему ЦАП, внутреннее сопротивление которого составляет 5 кОм.

Внутреннее эквивалентное выходное сопротивление:

 Rout = (R6 + R7) / (S1 + S2 * R5 * R7) = около 2 Ом 

Достаточно низкий, чтобы управлять следующим транзистором Q2.

R5 связывает базу BC557 с эмиттером, что означает "выключено" для транзистора до тех пор, пока не появятся ЦАП и BC547. R7 и R6 сначала связывают основание Q2 с землей, что отключает выходную ступень Дарлингтона.
Другими словами, все компоненты в этом усилительном каскаде изначально отключены. Это означает, что мы не получим от этих транзисторов каких-либо колебаний или выбросов на выходе при включении или выключении питания.Очень важный момент. Я видел дорогие промышленные блоки питания, которые давали пик напряжения при отключении питания. Такого источника питания определенно следует избегать, поскольку он может легко вывести из строя чувствительные цепи.

Источники питания

Вы можете использовать трансформатор, выпрямитель и большие конденсаторы, или вы можете попробовать получить блок питания для ноутбука 32/24 В. Я выбрал более поздний вариант. Эти блоки питания для ноутбуков иногда продаются очень дешево (на складе), а некоторые из них обеспечивают 70 Вт при 24 В или даже 32 В постоянного тока.

Большинство людей, вероятно, выберут трансформатор, потому что его очень легко достать.

 22V 2.5A версия: нужен трансформатор 18V 3A, выпрямитель
и конденсатор емкостью 2200 мкФ или 3300 мкФ. (причина: 18 * 1,4 = 25В)

Версия 30V 2A: вам понадобится трансформатор 24V 2.5A, выпрямитель и
конденсатор емкостью 2200 мкФ или 3300 мкФ. (причина: 24 * 1,4 = 33,6 В)

Не повредит купить трансформатор, который может дать больше тока.

Силовой диодный мост с 4 диодами, которые предназначены для
низкое падение напряжения (например,г BYV29-500) дает хороший
выпрямитель. 


Также можно использовать более «тяжелый» трансформатор.

Проверьте электрическую цепь на предмет надлежащей изоляции. Убедитесь, что нельзя прикоснуться к любой части, которая может находиться под напряжением 110/230 В, даже когда корпус открыт. Подключите все металлические части шасси к земле (не к GND цепи).

Трансформаторы и блоки питания портативных компьютеров

Если вы хотите использовать два или более источника питания в цепи для получения положительного и отрицательного напряжения для вашей цепи, важно, чтобы трансформатор был действительно изолирован.Будьте осторожны с блоками питания ноутбука. Они красивые и маленькие, но некоторые из них могут соединять минусовой вывод на выходе с заземляющим контактом на входе. Это приведет к короткому замыканию в заземляющем проводе, если вы используете два источника питания в цепи.

Другие напряжения и ограничения по току

Предлагаются две конфигурации: 22 В, 2,5 А и 30 В, 2 А. Если вы хотите создать версию с другими (более низкими) выходными напряжениями или ограничениями по току, просто отредактируйте файл hardware_settings.h.

Пример: Для создания версии 18V 2.5A вы просто отредактируете файл hardware_settings.h и измените максимальное выходное напряжение на 18V.
Затем можно использовать источник питания 20 В, 2,5 А.

Пример. Чтобы создать версию 18 В, 1,5 А, вы просто отредактируете файл hardware_settings.h и измените максимальное выходное напряжение на 18 В и макс. ток до 1.5А.
Затем можно использовать источник питания 20 В, 1,5 А.

Тестирование

Последним компонентом, который нужно припаять к плате, должен быть микроконтроллер.Перед тем, как вставить его, я бы порекомендовал провести несколько основных тестов оборудования:

Test1: Подключите источник питания (не менее 10 В) к входу питания схемы и убедитесь, что вы получаете 5 В постоянного тока за регулятором напряжения.

Test2: Измерьте выходное напряжение. Оно должно быть 0 В (или близким к нулю, например 0,15 В, и оно упадет до нуля, если вы поставите «нагрузку» от 2 до 5 кОм на выходе.)

Test3: припаяйте микроконтроллер к плате и загрузите ЖК-дисплей. программное обеспечение, выполнив команды из каталога распакованного tar.gz пакет.

 сделать test_lcd.hex
make load_test_lcd 

Вы должны увидеть "LCD работает" на дисплее.

Теперь вы можете загрузить окончательную версию программного обеспечения.

Предупреждение для дальнейшего тестирования с окончательной версией программного обеспечения: будьте осторожны с короткими замыканиями, пока вы не проверите функцию ограничения тока. Безопасный способ проверить ограничение тока - использовать резистор с низким сопротивлением, например автомобильную лампочку.

Установите нижний предел тока, например 30 мА при 10 В. Вы должны увидеть, как напряжение сразу упадет почти до нуля, как только вы подключите лампочку к выходу.В цепи все еще есть неисправность, если она не выходит из строя. Автомобильная лампочка защитит цепь питания даже в случае неисправности, поскольку это не полное короткое замыкание.

Программное обеспечение

В этом разделе вы узнаете, как работает программное обеспечение, и сможете использовать полученные знания для внесения изменений. Однако имейте в виду, что защита от короткого замыкания также является программной. Если где-то ошиблись, то эта защита может не сработать. Если вы вызовете короткое замыкание на выходе, ваше оборудование может сработать в облаке дыма.Чтобы избежать этого, вы должны использовать автомобильную лампочку 12 В (см. Выше) для проверки защиты от короткого замыкания.

Теперь немного о структуре программного обеспечения. Сначала посмотрите на основную программу (файл main.c, загрузите в конце этой статьи), вы увидите, что при включении выполняется всего несколько строк кода инициализации, а затем программа входит в бесконечный цикл.
В этой программе действительно 2 бесконечных цикла. Один - это основной цикл («while (1) {...}» в файле main.c), а другой - периодическое прерывание от аналогового цифрового преобразователя (функция «ISR (ADC_vect) {...} "в файле analog.c). Во время инициализации прерывание настраивается на выполнение каждые 104 мксек. Все выполняемые функции и код запускаются в контексте одной из этих задач (задача - имя процесса или потока выполнения. в ОС реального времени, поэтому я использую это слово здесь, даже если ОС не существует).


Задача прерывания может остановить выполнение основного цикла в любое время. Затем она будет выполняться без прерывания, а затем выполнение продолжается снова в основном цикле в том месте, где он был прерван.Это имеет два последствия:

  1. Код в прерывании не должен быть слишком длинным, так как он должен завершиться до того, как придет следующее прерывание. Здесь учитывается количество инструкций в машинном коде. Математическая формула, которую можно записать как одну строку C-кода, может привести к сотням строк машинного кода.

  2. Переменные, которые вы разделяете между кодом прерывания и кодом в основной задаче, могут внезапно измениться в середине выполнения.

Все это означает, что сложные вещи, такие как обновление дисплея, проверка кнопок, преобразование значений ампер и вольт во внутренние единицы и т. Д... нужно сделать в основной задаче. В прерывании мы выполняем только то, что критично по времени: контроль тока и напряжения, защиту от перегрузки и настройку ЦАП. Чтобы избежать сложной математики, все вычисления в прерываниях выполняются в блоках АЦП. Это те же единицы измерения, которые производит АЦП (целые числа от 0 до 1023 для тока и 0..2047 для напряжений).

Это основная идея программы. Я также объясню, что вы найдете в каких файлах, и тогда вы сможете понять код (при условии, что вы знакомы с C).

Программное обеспечение: В каком файле что находится

 main.c - этот файл содержит основную программу. Вся инициализация
сделано отсюда. здесь. Здесь также реализован основной цикл.

analog.c - аналого-цифровой преобразователь и все такое
работает в контексте задачи прерывания, можно найти здесь.

dac.c - цифро-аналоговый преобразователь. Инициализируется с ddcp.c, но
используется только с analog.c

kbd.c - код клавиатуры

lcd.c - драйвер LCD. Это специальная версия, которая не понадобится
вывод RW дисплея. Вместо этого он использует внутренний таймер
который должен быть достаточно длинным, чтобы дисплей выполнил свою задачу. 

Загрузка и использование программного обеспечения

Чтобы загрузить программное обеспечение в микроконтроллер, вам понадобится программист, например avrusb500. Вы можете скачать заархивированные архивы программного обеспечения в конце статьи.

Отредактируйте файл hardware_settings.h и отрегулируйте его в соответствии с оборудованием. Здесь же можно сделать калибровку вольтметра и амперметра. Файл хорошо прокомментирован.

 gedit hardware_settings.h 

Подсоедините кабель программатора и включите схему. Затем запустите:

 включить предохранитель

Это установит тактовую частоту микроконтроллера на 8 МГц. В
программное обеспечение рассчитано на эту частоту.

делать

Это скомпилирует программное обеспечение.

сделать нагрузку

Это загрузит программное обеспечение.

Кнопки

Блок питания имеет 4 кнопки для местного управления напряжением и макс. Текущий. Пятая кнопка предназначена для постоянного сохранения настроек в EEPROM, так что при следующем включении он будет иметь идентичные настройки.


Кнопочная панель местного управления.


С помощью U + вы можете увеличивать напряжение, а с помощью U- - уменьшать. Когда вы удерживаете кнопку, она будет шагать, а через некоторое время «работать» быстрее, чтобы упростить изменение напряжения большими шагами.Кнопки I + и I- работают одинаково.

Дисплей

Вот как выглядит дисплей:


Поля в области ЖК-дисплея. Реальные измеренные значения и заданные значения всегда отображаются одновременно.

Стрелка справа указывает, что в настоящее время настроенное напряжение является ограничивающим фактором. Если на выходе произойдет короткое замыкание или подключенное устройство потребляет больше тока, стрелка переместится в нижнюю строку и укажет, что настроенный макс.ток стал ограничивающим фактором.

Самодельная паяльная станция 2 (АВР)

И снова здравствуйте, в этом разделе мы сделаем профессиональную паяльную станцию ​​

Первоначальная идея была отсюда

схема основана на atmega8 от Atmel

Основная идея - наблюдать за температурой паяльника через термопару типа k и пропорционально регулировать подачу на паяльник. Она основана на п.i.d контроллер для более качественных и точных результатов. Схема питается от 9-15 вольт. Термопара подключается к MAX 6675. Все компоненты очень легко найти.

В каждом цикле:

Ошибка = SetPoint - Наконечник

Total_Error = Total_Error + Ошибка

P = Kp * Ошибка или P = Kp * Ошибка * Наконечник

I = Ki * Total_Error

D = Kd * (ошибка - предыдущая_ошибка)

PID_out = P + I + D

PID_out ограничен в диапазоне от -500 до +500

PID_out = PID_out + 500

А теперь запитываем паяльник на PID_out миллисекунды

Previous_Error = Ошибка

Перечень деталей

Резистор R1 470 Ом 1/4 Вт 5% углеродная пленка
R2 Резистор 470 Ом 1/4 Вт 5% углеродная пленка [
Резистор R3 1 кОм 1/4 Вт 5% углеродная пленка
R4 резистор 1 кОм 1/4 Вт 5 % Углеродная пленка
R5 Потенциометр 1 кОм линейный поворотный 1/2 Вт
R6 потенциометр 1 кОм линейный поворотный 1/2 Вт
Потенциометр R7 1 кОм линейный поворотный 1/2 Вт
R8 потенциометр 1 кОм линейный поворотный 1/2 Вт
R9 1 / 2W
R10 Потенциометр 1 кОм линейный поворотный 1 / 2W

C1 Электролитический конденсатор 470 мкФ 25 Вольт
Электролитический конденсатор C4 220 мкФ 25 Вольт
Керамический конденсатор C3 0.1 мкФ 50 В
Керамический конденсатор C5 0,1 мкФ 50 В
Керамический конденсатор C2 0,1 мкФ 50 В
Керамический конденсатор C6 0,1 мкФ 50 В

D1 1N4004

Т1 2N3904 НПН

IC1 7805
IC2 Микроконтроллер ATmega8
IC3 MAX 6675 K-термопара с компенсацией холодного спая в цифровой преобразователь (от 0 ° C до + 1024 ° C) [K-термопара с компенсацией холодного спая в цифровой преобразователь (от 0 ° C до + 1024 ° C)]

LCD 16 × 2 символьный LCD с контроллером HD44780U1

Резистор R1 470 Ом 1/4 Вт, 5% углеродная пленка
Резистор R2 470 Ом 1/4 Вт, 5% углеродная пленка

горшок.4,7 тыс.

Т1 2N3904 НПН

IC1 MOC3021 Выход драйвера TRIAC оптоизолятора случайной фазы [Выход драйвера TRIAC оптоизолятора случайной фазы]

Lfuse = E4h
Hfuse = D9h

Понтезиометр R5 изменяет коэффициент Kd от 0,00 до 100,00

Понтезиометр R6 изменяет коэффициент Ki от 0,00 до 100,00

Понтезиометр R7 изменяет коэффициент Kp от 0,00 до 100,00

Понтезиометр R8 изменяет максимальную температуру от 0 до 512 ° C

Понтезиометр R9 изменяет безопасное время от 0 до 900 секунд

Hex файл здесь:

Самодельная паяльная станция_2_AVR_4

печатная плата

печатная плата симистора

Файлы Eagle

вот pcd

начать пайку smd микросхемы на нижнюю сторону

, а затем все остальные компоненты

вот небольшая печатная плата с оптопарой и симистором

Перейдем к паяльнику.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *