Gintek Napisano Czerwiec 12, 2021 Udostępnij Napisano Czerwiec 12, 2021 Witam mam program na arduino uno do sterowania siłownikiem elektrycznym z wbudowanym potencjometrem poprzez mostek H. Sterownik steruje tym siłownikiem poprzez zadanie danego wysunięcia lub wsunięcia dwoma potencjometrami. Uruchamianie odbywa się poprzez naciśnięcie jednego z przycisków zależnie czy chcę aby siłownik się wysunął czy wsunął. Zakres wysiewu i chowania ustawia się potencjometrami. I tu jest problem gdyż potencjometr w siłowniku robi tylko około połowę swojego zakresu przez co potencjometry do ustalania pozycji działają też tylko w połowie swoich zakresów. Jak to zrobić żeby potencjometry ustalające działały w pełnym swoim zakresie?
ethanak Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 Moja czarodziejska kula mówi: pokaż kod i schemat. Bez tego doradza położenie czarnego waleta na damie czerwiennej, oraz modlitwę do Dobrego Mzimu.
Gintek Czerwiec 12, 2021 Autor tematu Udostępnij Czerwiec 12, 2021 (edytowany) int dol = 0; int gura = 0; // int pozycja = 0; int stan = 0; float czas = 0; void setup() { // put your setup code here, to run once: pinMode(5, OUTPUT); //podnosi pinMode(6, OUTPUT);// opuszcza pinMode(7, INPUT_PULLUP); //podnoszenie manualne pinMode(8, INPUT_PULLUP); // opuszczanie manualne pinMode(9, INPUT_PULLUP);//end stop pinMode(10, INPUT_PULLUP); // opuszczanie auto pinMode(11, INPUT_PULLUP);// podnoszenie auto pinMode(12, INPUT_PULLUP);//end stop pinMode(13, OUTPUT);//hamulec analogWrite(5, 0); analogWrite(6, 0); Serial.begin(9600); } void loop() { while (digitalRead(7) == LOW){ //podnoszenie manualne analogWrite(5, czas); digitalWrite(13, HIGH); delay(10); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(13, LOW); } while (digitalRead(8) == LOW){ // opuszczanie manualne analogWrite(5, 0); analogWrite(6, czas); digitalWrite(13, HIGH); delay(10); analogWrite(6, 0); digitalWrite(13, LOW); } Serial.println(czas); delay(1); dol = analogRead(5); gura = analogRead(4); pozycja = analogRead(1); czas = analogRead(3); czas = czas / 4; while ((digitalRead(10) == LOW) && (pozycja < gura)) { analogWrite(5, czas); digitalWrite(13, HIGH); dol = analogRead(5); gura = analogRead(4); pozycja = analogRead(1); stan = 1; delay(100); } while ((digitalRead(11) == LOW) && (pozycja > dol)) { analogWrite(6, czas); digitalWrite(13, HIGH); dol = analogRead(5); gura = analogRead(4); pozycja = analogRead(1); stan = 1; delay(100); } if ((pozycja > gura) && (stan == 1) || (digitalRead(9) == LOW)) { analogWrite(5, 0); digitalWrite(13, LOW); dol = analogRead(5); gura = analogRead(4); pozycja = analogRead(1); stan = 0; delay(50); } if ((pozycja < dol) && (stan == 1) || (digitalRead(12) == LOW)) { analogWrite(6, 0); digitalWrite(13, LOW); dol = analogRead(5); gura = analogRead(4); pozycja = analogRead(1); stan = 0; delay(50); } stan = 1; delay(130); } Schematu jak to jest podłączone nie mam wszystko robione z głowy. Edytowano Czerwiec 12, 2021 przez Gintek
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 Co oznacza 1 godzinę temu, Gintek napisał: potencjometr w siłowniku robi tylko około połowę swojego zakresu ? W sensie że ośka tegoż dociera do połowy?
Gintek Czerwiec 12, 2021 Autor tematu Udostępnij Czerwiec 12, 2021 Potencjometr jest wieloobrotowy i przy max schowanym i max wysuniętym siłowniku potencjometr obróci się tylko o około połowę swoich obrotów roboczych. Potem napiszę jakie osiąga wartości na monitoringu portu szeregowego.
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 (edytowany) Pomijając wymianę potencjometru, widzę dwie drogi rozwiązania: można elektronicznie układ doprowadzić do takiego stanu że połowa zakresu użytego pot-ka będzie udawała jego pełny zakres. Lub przeskalować wyniki z ADC aby uzyskać ten sam wynik z tym że wtedy stracisz na rozdzielczości pomiaru Edytowano Czerwiec 12, 2021 przez _LM_
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 (edytowany) Podaj jakie napięcie zasila potencjometr oraz jakie masz napięcie odniesienia w twoim AVR No i przydałoby się znać wartość tego pot który jest na siłowniku Edytowano Czerwiec 12, 2021 przez _LM_ Pytania uzupełniające :)
Gintek Czerwiec 12, 2021 Autor tematu Udostępnij Czerwiec 12, 2021 Wszystkie potencjometry są zasilanie z płytki arduino 5v. Nie bardzo rozumiem o jakie napięcie AVR chodzi. Wybacz moją nie wiedzę ale nie znam się na tym. Program mi wykonał ktoś inny. Tak sobie myślę żeby rozebrać ten siłownik i przestawić potencjometr tak żeby dochodził w jedno skrajnie położenie a nie działał tylko po środku. A do tych potencjometrów ustalających chcianą pozycję zamontować po jednym dodatkowym potencjometrze i nim wyregulować skok głównych potencjometrów. Chyba o to Ci chodziło.
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 Myślę że nie będą potrzebne takie kombinacje. Zakładam że umiesz wgrać nowy program? Jeśli tak to w setup wpisz taką linijkę analogReference( INTERNAL); Jeśli to coś zmieni w dzialaniu to będziesz musiał w obwód potencjometru wlutować jeden rezystor, jednak aby wyliczyć jego wartość muszę znać wartość potencjometru. Można ją odczytać z obudowy lub zmierzyć omomierzem.
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 (edytowany) Uwaga jednak popełniłem błąd ta zmiana napięcia referencyjnego zmieni też działanie reszty potencjometrów, przepraszam nie zwróciłem na to uwagi za pierwszym razem. Trzeba szukać innej drogi. Lub do reszty potencjometrów również dodać rezystory Edytowano Czerwiec 12, 2021 przez _LM_
Gintek Czerwiec 12, 2021 Autor tematu Udostępnij Czerwiec 12, 2021 Wszystkie potencjometry są 10k nawet ten w siłowniku.
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 Ok, dasz radę przeprogramować układ i wlutować dodatkowe rezystory?
Gintek Czerwiec 12, 2021 Autor tematu Udostępnij Czerwiec 12, 2021 (edytowany) Z tym nie ma problemu. Jeszcze bym miał takie pytanie prośbę. Bo teraz ten układ działa w taki sposób że wybieram żądaną pozycję potencjometrem naciskam przycisk i siłownik ustawia się w danej pozycji ale jak cofnę potencjometr do pierwotnego położenia i nacisne przycisk to już siłownik się nie cofa, trzeba nacisnąć drugi przycisk i wtedy siłownik ustawia się wedle pozycji drugiego potencjometru i dopiero wtedy po naciśnięciu pierwszego przycisku wraca w pierwotne położenie. Jakby można było zrobić tak żeby po każdorazowej korekcie potencjometrem nie zależnie w którą stronę i po naciśnięciu przycisku siłownik ustawiał się do zadanej pozycji przez potencjometr. Edytowano Czerwiec 12, 2021 przez Gintek
_LM_ Czerwiec 12, 2021 Udostępnij Czerwiec 12, 2021 Tak bym to widział plus zmiana w programie o czym wyżej pisałem
Gintek Czerwiec 12, 2021 Autor tematu Udostępnij Czerwiec 12, 2021 Jak znajdę takie rezystory to spróbuję tak zrobić.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »