Skocz do zawartości

Waldy

Użytkownicy
  • Zawartość

    23
  • Rejestracja

  • Ostatnio

Reputacja

3 Neutralna

O Waldy

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Wrzuciłem z poprawkami i działa aż miło się patrzy ^^. Tutaj pytanie chcę uzyskać kąt 70 stopni na czujniku - zakres pracy ramienia 0 -70 (orientacyjnie bo i tak pewnie wszystko się zweryfikuje na maszynie). Pomysł jest taki; fizycznie ustawić zadany kąt i odczytać wystawianą wartość ADC, później przeskalować ją do zakresu w jakim pracuje potencjometr zadający pozycje czyli 0 - 1023 tak żeby wykorzystać jego pełen zakres pracy/obrotu z uwagi na wygodę użytkowania. Czy warto by było zrobić na odwrót ? A może przeskalować obydwa potencjometry na "jakiś" wspólny zakres ? Chodzi mi o to żeby uzyskać relatywnie dobrą dokładność jeśli można to tak określić.
  2. Mnie też pomagają Plik w załączniku. Wszystko jest na warstwie Top to też jak będziesz chciał sam robić to musisz wydrukować w lustrzanym odbiciu żeby się zgadzało później no chyba że nie będą Ci przeszkadzać ścieżki razem z komponentami. liso.rar
  3. To można powiedzieć tak Waldy you... i będzie sprawiedliwie Dziękuje za rozwiązanie zagadki -> tutaj musiał zadziałać prawdziwy majster a nie taki rzemieślnik jak ja... Kolejne wyzwanie przeskalowanie potencjometru(czujnika) na kąt 70 stopni,może być ciekawie ^^.
  4. Na czystej wersji 1.8.10 używając powyższej biblioteki sketcha wgrało ale oczekiwanego efektu nie ma...Obmierzyłem nawet potencjometry pod względem podawanego napięcia,oporności i wartości ADC 0 -1024(tutaj użyłem promini) no i są ok. Znalazłem w swoich czeluściach jakąś atmege8 ,attiny4313 i 2313 jutro spróbuje coś z tymi scalakami pokombinować.
  5. Podczas użycia proponowanej biblioteki wyskakuje błąd avrdude : avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "D:\Arduino\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf" avrdude: error at D:\Arduino\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf:1133: programmer type jtagice3_updi not found avrdude: error reading system wide configuration file "D:\Arduino\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf" avrdude: error reading system wide configuration file "D:\Arduino\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf" Może to mieć wpływ na zaistniałą sytuację ? Może pokrótce : podczas przejścia ze 1.0.6 na 1.8.9 miałem problem z nie wykrywaniem programatora USBasp mimo tego że w menadżerze urządzeń był widoczny. Znalazłem temat na naszym forum i zastosowałem się do wskazówek, przeinstalowałem sterowniki i podmieniłem plik avrdude.exe z wersji 6.3. Spróbuje pobrać jeszcze raz nowe arduino 1.8.10 i zobaczymy.
  6. Myślę że tak będzie najszybciej: Pakiet płytek mam taki: ATTinyCore - ATtiny 25/45/85, 24/44/84, 261/461/861, 48/88, 2313/4313, 87/167, 441/841, 1634, 828
  7. To posprawdzaj jeszcze raz czy wszystkie połączenia się zgadzają i jak będzie ok to daj znać a ja podeślę pliki z Eagle
  8. Poprawiłem debouncera na dwa przyciski sugerując się przykładem z biblioteki ale to nic nie dało. Jak również dla testu wyrzuciłem wszystko związane z debouncingiem z kodu i po wgraniu programu i zaaplikowaniu na płytce podpiąłem bezpośrednio przewód od masy do odpowiedniej nóżki na której wystawiony jest stan wysoki(INPUT_PULLUP) i też nic się nie dzieje ustawiając odpowiednio potencjometry. Próbowałem obydwa warunki wstawić do jednego ifa np: ((przyciskg == LOW) &&(pozycja < sterowanie - hist)) - też nic. Jak również wykluczyć zmienną "jazda" i bezpośrednio pod ifami dodałem to co ma się wykonać - ponownie zero reakcji. Wgrałem ponownie bootloadera dla ATtiny84. Zmieniałem też piny definiując inne... Mimo tego po wgraniu sketcha mikrokontroller dobrze wystawia stany wysokie na zdefiniowanych pinach,myślałem że może się jakoś uszkodził ? Pierwotny kod poniżej proszę o analizę poprawności w celu wykluczenia program bądź controllera a może trzeba jakoś inaczej zdefiniować warunek albo porównanie potencjometrów ?. Pozdrawiam W. #include <Bounce2.h> #define potencjometr A1 // potencjometr ustawiający pozycję #define czujnik A2 // potencjometr -czujnik #define DG 7 // dioda do góry #define DD 6 // dioda na dół #define przyciskg 3 // przycisk do góry #define przyciskd 4 //przycisk na dół #define cewkag 5 //cewka rozdzielacza do góry #define cewkad 8 //cewka rozdzielacza na dół Bounce debouncerG = Bounce(); Bounce debouncerD = Bounce(); void setup() { pinMode(potencjometr,INPUT); pinMode(czujnik,INPUT); pinMode(przyciskg,INPUT_PULLUP); pinMode(przyciskd,INPUT_PULLUP); pinMode(DG,OUTPUT); pinMode(DD,OUTPUT); pinMode(cewkag,OUTPUT); pinMode(cewkad,OUTPUT); digitalWrite(cewkag,LOW); digitalWrite(cewkad,LOW); delay(100); debouncerG.attach(przyciskg); debouncerG.interval(60); debouncerD.attach(przyciskd); debouncerD.interval(60); } void loop() { //debouncing przycisków góra/dół debouncerG.update(); debouncerD.update(); int stanG = debouncerG.read(); int stanD = debouncerD.read(); if(stanG == LOW) { przyciskg == LOW; } else { przyciskg == HIGH; } if( stanD == LOW) { przyciskd == LOW; } else { przyciskg == HIGH; } int pozycja = analogRead(czujnik); //odczyt pozycji czujnika //pozycja = map(pozycja,0,360,0,1023); int sterowanie =analogRead(potencjometr); //odczyt potencjometru do ustawiania pozycji int hist = 5; //histereza // za_nisko = pozycja < sterowanie - hist // za_wysoko = pozycja > sterowanie + hist int jazda =0; if (przyciskg == LOW) { //wcisnięty przycisk w górę if (pozycja < sterowanie - hist) jazda = 1; } if (przyciskd == LOW ) { //wcisnięty przycisk w dół if(pozycja > sterowanie + hist) jazda = -1; } if (jazda > 0) { digitalWrite(cewkag,HIGH); digitalWrite(DG,HIGH); digitalWrite(cewkad,LOW); digitalWrite(DD,LOW); } else if (jazda < 0) { digitalWrite(cewkag,LOW); digitalWrite(DG,LOW); digitalWrite(cewkad,HIGH); digitalWrite(DD,HIGH); } else { digitalWrite(cewkag,LOW); digitalWrite(DG,LOW); digitalWrite(cewkad,LOW); digitalWrite(DD,LOW); } }
  9. A bierzesz pod uwagę zastosowanie mostków ? Czy ta opcja odpada ?
  10. Witam,mały update tematu na chwilę obecną mam coś takiego: #include <Bounce2.h> #define potencjometr A1 // potencjometr ustawiający pozycję #define czujnik A2 // potencjometr -czujnik #define DG 3 // dioda do góry #define DD 4 // dioda na dół #define przyciskg 6 // przycisk do góry #define przyciskd 7 //przycisk na dół #define cewkag 5 //cewka rozdzielacza do góry #define cewkad 8 //cewka rozdzielacza na dół Bounce debouncer = Bounce(); void setup() { pinMode(potencjometr,INPUT); pinMode(czujnik,INPUT); pinMode(przyciskg,INPUT_PULLUP); pinMode(przyciskd,INPUT_PULLUP); pinMode(DG,OUTPUT); pinMode(DD,OUTPUT); pinMode(cewkag,OUTPUT); pinMode(cewkad,OUTPUT); digitalWrite(cewkag,LOW); digitalWrite(cewkad,LOW); delay(100); debouncer.attach(przyciskg); debouncer.attach(przyciskd); debouncer.interval(60); } void loop() { // debouncing przycisków góra/dół debouncer.update(); int stanG = debouncer.read(); if(stanG ==LOW) { przyciskg == LOW; } else { przyciskg == HIGH; } int stanD = debouncer.read(); if( stanD == LOW) { przyciskd == LOW; } else { przyciskg == HIGH; } int pozycja = analogRead(czujnik); //odczyt pozycji czujnika //pozycja = map(pozycja,0,360,0,1023); int sterowanie =analogRead(potencjometr); //odczyt potencjometru do ustawiania pozycji int hist = 5; //histereza // za_nisko = pozycja < sterowanie - hist // za_wysoko = pozycja > sterowanie + hist int jazda=0; if (przyciskg == LOW) { //wcisnięty przycisk w górę if (pozycja < sterowanie - hist) jazda = 1; // do góry } if(przyciskd == LOW ) { //wcisnięty przycisk w dół if (pozycja > sterowanie + hist) jazda = -1; // w dół } if (jazda > 0) { digitalWrite(cewkag,HIGH); digitalWrite(DG,HIGH); digitalWrite(cewkad,LOW); digitalWrite(DD,LOW); } else if (jazda < 0) { digitalWrite(cewkag,LOW); digitalWrite(DG,LOW); digitalWrite(cewkad,HIGH); digitalWrite(DD,HIGH); } else { digitalWrite(cewkag,LOW); digitalWrite(DG,LOW); digitalWrite(cewkad,LOW); digitalWrite(DD,LOW); } } Poskładałem wszystko na płytce stykowej,wgrałem kod do ATtiny jednak po ustawieniu pozycji sterowania większej niż ustawienie czujnika i wciśnięciu przycisku nic się nie dzieje tak jakby nie został spełniony warunek,pytanie dlaczego ? Następne pytanie czy funkcja debouncer.update(); może obsługiwać więcej niż jeden przycisk ?
  11. Bardzo dobre pytanie Pan zadał. To zacznę od samego początku pewna osoba z rodziny zapytała mnie czy jestem w stanie spróbować zrobić proste sterowanie do rozdzielacza hydraulicznego. Koncepcja była dość prosta aczkolwiek wtedy mi się taka wydawała mianowicie zadaje pozycję i klikam odpowiedni przycisk i w zależności jaki wybrałem przycisk i zadaną pozycję "ramię" idzie albo do góry albo na dół i zatrzymuje się po osiągnięciu danej pozycji. W projekcie ma zostać użyty taki rozdzielacz hydrauliczny. Z jego opisu wydaje mi się że cewki działają zero-jedynkowo no chyba że się mylę. Projekt jest puki co niskobudżetowy bo nie wiemy jaki będzie efekt finalny dlatego na dzień dzisiejszy planowane jest użycie "zwykłego" aczkolwiek odpornego potencjometru obrotowego w roli czujnika.Bo uważam że jeśli projekt się uda i będzie to "jakoś" działało to wtedy można użyć czegoś lepszego w celu poprawienia np. dokładności działania. Co do schematu hydraulicznego to nie jestem w stanie odpowiedzieć na to pytanie. Wiem że jest to ciągnik Belarus i pewnie ta osoba ma koncepcje jak się wpiąć z tym rozdzielaczem pod układ hydrauliki maszyny. Zbudowałem nawet pewien układ w oparciu o wzmacniacz który pełnił rolę komparatora co prawda testowałem na diodach ale nie byłem do końca zadowolony jego działania ale podstawowe założenia spełniał, dlatego też pomyślałem że może warto by było wykorzystać do tego mikrokontroler, wybór padł na attine nie wiem czy to dobrze czy źle,to też zacząłem od najtrudniejszej dla mnie kwestii, próby napisania kodu. A z racji że nie obcuje z "pisaniem programów" na co dzień, raczej bardzo bardzo rzadko co zresztą pewnie widać. Za to wykonanie układu(elektroniki) sterowania tego rozdzielacza raczej nie będzie stanowiło dla mnie problemu.
  12. A nic poza tą diodą nie wygląda na uszkodzone ? Bardzo często upalona dioda to skutek jakiejś zaistniałej sytuacji a przyczyna może być gdzie indziej. Jednakże nie można wykluczyć że sam element się "skończył"
  13. Zgadza się biblioteka była by bardzo wygodna. Spróbowałem użyć chyba dość popularnej Bounce2 ale nie kompiluje mi się program. Nawet jak zaimportuje samą bibliotekę #include <Bounce2.h> to już mam błąd kompilacji. Może to wina prehistorycznej wersji jaką używam czyli 1.0.6. Kiedyś dawno temu jak używałem obecnej wersji to chyba było 1.6.1 już dokładnie nie pamiętam też coś robiłem ale na attiny85 i miałem podobnie błędy kompilacji i na forum arduino wspomnieli coś o niejakim "avrdude" że po wersji 1.0.6 że jest jakiś inny i bardziej dedykowany do zestawów arduino(gotowych płytek) a niekoniecznie do samych AVR-ów. Może te attiny mają coś takiego w sobie że nie zawsze chcą współpracować. No ale to już tak poza tematem. Poniżej błąd który się wyświetla podczas nieudanej kompilacji może komuś coś to podpowie i uda się temu coś zaradzić na przyszłość: In file included from D:\arduino-1.0.6\arduino-1.0.6\hardware\arduino\cores\arduino/Stream.h:26, from D:\arduino-1.0.6\arduino-1.0.6\hardware\arduino\cores\arduino/HardwareSerial.h:28, from D:\arduino-1.0.6\arduino-1.0.6\hardware\arduino\cores\arduino/Arduino.h:215, from C:\Users\nado2\Documents\Arduino\libraries\Bounce2\src/Bounce2.h:39, from Projekt_EHR_wersja_1.ino:1: D:\arduino-1.0.6\arduino-1.0.6\hardware\arduino\cores\arduino/Print.h:32:1: warning: "BIN" redefined In file included from d:/arduino-1.0.6/arduino-1.0.6/hardware/tools/avr/lib/gcc/../../avr/include/avr/iotn84.h:38, from d:/arduino-1.0.6/arduino-1.0.6/hardware/tools/avr/lib/gcc/../../avr/include/avr/io.h:290, from d:/arduino-1.0.6/arduino-1.0.6/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:82, from D:\arduino-1.0.6\arduino-1.0.6\hardware\arduino\cores\arduino/Arduino.h:27, from C:\Users\nado2\Documents\Arduino\libraries\Bounce2\src/Bounce2.h:39, from Projekt_EHR_wersja_1.ino:1: d:/arduino-1.0.6/arduino-1.0.6/hardware/tools/avr/lib/gcc/../../avr/include/avr/iotnx4.h:71:1: warning: this is the location of the previous definition In file included from Projekt_EHR_wersja_1.ino:1: C:\Users\nado2\Documents\Arduino\libraries\Bounce2\src/Bounce2.h: In constructor 'Bounce::Bounce(uint8_t, long unsigned int)': C:\Users\nado2\Documents\Arduino\libraries\Bounce2\src/Bounce2.h:161: error: type 'Bounce' is not a direct base of 'Bounce' Projekt_EHR_wersja_1.ino: In function 'void loop()': Projekt_EHR_wersja_1.ino:38: warning: statement has no effect Projekt_EHR_wersja_1.ino:41: warning: statement has no effect
×
×
  • Utwórz nowe...