ADC Attiny13


Witam serdecznie
Zrobiłem taki mały układzik na attiny13, który ma za zadanie włączać przekaźnik przy napięciu 13.5V, zasilanie 12V(w samochodzie) z tym że nie bardzo wiem jak zamienić wartość odczytu z ADC na volty. Dzielnik napięcia:R1- 1,6M, R2(potencjomert)- 1M

Wart_dc = Pomiar * ?    '***************************  jest jakiś wzór na obliczenie tej wartości?
If Wart_dc > 13.5 Then                                      'Napiecie większe niż 13.5V
   P1 = 1
 
End If
 
If Sw = 0 Then
Waitms 200
If Sw = 0 Then
 
     Wait 1
     Toggle P1
 
     End If
     End If
 
Loop




Portret użytkownika matrix

Re: ADC Attiny13

Konkretną wartość napięcia można obliczyć ze wzoru:

Getadc(x)*Vref/1024 (dla 10-cio bitowego ADC)
Getadc(x)*Vref/256 (dla 8-mio bitowego ADC)

Portret użytkownika maro

Wart_dc = Pomiar * ? -' czyli

Wart_dc = Pomiar * ? -' czyli wynik wstawiamy tu 

jeszcze jedno pytanie dzielnik napięcia może być z potencjometru i rezystora z innymi wartościami tak żeby po obliczeniu wychodziło 5V na ADC?

Portret użytkownika matrix

Re: ADC Attiny13

Zależy jak ustawione masz napięcie odniesienia?
W każdym razie napięcie mierzone nie powinno przekroczyć napięcia zasilania procesora, to chyba logiczne?

Portret użytkownika maro

Wielkie dzięki matrix udało

Wielkie dzięki matrix udało mi się to uruchomić, ale mam jeszcze jedno pytanie.
Chciałem do tego kodu doda przycisk

If Sw = 0 Then
Waitms 200
If Sw = 0 Then
 
     Wait 1
     Toggle P1 

ale "gryzie" mi się z tym co niżej. jeśli jest w tym zakresie to p1 zmienia stan na przeciwny i jak ADC odczyta pomiar to znowu zmienia stan. Jak zrobić tak że po naciśnięciu przycisku "wstrzymać" odczyt z ADC?

 If Wart_dc > 13.5 Then                       'Napiecie większe niż 13.5V
               P1 = 1
                    End If
 
               If Wart_dc <= 12.6 Then                      'Napiecie mnijsze lub równe niż 12.6V
               P1 = 0
                    End If

Portret użytkownika matrix

Re: ADC Attiny13

If Sw = 0 Then
 stop adc    'zatrzymujesz pomiary
  waitms 200  
   if sw = 0 then
    Toggle P1
   end if
  start adc   'startujesz adc
end if 

Staraj się nie używać wait no chyba że nie masz gdzieś w tle uruchomionego timera i piszesz proste programy lub też nie zależy Ci na tym by procek pracował non stop a wait w niczym nie przeszkadza.

Portret użytkownika maro

ADC

Znowu muszę podziękować koledze matrixowi. Co prawda inaczej to jeszcze napisałem, ale przydała się procedura "start ADC i stop ADC" jeszcze raz podziękowania dla matrixa

Portret użytkownika matrix

Re: ADC Attiny13

Ile wiem tyle staram się pomóc. Nic nadto.

Portret użytkownika joko_zuna

ADC

"maro"

Czy możesz udostępnić kod w całości tak bym mógł zobaczyć jak to powinno być napisane. Nie mam pojęcia jak się do tego zabrać, a chciałem wykonać taki układ do pomiaru napięcia zasilacza. ?(kontrola napięcia przed podłączeniem)

P. joko_zuna