Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



ИОН

Сообщений 1 страница 10 из 10

1

Народ какими источниками ИОН кто пользуется, чтобы стабильность напряжения была 0,1% .
Как попробовать включить внутренний источник опорного напряжения 2,56 вольта и какая у него стабильность ???

0

2

Подключил ИОН внутрений 2.56 вольта еще хуже стали показания чем от стабилизатора !!  цифры, пследнии прыгают...  Вот думаю попробывать lt1084 стабилизатор у него стабильность 0,1% или REF195 покупать.

Отредактировано vanno44 (2011-05-04 19:35:45)

0

3

1 Лучше ИОН чем TL431A (только изготовленный TI) для AVR не требуется - АЦП сам его испортит.
2 Внутренний ИОН 2.56 В достаточно хорош. Уже при усреднениии не менее 16 измерений обеспечивает 0.1 % в тем. диап. 10 град.
3 Далее - это правильный монтаж, останов программы на время измерений, корпус TQFP и блокировка питания, поменьше токовой нагрузки на порты.

0

4

Чем корпус TQFP лучше DIP ???
Ставлю внутренний ИОН последняя цифра скачет от 1 до 9...  Можно ли как-то улучшить, чтобы вообще не колыхалась ??? По питанию улучшить, ИОН хороший поставить, экранировать все, тогда будет лучше значения ???

Что значит отключать программу во время измерений и как это влияет на показания ?

0

5

Вот моя программа очень сырая, но как-то работает.... Может в ней можно что-то изменить ???

$regfile = "m16def.dat"
$crystal = 4000000

Config Portb = Output
Config Portd = Output

Config Adc = Single , Prescaler = 128 , Reference = Internal_2.56
Dim I As Byte
Dim Chislo(8) As Integer
Dim Prints As Integer
Dim Printt As Integer
Dim Adc1 As Integer
Dim Adc2 As Integer
Dim K As Single
Dim W As Byte

Config Timer0 = Timer , Prescale = 8 : On Timer0 Pulse

Enable Interrupts : Enable Timer0

Start Timer0

Start Adc

Do

Adc1 = Getadc(3)
Printt = Adc1

Adc2 = Getadc(2)

Waitms 200
Loop
End

Pulse:
Stop Timer0
Prints = Printt

For I = 1 To 4
Chislo(i) = Prints Mod 10
Prints = Prints / 10
Next

Incr W : If W = 5 Then W = 1

Select Case W
      Case 1 :
Portb = Lookup(chislo(4) , Fit)
Portd = 251

      Case 2 :
Portb = Lookup(chislo(3) , Fit)
Portd = 247
Reset Portb.7

      Case 3 :
Portb = Lookup(chislo(2) , Fit)
Portd = 239

      Case 4 :
Portb = Lookup(chislo(1) , Fit)
Portd = 223

End Select

Start Timer0
Return

Fit:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90

0

6

Изменил код  добавил среднее арифметическое и Incr P в подпрограмму pulse добавил .  Стало лучше на много!!! Но думаю обязательно сделать питания хорошее, экранирование и опорку хорошую поставить!!!

Do

If 400 <= P Then
Start Adc
For A = 0 To 100
T1 = Getadc(3)
T1_sum = T1_sum + T1
Next A
T1 = T1_sum / A
T1_sum = 0
Stop Adc
Else
End If
If P >= 400 Then P = 0
Loop
End

0

7

'1 TQFP ИМЕЕТ ЧЕТЫРЕ ЗЕМЛИ И ПОМЕХА ОТ ПОТРЕБЛЯЕМОГО ТОКА НА ВХОДАХ АЦП.
'  БОЛЕЕ ЧЕМ ВЧЕТВЕРО МЕНЬШЕ ЧЕМ У DIP. ВЕДЬ ВНУТРЕННЯЯ "ЗЕМЛЯ" "ПОДНЯТА"
'  НА ПАДЕНИЕ НАПРЯЖЕНИЯ НА ПРОВОДЕ "GND" В КОРПУСЕ. И ЭТО ПАДЕНИЕ
'  НАПРЯЖЕНИЯ ВКЛЮЧАЕТСЯ ПОСЛЕДОВАТЕЛЬНО С СИГНАЛОМ!
'2 ДУМАЮ, ЧТО ВНУТРИ ФУНКЦИИ GETADC() НЕТ ОСТАНОВ, А ЗНАЧИТ
'  ГЕНЕРИТСЯ ПОМЕХА. ЕЕ НЕ ИСПОЛЬЗОВАЛ НИКОГДА.
'3 ПРЕРЫВАНИЕ ТОЖЕ МОЖЕТ НАСТУПИТЬ В МОМЕНТ ИЗМЕРЕНИЯ. Я ЕГО ЗАПРЕЩАЮ.
'  Т.К. ЕГО ДЕЙСТВИЕ САМОЕ ЗАМЕТНОЕ - РЕДКИЕ, НО БОЛЬШИЕ БРОСКИ ПОКАЗАНИЙ.
'4 ВОТ ОБЫЧНЫЙ ПРИМЕР КОДА, КОТОРЫЙ ИСПОЛЬЗУЮ. В НЕЙ ШУМ ДАЖЕ НА DIP СОСТАВЛЯЕТ 1/2 МЛ.РАЗР
'
'--------------------------------------------
' измерение с помощью внутреннего АЦП. результат Ua, выраженный в Вольтах шкалы
'------------------------------------------
Rd_iadc:
Timsk = &H00                            'запретить прерывание от таймера 0 и 2
Adcsra = &B10001110                     'разрешить АЦП с частотой тактирования F / 64
                                        'в режиме с естественным положением битов, прерывание АЦП разрешено
'-------
    For Tmpb = 1 To 16                  'произвести 16 измерений
       Set Adcsr.6                      'запустить АЦП
Rdiadc1:
       Idle                             'останов
       If B_adc = 0 Then                'есть данные внутреннего АЦП?
          Goto Rdiadc1                  'нет - повторить
       End If
    Next Tmpb
Adcsra = &B00000110                     'запретить АЦП
Timsk = &H81                            'разрешить прерывание от таймера 0 и 2
'   Dadc = Dadc + 15                    'коррекция смещения нуля
    Ua = Dadc
    Radc = Dadc                         'запомнить показания
    Dadc = 0                            'в формат с плавающей точкой, а сумму очистить
    Ua = Ua * 0.00015625                'привести к шкале 0...2.56 В
Return
'------------------------------------------
'обработка прерывания от АЦП
Adc_int:
$asm
    Push R31                            'сохраним регистры
    In R31 , Sreg
    Push R31
    Push R30
    Push R29
'-----
'считать данные внутреннего АЦП
    lds R29 , {Dadc}                    'считать сумму
    Lds R30 , {Dadc + 1}
    In R31 , Adcl                       'считать показания
    Add R29 , R31                       'и добавить к сумме показания АПЦ
    In R31 , Adch                       '
    Adc R30 , R31
    Sts {Dadc} , R29                    'записать сумму
    Sts {Dadc + 1} , R30
'-----
    Ldi R31 , 255                       'поставить признак, что есть данные внутреннего АЦП
    Sts {B_adc} , R31
'-----
Adcinte:
    Pop R29                             'восстановим регистры
    Pop R30
    Pop R31
    Out Sreg , R31
    Pop R31
    Reti
$end Asm
Return
'------------------------------------------

0

8

Собственно разницы для АЦП никакой нет. Просто отключается тактирование UART, SPI, которые могут тоже давать помеху, если работают в момент измерения.
Как правило это неактуально. Простой IDLE самый удобный инструмент для экономии потребления - снижает в разы. Все остальное (кроме powerdown) дает крохи.

0

9

Я попробовал отключить все прерывания во время измерения еще лучше измерения стали!!!

У меня задача состоит в том, чтобы мерить ток от 10 милиампер до 10 ампер. Стоит проволочный резистор на 0,05 ом и операционный усилитель  lm358 увеличивающий напряжения в 10 раз!!!  Может лучше ОУ посоветуете для этого дела... ???

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

Вот думаю какой источник опорного напряжения ставить и ставить ли его вообще!!! Почти вообще уже не изменяется значения последней цифры!!!
 
Какое максимальное входное напряжение у ИОН REF195  я уже весь даташит перерыл, на схеме написано 15 вольт  в описание максимальное напряжения падения 1,5 вольта на микрухи...  Вроде разобрался увидел  внимательно прочитав 5,15<Vs<15 .  Надо под буквой Е точнее будет... Боится ли микросхема статики ???

Отредактировано vanno44 (2011-05-08 17:30:35)

0

10

Да ток не маленький потребляет микроконтроллер,  если включается динамическая индикация!!! По расчетам предварительным до 150 мили ампер аж!!! 
Поэтому очень правильно во время измерения отключать динамическую индикацию и все прерывания связанные с ней. Ну и вообще отключать прерывания во время измерения. чтобы не мешали измерениям!!!

Отредактировано vanno44 (2011-05-08 17:07:21)

0