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



Teraz jest 16 kwi 2024, o 19:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 28 sie 2014, o 19:19 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

mam silniczek dc który posiada czytnik impulsów magnetyczny,i mam problem,chciałbym za pomocą int0
w atmedze8 czytać ilość obrotów silnika, nie wiem jak się za to zabrać jak napisać procedurę przerwania,czytnik podłączony jest do+5v -5v i na sygnale jak magnes to 0.460mv brak magnesu 0.012mv.
bardzo broszę o jakieś porady i podpowiedzi
pozdrawiam i dziękuje.



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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2014, o 20:20 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

komar napisał(a):
na sygnale jak magnes to 0.460mv

Procesor nie odczyta tak małego napięcia jako 1. Musisz użyć komparatora (wbudowanego w procesor), który będzie porównywał to napięcie z 0,2V z dzielnika napięcia. Komparator ma swoje przerwanie.

W przerwaniu zliczasz liczbę impulsów (dorzuć tam jeszcze zmianę stanu LED, aby testować program). Potrzebne jest jeszcze przerwanie od timera, gdzie np. co 1 s odczytujesz zliczone impulsy i zerujesz je. Odczytane impulsy na sekundę to liczba obrotów na sekundę jeśli masz jeden impuls na obrót.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2014, o 20:43 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

użyć AIN0 oraz AIN1 i badać różnice napięcia ,czy jednego AIN0/AIN1 A drugiego MULTIPLEKSERA ADC
dalej nie wiem jak zabrać się za zliczanie impulsów, impulsów jest trzy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2014, o 20:59 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

1 opcja

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


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2014, o 21:11 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

Bardzo dziękuje za pomoc jutro będę testować,bo mój wspaniały zestaw, jeszcze ATB rev1.01 firmy"ATNEL" zostawiłem w pracy.ale jutro w przerwie będę testować ,na dziś dziękuję,



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2014, o 08:12 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

ok czujnik działa dioda pięknie mruga komparator ustawiony, teraz jak rozwiązać sprawę zliczania obrotów/licznik, aby użyć ich do zatrzymania silnika dc np; dc_stop po 200 obr jakie pokona silnik?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2014, o 16:25 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2014, o 16:44 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

Ok tak też uczyniłem zadziałało , po godzinnych męczarniach ,silnik ma przekładnie planetarną i tych impulsów na obrót 360° ma 547 dołączyłem sterowanie klawiszami żeby otwierać polaczony z silnikiem zawór o daną ilość impulsów ,natomiast nie wiem jak rozwiązać odwrotną kolejność nie klawisz a przełącznik 4 stopniowy który ma wspólna mase, jak połączyć to razem do kupy. Moje wypociny zamieszczę wieczorem .proszę o kontynuację pomocy bo sam zanim dojdę do tego to słońce przestanie świecić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2014, o 17:36 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Przełącznik to też jakby 4 przyciski z tym, że tak jakbyś go wcisnął i trzymał. Taki sobie program wymyśliłem :mrgreen:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nasuwa się pytanie co jak zabraknie prądu, a silnik nie ustalił jeszcze swojej pozycji?

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2014, o 17:46 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

Jak zabraknie prądu to stracę pracę ,zapomniałem dodać że to wszystko ma działać w lotosie 560 hp jako regulator doładowania kompresora do tej pory miałem zawór 0/1 ale w zależności od pogody kierowca wymyślił sobie regulacje gałką no i mam problem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2014, o 21:11 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

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


może cały kod który kolega krauser mi podał jak na tacy, plus moje wypociny to się dowiem co spaprałem.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 19 minutach ]

może inaczej ten kawałek jak mi się zdaje to piny portuB 0,1,2,3
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jeśli tak to jak mam skonfigurować te piny, tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

czy coś całkiem po..pi..ep....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2014, o 14:44 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

0x0f to jest maskowanie bitów tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2014, o 18:35 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Kod w porządku, ale jak piszesz PD5, PC5 to nie wiadomo co to. Jak nie używasz aliasów to chociaż komentarz dodaj. Tu akurat można dojść, że to bardzo pomocne LEDy.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2014, o 19:48 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

coś mi nie idzie, jak sprawdzić czy przełącznik działa,w ogóle nie mogę obracać silnikiem wpisując polecenie dc_lewo czy prawo przed pętlą while żeby sprawdzić czy coś działa chyba że dam alias//na tą linie
if(licznik >= pozycja_docelowa) DC_STOP;



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2014, o 20:56 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Na starcie zmienna pozycja_docelowa wynosi 0 i dlatego warunek zawsze jest prawdziwy i zatrzymuje silnik. Na początku można by tam wpisać wartość jaką licznik osiągnie po pewnym czasie np. 547.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2014, o 21:21 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

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

bo mi przyciski nie reagują



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sie 2014, o 17:17 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

ktoś pomoże,podpowie co robię nie tak jakieś wskazówki ,jakiś trop,cokolwiek :( :mrgreen:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sie 2014, o 17:51 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Zamiast wstaw sobie zapalenie LED a na kolejnej zgaszenie i na następnej inną LED zapal. No i korzystaj z książki.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sie 2014, o 18:12 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sie 2014, o 19:15 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Są 2 błędy. Jeden mój drugi twój :lol:
Powinno być tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 wrz 2014, o 08:12 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

ok kod działa, z tym tylko że w jedną stronę w prawo,w lewo już nie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 wrz 2014, o 11:54 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

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

blokowało obroty w lewo dc_lewo,i klops KOD WYGLĄDA TAK
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

nawet jak zmienię w części pierwszej na lewo to też nie działają obroty w lewo
konfiguracja do sterowaniem silnikiem wygląda tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 wrz 2014, o 15:56 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

cały kod, proszę o sprawdzenie gdzie popełniłem błąd
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 wrz 2014, o 17:51 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

No i kolega mokorowski ma rację, że makra to Paskudztwo...
Problem jest tutaj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Przed kompilacją zostanie wstawione w miejsce DC_STOP powyższe makro i powstanie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

druga linijka nie jest w warunku. Można to poprawić i zawsze w każdym warunku dawać klamry albo nie używać takich makr, gdzie są 2 instrukcje.
Zrób tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 wrz 2014, o 18:00 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

działa nareszcie baaaarrrrdddzzzo dziękuję za poświęcony czas,jutro pojawię się z nowym problemem
:mrgreen: :) :D :arrow:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2014, o 18:27 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

Witam , jestem z powrotem jak obiecałem , cały kod działa silnik steruje zaworem tak jak sobie to wymarzyłem ale, mam pewien problem po rozłączeniu zasilania;jeśli zmienię pozycję przełącznika, to się wysypują całe ustawienia otwarcia/zamknięcia.. .jeśli przełącznik jest na tej samej pozycji przed i po wyłączeniu zasilania jest ok .
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2014, o 22:58 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,
Najprościej zapamiętywać ostatnią pozycję przełącznika w pamięci EEPROM i przy restarcie programu (przed wejściem do pętli głównej ) odczytywać ją i wpisywać jako wartość początkową do zmiennej "ostatni_stan". To jest akurat trywialne. Z tym, że nie rozwiązuje to problemu:

Krauser napisał(a):
.....Nasuwa się pytanie co jak zabraknie prądu, a silnik nie ustalił jeszcze swojej pozycji?


albo też sytuacji, gdy ktoś po prostu wyłączy zasilanie w trakcie ruchu silnika. To już tak całkiem trywialne nie jest - musiałbyś zapamiętywać dodatkowo aktualną pozycję silnika - po zatrzymaniu. I dodatkowo dopisać procedurę obsługi przerwania od zaniku napięcia zasilania, która:
1. Zatrzymywała by silnik.
2. Zapisywała by aktualną pozycję silnika w EEPROM-ie. Tylko... zasilania już nie ma, więc jak ten układ ma to zrobić. Kwestia tego, z czego Twój układ jest zasilany. Potrzebował bym więcej szczegółów. Dlatego może najpierw spróbuj tego prostszego sposobu.
Dodatkowy problem, na który chciałbym zwrócić Ci uwagę, to to, że masz ustawione przerwania od komparatora na jedno zbocze zliczanych impulsów ( narastające ), więc po wielokrotnych ruchach LEWO-PRAWO silnika układ Ci się rozjedzie. Narysuj sobie impulsy na kawałku kartki i przeanalizuj, co będzie jeśli będziesz "poruszał się po tych impulsach raz z lewej, raz z prawej". Ja bym zrobił "Comparator Interrupt on Output Toggle" i wtedy tego efektu nie będzie ( no... prawie ;-) ). A... i nie jest to wcale teoretyzowanie - swego czasu konstruowałem pozycjonery do anten SAT i miałem ten sam problem.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2014, o 08:52 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

////////////////////////////////////////////////////////////////////////////////////////////////////
Najprościej zapamiętywać ostatnią pozycję przełącznika w pamięci EEPROM i przy restarcie programu (przed wejściem do pętli głównej ) odczytywać ją i wpisywać jako wartość początkową do zmiennej "ostatni_stan". To jest akurat trywialne. Z tym, że nie rozwiązuje to problemu:]
///////////////////////////////////////////////////////////////////////////////////////////////////////////
ta opcja na razie załatwiła by sprawę

problem z zasilaniem, nie jest problemem kierowca zapamięta żeby w czasie przełączania nie wyłączać zapłonu w aucie.

teraz jak zabrać się za pamięć eeprom, żeby to wszystko miało ręce i nogi
na naukę mam trochę mało czasu w następnym tygodniu mamy wyścigi w korczynie

może kolega coś więcej mi podpowiedzieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2014, o 12:29 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

na szybko to mogłoby wyglądać tak. Z tym, że nie mam teraz dostępu do kompa, na którym programuję, więc najprościej jak tylko się da. Sprawdź, czy to Ci zadziała ok.



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


P.S. Zaraz mnie tu ochrzanią za taką "rzeźbę", ( Wiem, że tak się nie powinno obsługiwać EEPROMA - struktury, CRC, itp...) ale w tej chwili po pierwsze nie mam czasu, a pod drugie - jeśli będziesz chciał to zrobić po ludzku, poprawisz sobie później.

UUUUPS... drobna poprawka....

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2014, o 14:17 
Offline
Użytkownik

Dołączył(a): 29 paź 2013
Posty: 34
Pomógł: 0

:) ok wieczorem sprawdzę ,dzięki



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: 32 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO