Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 25 kwi 2024, o 04:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 28 maja 2017, o 20:38 
Offline
Nowy

Dołączył(a): 23 lut 2013
Posty: 17
Pomógł: 0

Witam wszystkich!

Mam problem z przerwaniami PCINT. Używam ich do zliczania impulsów ( do wyświetlania obrotów wentylatora komputerowego). Problem że wynik który otrzymuje jest oo ok 20% inny niż rzeczywiste obroty. Tak samo obroty bardzo skaczą przy ok 1.5k skoki są rzędu 200+/- wciągu 1 sekundy, gdzie wentylator kręci się praktycznie tak samo +/- 10rpm.

Prosiłbym o weryfikacje kodu i pomoc w znalezieniu błędu....

Przerwania PCINT realizowalem na podstawie poradników z blogu Mirka.



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Skracałem czas kiedy przerwania są wyłączone po przez wyrzucenie wyswietlanie w serial monitorze, poza obszar kodu gdzie przerwania są zablokowane, ale nie na wiele się to zdało.

Dziwne jest także coś takiego, że jak np nie podłacze nic pod pin PD3 (PCINT19) to i tak wyświetlają się jakieś wartości. Zatrzymanie wentylatora na PD2 skutkuje, że dopiero wtedy nie ma żadnych przerwań na tych pinach.

Z góry bardzo dziękuje



Ostatnio edytowano 29 maja 2017, o 03:35 przez thcmaniac, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2017, o 20:54 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

topic7402.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2017, o 17:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

A jak kolega podpina wyjście impulsatora do procka/arduino? Jak dobrze pamiętam impulsator (czyli żółty przewód z wentyla) jest wyjściem typu otwarty kolektor czyli do prawidłowego działania trzeba ten pin podciągnąć do zasilania rezystorkiem, i tu wewnętrzny rezystorek podciągający w uC może być za mały...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2017, o 18:42 
Offline
Nowy

Dołączył(a): 23 lut 2013
Posty: 17
Pomógł: 0

Dokładnie jest to otwarty kolektor. Podpinam ten przewód rezystorem podciągającym 10k do lini 5V ( testowałem różne rezystory od 1k do 50k i co się okazuje że obroty w zależności od rezystora mogą różnić się o ok 70%...)


Zrobiłem taki test że: pomiar tylko dla 1 went i jak wywalę detekcje który pin zakomunikował przerwanie to obroty skaczą o ok 10% w górę (wygląda na to że kilka lini kodu/prostych obliczeń wprowadza znaczne zaburzenia). Po wywaleniu wykrywania pinu wprowadziłem detekcje zbocza opadającego/narastającego by sygnał nie był zliczany 2 razy (np: if(!(PIND & (1<<PD2))) ). Różnica rpm zależności od detekcji zbocza (narastające/opadające) sięga ok 50%... i nie potrafię zrozumieć dlaczego tak się dzieje, przecież liczba zboczy powinna być identyczna +/-2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2017, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Masz możliwość podejrzeć sygnał z wentylatora na oscyloskopie? Myślę, że to by wiele wyjaśniło...

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2017, o 20:39 
Offline
Nowy

Dołączył(a): 23 lut 2013
Posty: 17
Pomógł: 0

Możliwość mam postaram się to zrobić jutro dla np 3 went i 3 różnych napięć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 maja 2017, o 05:45 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

obroty sie mogą różnić ponieważ wyłączasz przerwanie i wtedy obrotów nie zlicza tak mi się wydaje. zacznij od wyrzucenia mniejszej ilości na serial i sprawdź czy wtedy obroty są prawidłowe czy nie.


Wysłane z iPad za pomocą Tapatalk



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 maja 2017, o 18:31 
Offline
Nowy

Dołączył(a): 23 lut 2013
Posty: 17
Pomógł: 0

Zrobiłem dziś test tak wygląda przebieg z tacho wentylatora:
Obrazek
Przebieg widać jaki jest.. więc nie dziwne że są różne wartości dla zbocza narastającego i opadającego.

a tak wygląda przebieg po wpięciu między masę a tacho kondesator 100nF:
Obrazek

Takie sama zależność występuje dla różnych wentylatorów (czy to went za 10zł czy za 80zł) i dla róznych napięć.

Po dodaniu kondensatora obroty przypominają rzeczywistość, teraz zostało zminimalizować czas kiedy przerwania są wyłączone i prawdopodobnei w celu poprawienia dokłądności nie będe zliczał impulsów ale obliczał czas między nimi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 maja 2017, o 18:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Przerzutnik shmitta powinien sporo poprawić. Wstaw do tesu bramkę, np. z CD4093 ( będziesz miał zanegowany sygnał) i zobacz czy jest poprawa.

------------------------ [ Dodano po: 26 minutach ]

O, teraz dopiero zauważyłem, że napięcie jest w granicach 300mV. Warto by było go podciągnąć jakimś tranzystorkiem i dopiero badać to może nawet shmitt by nie był potrzebny, bo piny uC też mają lekką histerezę.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO