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



Teraz jest 24 kwi 2024, o 22:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 31 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 12 sie 2016, o 21:49 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Witam forumowiczów.

Postanowiłem wreszcie podjąć wyzwanie i zabrałem się za struktury. Napisałem mały programik z myślą, że będzie działać zgodnie z moimi założeniami, a tu Zonk.
Na zestawie atb użyte zostały:

-dioda led,
-potencjometr,
-wyświetlacz.

Działanie miało polegać na pomiarze napięcia zasilania i wyświetleniu tej wartości na lcd (0-1023). Tutaj wszystko działa. Potencjometr zmienia wartości.
Dalej utworzyłem strukturę z trzema wartościami ADC w sram, eeprom, flash, o nazwach point_1 do point_3. Zdefiniowałem dla nich wartości domyślne.
Kopiuję je poleceniem copy_pgm_to_ram();
Według moich oczekiwań, kiedy "załaduję" składnik struktury np. point_2 do sram (220), to kręcąc potencjometrem i osiągając wartość 220 powinienem
zapalić diodę led. Wszystkie inne wartości z lcd różne od 220 powinny wygasić diodę. Niestety tak się nie dzieje.
Kiedy włączę zasilanie, czy przycisk reset, to dioda świeci się cały czas i obracanie potencjometrem nic nie zmienia.
Oczywiście moje założenia, a napisany program, to dwie różne sprawy i pewnie nie do końca zrozumiałem zagadnienie i gdzieś jest skucha. Czytam, myślę i im
dłużej siedzę, tym większy mętlik w głowie. Dla tego proszę o przeanalizowanie kodu i pomoc, wytłumaczenie, co robię źle.
Z góry dziękuję za wszelkie sugestie i poprawki.
Pozdrawiam.


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: 12 sie 2016, o 21:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

A co ma u ciebie w kodzie wspólnego pomiar z jakąś tam wartością pola struktury ? nic nie ma wspólnego ....

ot mierzysz napięcie i je wyświetlasz

a całkiem oddzielnie masz sobie jakiś tam warunek if(ram_points.point_2) który na dodatek ZAWSZE będzie spełniony jeśli wartość tego pola nie jest zerem. Co ten warunek ma wspólnego z pomiarem ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sie 2016, o 22:01 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Warunek jest zawsze spełniony, bo point_2 ma na stałe wpisane 220. Czyli led świeci stale.
Lcd_locate przenieś przed lcd_int.
W funkcjach obsługi diody nie musisz znowu ustawiać kierunku w rejestrze portu.



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

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dziękuję za odpowiedzi.

Homo Chemicus. Czy chodziło o to ?

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



Czyli pomiar adc i struktura nie mają ze sobą nic wspólnego. A gdyby te wartości były ustawieniami fabrycznymi ? i chciał bym je wykorzystać. Jak się do tego
zabrać. Na początek chociaż żeby była reakcja na potencjometr i działało tak, jak sobie wymyśliłem. Co muszę zrobić?.


W takim razie, czy może mi ktoś pomóc, jak powiązać obie te rzeczy, jak się do tego zabrać ?.
Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 07:16 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dzień dobry.

Nie znajdzie się nikt, kto by miał jakiś pomysł i mnie pokierował ? :( .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 07:30 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

No powiąż pomiar z wartością jakiegoś pola swojej struktury.

Czyli sprawdź czy pomiar jest większy czy tam mniejszy od wartości tego pola struktury ... a nie tak jak teraz że ty pomiar robisz sobie gdzieś tam a sprawdzasz czy w polu jest wartość nie zerowa.


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 08:26 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Witam Mirku.

Dzięki. Wreszcie lampka się zapaliła. Jednak, jak się siedzi do późna, to nie idzie. Wiem, że to banały, ale dla mnie początki :D .
Teraz dioda led zapala się tylko, kiedy na lcd jest wartość z point_2, czyli 220. Tak chciałem. Oczywiście to dopiero początek kombinacji, jakie tutaj modzę, ale jak
przejdę krok pierwszy, to dalej następny. Stanąłem na początku i nie mogłem ruszyć. Problem w tym, że mi się wydaje, że jak ja coś tam myślę, to procesor tak
samo to wie i wykona, a tu niestety. Trzeba napisać mu od a do z jak krowie na rowie. Brak kropki, czy czegokolwiek i nie ruszy.
Poproszę jeszcze, jak by tu rozwiązać sprawę histerezy tego napięcia. Bardzo trudno utrafić w pozycję 220 potencjometrem.
Chciałbym np., a żeby zakres świecenia diody był np. 210-230. Czytałem w blubuku instrukcję:

if(zmienna_x > 219 && zmienna_x < 231) instrukcje;

Tylko nie mogę tego zastosować.

Aktualnie działający kod.

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



Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 08:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

Witam . Teraz panie sprawdzasz warunek "czy pole struktury jest większe od zera " i ten warunek masz zawsze spełniony ponieważ masz przypisaną jakaś stałą wartość większą od 0 do pola (cały czas Led jest na on) a masz sprawdzać "czy wartość pola struktury jest równa wartości z ADC".
Pozdrawiam

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 08:41 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Witam adamBo.

Przyjrzyj się dokładnie, co napisałem w poprzednim poście. Za sugestią Mirka powiązałem wartość z pomiaru przetwornika ADC z polem struktury. PIn PA7 -
(pomiar(7)).Teraz jest ok. Kiedy dojadę potencjometrem do 220, to led świeci ( == ) . W każdym innym przypadku gaśnie . Teraz chcę rozszerzyć zakres, kiedy
dioda świeci ( np. od 210 do 230), a w każdym innym przypadku gaśnie. Led nie świeci cały czas w aktualnym programie.
Dziękuję za chęć pomocy. Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 08:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

Witam. Tak wiem powielilem Mirkową odpowiedź moja wina nie miałem jeszcze Jego postu wyswietlonego. A co do histerezy to warunek powinien wyglądać tak if((zmienna jest większa od)II(zmienna jest mniejsza od)) instrukcje. Sorry za składnie (piszę z fona)
Pozdrawiam

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 08:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

I znowu byk :) i oczywiście nie or a and

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 09:30 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

adamBo.

Sorki, ale czy mógłbyś wyjaśnić konkretniej, napisać, gdzie jest źle, poprawić ?. Ja dopiero się uczę i takie tłumaczenie mi nie pomaga.
Napisałem, że program wykonuje dokładnie to, co chcę, a więc co jest źle ?. Teraz chodzi o histerezę-rozszerzony zakres , a nie sztywne 220.
Kręcąc potencjometrem, dioda ma się palić pomiędzy np. 210 do 230. Teraz świeci tylko przy 220.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 09:45 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

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




a nie tam w IFie robisz pomiar oddzielnie a później podczas wyświetlania po raz kolejny robisz pomiar - który defacto może być już inny niż ten poprzedni ;) Przecież wiesz do czego są zmienne tak czy nie ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 09:59 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dziękuję Mirku.
O to mi własnie chodzi. Kawałek kodu do przemyślenia, a resztę muszę zrobić sam. Teraz muszę zająć się obejściem, czyli domem, ale wieczorem lub w nocy :D
wrócę do tematu.
Warianty innych forumowiczów mile widziane.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 21:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

cześć,
Trochę poczytałem ten wątek i jeżeli dobrze zrozumiałem :) Coś takiego chyba kolega "adamBo" podpowiadał.
utwórz zmienną np. zakres=50.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


dioda zapali się jeżeli ( (punkt jest mniejszy od pomiaru plus zakres) jednocześnie (punkt jest większy od pomiaru minus zakres) ) Tak sobie ubzdurałem. :)

I oczywiście tak jak Mirek podpowiada lepiej jest zrobić raz pomiar - zapisać do zmiennej i tę zmienną podstawiać do obliczeń i wyświetlania na lcd'ku.
W Twoim przykładzie jest mierzone adc - raz przy obliczaniu warunku if , i jeszcze raz przy wyświetlaniu.

pozdrawiam Darek.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 21:45 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

Daro69 napisał(a):
if(    (  ram_points.point_2 < ( (pomiar(7))+zakres  )  )       &&      ( ram_points.point_2 > (  (pomiar(7)) - zakres )  )    )   led1_on(); else led1_off();


Jak widać warto zadawać pytania ale też podpowiadać na forum ... bo dzięki temu można się również czegoś nauczyć ....

Dlatego zwracam uwagę, że utworzenie tak skonstruowanego warunku to po prostu armagedon ;) ... no Panowie ... proszę , spójrzcie co napisałem wyżej i przemyślcie to, aż jeszcze raz zacytuję:

mirekk36 napisał(a):
uint16_t wynik = pomiar( x );         // <------------ krok 1
 
if( wynik == pole struktury ) ....     //  <------------ krok 2
 
lcd_int( wynik )                            //   <------------ krok 3


czy to jest niezrozumiałe ? Bo aż zachodzę w głowę i sobie wyrywam włosy co wręcz może być w tym niezrozumiałego ? .. a jeśli jest to proponuję dopytać ....

1. powołujemy sobie zmienną o nazwie "wynik" .... przecież nie ot tak sobie dla widzi-kurcze-mi-się ;)

2. do tej zmiennej RAZ, rozumiecie panowie JEDEN RAZ wczytujemy wynik pomiaru - to BARDZO WAŻNE

3. i dopiero teraz możemy w kolejnych liniach tenże wynik wykorzystać do różnych celów, czyli np do wyświetlenia na LCD albo chociażby jak tu kolega Daro69 zrobił do warunku IF gdzie trzeba go użyć DWA RAZY! ... I dobrze - tle że w jednym warunku użyjemy (UWAGA!) TEGO SAMEGO WYNIKU POMIARU! ;) piszę dużymi literami nie dlatego żeby krzyczeć tylko żeby to było lepiej zrozumiałe, czyli:

Cytuj:
uint16_t wynik = pomiar(7);

if( ( ram_points.point_2 < ( wynik+zakres ) ) && ( ram_points.point_2 > ( wynik - zakres ) ) ) led1_on(); else led1_off();



A teraz Daro69 pomyśl co się stanie - jeśli użyjemy twojego warunku. Toż w ramach jego wykonywania procesor

najpierw RAZ DOKONA pomiaru

Cytuj:
if( ( ram_points.point_2 < ( (pomiar(7))+zakres ) ) && ( ram_points.point_2 > ( (pomiar(7)) - zakres ) ) ) led1_on(); else led1_off();


i załóżmy że w tej części warunku pomiar zwróci wartość 150 która zostanie porównana z point_2, po czym niestety wykona się w ramach tego samego warunku DRUGI RAZ pomiar :(

Daro69 napisał(a):
if(    (  ram_points.point_2 < ( (pomiar(7))+zakres  )  )       &&      ( ram_points.point_2 > (  (pomiar(7)) - zakres )  )    )   led1_on(); else led1_off();


I teraz wyobraź sobie że po tym PIERWSZYM razie pomiar weźmie pod uwagę zwróconą wartość np strzelam, = 150 ... i użyje ją do porównania ale gdy pomiar wykona się DRUGI raz to zwrócona wartość może przecież już być inna np = 270 ... i co wtedy ? Czy teraz widać - że taki warunek to nonsens ?

Dlatego zgodnie z tym co pokazałem wcześniej - JEDEN RAZ wczytujemy wynik pomiaru do jakiejś tam zmiennej i dopiero ją bierzemy pod uwagę w całym warunku. Mamy wtedy pewność, że w dwóch miejscach warunku na pewno będzie ona miała tę samą wartość np = 180

teraz jaśniej ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 21:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Tak Mirku to prawda. :)
Koledze rozpisałem kod na podstawie jego sposobu żeby zrozumiał jak utworzyć histerezę. ,ale pod spodem dodałem : ;)
Daro69 napisał(a):
I oczywiście tak jak Mirek podpowiada lepiej jest zrobić raz pomiar - zapisać do zmiennej i tę zmienną podstawiać do obliczeń i wyświetlania na lcd'ku.
W Twoim przykładzie jest mierzone adc - raz przy obliczaniu warunku if , i jeszcze raz przy wyświetlaniu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 22:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

ok jak mówię tu nie chodzi o jakieś przytyki - tylko chciałem jakby bardziej obrazowo to pokazać ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 22:32 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dziękuję kolegom za pomocy ciąg dalszy :D .

Dzięki Daro69. Jak zwykle otwarty na problemy innych. Dopiero mogę zasiąść i coś pokombinować, ale nie za długo, bo zauważyłem, że ślepota dopada o tej porze
(ta umysłowa :lol: ) i rano widzę swoje babole, jak się trochę prześpię.
Puki co, idę za podpowiedziami Mirka, a żeby nie przekombinować, ale oczywiście każda pomoc potrzebna. Jak ogarnę temat, to przećwiczę inne warianty.

Na ten moment poprawiłem sprawę z podwójnym pomiarem i pomyślę teraz o histerezie.Zaraz się do tego zabieram. Jak wyjdzie, to na dzisiaj wystarczy.
Aktualny kod. Jeśli Mirku przeczytasz i jeśli nie będzie to problem, to napisz, czy dobrze.

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: 13 sie 2016, o 22:48 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

No teraz to wygląda dobrze tylko ty już zdecyduj jakiego operatora użyjesz w warunku, czy będzie ci potrzebne ==, czy może > albo < ... czy może <= albo >= to już od ciebie zależy - ja tylko jako przykład podałem ==

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 22:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Teraz to kolega ładnie napisał. :)
Pozostaje tylko wpisać to co Mirek słusznie poprawiał z tymi pomiarami.
mirekk36 napisał(a):
Cytuj:
uint16_t wynik = pomiar(7);

if( ( ram_points.point_2 < ( wynik+zakres ) ) && ( ram_points.point_2 > ( wynik - zakres ) ) ) led1_on(); else led1_off();


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2016, o 23:03 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dzięki wielkie.
No to wreszcie coś zaczyna wyglądać na namiastkę prawidłowego kodu. Ale nie udało by się bez Waszej pomocy. Dzisiaj odpuszczam, ale rano podejdę do tematu.
Istotnie zaczynam zauważać "fenomen struktur", jak ciekawe i przydatne to jest. Oczywiście moja wiedza w tej materii jest żadna. Dopiero udało mi się coś tam
zastosować, ale dostrzegam zalety.
Dobranoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2016, o 08:31 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dzień dobry.

No i udało się. Program wykonuje wszystko zgodnie z założeniem. Dioda zapala się w określonym zakresie i w innych przypadkach gaśnie. Bardzo ciekawie
Daro69 to rozpisałeś-wymyśliłeś. Jak się na to patrzy, to teraz takie proste i logiczne :D . Wszystko opiera się na myśleniu i jak Mirek napisał "do czego są
zmienne". Właśnie tego jeszcze się nie nauczyłem-powoływać zmienne w różnych sytuacjach i przypisywać im wartości, które można potem wykorzystać do
obliczeń, różnych tam warunków. To samo tyczy się flagi. Nie rozumiałem o co tu chodzi, jaka flaga. Rozumiem, że flaga, to dokładnie to samo lub prawie to samo.
Temat jest rozwojowy i myślę, że będą pewnie jakieś pytania. Na ten moment muszę odpuścić, ponieważ są inne prace pomimo niedzieli. Niestety tydzień jest zbyt krótki, a remonty w domu pochłaniają większość czasu :( .
Pozdrawiam forumowiczów.

Działający kod:


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: 14 sie 2016, o 19:07 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Witam ponownie.
Testując program (kręcenie potencjometrem i obserwacja diody świecącej) zauważyłem pewną niedogodność i być może "ułomność" mojego założenia.
Pomimo świetnie działającej histerezy występuje efekt następujący.Dokręcając się do zadanego punktu napotykamy na początek lub koniec histerezy. Wówczas
dioda się zapala i koniec. Gdzieś dalej po środku histerezy jest punkt zero, czyli point_2, tzn 220, do którego notabene nie dojedziemy. W takiej sytuacji owa
histereza nie ma sensu. Ponadto "pływające" nieznacznie adc i czasem niepewny kontakt ślizgacza potencjometru z warstwa oporowa powoduje miganie diody
led, czyli niekontrolowane zmiany stanów 0 i 1..Jeżeli ową diodą będzie np. silnik prądu stałego, czy krokowy, to reszty możemy się domyślić :( .
Siedzę i myślę, jak to rozwiązać i puki co nie mam pomysłu. Teoretycznie to wiem. Najlepiej by było, gdyby kręcąc potencjometrem program pozwolił na
dojechanie do punktu środkowego, czyli point_2, tzn 220 i dopiero w tym momencie nastąpiło uaktywnienie histerezy, czyli np. +- 50.
Pozwoliłoby to na stabilną pracę i uniezależnienie od chwilowych zmian wartości adc, itp...
Czy może ktoś z kolegów ma jakiś pomysł do zastosowania ?. Myślę, że moje obawy są słuszne, a pomysł chyba trafny.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2016, o 19:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

cześć,
To może jakoś tak: - nie sprawdziłem w kodzie. wiec potraktuj to jako naprowadzanie ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zwróć uwagę na ! w drugim warunku.
pozdrawiam Darek


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2016, o 19:54 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Nawet nie będę tego komentował :D .
Super działa. Teraz muszę sobie to opisać, a żeby zrozumieć. Jak Ty to robisz :D .
dzięki i pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2016, o 20:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Robson napisał(a):
Jak Ty to robisz .

Przecież sam napisałeś że chcesz by się załączyło jeżeli równe,
i wyłączyło po wykroczeniu poza histerezę. :)
więc to napisałem w C - może trochę niezdarnie. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2016, o 20:48 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

No tak. Sam napisałem, tylko puki co, nie mogę tego przenieść "na papier". Jeśli chodzi o myślenie czysto nazwijmy to techniczne, pod kontem samego urządzenia,
to nie mam z tym kłopotu. Mechanika, elektronika hobbystyczna zawsze była mi bliska, ale myślenie w C, jakoś puki co kuleje.
Potrzeba trochę czasu i czytania, zestaw atb i ćwiczenia i pewnie będzie lepiej. I tak dzisiaj widzę wszystko o wiele lepiej, jak powiedzmy pół roku temu i z tego się cieszę. Na dzisiaj starczy bo i tak już nic nie wchodzi :D .
Dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2016, o 21:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

To coś jeszcze dorzucę :)
Robson napisał(a):
Teraz muszę sobie to opisać, a żeby zrozumieć.

Możesz przecież sobie inaczej ponazywać zmienne np. tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Będą zrozumiałe dla Ciebie i innych, nawet bez komentarzy. ;)



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

Dołączył(a): 12 lis 2014
Posty: 106
Pomógł: 0

Dzięki Daro69.

W 100% się z Tobą zgadzam. To jest to, o czym pisałem kilka postów wcześniej i na co zwrócił mi uwagę Mirek. Zmienne i ich powoływanie. Musze się nauczyć je stosować. Po prostu o nich czasami zapominam. Również z nawiasami mam mały problem, ale czas pokaże... :D .
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: 31 ]  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 3 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