Skocz do zawartości

ADC - zawsze 1023


lukix

Pomocna odpowiedź

Nie wiedziałem czy umieścić ten temat w dziale dotyczącym programowania czy elektroniki, bo nie wiem gdzie jest błąd.

Dlaczego odczyt z adc zawsze zwraca wartość 1023, niezależnie od tego czy czujniki linii są nad białą kartką, czy nad czarną?

Czujniki to CNY70.

Schemat:

Program:

$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

Config Portd = Output
      Portd = &B00000000
Config Portb = Output
      Portb = &B00000000

Red_led Alias Portd.6
Green_led Alias Portd.7
Reset Red_led
Reset Green_led
Dim W As Word
Dim Czujnik As Word
Do
  Start Adc
  W = Getadc(5)
  W = Getadc(5)
  Stop Adc
  Czujnik = W
  If Czujnik > 341 Then
       Set Green_led
  Else
       Reset Green_led
  End If
  If Czujnik < 682 Then
       Set Red_led
  Else
       Reset Red_led
  End If

Loop

End

Próbowałem też z:

If Czujnik = 1023 Then
       Set Red_led

i czerwona dioda się świeciła.

Gdy mierzyłem "ręcznie" (woltomierzem) to napięcie się zmieniało w zależności od koloru kartki. Sprawdzałem też aparatem diody w czujnikach - świecą.

Myślałem że jest coś źle z zasilaniem przetwornika ADC, ale sprawdziłem i wydaje mi się że jest wszystko ok.

Proszę o pomoc.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

myślę że wywalenie pomiaru z pętli głównej powinno pomóc.

Trzymaj:

$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

Config Portd = Output
      Portd = &B00000000
Config Portb = Output
      Portb = &B00000000

Red_led Alias Portd.6
Green_led Alias Portd.7
Reset Red_led
Reset Green_led
Dim W As Word
Dim Czujnik As Word
Do
  Gosub Pomiar
  If Czujnik > 341 Then
       Set Green_led
  Else
       Reset Green_led
  End If
  If Czujnik < 682 Then
       Set Red_led
  Else
       Reset Red_led
  End If

Loop
End
Pomiar:

  Start Adc
  W = Getadc(5)
  W = Getadc(5)
  Stop Adc
  Czujnik = W
Return
Link do komentarza
Share on other sites

Robomaniak niestety dalej nie działa 😐

piotrp7 z tego co wiem to brak tego dławika może zmniejszyć dokładność pomiarów, ale bez niego też powinno działać.

__________

Komentarz dodany przez: Treker

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.